I2c communication between arduino and raspberry pi

I2c communication between arduino and raspberry pi

Communication entre raspberry et arduino

La principale différence entre un Arduino UNO et un Raspberry PI est que le Raspberry est un micro-ordinateur qui nécessite un système d’exploitation et fonctionne comme votre ordinateur personnel, tandis que l’Arduino UNO est une carte programmable qui nécessite un ordinateur pour la programmer avec un logiciel spécifique appelé Arduino IDE.

La plus grande différence entre le Raspberry Pi et un ordinateur de bureau ou un ordinateur portable est qu’il possède des broches d’entrée et de sortie auxquelles vous pouvez connecter des capteurs, des boutons, etc. Vous pouvez également connecter un écran via le port HDMI, une souris, un clavier, etc.

Maintenant, si vous voyez le raspberry techniquement parlant, il a beaucoup d’avantages par rapport à l’Arduino, parce que c’est un ordinateur qui a intégré la communication WIFI et bluetooth, plus le processeur est 1000 fois plus puissant que l’arduino, multi-tâches et le système d’exploitation de soutien, alors nous pourrions penser que le raspberry est mieux, mais la réponse est DEPENDE, puisque les mêmes avantages qui a raspberry peut être vu comme des inconvénients, par exemple, un raspberry a un processeur très rapide mais consomme beaucoup plus d’énergie qu’un arduino, nécessite un système d’exploitation, ce qui rend le processus de démarrage plus lent et nécessite une mémoire avec le système d’exploitation, ce dont l’arduino n’a pas besoin, en plus d’être un ordinateur a plus de difficulté à essayer de gérer les entrées et les sorties alors voyons quelques exemples où il est recommandé d’utiliser un raspberry et quand il est recommandé d’utiliser un arduino.

  Domotique raspberry pi arduino

C

Dans certains projets, il peut être intéressant d’établir une communication série entre Raspberry Pi et Arduino. Ainsi, il est possible de coupler la puissance de calcul et les interfaces sans fil du Raspberry Pi avec les entrées/sorties et la collection de modules Arduino. Le premier exemple qui vient à l’esprit est l’utilisation de ce système pour la domotique où le Raspberry Pi hébergera l’interface de contrôle et d’intelligence et l’Arduino servira d’automate qui agira sur les composants en bout de chaîne (lumière, radiateur, ventilateur, capteurs, etc.).

Nous allons voir dans ce tutoriel comment établir une communication série entre Raspberry Pi et Arduino via le port USB. Dans cet article nous utilisons la carte Arduino UNO mais il peut être adapté à d’autres types de cartes avec connexion série (Nano, Mega, Feather, EPS32, etc.).

Pour établir une communication série entre Raspberry Pi et Arduino, il suffit de les connecter avec un câble USB approprié. Dans notre cas, nous utilisons un Raspberry Pi 3B+ et un Arduino UNO. Nous avons donc besoin d’un câble USBA mâle vers USB B mâle.

Configurer i2c raspberry

L’une des façons dont les appareils IoT communiquent entre eux est le bus I2C (Inter-Integrated Circuit), qui est un bus de données série développé en 1982 par Philips Semiconductors (aujourd’hui NXP Semiconductors).    Des informations détaillées sur le bus I2C sont disponibles sur le site http://bit.ly/2dzy8Cx.

Dans cet article, je vais montrer un exemple très basique de communication sur le bus I2C entre un Raspberry Pi 3 et quatre Arduino UNO Rev3. Vous pouvez trouver le code complet sur GitHub (http://bit.ly/2e1nbWl).

  Arduino raspberry i2c

Voici le schéma de connexion pour une LED. Rappelez-vous que la broche la plus longue de la LED est l’anode (+) et c’est celle qui sera connectée à l’alimentation (dans notre cas à la PIN DIGITAL 2 avec le fil orange). D’autre part, la broche la plus courte de la LED est la cathode (-) et c’est celle qui sera connectée à la terre (GND, dans notre cas la connexion GND existante du bus I2C sera utilisée). Il est toujours nécessaire d’inclure une résistance de 220 Ohm afin que la LED ne “brûle” pas.

I2c raspberry pi

La trame ci-dessus est une trame I2C typique, bien qu’en réalité il puisse y avoir des variantes, puisque dans le cas où le Maître lui-même veut continuer à communiquer, il n’est pas nécessaire de terminer la transmission avec un Stop et de recommencer une transmission. Le protocole permet d’effectuer un autre Start au milieu d’une trame, donc l’adresse et le R/W devront être envoyés à nouveau, afin de pouvoir changer le mode de communication et passer à une lecture ou une écriture et accéder à un autre capteur ou à un autre registre du même capteur. Un tel cadre peut être vu dans l’image ci-dessous.

Pour utiliser le bus I2C dans Arduino, vous devez inclure la bibliothèque Wire avec #include <Wire.h>. Ensuite, dans la configuration, vous devez utiliser la fonction Wire.begin() qui démarre le bus I2C et nous définit comme maîtres. A l’intérieur du début, une adresse peut être définie, bien que si il n’y a qu’un seul maître, ce n’est pas nécessaire car personne ne va nous demander des données, mais nous allons toujours initier la communication. Une fois que le bus a démarré, nous pouvons commencer à transmettre. Trois instructions sont utilisées pour cela :

  Communication raspberry arduino usb