Le Raspberry dispose de broches (GPIO) permettant de lui connecter des capteurs externes. Toutefois par rapport à l’Arduino, le Raspberry ne dispose pas d’entrée analogique. On ne peut connecter directement au Raspberry que des composants digitaux. De plus les broches ne fonctionnent qu’avec des niveaux logiques 3.3 volts. L’application d’une tension de 5 Volts sur une broche risque d’endommager gravement le Raspberry. Pour ces raisons, il est intéressant d’utiliser un Arduino pour gérer les composants externes et faire communiquer le Raspberry et l’Arduino par une liaison USB.
Illustrons ceci avec un capteur de température et de pression atmosphérique BMP180 géré par l’Arduino.
Brochage
BMP180 | ARDUINO |
VIN | 5 V |
GND | GND |
SCL | A5 |
SDA | A4 |
Pour l’Arduino, la bibliothèque Adafruit BMP085 est très facile à utiliser. L’exemple suivant affiche sur le port usb de l’Arduino une chaine de propriétés contenant les valeurs de la température et de la pression atmosphérique toutes les secondes:
Exemple d’exécution:
Le programme basilic suivant permet de récupérer les informations de l’Arduino. Il faut connaitre le chemin du port USB en utilisant la commande suivante
ls -l /dev/tty* | grep USB crw-rw---- 1 root dialout 188, 0 1 juin 10:22 /dev/ttyUSB0
Sur cet exemple le chemin est /dev/ttyUSBO
Pour récupérer les informations dans le langage Basilic, il suffit d’ouvrir et de lire un fichier texte de chemin /dev/ttyUSB0
Fichier testbmp180.bcj
Exemple d’exécution:
java testbmp180 t=19;p=1013;