¿Cómo puedo hablar con sensores digitales a través de la interfaz I²C?
Hardware:
¿Qué pines en el GPIO de la Raspberry Pi puedo usar?
Software:
¿Qué bibliotecas I²C están disponibles?
Aquí hay mucha información sobre el GPIO de RPi: http://elinux.org/Rpi_Low-level_peripherals
Según esto, puede programar cualquier pin GPIO para I²C, pero:
El pin 3 (SDA0) y el pin 5 (SCL0) están preconfigurados para usarse como una interfaz I²C. Por lo tanto, hay 1.8 kilohm de resistencia en la placa para estos pines.
Esa página wiki también tiene algunos ejemplos de código GPIO de bajo nivel para varios idiomas que deberían ayudarlo a comenzar. Si necesita un repaso de lo que realmente es I²C, aquí hay uno que también tiene en cuenta el RPi.
Para el control específico de I²C, esta biblioteca de Python podría ser útil, se discute en esta publicación de blog , que incluye una muestra de código.
Hay muchas discusiones sobre esto. Esto es lo que me muestra mi lectura y perder el tiempo:
fuente
/etc/modprobe.d/raspi-blacklist.conf
y comente la entrada parai2c-bcm2708
; luego edite/etc/modules
y agreguei2c-dev
; luego reiniciar. Ahora debería tener un/dev/i2c-0
archivo especial, que es muy fácil de usar.Aquí hay algunos ejemplos que he hecho.
fuente
Hardware:
Como mencionó Tapio, el hardware está bien documentado en http://elinux.org/Rpi_Low-level_peripherals
Software:
Hay un encabezado i2c-dev en el espacio de usuario de Linux (
#include <linux/i2c-dev.h>
). Además, necesitas un personaje que decida leer. Esto se puede hacer cargando los módulos correctos.i2c_bcm2708
para el conductor de bajo nivel yi2c-dev
para generar el personaje desciende para los autobuses. Aplicar ...para cargarlos sobre la marcha. Aplicar ...
y no incluir
i2c_bcm2708
en la lista negra/etc/modprobe.d/raspi-blacklist.conf
para hacer/dev/i2c-0
y/dev/i2c-1
mostrar permanentemente.A partir de ahora, puede seguir las sugerencias sobre cómo usar el propio I²C del maestro.
Prefiero este método sobre otros, porque es platformagnóstico.
linux/i2c-dev.h
También puede usarlo con otros dispositivos, siempre que exista un controlador I²C de bajo nivel.Saludos
fuente