Como posso conversar com sensores digitais pela interface I²C?
Hardware:
Quais pinos do GPIO do Raspberry Pi posso usar?
Software:
Quais bibliotecas I²C estão disponíveis?
Há muitas informações sobre o GPIO da RPi aqui: http://elinux.org/Rpi_Low-level_peripherals
De acordo com ele, você pode programar quaisquer pinos GPIO para I²C, mas:
O pino 3 (SDA0) e o pino 5 (SCL0) são predefinidos para serem usados como uma interface I²C. Portanto, existem resistores de 1,8 kilohm na placa para esses pinos.
Essa página wiki também possui alguns exemplos de código GPIO de baixo nível para vários idiomas que devem ajudar você a começar. Se você precisar se atualizar sobre o que realmente é o I²C, aqui está um que também leva em consideração o RPi.
Para controle I²C específico, essa biblioteca python pode ser útil, é discutida nesta postagem do blog , que inclui uma amostra de código.
Muitas discussões estão acontecendo sobre isso. Aqui está o que minha leitura e minha brincadeira me mostram:
fonte
/etc/modprobe.d/raspi-blacklist.conf
e comente a entrada parai2c-bcm2708
; depois edite/etc/modules
e acrescentei2c-dev
; depois reinicie. Agora você deve ter um/dev/i2c-0
arquivo especial, que é muito fácil de usar.Aqui estão alguns exemplos que eu fiz
fonte
Hardware:
Como mencionado por Tapio, o hardware está bem documentado em http://elinux.org/Rpi_Low-level_peripherals
Programas:
Há um cabeçalho i2c-dev no espaço de usuário do Linux (
#include <linux/i2c-dev.h>
). Além disso, você precisa de um personagem que decida ler. Isso pode ser feito carregando os módulos corretos.i2c_bcm2708
para o motorista de baixo nível ei2c-dev
para gerar o personagem deciva para os ônibus. Aplique ...para carregá-los em tempo real. Aplique ...
e unblacklist
i2c_bcm2708
em/etc/modprobe.d/raspi-blacklist.conf
fazer/dev/i2c-0
e/dev/i2c-1
mostrar-se permanentemente.A partir de agora, você pode seguir as dicas de como usar o I²C del maestro.
Eu prefiro esse método do que outros, porque é platformagnótico. Você também pode usar
linux/i2c-dev.h
com outros dispositivos, desde que exista um driver I²C de baixo nível.Saudações
fonte