Communication USB entre Arduino UNO et Raspberry Pi


Mis à jour le : 14/03/2019


Dans certains projets, nombreuses sont les raisons qui peuvent nous mener à utiliser Raspberry Pi et Arduino ensemble. En effet, chaque carte possède ses avantages et ses inconvéniants. Certains modules seront plus faciles à utiliser sur l'Arduino, alors que d'autres fonctions seront plus facilement implémentables sur un Raspberry Pi. Pour tirer l'avantage de chaque carte, le mieux est d'établir une communication entre les deux.
Nous allons donc voir dans ce tutoriel comment mettre en place les 3 types de communication suivants :

I. Prérequis

Pour faire communiquer les deux cartes, il faut :

Et c'est tout ! Une fois tous les éléments réunis, on peut passer au vif du sujet.

II. Communication unidirectionnelle de l'Arduino vers le Raspberry Pi

Pour commencer, voyons comment pourrait-on envoyer un message depuis l'Arduino vers le au Raspberry.
Côté Arduino, c'est très simple : il suffit juste de lui demander d'écrire sur la sortie série Serial le message que l'on souhaite transmettre. Le code ci dessous envoie un message toutes les deux secondes de type : Message #i, "i" s'incémenant à chaque envoie.

Ne branchez pas encore l'Arduino au Raspberry Pi.

Côté Raspberry, rien de bien compliqué non plus. On va écrire un programme en Python qui va utiliser la fonction serial.Serial. Cependant, on va avoir besoin pour utiliser cette fonction, du port utilisé par l'Arduino sur le Raspberry Pi.
Il suffit d'entrer la commande Linux suivante :

  ls /dev/tty*

Vous devriez obtenir une liste à peu près de ce type :

Capture d'écran ls /dev/tty* sans Arduino Branché

Branchez l'Arduino au port USB et entrez à nouveau la commande. Un nouvel élément devrait apparaître dans la liste, et cet élément porte le nom que prend notre Arduino !

Capture d'écran ls /dev/tty* sans Arduino Branché

Dans ce cas, l'Arduino est detecté en temps que /dev/ttyACM0 (sûrement parce que j'utilise un cable d'imprimante).

Regardons maintenant le programme qui sera executé sur le Raspberry :

On obtient à l'execution ceci :

Moniteur Série Arduino sur Raspberry Pi Moniteur Série Arduino sur PC

C'est tout pour la communication de l'Arduino vers le Raspberry. Voyons maintenant comment établir une communication Raspberry vers Arduino.

III. Communication unidirectionnelle du Raspberry Pi vers l'Arduino

Pour cette communication, je vais utiliser un exemple plus concret : Contrôler des LED connectées à l'Arduino à partir du Raspberry.
Commençons par brancher les LEDs à l'Arduino en suivant ce schéma par exemple:

Branchement LED Arduino

Programmons maintenant l'Arduino, qui va recevoir les ordres du Raspberry Pi :

Pour finir, on code l'envoi des ordres par le Raspberry Pi :

LED Arduino commandées par Raspberry

Commentaires

afterwind, le 19/04/2019 à 19h38
La partie bidirectionnelle a disparu?
Cordialement
Mat716, le 16/03/2019 à 22h27
bonjour, pour la communication dans le sens Arduino Raspberry je souhaite envoyer à ma carte raspberry plusieurs information différentes
(j'ai comme projet de faire un tableau de bord pour voiture) donc doit-je mettre plusieurs fois la ligne print(serialArduino.readline())

EspaceRaspberryFrancais, le 17/03/2019 à 09h44
Bonjour Mat176,
pas besoin de mettre plusieurs fois la ligne print(serialArduino.readline()). En effet, elle se trouve dans une boucle infinie, donc va s’exécuter dès qu'un nouveau message est reçu.
D'ailleurs, lors de l’exécution du code sur le Raspberry, on se rend compte que le Raspberry reçoit bien tous les messages envoyés par l'Arduino un par un, et pas seulement le 1er.

Cordialement,
EspaceRaspberryFrancais.


Commenter
Votre adresse mail ne sera pas visible sur le site.

Seuls les commentaires jugés corrects seront mis en ligne.



Composants Bien débuter sur le Raspberry PI Configurer le Raspberry Pi
Ecran LCD 16x02 Accessoires indispensables sur Raspberry Pi Connexion sans login ni mot de passe au Raspberry
Capteur de température DS18B20 Première installation et démarage Changer le Hostname du Raspberry Pi
Afficheurs 7 segments Création et execution d'un programme Python Connexion Ethernet Raspberry/ordinateur
Capteur distance HC-SR04 Connexion au bureau depuis Windows
Interaction par bouton poussoir Test & tuto : Ecran LCD 7" tactile
Servo Moteur
Capteur de présence HC-SR501
Module RFID-RC522
Caméra sur Raspberry Pi

EspaceRaspberryFrançais |
Contact | Facebook



En tant que Partenaire Amazon, je réalise un bénéfice sur les achats remplissant les conditions requises.

Espace-raspberry-francais.fr est hebergé par SARL LWS.