Bus I2C

Come usare il sensore di luminosità TSL2591

Misurare l’intensità luminosa col sensore TSL2591

Il sensore TSL2591 permette di misurare l’intensità luminosa di un ambiente. Ha una buona capacità di campionamento ed in particolare permette con un solo sensore di rilevare sia lo spettro IR sia quello visibile. Il range di misurazione va da 188 Lux sino ad arrivare ad 88000 Lux (unità di misura Lux).
Nella figura seguente potete osservare il diagramma del circuito:

TSL2591 Diagramma di funzionamento

La conversione dei due canali viene eseguita contemporaneamente. Al termine del ciclo di conversione i dati vengono memorizzati nei relativi registri (CH0 Data e CH1 Data). Dopo la memorizzazione dei dati viene automaticamente eseguita la misurazione successiva.

Continua a leggere

24LC256 utilizzare una memoria seriale su bus I2C

Come usare una memoria 24LC256 su bus I2C

Il limite di memoria di una scheda Arduino può essere superato utilizzando delle memorie esterne che permettono di aggiungere capacità di memorizzazione per tutte quelle applicazioni che richiedono la registrazione di dati. Possiamo scegliere tantissimi tipi di memorie a seconda del tipo di interfaccia (I2C, SPI, parallela…) e dalla loro capacità.

Per questo tutorial ho scelto una comunissima EEPROM Seriale prodotta da Microchip, la 24LC256. Questa memoria può essere collegata alle schede Arduino tramite bus I2C e offre 256 Kbits di memoria (32KB). La pin function della memoria è rappresentata in figura:

24LC256

Continua a leggere

Comunicazione tra Arduino tramite I2C

Come collegare due Arduino usando il bus I2C.

Una caratteristica che reputo molto interessante è la possibilità di espandere Arduino tramite l’uso di shield. La maggior parte di queste schede aggiuntive sono però progettate per compiere una funzione specifica, non programmabile.
Esistono alcuni metodi che permettono di comunicare con altri dispositivi utilizzando come canale di trasmissione dati i protocolli seriali (I2C, SPI o RS232). Questo rende possibile demandare ad una scheda slave funzioni di elaborazione gravose, che non vogliamo far eseguire alla scheda master. Ho realizzato questo piccolo tutorial usando il bus I2C per creare uno scambio dati tra un Arduino ed un chip ATmega328 standalone.

Bus i2c

Il bus I2C, basandosi su due fili, non permette la comunicazione contemporanea tra Master e Slave. Lo scambio dati deve essere gestito dal Master tramite gli indirizzi (univoci) degli slave. Il flusso può essere sintetizzato in questo modo

  1. Il Master invia sul bus un bit di start
  2. Il Master invia sul bus l’indirizzo dello slave con cui vuole comunicare
  3. Il Master decide se scrivere o leggere dal dispositivo
  4. Lo Slave legge o scrive in base alla richiesta del Master

Continua a leggere

Netduino e bus I2C, collegamento al sensore MCP9803

MCP9803 leggere i registri del sensore di temperatura

Continuiamo gli articoli sul bus I2C, utilizzando sempre il nostro amato sensore di temperatura MCP9803. Questa volta ho utilizzato il Netduino per ‘colloquiare’ con il sensore per fare un po di ‘pratica’ con le varie classi esposte dal .Net micro framework che permettono di utilizzare il bus I2C.

Devo dire che con MikroC ho un controllo maggiore (giustamente) sulla comunicazione con il sensore. L’esperienza con Netduino invece mi ha lasciato un po perplesso, forse è una mia impressione ma avrei preferito un codice più snello, forse più a basso livello.

Lo schema elettrico che ho creato per questa esperienza è il seguente:

Continua a leggere

Preferiti
Rimani aggiornato

Sondaggi
Sorry, there are no polls available at the moment.
Seguimi su Twitter