Sommario:

Registratore di temperatura WiFi (con ESP8266): 11 passaggi (con immagini)
Registratore di temperatura WiFi (con ESP8266): 11 passaggi (con immagini)

Video: Registratore di temperatura WiFi (con ESP8266): 11 passaggi (con immagini)

Video: Registratore di temperatura WiFi (con ESP8266): 11 passaggi (con immagini)
Video: Log Sensor data to an SD card using ESP8266 2024, Luglio
Anonim
Image
Image
Materiali
Materiali

Ciao, felice di vederti qui. Spero che in questo istruibile troverai alcune informazioni utili. Sentiti libero di inviarmi suggerimenti, domande, … Ecco alcuni dati di base e una rapida panoramica del progetto. Per gli utenti mobili: Video. Fatemi sapere cosa ne pensate del progetto nella sezione commenti, grazie. Di recente ho acquistato una scheda NodeMcu (basata su esp8266) solo per provarla, quindi questo non è un progetto molto avanzato. Ma funziona ed è ciò di cui ho bisogno, quindi va bene. La funzione principale di questo registratore di dati è raccogliere la temperatura e salvarla su un server. Ciò consente agli utenti di controllare i dati e il grafico online anche quando non si trovano nella stessa posizione del logger (ad esempio per una stazione meteorologica). Un'altra caratteristica utile è l'aggiornamento OTA incluso nel codice che consente all'utente di aggiornare e personalizzare facilmente il software. Analizzerò due sensori e il relativo metodo di acquisizione per fare un bilancio di tutti i pro e i contro.

Spoiler: dopo un po' di test ho scoperto che un sensore digitale come DS18B20 è la soluzione migliore perché offre stabilità e maggiore precisione. È già impermeabile e con il cavo.

Passaggio 1: materiali

Materiali
Materiali
Materiali
Materiali
Materiali
Materiali

Questo è un progetto minimale con solo pochi componenti esterni, per questo l'elenco delle distinte base sarà davvero breve. Comunque vediamo quale materiale viene richiesto:

  • NodeMcu V3 (o qualsiasi μprocessore ESP8266 compatibile);
  • led RGB (anodo comune);
  • Resistenze per led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (termometro integrato Maxim);
  • LM35 (Termometro strumento Texas);
  • Batteria esterna (opzionale);
  • Cavo;
  • Connector (per renderlo più "avanzato");
  • Box (opzionale, sempre per renderlo più "avanzato");
  • Porta led (opzionale);

Nota: come ho detto, devi scegliere uno dei due metodi. Se scegli il termometro LM35, avrai bisogno di qualche altro componente:

  • Attiny45/85;
  • Programmatore AVR (o Arduino come ISP);
  • Resistenza (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Connettore a striscia da 2,54 mm (opzionale)
  • Diodo (2x1N914)
  • Perfboard o PCB;

Passaggio 2: scelta del sensore

Scelta del sensore
Scelta del sensore

La scelta del sensore può essere un passo difficile: oggi ci sono tonnellate di trasduttori (TI offre 144 elementi diversi) sia analogici che digitali con diversi range di temperatura, precisione e case. Sensori analogici (46 parti disponibili da TI): Pro:

  • Il datalogger può essere facilmente cambiato dalla temperatura ad un'altra grandezza (tensione, corrente, …);
  • Potrebbe essere un po' più economico;
  • Facile da usare poiché non richiede alcuna libreria speciale;

Contro:

  • Richiede ADC (che può influenzare l'accuratezza della misurazione) e altri componenti esterni. Poiché esp8266 ha un solo ADC (e non molto preciso) suggerirei di usarne uno esterno.
  • Necessita di un cavo dedicato con reiezione del rumore poiché qualsiasi tensione indotta può modificare il risultato.

Dopo un po' di riflessione ho deciso di utilizzare LM35, un sensore lineare con fattore di scala +10mV/°C con una precisione di 0,5°C e una corrente molto bassa (circa 60uA) con una tensione di esercizio da 4V a 30V. Per maggiori dettagli suggerisco di consultare la scheda tecnica: LM35.

Sensori digitali (altamente consigliato)Pro:

Quasi tutti i componenti esterni necessari;

ADC integrato

Contro:

Richiedi libreria o software per decodificare il segnale digitale (I2C, SPI, Serial, One Wire, …);

Più costoso;

Ho scelto DS18B20 perché ho trovato un set di 5 sensori impermeabili su Amazon e perché è ampiamente documentato su internet. La caratteristica principale è la misurazione a 9-12 bit, bus 1-Wire, tensione di alimentazione da 3,0 a 5,5, precisione di 0,5°C. Ancora una volta, per maggiori dettagli ecco la scheda tecnica: DS18B20.

Passaggio 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Analizziamo come ho implementato l'ADC esterno e altre funzionalità per il termometro LM35. Ho trovato un cavo a tre fili, uno con schermatura e due senza. Ho deciso di aggiungere un condensatore di disaccoppiamento per stabilizzare la tensione di alimentazione vicino al sensore. Per convertire la temperatura analogica in digitale, ho utilizzato il microprocessore Attiny85 in un pacchetto dip8 (sempre per maggiori informazioni vedere la scheda tecnica: attiny85). La cosa più importante per noi è l'ADC a 10 bit (non proprio il migliore ma abbastanza preciso per me). Per comunicare con Esp8266 ho deciso di utilizzare la comunicazione seriale tenendo presente che esp8266 funziona con 3.3V e attiny85 a 5V (in quanto ha bisogno di alimentare il sensore). Per ottenere ciò, ho utilizzato un semplice partitore di tensione (vedi schema). Per leggere la temperatura negativa dobbiamo aggiungere alcuni componenti esterni (2x1N914 e 1x18k resistore), poiché non voglio usare l'alimentazione negativa. Ecco il codice: repository TinyADC. Nota: per compilare questo codice dovrai installare attiny to ide (inseriscilo nell'opzione: https://drazzy.com/package_drazzy.com_index.json), se non sai come farlo, cerca su Google. Oppure carica direttamente il file.hex.

Passaggio 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Ho comprato quei sensori da Amazon (5 costa circa 10€). È arrivato con una copertura in acciaio inossidabile e un cavo lungo 1 m. Questo sensore può restituire dati di temperatura da 9 a 12 bit. Molti sensori possono essere collegati allo stesso pin poiché tutti hanno un ID univoco. Per collegare il DS18B20 a esp8266 puoi semplicemente seguire lo schema (seconda foto). Dato che ho deciso che il mio registratore avrebbe avuto tre sonde, ho dovuto distinguere quale è quale. Così ho pensato di dare loro un colore associato via software al loro indirizzo. Ho usato del tubo termoretraibile (terza foto).

Passaggio 5: codice ESP8266

Codice ESP8266
Codice ESP8266
Codice ESP8266
Codice ESP8266

Dato che sono nuovo in questo mondo, ho deciso di utilizzare molte librerie. Come detto nell'introduzione le caratteristiche principali sono:

  • Aggiornamento OTA: non è necessario collegare esp8266 al computer ogni volta che è necessario caricare il codice (devi farlo solo la prima volta);
  • Wireless manager, se la rete wireless cambia, non è necessario ricaricare lo sketch. È sufficiente configurare nuovamente i parametri di rete collegandosi all'access point esp8266;
  • Trasmissione dati Thingspeak;
  • Supportati sia LM35 che DS18B20;
  • Interfaccia utente semplice (il led RGB indica alcune informazioni utili);

Per favore scusami perché il mio software non è il migliore e non è molto ben ordinato. Prima di caricare sul dispositivo, è necessario modificare alcuni parametri per adattare il codice alla configurazione. Qui è possibile scaricare il software. Configurazione comune LM35 e DS18B20 È necessario modificare la definizione del pin, il token, il numero del canale, l'utente e la password per l'aggiornamento OTA. Linea dalle 15 alle 23.

#define red YOURPINHERE #define green YOURPINQUI

#define blue YOURPINHERE const char* host = "seleziona indirizzo host"; //non è veramente necessario puoi lasciare esp8266-webupdate const char* update_path = "/firmware"; //per modificare l'indirizzo per l'aggiornamento ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char* update_password = "LA TUA PASSWORDQUI; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey = "WRITEAPIHERE";

Passaggio 6: codice ESP8266: utente LM35

È necessario collegare la scheda attiny a esp8266, per alimentare l'unità ADC utilizzare il pin VU e il pin G. È necessario scegliere quale pin si desidera utilizzare per la comunicazione seriale (per mantenere l'hardware libero a scopo di debug). Il pin Tx deve essere selezionato ma non è realmente utilizzato. (Riga 27). SoftwareSerial mySerial (RXPIN, TXPIN); In alto devi aggiungere:#define LM35USER

Passaggio 7: codice ESP8266: utente DS18B20

Come prima operazione è necessario identificare l'Indirizzo dispositivo per ogni sensore. Compilare e programmare questo codice sull'esp e cercare in seriale i risultati. Il codice lo trovi qui (cerca questo titolo nella pagina: «Leggi i singoli indirizzi interni DS18B20»). Collega un solo sensore per ottenere l'indirizzo, i risultati dovrebbero essere qualcosa del genere (numero casuale qui! Solo come esempio): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Quindi devi cambiare il mio codice nella sezione " Configurazione per DS18B20" (linea da 31 a 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION //(da 9 a 12) #define delayDallas READINTERVAL //(In Millisecondi, il minimo è 15s o 15000mS) DeviceAddress blueSensor = { 0x11, 0x22, 0x33,0x1, 0xD 0x12}; //CAMBIA CON IL TUO INDIRIZZO DeviceAddress redSensor = { 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; //CAMBIA CON IL TUO INDIRIZZO DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 }; //CAMBIA CON IL TUO INDIRIZZO In alto devi aggiungere:#define DSUSER

Passaggio 8: ESP8266 piccolo trucco

ESP8266 Piccolo trucco
ESP8266 Piccolo trucco

Dopo un po 'di test ho scoperto che se si collega esp8266 senza programmazione, non eseguirà il codice fino a quando non si preme reset una volta. Per risolvere questo problema, dopo un po' di ricerche, ho scoperto che bisogna aggiungere una resistenza di pull-up da 3.3V a D3. Questo dirà al processore di caricare il codice dalla memoria flash. Con questo metodo, D3 può essere utilizzato direttamente per l'input dei dati per i sensori DS18B20.

Passaggio 9: prima operazione

Prima operazione
Prima operazione
Prima operazione
Prima operazione

Se hai caricato il codice correttamente ma non hai mai utilizzato la libreria del gestore Wi-Fi è il momento di configurare la tua connessione Wi-Fi. Aspetta di vedere il led RGB lampeggiare più velocemente di prima, quindi cerca con il tuo cellulare o PC la rete wifi denominata "AutoConnectAp" e connettiti. Dopo la connessione, apri un browser web e inserisci 192.168.4.1, troverai l'interfaccia grafica del gestore wifi (vedi foto) e premi "Configura Wifi". Attendi che esp8266 cerchi le reti wifi e seleziona quella desiderata. Inserisci la password e premi "salva". Esp8266 si riavvierà (non importa il led RGB questa volta perché emetterà alcune informazioni casuali) e si connetterà alla rete.

Passaggio 10: conclusione

Conclusione
Conclusione
Conclusione
Conclusione
Conclusione
Conclusione
Conclusione
Conclusione

Alla fine, ecco un grafico preso dal registratore di dati in azione durante la registrazione della temperatura del mio congelatore. In arancione è il DS18B20 e in blu l'LM35 e il suo circuito. Puoi vedere la più grande differenza di precisione dal sensore digitale a quello analogico (con il mio povero "circuito ADC") che fornisce alcuni dati non fisici. Riassumendo, se vuoi costruire questo logger ti suggerisco di utilizzare il sensore di temperatura digitale DS18B20 poiché è più facile da leggere e quasi "plug and play", è più stabile e preciso, funziona a 3,3V e richiede un solo pin per molti sensori. Grazie per l'attenzione, spero che questo progetto sia un bene per te e tu abbia trovato alcune informazioni utili. E per chi vuole realizzarlo, vorrei aver dato tutte le informazioni necessarie. Se non sono libero di chiedere tutto, sarò felice di rispondere a tutte le domande. Dato che non parlo inglese, se qualcosa non va o non è comprensibile fatemelo sapere. Se questo progetto vi è piaciuto, votatelo per i concorsi e/o lasciate un commento ☺. Mi incoraggerà a continuare ad aggiornare e pubblicare nuovi contenuti. Grazie.

Consigliato: