Serveur d'impression

Raspberry Pi – Arduino – Reliez les deux via le bus I2C – Raspberry Pi Home Server – Bien choisir son serveur d impression

Le 29 janvier 2020 - 2 minutes de lecture

Achtung: Dieser Artikel wurde automatisch von Bing Traduire übersetzt

Advertencia: Este artículo ha sido traducido automáticamente por Bing Traduire

Certains disent que nous ne lions pas les chiens aux saucisses mais parfois pourquoi pas. Ainsi, le Raspberry Pi et l'Arduino ne sont pas nécessairement si opposés, avec même des points communs mais chacun a des avantages qui peuvent être bons à combiner.

RaspArduinoI2C Avec le Raspberry Pi, vous pouvez via les ports GPIO contrôler les composants externes et faire des pirates informatiques. Mais j'imagine que certaines personnes maîtrisent déjà bien leur Arduino, qu'elles ont l'équipement, etc. Et puis cela fait un tutoriel supplémentaire 😀

Pour lier les deux, nous allons passer par le protocole I2C. Plusieurs raisons à cela: n'utilisez pas le port USB, le Raspberry Pi étant limité (si vous voulez quand même le faire il y a un article dans MagPi # 15 et j'en ferai un moi plus tard). Et n'utilisez pas le port série. Ici, c'est un peu plus personnel, car j'ai une carte Slice Of Pi sur un Raspberry pour la station météo et elle utilise le port série pour les sondes sans fil.

Le protocole I2C, créé par Philips avec une orientation domotique, permet à plusieurs composants de communiquer entre eux de manière bidirectionnelle mais en semi-duplex uniquement. Comme d'habitude, plus d'informations sur Wikipedia.

Il y a un principe de maître et d'esclave. Nous allons donc ici utiliser le Raspberry Pi comme maître et l'Arduino comme esclave.

Tout d'abord pour connecter les deux appareils, vous devez savoir quelles broches utiliser!
Pour la framboise c'est sur GPIO 2 et 3 (pour les cartes du modèle B révision 2, celles avec les trous de fixation dans la carte)

framboise-i2c

Pour l'Arduino, cela se produit sur les broches A4 et A5 pour les cartes de type Arduino Uno. Pour d'autres cartes, vous trouverez plus d'informations sur le site officiel d'Arduino.

arduino-i2c-2 "width =" 1000 "height =" 563 "data-lazy-data-srcset =" https://www.pihomeserver.fr/wp-content/uploads/2013/08/arduino-i2c-2 .png 1000w, https://www.pihomeserver.fr/wp-content/uploads/2013/08/arduino-i2c-2-300x169.png 300w "data-lazy-data-tailles =" (largeur max: 1000px ) 100vw, 1000px "/><noscript><img class=Vous devrez ajouter une connexion à la terre entre les deux. Vous aurez donc besoin de trois fils.

Avant de connecter nos deux appareils, nous devons nous assurer qu'ils pourront communiquer. Toutes les informations sont sur le site Web d'Adafruit mais, fondamentalement, voici ce qu'il faut faire.

Il est relativement simple d'inclure le module Wire dans le programme. J'ai pris l'adresse 0x12 mais vous pouvez choisir entre 0x03 et 0x77 (en hex):

#comprendre 

#define SLAVE_ADDRESS 0x12
int dataReceived = 0;

void setup () 
Serial.begin (9600);
Wire.begin (SLAVE_ADDRESS);
Wire.onReceive (ReceiveData);
Wire.onRequest (sendData);


boucle vide () 
retard (100);


void receiveData (int byteCount) 
while (Wire.available ()) 
dataReceived = Wire.read ();
Serial.print ("Données reçues:");
Serial.println (dataReceived);



void sendData () 
int send = dataReceived + 1;
Wire.write (expédition);

Comme vous pouvez le voir, le programme initialise l'Arduino avec l'adresse 0x12, définit la méthode de réception des données, la méthode d'envoi des données et c'est parti pour l'envoyer sur la carte avec l'interface.

Par défaut, les distributions de type Raspbian désactivent la gestion I2C pour économiser la mémoire utilisée par le module. Pour réactiver, rien de plus simple et c'est dans le dossier /etc/modprobe.d/raspi-blacklist.conf. Vous devez commenter avec un # la ligne:

liste noire i2c-bcm2708

Reste à activer le module à chaque démarrage. C'est dans le fichier / Etc / modules, en ajoutant une nouvelle ligne à la fin:

i2c-dev

Ensuite, vous installez la suite d'outils de gestion I2C

apt-get install i2c-tools

Vous devrez redémarrer le Raspberry pour faire apparaître deux fichiers:

1._ssh-2 "width =" 374 "height =" 77 "data-lazy-data-srcset =" https://www.pihomeserver.fr/wp-content/uploads/2013/08/1._ssh-2 .png 374w, https://www.pihomeserver.fr/wp-content/uploads/2013/08/1._ssh-2-300x62.png 300w "data-lazy-data-tailles =" (largeur max: 374px ) 100vw, 374px "/><noscript><img class=
Grâce à eux, vous pourrez communiquer sur le bus I2C!

Vous pouvez lister les appareils avec la commande:

i2cdetect -y 1

Pour les modèles 256 Mo (comme celui que j'utilise pour mes tests):

i2cdetect -y 0

Ici. Étape suivante: connectez l'Arduino et parlez-lui!

Vous pouvez maintenant connecter l'Arduino à la Raspberry et allumer tout ce petit monde!

Attention, sur le schéma, la connexion SDA et SCL est inversée! Le rouge en A5 et le balnc va en A4 😉

ArduinoRaspberry

Une fois cela fait, vous vous connectez au Raspberry Pi et relancez la commande i2cdetect avec le paramètre correct:

1._ssh-2

Le paramètre défini dans l'esquisse envoyée à l'Arduino, 0x12, apparaît dans les appareils détectés. Nous progressons!

Maintenant, nous devons configurer le script sur le Raspberry Pi qui enverra / recevra avec l'Arduino. La façon la plus simple de procéder consiste à installer le support I2C dans les scripts Python. C'est ce que fera python-smbus

apt-get install python-smbus

Nous sommes donc maintenant équipés pour parler à notre Arduino. Pour cela un petit programme simple. Envoyez un numéro entre 0 et 8 et renvoyez ce numéro plus un:

importer des smbus
temps d'importation

# Remplacer 0 par 1 si nouveau framboise
bus = smbus.SMBus (0)
adresse = 0x12

imprimer "Valeur d'envoi 3"
bus.write_byte (adresse, 3)
# Pause de 1 seconde pour laisser le temps au traitement de se dérouler
time.sleep (1)
answer = bus.read_byte (adresse)
imprimer "Arduino & # 39; s answer:", answer

Le résultat de l'exécution:

1._ssh-2

Laissez parler votre imagination pour l'instant dirigez l'Arduino en lui envoyant des requêtes un peu plus complexes en fonction de ce que vous y avez connecté!

Source et inspiration : un article d'Oscar

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.