Frambuesa Pi - Arduino - Vincular dos vía el bus I2C
atención : Este artículo ha sido traducido automáticamente por Bing Traducir
Advertencia : Este artículo ha sido traducido automáticamente por Bing Translate
Algunos dicen que ¡ no perros salchichas pero a veces por qué no vinculantes. Raspberry Pi y el Arduino no son necesariamente también se opuso a, con incluso puntos en común pero cada beneficios que pueden ser buenos combinar.
Con Frambuesa Pi puede mediante puertos de componentes externos de control GPIO y el hack en electrónica. Pero me imagino que algunos ya han dominado su Arduino, ellos tienen el equipo, etc.. Et puis ça fait un tuto en plus 😀
Para enlazar los dos, Pasaremos por el protocolo I2C. Varias razones para ello : No utilice el puerto USB, Raspberry Pi es limitada (Si quieres hacerlo de todos modos hay un artículo en el MagPi #15 y me haré una tarde). Y no use el puerto serie. Aquí está un poco más personal, Porque tengo una tarjeta Trozo de Pi en una frambuesa para la estación meteorológica y usa el puerto serial para sensores inalámbricos.
El protocolo I2C, creada por Philips con una orientación de página, permite varios componentes interactuar entre ellos de manera bidireccional pero semidúplex sólo. Como de costumbre, más información en Wikipedia.
Hay un principio de amo y esclavo. Aquí utilizaremos Raspberry Pi como maestro y el Arduino como esclavo.
Principalmente conectar dos dispositivos necesita saber lo que los pernos a utilizar !
La frambuesa es sobre los GPIO 2 y 3 (para los mapas de revisión modelo B 2, ésos con los agujeros de montaje en el mapa)
Para el Arduino, Sucede en los pernos para las tarjetas de tipo Arduino Uno A4 y A5. Para otras tarjetas, Puede encontrar más información en el sitio oficial de Arduino.
Es necesario añadir una conexión a la masa entre los dos. Así que tienes tres cables.
Antes de conectar los dos dispositivos, Es necesario asegurarse que serán capaces de comunicarse. Toda la información está en el sitio de adafruit Pero por mayor, Aquí es qué hacer.
Definir el Arduino como esclavo
Es relativamente sencillo incluyendo el módulo en el programa. Tomé la dirección 0 x 12, pero usted puede elegir 0 x 0 x 77 03 (en hex) :
#incluyen <WIRE.h> #definir dataReceived 0 x 12 int SLAVE_ADDRESS = 0; instalación de vacío() { Serial.Begin(9600); WIRE.Begin(SLAVE_ADDRESS); Wire.onReceive(receiveData); Wire.onRequest(sendData); } bucle vacío() { retardo(100); } void receiveData(int byteCount){ Tiempo(WIRE.available()) { dataReceived = Wire.read(); Serial.Print("Datos recibidos : "); Serial.println(dataReceived); } } void sendData(){ int enviar = dataReceived + 1; WIRE.Write(envío); }
Entenderás, el programa Inicializa el Arduino con dirección 0 x 12, define el método de recepción de datos, el método de envío de datos y vamos a enviar a la tarjeta con la interfaz.
Habilitar la administración I2C de Frambuesa Pi
De forma predeterminada, las distribuciones del tipo Raspbian desactivar la gestión de I2C para salvar la memoria utilizada por el módulo. Para volver a habilitar, Es fácil y está en el archivo /etc/modprobe.d/raspi-Blacklist.conf. Necesitamos ser comentada con un # la línea :
lista negra i2c-bcm2708
Descansar para habilitar el módulo cada vez que empiezas a. Está en el archivo /etc/modules, añadiendo al final una nueva línea :
I2C - dev
Luego instalar la suite de herramientas de administración de I2C
apt - get install i2c-herramientas
Usted tendrá que reiniciar la frambuesa para aparecer dos archivos :
Gracias a ellos serás capaz de comunicarse en el bus I2C !
Puede enumerar dispositivos con el comando :
i2cdetect y 1
Para los modelos de 256 MB (como uno que usé para mis pruebas) :
i2cdetect y 0
Se trata de. Siguiente paso : Conecte el Arduino y hablar con él !
Comunicarse con Arduino
Ahora puedes conectar el Arduino a la frambuesa y convertir todo este mundo pequeño !
Atención, en el esquema, Conexión SDA y SCL se invierte ! Le rouge en A5 et le balnc va en A4 😉
Una vez hecho, iniciar sesión en el Pi de frambuesa y reiniciar el i2cdetect de comandos con el parámetro adecuado :
El ajuste en el sketch de Arduino, 0x 12, aparece en los dispositivos detectados. Progresa !
Ahora tenemos que aplicar la secuencia de comandos de Frambuesa Pi que envíe/reciba con Arduino. Para esto, el más sencillo es instalar el soporte de I2C en scripts en Python. Esto es lo que hará que python-smbus
apt - get install python-smbus
Ahora estamos equipados para hablar con nuestro Arduino. Para esto un pequeño programa todo simple. Enviar una cifra entre 0 y 8 y nos devuelven este número más uno :
SMBus importación import tiempo # Reemplazar 0 por 1 tan nuevo autobús frambuesa = smbus.SMBus(0) Dirección = 0 x 12 impresión "El valor enviado 3" bus.write_byte(Dirección, 3) # Descanso 1 en segundo lugar para permitir el tratamiento ser time.sleep(1) respuesta = bus.read_byte(Dirección) imprimir "La respuesta de la arduino : ", respuesta
El resultado de la ejecución :
Deja que hable tu imaginación para llevar ahora el Arduino por un poco más complejas dependiendo de lo que conectó enviar aplicaciones !
Fuente e inspiración : una sección d’Oscar
Pingback: Es para pronto | cueva Zragg()