Raspberry Pi - Arduino – Lier les deux via Serie / UART
Pour recevoir des données en 433Mz sur le Raspberry Pi, vous pouvez utiliser différentes bibliothèques mais toutes sollicitent le CPU à presque 100% (si vous en connaissez une qui ne le fait pas je suis preneur !). Alors une solution est de passer par un Arduino qui nous enverra les données valides sur le port série.
Je continue d’avancer doucement sur mon projet Pi Home Connect, et donc suite à mon article sur la création d’une node, il faut recevoir les données. Utilisant pour le moment une transmission 433Mz il fallait donc pouvoir recevoir les messages de ma sonde. La réception directement sur le Raspberry utilisant le CPU a (presque) son maximum, j’ai choisi d’utiliser un Arduino.
Comme je ne voulais pas avoir plusieurs sources d’alimentation, j’ai trouvé l’excellent article de Jared Wolff sur une connexion simple et rapide entre les deux :
Voilà comment avec 4 fils relier les deux. Merci Jared !!
Pour exploiter la communication entre les deux il vous faudra désactiver la console coté Raspberry Pi :
- Mettre à jour votre système
apt-get update && apt-get upgrade
- Installer si nécessaire raspi-config
apt-get install raspi-config
- Exécuter raspi-config et sélectionner les étapes suivantes :
- Redémarrer le Raspberry Pi
Maintenant vous pouvez échanger avec votre Arduino sur le port série. Coté Raspberry vous pouvez utiliser un programme en Python par exemple :
import serial import sys import string ser = serial.Serial('/dev/ttyAMA0', 115200) while True : try: # Read data incoming on the serial line data=ser.readline() print data except: print "Unexpected error:", sys.exc_info() sys.exit()
Et sur l’Arduino :
void setup() { Serial.begin(115200); } void loop() { Serial.println("Hello"); delay(1000); }