J’ai déjà décrit dans un article précédent comment fonctionne l’Arduino et quels modèles existent. Il y a beaucoup d’articles sur l’Arduino lui-même, mais peu en rapport avec le Raspberry Pi, mais cette combinaison offre de nombreuses possibilités.
Puisque je veux en savoir plus sur l’Arduino en conjonction avec le Raspberry Pi, je commencerai par montrer la communication directe des deux.
Vous n’avez besoin de rien de plus qu’un Raspberry PI, un câble USB et un Arduino (par ex. Uno ou Nano).
Préparation
Pour que l’Arduino puisse communiquer plus tard avec le Raspberry Pi, le code correspondant doit d’abord être chargé dessus. La façon la plus simple de le faire est via le PC / Mac. J’ai déjà montré ici comment cela fonctionne.
néant installer(){ En série.commencer(9600); } néant boucle(){ si (En série.disponible()) { octet nr = En série.lis(); En série.impression(« Le personnage suivant a été reçu: »); En série.println(nr, DÉC); } } |
Ceci est juste un petit exemple de la façon d’utiliser le composant série. Bien sûr, vous pouvez également répondre aux entrées en démarrant des fonctions, en configurant ou en lisant les E / S, etc.
Mise en service sur le Raspberry Pi
Sur le Pi, des bibliothèques supplémentaires sont nécessaires, nous les installons d’abord:
sudo apt-get install minicom python-serial
Vous devez déconnecter l’Arduino du Pi si vous l’avez connecté, car nous devons trouver le nom du port. Pour ce faire, procédez comme suit deux fois: une fois sans et une fois avec Arduino connecté via USB.
ls /dev/tty*
Vous remarquerez qu’à la fin de la liste un nouveau nom a été ajouté (pour moi c’est/dev/ttyUSB0
). Avec ce nom, vous pouvez adresser l’Arduino via le port série. Parce que la bibliothèque de connexion série a été installée sous Python, nous pouvons facilement y accéder.
Pour cela nous créons un nouveau fichier
sudo nano serialTest.py
avec le contenu suivant:
importation en série importation temps s = en série.En série(‘/ dev / ttyAMA0’, 9600) # changer le nom, si nécessaire s.ouvert() temps.dormir(5) # l’Arduino est réinitialisé après avoir activé la connexion série, nous devons donc attendre quelques secondes s.écrire(« tester ») essayer: tandis que Vrai: réponse = s.readline() impression(réponse) sauf KeyboardInterrupt: s.Fermer() |
et exécutez:
sudo python serialTest.py
La sortie ressemble à ceci (Ctrl + C vous permet de l’arrêter):
pi@raspberrypi ~ $ sudo python serialTest.py The following char was received: 116 The following char was received: 101 The following char was received: 115 The following char was received: 116
La sortie des caractères lus a lieu dans ASCII format (DEC pour décimal, HEX pour le code hexadécimal). Bien sûr, vous pouvez également émettre le personnage directement ou y réagir.
Comment cela m’aide-t-il?
D’une part, l’Arduino offre plusieurs fonctionnalités qui peuvent être utiles, selon le modèle. De plus, l’Arduino possède également de nombreuses broches d’E / S numériques et analogiques qui peuvent être facilement contrôlées. Il pourrait également être utilisé comme un expanseur GPIO, ce qui est beaucoup plus facile à contrôler. En outre, vous pouvez facilement communiquer avec les bibliothèques / programmes Arduino si vous ne souhaitez pas les exécuter sur le Pi.