Nous avons déjà abordé la communication entre le Raspberry Pi et l'Arduino au moyen d'un câble USB, ce qui imposait une certaine proximité entre les deux cartes.
Aujourd'hui, nous nous débarrassons du câble: l'Arduino et le Raspberry Pi s'échangeront des informations par ondes radio, à une fréquence de 433 MHz.
Matériel nécessaire
En plus du Raspberry Pi et de l'Arduino, nous utiliserons un émetteur et un récepteur 433 MHz, le modèle ultra-économique qu'on peut trouver sur eBay pour environ 1 euro. Une antenne constituée d'un fil conducteur d'environ 17 cm vous permettra d'augmenter considérablement la portée de votre paire émetteur-récepteur.
Installation des bibliothèques
Du côté de l'Arduino, j'ai utilisé la bibliothèque VirtualWire même si elle n'est plus mise à jour par son auteur (je ne me suis pas encore converti à RadioHead). Donc, si ce n'est pas déjà fait, vous devriez télécharger et installer VirtualWire dans votre IDE Arduino.
Du côté du Raspberry Pi, j'ai utilisé le module Python rédigé par Joan du Forum Raspberry Pi. Donc vous téléchargez le fichier vw.py et vous le placez dans le même répertoire que votre script Python (voir plus loin pour les scripts). Ce n'est pas tout: ce module requiert la bibliothèque pigpio . Pour installer cette bibliothèque dans votre Raspberry Pi, vous tapez ces lignes de commande dans le terminal:
Branchez l'émetteur à l'Arduino de la façon suivante:
Branchez le récepteur au Raspberry Pi de la façon suivante:
Et voici le script Python à installer dans le Raspberry Pi. N'oubliez pas d'installer ce script dans le même répertoire que le fichier vw.py.
Avant d'exécuter le script, vous devez mettre en marche le "démon pigpio" au moyen de cette ligne de commande:
sudo pigpiod
Transmission du Raspberry Pi vers l'Arduino
Aujourd'hui, nous nous débarrassons du câble: l'Arduino et le Raspberry Pi s'échangeront des informations par ondes radio, à une fréquence de 433 MHz.
Matériel nécessaire
En plus du Raspberry Pi et de l'Arduino, nous utiliserons un émetteur et un récepteur 433 MHz, le modèle ultra-économique qu'on peut trouver sur eBay pour environ 1 euro. Une antenne constituée d'un fil conducteur d'environ 17 cm vous permettra d'augmenter considérablement la portée de votre paire émetteur-récepteur.
Émetteur |
Récepteur |
Installation des bibliothèques
Du côté de l'Arduino, j'ai utilisé la bibliothèque VirtualWire même si elle n'est plus mise à jour par son auteur (je ne me suis pas encore converti à RadioHead). Donc, si ce n'est pas déjà fait, vous devriez télécharger et installer VirtualWire dans votre IDE Arduino.
Du côté du Raspberry Pi, j'ai utilisé le module Python rédigé par Joan du Forum Raspberry Pi. Donc vous téléchargez le fichier vw.py et vous le placez dans le même répertoire que votre script Python (voir plus loin pour les scripts). Ce n'est pas tout: ce module requiert la bibliothèque pigpio . Pour installer cette bibliothèque dans votre Raspberry Pi, vous tapez ces lignes de commande dans le terminal:
wget https://github.com/joan2937/pigpio/archive/master.zip
unzip master.zip
cd pigpio-master
make
sudo make install
Transmission de l'Arduino vers le Raspberry Pi
Branchez l'émetteur à l'Arduino de la façon suivante:
- Broche DATA de l'émetteur à la sortie 12 de l'Arduino
- Broche Vcc de l'émetteur à la sortie 5 V de l'Arduino
- Broche GND de l'émetteur à une des broches GND de l'Arduino
Branchez le récepteur au Raspberry Pi de la façon suivante:
- Une des broches DATA du récepteur (peu importe laquelle) à la pin GPIO 11 du Raspberry Pi.
- Broche 5 V du récepteur à une des broches 3,3 V du Raspberry Pi
- Broche GND du récepteur à une des pins GND du Raspberry Pi
Et voici le script Python à installer dans le Raspberry Pi. N'oubliez pas d'installer ce script dans le même répertoire que le fichier vw.py.
Avant d'exécuter le script, vous devez mettre en marche le "démon pigpio" au moyen de cette ligne de commande:
sudo pigpiod
Transmission du Raspberry Pi vers l'Arduino
N.B.: Lors de la mise à jour de cet article le 8 janvier 2021, je ne suis pas parvenu à faire fonctionner la transmission du Raspberry Pi vers l'Arduino.
Branchez l'émetteur au Raspberry Pi de la façon suivante:
Branchez le récepteur à l'Arduino de la façon suivante:
Voici le sketch à installer dans l'Arduino (n'oubliez pas d'afficher le moniteur série, où les résultats reçus seront affichés):
Et voici le script Python à exécuter par le Raspberry Pi (n'oubliez pas d'installer ce script dans le même répertoire que le fichier vw.py).
Avant d'exécuter le script, vous devez mettre en marche le "démon pigpio" au moyen de cette ligne de commande:
sudo pigpiod
Si vous préférez une communication 433 MHz entre deux Arduinos, référez-vous à cet article. Et j'ai tout plein d'articles sur le Raspberry Pi qui vous plairont peut-être.
Yves Pelletier (Twitter: @ElectroAmateur)
Branchez l'émetteur au Raspberry Pi de la façon suivante:
- Broche DATA de l'émetteur à la pin GPIO 25 du Raspberry Pi
- Broche Vcc de l'émetteur à une des pins 5 V du Raspberry Pi
- Broche GND de l'émetteur à une des pins GND du Raspberry Pi
Branchez le récepteur à l'Arduino de la façon suivante:
- Une des broches DATA du récepteur (peu importe laquelle) à l'entrée 11 de l'Arduino.
- Broche 5 V du récepteur à la sortie 5 V de l'Arduino
- Broche GND du récepteur à une des pins GND de l'Arduino
Voici le sketch à installer dans l'Arduino (n'oubliez pas d'afficher le moniteur série, où les résultats reçus seront affichés):
Et voici le script Python à exécuter par le Raspberry Pi (n'oubliez pas d'installer ce script dans le même répertoire que le fichier vw.py).
Avant d'exécuter le script, vous devez mettre en marche le "démon pigpio" au moyen de cette ligne de commande:
sudo pigpiod
Si vous préférez une communication 433 MHz entre deux Arduinos, référez-vous à cet article. Et j'ai tout plein d'articles sur le Raspberry Pi qui vous plairont peut-être.
Yves Pelletier (Twitter: @ElectroAmateur)