Les Arduinos apparaissent généralement comme des périphériques série USB. Les cartes actuelles utilisent le pilote série USB intégré au microprocesseur principal, mais les anciens Arduinos (et leurs clones) utilisaient des puces série USB tierces distinctes.
Pour recevoir simplement des Serial.print
données sur le Raspberry Pi de l’Arduino, j’utilise le programme GNU Screen comme terminal de base: screen [serial-port] [baud-rate]
(par exemple screen /dev/ttyACM0 9600
).
J'ai testé trois Arduinos différents et un clone plutôt différent. Les nouvelles variantes sont toutes apparues en tant que /dev/ttyACM0
ports, et les plus anciennes /dev/ttyUSB0
. Voici ce que j'ai trouvé sous Raspbian:
Le Raspberry Pi peut ne pas fournir assez d’énergie pour conduire un Arduino, vous aurez donc peut-être besoin d’une alimentation externe. Par souci d’ exhaustivité, j’ai également testé un Prolific PL2303 , même s’il n’appartient à aucun Arduino. Il est apparu assez heureusement comme /dev/ttyUSB0
.
Pour des communications plus complexes avec des capteurs, vous pouvez envisager Firmata , "un protocole générique pour communiquer avec des microcontrôleurs à partir de logiciels sur un ordinateur hôte". Il a des implémentations pour Arduino et des bibliothèques Python à exécuter du côté Raspberry Pi.
Voici un petit exemple d'utilisation de pyFirmata pour lire un LM35 et modifier la luminosité d'une LED:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# simple test of pyfirmata and Arduino; read from an LM35 on A0,
# brighten an LED on D3 using PWM
# scruss, 2012-08-14 - tested on Arduino Uno & Raspberry Pi (Raspbian)
import pyfirmata
# Create a new board, specifying serial port
board = pyfirmata.Arduino('/dev/ttyACM0')
# start an iterator thread so that serial buffer doesn't overflow
it = pyfirmata.util.Iterator(board)
it.start()
# set up pins
pin0=board.get_pin('a:0:i') # A0 Input (LM35)
pin3=board.get_pin('d:3:p') # D3 PWM Output (LED)
# IMPORTANT! discard first reads until A0 gets something valid
while pin0.read() is None:
pass
for i in range(10):
pin3.write(i/10.0) # set D3 to 0, 10%, 20%, ... brightness
print "PWM: %d %% Temperature %.1f °C" % (i * 10, pin0.read() * 5 * 100)
board.pass_time(1) # pause 1 second
pin3.write(0) # turn LED back off
board.exit()
Il y a quelques mises en garde lors de l'utilisation de pyFirmata:
- Les lectures analogiques et les écritures PWM sont normalisées dans une plage de 0 .. 1, et non des Arduino standard 0 .. 255 et 0 .. 1023.
- Vous devez vraiment démarrer un thread d'itérateur séparé pour empêcher les anciennes lectures de déborder du tampon série.
- Puisque l’Arduino est lu de manière asynchrone, assurez-vous que la connexion pyFirmata est complètement initialisée avant de lire les ports. Sinon, les
None
valeurs s'ensuivent.
Au cas où ce ne serait pas clair, avec Raspbian Wheezy , vous pouvez exécuter l'IDE Arduino et télécharger des esquisses sur l'Arduino lorsqu'il est connecté au port USB du Raspberry Pi. Pour installer sur Raspbian, tapez simplement dans le shell (ligne de commande):
Il téléchargera et installera tous les packages nécessaires. J'ai quelques photos de l'IDE Arduino dans Raspbian ici:
http://www.element14.com/community/groups/raspberry-pi/blog/2012/07/03/review-of-raspberry-pi-images
(Comme d'autres personnes l'ont décrit ci-dessus, le Raspberry Pi pourrait également programmer l'Arduino via les broches du port série (UART) sur l'en-tête GPIO. Dans ce cas, vous ne devriez pas "gaspiller" un port USB, mais une configuration supplémentaire serait nécessaire. )
Cordialement, Drew
la source
On peut choisir de connecter le rpi à l’arduino en utilisant un port USB ou en utilisant les broches GPIO. On peut utiliser Wiringpi pour faire la communication entre les cartes.
Actuellement, un pont appelé Ponte est en cours de développement .
Un monde de base bonjour peut être trouvé ici .
la source
À la mode
Décrit comme la bonne façon de placer un Arduino dans un Raspberry Pi de Hack A Day, le mode est un clone Arduino empilable conçu par Anool Mahidharia, Justin Shaw et Kevin Osborn du groupe de collaboration Wyolum.com OSHW. Hack A Day l'a décrit comme suit
Kevin donne un peu plus de détails sur son blog :
Bêta limitée
Le conseil est actuellement en version bêta limitée, mais il mérite d’être mentionné comme un clone bien pensé, qui a été annoncé par un groupe avec une forme antérieure .
Les références
la source
Vous pouvez envisager la carte Gert, désormais basée sur Arduino, si vous souhaitez une plate-forme d’interface matérielle à usage général. L'un des avantages est qu'il existe une documentation complète sur les interactions avec le RPi. En pré-commande sur Element14 à partir du 8/8/12.
la source
Il existe un RaspberryPi HAT qui se comporte comme un Arduino et peut être programmé via son interface Web à partir de n'importe quel navigateur. Projet appelé CoPiino . Il est livré complètement avec un logiciel opérationnel. Il suffit d'entrer l'esquisse Arduino dans l'interface utilisateur du navigateur et de cliquer sur "Compiler et exécuter" - c'est tout.
la source