Accueil / Domotique / MySensors / Code Python pour lire sur le port Série d’un Raspberry Pi

Code Python pour lire sur le port Série d’un Raspberry Pi

Lecture des messages d'une Gateway MySensors sur le port série d'un Raspberry Pi.

Pour mettre au point vos projets à base d’Arduino ou d’ESP8266 sur Raspberry Pi, on peut avoir besoin d’accéder au port Série pour la mise au point. Ce tutoriel devrait fonctionner sur toutes les distributions Linux et Raspbian en particulier. J’ai écrit ce tutoriel car j’avais besoin d’accéder aux messages de ma Gateway MySensors ESP8266 branchée sur le port USB de mon Raspberry Pi 3. Si vous débutez sur Raspberry, voici une liste de commandes utiles à connaître pour débuter avec Linux.

Read this article in English

Installer pyserial sur Raspbian

En fonction de la version de python, il existe plusieurs commandes pour installer le package pyserial. Pour connaître la version de python exécutez

python --version

Si la commande pip est disponible (exécutez pip pour voir si bash renvoie ou pas commande introuvable) exécutez (remplacez par pip2 ou pip3 en fonction de la version python employée).

sudo pip3 install pyserial

Sinon on passe par apt-get

sudo apt-get install python-serial python3-serial

Lire sur le port Série

Libérer le port Série

Avant d’aller plus loin, il faut vérifier que la console n’est pas en écoute sur le port Série. Pour cela exécutez

sudo raspi-config

Puis suivez les images

raspi-config port serie

2-raspi-config-port-serie

3-raspi-config-port-serie

4-raspi-config-port-serie

Trouver le port ttyUSB qui correspond à votre appareil

Il existe plusieurs moyens pour déterminer le port USB sur lequel l’appareil est connecté. Pour connaître toutes les possibilités rendez-vous ici. Le plus rapide est de brancher l’appareil sur le port USB puis d’exécutez immédiatement la commande dmesg -s 1024.

Vous obtiendrez ainsi directement le port tty qui sur lequel il est connecté.

dmesg-s-1024-port-usb-serie

Code Python pour lire le port série

Ouvrez nano

sudo nano read_serial.py

Et copiez le code suivant

#!/usr/bin/env python
import time
import serial

ser = serial.Serial(
 port='/dev/ttyUSB0',
 baudrate = 9600,
 parity=serial.PARITY_NONE,
 stopbits=serial.STOPBITS_ONE,
 bytesize=serial.EIGHTBITS,
 timeout=1
)
counter=0


while 1:
 x=ser.readline()
 print x

Enregistrez avec la combinaison Ctrl+X puis O en donnant un nom au fichier (read_serial.py par exemple).

Maintenant, lancez le programme pour lire les messages envoyés sur le port série par votre appareil (par exemple un Arduino).

sudo python read_serial.py
raspberry lire port serie code python esp8266 mysensors gateway wifi
Lecture des messages d’une Gateway MySensors sur le port série d’un Raspberry Pi.

Pour quitter le programme, faites la combinaison de touches Ctrl+C.