Ce projet permet de faire communiquer une Raspberry Pi 4 et une carte Arduino Ethernet.
Le code Arduino permet de contrôler des moteurs à courant continu via une MD25, les moteurs s'arrêtent initialement lorsque la distance envoyé par la Raspberry Pi est inférieure à 15 cm.
-
Broker : Serveur par lequel les données transites via des topics.
-
Topic : Identifiant d’un type de message (par exemple : “Temperature” ou “Distance”) servant à factoriser l’information reçu sur le serveur.
-
Client : Dispositif se connectant au serveur pour envoyer et / ou recevoir des messages sur un ou plusieurs topics.
Le fonctionnement du protocole MQTT est basé sur les topics présents sur le Broker :
- Lancement du broker.
- Un client “publisher” se connecte au Broker MQTT, crée un topic pour y publier des informations.
- Un client “subscriber” se connecte au Broker MQTT et s’inscrit à un ou plusieurs topics afin d’en recevoir les messages en temps réel.
| Librairie | Lien (si disponible) | Version | Author |
|---|---|---|---|
| Arduino.h | https://www.arduino.cc/reference/en/ | ——— | —————— |
| PubSubClient.h | https://github.com/knolleary/pubsubclient.git | 2.8.0 | Nick O’Leary |
| SoftwareSerial.h | https://docs.arduino.cc/learn/built-in-libraries/software-serial | ——— | —————— |
| avr/sleep.h | Included in Arduino IDE | ——— | —————— |
| SPI.h | https://github.com/bxparks/AceSPI.git | 0.3.0 | Brian T. Park |
| Ethernet.h | https://github.com/arduino-libraries/Ethernet.git | 2.0.2 | Various authors |
| Librairie | Lien | Version | Author |
|---|---|---|---|
| paho-mqtt | https://github.com/eclipse/paho.mqtt.python.git | 1.6.1 | Eclipse |
-
Brancher le câble ethernet à la Raspberry Pi et l’Arduino Ethernet
-
Re-configurer l’interface ethernet 0 (eth0) afin de désactiver le DHCP
sudo vi /etc/dhcpcd.conf
-
Modifier les lignes associées.
interface eth0 static ip_address=192.168.1.2/24 static routers=#nothing static domain_name_servers=#nothing noipv6 static domain_search=#nothing
-
Redémarrer le réseau
sudo systemctl restart networking
-
Définir l’adresse mac de l’arduino :
// A changer selon l'adresse mac de l'arduino uint8_t mac[] = {0x90, 0xA2,0xDA, 0x00, 0x72, 0x8E} -
Définir les attributs de la connexion :
#include <Ethernet.h> //Version 2.0.1 lors des tests IPAddress ip(192, 168, 1, 3) //Adresse assignée à l'arduino (adresse de la pi+1) IPAddress dns(192, 168, 1, 2) IPAddress gateway(192, 168, 1, 2) IPAddress subnet(255, 255, 255, 0) IPAddress mqtt_server(192, 168, 1, 2) const int mqtt_port = 1883;
-
Installation & Configuration
-
Installer Mosquitto
sudo apt install mosquitto
-
Modifier le port et l’adresse IP associés au
listenerdans le fichiermosquitto.confdisponible ci-dessus.listener 1883 192.168.1.2
-
-
Lancer le broker :
mosquitto -c path/to/mosquitto.conf # Si ça ne fonctionne pas /usr/local/sbin/mosquitto -c path/to/mosquitto.conf -
Arrêter le broker :
ctrl+c ou pkill mosquitto
-
Modifier les adresses IP et les ports dans chaque fichier
-
Lancer le publisher
python3 publisher.py
-
Lancer le subscriber
python3 subscriber.py