Come posso usare I2C per parlare con i sensori?


29

Come posso parlare con i sensori digitali tramite l'interfaccia I²C?

Hardware:
quali pin sul GPIO di Raspberry Pi posso usare?

Software:
quali librerie I²C sono disponibili?

Risposte:


23

Ci sono molte informazioni sul GPIO di RPi qui: http://elinux.org/Rpi_Low-level_peripherals

Secondo esso, è possibile programmare qualsiasi pin GPIO per I²C, ma:

Il pin 3 (SDA0) e il pin 5 (SCL0) sono preimpostati per essere utilizzati come interfaccia I²C. Quindi ci sono 1,8 kilohm di resistori a strappo sulla scheda per questi pin.

Quella pagina wiki contiene anche alcuni esempi di codice GPIO di basso livello per varie lingue che dovrebbero iniziare. Se hai bisogno di un aggiornamento su cosa sia effettivamente I²C, eccone uno che tiene conto anche dell'RPI.

Per il controllo I²C specifico, questa libreria python potrebbe essere utile, è discussa in questo post del blog , che include un esempio di codice.


Qualche commento sul potenziale adattamento dei pin GPIO Edison Sparkfun per I2C?
geoteca

7

Molte discussioni in corso su questo. Ecco cosa mi mostra la mia lettura e il mio disordine:

  1. Il supporto I2C non è integrato nel kernel predefinito con lo "squeeze" di Debian
  2. Un kernel personalizzato dovrà essere compilato con il modulo i2cspi ( Ecco un estratto dell'albero GIT )
  3. I driver che sono stati scritti finora sono solo per il kernel 3.2 e successivi, e l'autore non ha intenzione di supportare il 3.1.9+ a causa di gap di sicurezza ( Chris Boot discute il driver )
  4. Per fortuna, la distribuzione "wheezy" di Debian, attualmente in beta per RasPi, avrà questo driver. Viene fornito con il kernel 3.2.

2
Sì, come hai già detto, è ora integrato nel kernel standard - sia le distribuzioni wheezy ufficiali di Raspbian che Debian. Ho seguito alcuni consigli che sono facili da seguire e ho i dispositivi I2C visualizzati in / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 Qui c'è un po 'più di dettagli se necessario: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

Per essere più dettagliati, tieni i dati qui piuttosto che sui link web, e sperando che ciò non diventi obsoleto: a partire dall'immagine di Wheezy 2012-09-18, modifichi /etc/modprobe.d/raspi-blacklist.confe commenti la voce per i2c-bcm2708; quindi modifica /etc/modulese aggiungi i2c-dev; quindi riavviare. Ora dovresti avere un /dev/i2c-0file speciale, che è molto facile da usare.
Damian,


2

Hardware:

Come menzionato da Tapio, l'hardware è ben documentato su http://elinux.org/Rpi_Low-level_peripherals

Software:

Esiste un'intestazione i2c-dev nello spazio utente di Linux ( #include <linux/i2c-dev.h>). Inoltre hai bisogno di un personaggio da cui decifrare. Questo può essere fatto caricando i moduli corretti. i2c_bcm2708per il guidatore di basso livello e i2c-devper generare i caratteri decimali per gli autobus. Applicare ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

per caricarli al volo. Applicare ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

e i2c_bcm2708nella lista nera /etc/modprobe.d/raspi-blacklist.confper creare /dev/i2c-0e /dev/i2c-1mostrare in modo permanente.

Da ora in poi puoi seguire i suggerimenti su come usare I²C del maestro stesso.

Preferisco questo metodo rispetto ad altri, perché è platformagnostico. Puoi utilizzarlo anche linux/i2c-dev.hcon altri dispositivi, purché esista un driver I²C di basso livello.

Saluti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.