Raspberry Pi – Configurer un émetteur XRF via le port RS232

Maintenant que la carte d’extension Slice Of Pi est prête (voir cet article), il va être possible de l’utiliser pour configurer les émetteurs XRF qui vont communiquer entre eux pour envoyer la température mesurée.

IMG_5985__56057.1366814952.1280.1280

Les trois émetteurs que j’ai acheté vont être intégrés pour deux d’entre eux dans des boitiers avec une sonde. Le troisième va rester sur le Raspberry Pi pour recevoir leurs données et les rendre disponibles pour être utiliser par n’importe quel outil qui va afficher des graphiques (on verra ça plus tard).

Pour mettre tout ça en place, il faut mettre à jour les émetteurs avec le dernier firmware fourni par ciseko. C’est l’étape d’aujourd’hui :

  1. Il faut désactiver le port série du Raspberry qui pointe vers la console pour le rendre disponible. Dans le fichier /boot/cmdLine.txt, supprimer le texte
    console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

    Dans le fichier /etc/inittab, supprimer la console liée au port série en mettant en commentaire la ligne suivante :

    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

    Chez moi elle était déjà en commentaire.

  2. Pour prendre en compte les changements fait dans les différents fichiers, il faut redémarrer le Raspberry
    reboot
  3. Pour manipuler le port série, il existe en python un paquet pour nous aider : pySerial.
    cd /root
    wget http://sourceforge.net/projects/pyserial/files/pyserial/2.5/pyserial-2.5.tar.gz/download -O pyserial-2.5.tar.gz
    tar zxvf pyserial-2.5.tar.gz
    cd pyserial-2.5/
    python setup.py install
  4. Pour tester que le port série est bien disponible, vous devez avoir python d’installé.
    1._ssh-2Voici le code à taper :

    import serial
    ser=serial.Serial('/dev/ttyAMA0',9600)
    ser.inWaiting()
  5. Nous allons commencer par mettre à jour les deux émetteurs. Le 3ème XRF qui sera le receveur, branché au Raspberry donc, peut être mis à jour de manière optionnelle.
    Toutes ces actions peuvent être retrouvées sur cette page.
    Télécharger et compiler le programme de mise à jour :

    wget https://github.com/CisecoPlc/XRF-Uploader/archive/master.zip
    unzip master.zip
  6. Vous devez ensuite compiler le programme
    apt-get update && apt-get install -y g++
    cd XRF-Uploader-master
    g++ xrf_uploader.cpp -o xrf_uploader
  7. Voilà vous avez ce qu’il faut pour envoyer le firmware. Sauf qu’il nous faut le firmware ! La dernière version est sur cette page. Pour nous il faut prendre le fichier qui s’appelle llapThermistor-VX.YY-24MHz.bin avec X.YY en numéro de version.
    wget https://github.com/downloads/CisecoPlc/XRF-Firmware-downloads/llapThermistor-V0.50-24MHz.bin

    Voici ce que vous devez avoir dans le répertoire où se trouve le chargeur xrf_uploader :
    1._ssh-2

  8. Il est temps de mettre à jour le module émetteur ! Je suis pas fan du branchement à chaud (peut être que c’est un tord) alors je commence par éteindre le Raspberry Pi :
    halt

    Ensuite je débranche le Raspberry Pi, je branche l’émetteur XRF sur la carte, puis la carte Slice of Pi sur le Raspberry Pi :
    WP_20130708_002Et enfin je branche le tout.

  9. Envoyer la mise à jour du firmware :
    ./xrf_uploader -d /dev/ttyAMA0 -f llapThermistor-V0.50-24MHz.bin

    1._ssh-2Pourquoi j’ai un timeout à la fin de la mise à jour, aucune idée !

  10. Maintenant il s’agit de tester que le firmware a bien été chargé et qu’il est opérationnel. Pour cela, il faut se connecter au module avec l’outil miniterminal en python.
    python ~/pyserial-2.5/examples/miniterm.py /dev/ttyAMA0

    Vous allez ensuite envoyer la séquence Ctrl+T puis Ctrl+E pour activer le retour de saisie.
    Maintenant vous pouvez envoyer une série de commande et attendre la réponse du composant. Toutes les commandes que vous pouvez envoyer sont disponibles sur cette page.
    Le numéro du firmware avec la commande ATVR doit renvoyer :
    0.50B APTHERM
    Tous les émetteurs recoivent un identifiant PANID qui leur permet de dialoguer entre eux (une sorte de SSID). Par défaut, cette valeur vaut 5AA5, et elle est la même pour tous. Donc si votre voisin utilise aussi ces composants vous allez pouvoir l’écouter. Si vous voulez changer cette valeur alors vous devez envoyer la séquence suivante (ne pas taper ce qui est entre <…>) :
    +++<pas faire return, attendre 1 à 2s d’avoir OK>
    ATIDXXXX<Taper return. XXXX est votre nouvelle ID, de 0000 à EFFF en hexa>
    ATAC<Taper return. Va valider votre modification mais pas la sauvegarder>
    ATWR<Taper return. Va sauvegarder votre configuration>

    Le retour OK peut écraser l’affichage. Et vous devez enchainer « rapidement » (pas attendre 30s entre les commandes) sinon il faut recommencer à partir de la séquence +++.

    Pour quitter le mini terminal la séquence Ctrl+T puis Ctrl+] ne fonctionne pas chez moi (Mac OS ?) et je dois faire un kill sur le process.

    ps -ef | grep python

    puis

    kill <n° process>

L’opération a été refaite sur le deuxième émetteur vers le Raspberry Pi. Concernant le 3ème module, celui qui sera sur le Raspberry la mise à jour n’est pas nécessaire car il ne va pas transmettre d’information, le firmware par défaut suffit.

Attention : les 3 doivent avoir le même PANID si vous voulez qu’ils soient sur le même « réseau ».

Ca y est, tout est prêt ou presque. Il reste à assembler le boitier qui va contenir notre émetteur. Ca sera la prochaine étape 😉

Je vous prépare en même temps, un article qui va reprendre toutes les étapes, les liens, les prix, etc. pour ceux qui souhaitent se lancer dans l’aventure.

Vous aimez cet article ? Supportez-moi sur Patreon!

Vous aimerez aussi...