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 aimerez aussi...

  • Georges-Michel Bourdonneau

    Bonjour,

    En premier lieu bravo pour ce tuto clair et bien détaillé.
    J’ai acheté les composant et ils sont arrivés aujourd’hui.

    Je coince à l’étape 9 :
    Je lance la commande de ton tuto et voici la réponse.

    pi@GmPi ~/XRF-Uploader-master $ sudo ./xrf_uploader -d /dev/ttyAMA0 -f llapThermistor-V0.50-24MHz.bin
    Writing new firmware file llapThermistor-V0.50-24MHz.bin to device /dev/ttyAMA0 with baud rate 9600…
    Reading firmware file…
    Read 1162 lines from firmware file
    Opening device…
    Setting serial parameters…
    Waiting for device to settle…

    Entering command modus
    Timeout, no data received within 10 seconds

    Pourtant dans le répertoire il y a les bon fichiers.
    pi@GmPi ~/XRF-Uploader-master $ ls -l
    total 116
    -rw-r–r– 1 pi pi 80178 août 24 2012 llapThermistor-V0.50-24MHz.bin
    -rw-r–r– 1 pi pi 938 mai 29 10:12 README
    -rwxr-xr-x 1 pi pi 16020 sept. 4 19:51 xrf_uploader
    -rw-r–r– 1 pi pi 12795 mai 29 10:12 xrf_uploader.cpp
    pi@GmPi ~/XRF-Uploader-master $

    J’ai obtenu un 0 à l’étape 4.
    Merci d’avance de toute idée sur la question.
    Cordialement,
    Gmb

    • Salut,
      Tout est bon cote branchement sur la carte slice of pi ?
      As tu essayé plusieurs fois ? Ca n’a pas fonctionné du premier coup pour moi

      • Georges-Michel

        Bonjour,
        Oui j’ai essayé plusieurs fois même fait un reboot sur le Pi.
        Je suis en python 3.2 mais j’au aussi la 2.7 cela peut il poser un pb ?
        Y a t il un autre moyen de tester que la ttyAMA0 communique avec la carte ?

        Je suis obligé de passer la commande :
        sudo ./xrf_uploader -d /dev/ttyAMA0 -f llapThermistor-V0.50-24MHz.bin
        avec sudo si non j’ai une interdiction de sécurité sur l’ouverture de ttyAMA0.
        Cela peut il avoir une incidence dans le déroulement de la MAJ ?

        Merci
        A+

        • Le test de com avec la carte se fait avec l’etape 4 et à priori chez toi ca passe. Par contre c’est possible que ca vienne de python. Chez moi j’avais la 2.7 uniquement. Apres il peut y avoir un soucis là dessus mais le programme de mise à jour est en c++ donc je doute que ce soit la raison.
          Il ya le forum du vendeur ou tu peux aoir rapidement une reponse. Rien ne te force à faire cette étape tout de suite. Tu peux assembler la sonde et tester la communication.
          Le site d’origine confirme qu’il faut essayer plusieurs fois, de debracnher rebrancher le module xrf
          Pour python idem c’est le 2.7 qu’il faut prendre

        • Pour le sudo je le mets jamais car je suis toujours en root (oui c’est mal mais c’est pratique)

  • Georges-Michel

    Merci pour la réponse.
    Je continue le montage, donc à suivre.
    A+

  • Georges-Michel Bourdonneau

    Bonsoir,
    J’ai enfin trouvé et réussi la MAJ de l’étape 9.
    (Pour info j’avait mal modifier le « /etc/inittab ».)

    Par contre maintenant je bloque sur miniterm.py.
    Il se lance bien.
    Je tape la séquence Ctrl+T puis Ctrl+E puis ATVR s’affiche bien à l’écran puis RIEN.
    aucun retour.

    Aurais tu une idée ?

    Merci d’avance.
    Gmb

    • Autant pour moi ! Il faut envoyer les +++ avant la commande ATVR …
      +++ (ne pas taper ENTER) Attendre que OK s'affiche
      ATVR puis ENTER

      La réponse va être recouverte avec OK. Chez moi :

      ATVRK
      OK74B XRF