Connect multiple analog sensors to ESP8266 using GPIOs and diodes

ESP8266 dispone di un solo ingresso analogico collegato all’ADC interno. Per acquisire dati da più di un sensore analogico esistono però diverse diverse soluzioni. Quella presentata in questo progetto può essere la più conveniente se il numero di sensori è limitato (2-3 al massimo). Per un numero elevato di sensori l’utilizzo di un multiplexer o di un ADC esterno dedicato è sicuramente raccomandabile.

Schema Elettrico

https://github.com/emanbuc/ESP8266_AnalogRead/tree/master/AnalogReadMultipleSensors

ESP8266_AnalogRead_MultipleSensors_schem
Multiple analog sensor reading using diodes

I diodi bloccano il passaggio della corrente quando il pin GPIO del sensore si trova in stato LOW. Ad esempio se D7 è HIGH e D8 è LOW il valore di tensione presente sull’ingresso A0 dipende soltanto dal sensore connesso a D7 e non è influenzato dalla presenza del sensore collegato a D8.

Per verificare il corretto funzionamento ho misurato la tensione ai capi della resistenza R1 con un multimetro digitale, in modo da poter confrontare la misura quella ottenuta utilizzando l’ADC interno dell’ESP8266.

IMG_20160807_155030
Voltage level on A0 pin measured with the ESP8266 internal ADC compared with the value obtained from a digital multimeter 

Software

https://github.com/emanbuc/ESP8266_AnalogRead/tree/master/AnalogReadMultipleSensors

Gli ingressi digitali vengono attivati in sequenza in modo da leggere il valore delle tensione di uscita dei sensori uno alla volta.

 Serial.print("AnalogRead Sensor1: ");
 digitalWrite(D7,HIGH);
 digitalWrite(D8,LOW);
 analogValue1 = analogRead(A0);
 Serial.print(analogValue1);
 Serial.print(" => ");
 Serial.print(analogValue1*V_ADC_STEP);
 Serial.println(" V");
 delay(1000);

 Serial.print("AnalogRead Sensor2: ");
 digitalWrite(D7,LOW);
 digitalWrite(D8,HIGH);
 analogValue2 = analogRead(A0);
 Serial.print(analogValue2);
 Serial.print(" => ");
 Serial.print(analogValue2*V_ADC_STEP);
 Serial.println(" V");
 
 delay(1000);
Annunci

One thought on “Connect multiple analog sensors to ESP8266 using GPIOs and diodes

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...