Indholdsfortegnelse:

WiFi Temperature Logger (med ESP8266): 11 trin (med billeder)
WiFi Temperature Logger (med ESP8266): 11 trin (med billeder)

Video: WiFi Temperature Logger (med ESP8266): 11 trin (med billeder)

Video: WiFi Temperature Logger (med ESP8266): 11 trin (med billeder)
Video: Google Spread Sheet or Google Sheets with ESP8266 Nodemcu for Data Logging, Temp & Hum DHT11, IoT 2024, Juli
Anonim
Image
Image
Materialer
Materialer

Hej, dejligt at se dig her. Jeg håber, at du i denne instruktive kan finde nogle nyttige oplysninger. Send mig gerne forslag, spørgsmål,… Her er nogle grundlæggende data og en hurtig oversigt over projektet. Til mobilbrugere: Video. Fortæl mig, hvad du synes om projektet i kommentarfeltet, tak. Jeg har for nylig købt et NodeMcu (esp8266 baseret) bord, bare for at prøve det, så dette er ikke et virkelig avanceret projekt. Men det virker, og det er det, jeg har brug for, så det er ok. Hovedfunktionen for denne datalogger er at indsamle temperatur og gemme den på en server. Dette giver brugerne mulighed for at kontrollere data og graf online, selvom de ikke er på samme sted som loggeren (f.eks. For en vejrstation). En anden nyttig funktion er OTA -opdateringen, der er inkluderet i koden, så brugeren let kan opdatere og tilpasse softwaren. Jeg analyserer to sensorer og deres tilhørende erhvervelsesmetode for at finde en balance mellem alle fordele og ulemper.

Spoiler: efter lidt test fandt jeg ud af, at en digital sensor som DS18B20 er den bedste løsning, fordi den giver stabilitet og højere nøjagtighed. Det er allerede vandtæt og med kablet.

Trin 1: Materialer

Materialer
Materialer
Materialer
Materialer
Materialer
Materialer

Dette er et minimalt projekt med kun få eksterne komponenter, for dette vil styklistelisten være virkelig kort. Lad os dog se, hvilket materiale der anmodes om:

  • NodeMcu V3 (eller en hvilken som helst kompatibel ESP8266 μprocessor);
  • RGB -led (fælles anode);
  • Modstande til LED (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Integreret termometer);
  • LM35 (Texas Instrument termometer);
  • Eksternt batteri (valgfrit);
  • Kabel;
  • Stik (for at gøre det mere "avanceret");
  • Box (valgfri, igen for at gøre det mere "avanceret");
  • Led -holder (valgfri);

Bemærk: Som sagt skal du vælge en af de to metoder. Hvis du vælger LM35 -termometer, skal du bruge et par andre komponenter:

  • Attiny45/85;
  • AVR -programmerer (eller Arduino som internetudbyder);
  • Modstand (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm båndstik (valgfrit)
  • Diode (2x1N914)
  • Perfboard eller PCB;

Trin 2: Valg af sensor

Valg af sensor
Valg af sensor

Valg af sensor kan være et svært trin: i dag er der masser af transducere (TI tilbyder 144 forskellige elementer) både analoge og digitale med forskellige temperaturområder, nøjagtighed og etui. Analoge sensorer (46 dele fås fra TI): Fordele:

  • Dataloggeren kan let ændres fra temperatur til en anden mængde (spænding, strøm, …);
  • Kan være lidt billigere;
  • Let at bruge, da det ikke kræver noget specielt bibliotek;

Ulemper:

  • Kræv ADC (der kan påvirke målingens nøjagtighed) og andre eksterne komponenter. Da esp8266 kun har en ADC (og ikke rigtig præcis), vil jeg foreslå at bruge en ekstern.
  • Kræver dedikeret kabel med støjafvisning, da enhver induktionsspænding kan ændre resultatet.

Efter lidt overvejelser besluttede jeg at bruge LM35, en lineær sensor med +10mV/° C skalafaktor med 0,5 ° C nøjagtighed og en meget lav strøm (ca. 60uA) med en driftsspænding fra 4V til 30V. For flere detaljer foreslår jeg at se databladet: LM35.

Digitale sensorer (stærkt anbefalet) Fordele:

Næsten alle nødvendige eksterne komponenter;

Integreret ADC

Ulemper:

Anmod bibliotek eller software til at afkode det digitale signal (I2C, SPI, Serial, One Wire,…);

Dyrere;

Jeg har valgt DS18B20, fordi jeg fandt et sæt med 5 vandtætte sensorer på Amazon, og fordi det er bredt dokumenteret på internettet. Hovedfunktionen er 9-12bit måling, 1-tråds bus, 3,0 til 5,5 forsyningsspænding, 0,5 ° C nøjagtighed. Igen, for mere detaljer her er databladet: DS18B20.

Trin 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Lad os analysere, hvordan jeg har implementeret den eksterne ADC og andre funktioner til LM35 -termometeret. Jeg fandt et kabel med tre ledninger, en med afskærmning og to uden. Jeg besluttede at tilføje en afkoblingskondensator for at stabilisere forsyningsspændingen nær sensoren. For at konvertere analog temperatur til digital har jeg brugt Attiny85 mikroprocessor i en dip8 -pakke (igen for mere information se databladet: attiny85). Det vigtigste for os er den 10 bit ADC (egentlig ikke den bedste, men nok præcis til mig). For at kommunikere med Esp8266 besluttede jeg at bruge seriel kommunikation, idet jeg husker på, at esp8266 fungerer med 3,3V og attiny85 ved 5V (da det har brug for strøm til sensoren). For at opnå det brugte jeg en simpel spændingsdeler (se skematisk). For at aflæse negativ temperatur skal vi tilføje nogle eksterne komponenter (2x1N914 og 1x18k modstand), da jeg ikke vil bruge negativ strømforsyning. Her er koden: TinyADC -depot. Bemærk: For at kompilere denne kode skal du installere attiny to ide (indsæt dette i valgmulighed: https://drazzy.com/package_drazzy.com_index.json), hvis du ikke ved, hvordan du gør det, skal du bare søge på Google. Eller uploade.hex -fil direkte.

Trin 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Jeg købte disse sensorer fra Amazon (5 koster omkring 10 €). Det ankom med et låg i rustfrit stål og et kabel på 1 m. Denne sensor kan returnere 9 til 12 bit temperaturdata. Mange sensorer kan tilsluttes den samme pin, da de alle har et unikt ID. For at tilslutte DS18B20 til esp8266 kan du bare følge skematisk (andet billede). Da jeg har besluttet, at min logger ville have haft tre sonder, har jeg været nødt til at skelne mellem hvilken. Så jeg tænkte at give dem en farve forbundet via software til deres adresse. Jeg har brugt et termokrympbart rør (tredje billede).

Trin 5: ESP8266 -kode

ESP8266 Kode
ESP8266 Kode
ESP8266 Kode
ESP8266 Kode

Da jeg er ny i denne verden, besluttede jeg at bruge mange biblioteker. Som sagt i indledningen er hovedtræk:

  • OTA -opdatering: du behøver ikke at tilslutte esp8266 til din computer hver gang du skal uploade koden (du skal kun gøre det første gang);
  • Trådløs manager, hvis det trådløse netværk ændres, behøver du ikke at uploade skitsen igen. Du kan simpelthen konfigurere netværksparametrene igen, der forbinder til esp8266 -adgangspunktet;
  • Thingspeak dataoverførsel;
  • Både LM35 og DS18B20 understøttes;
  • Enkel brugergrænseflade (RGB -LED angiver nogle nyttige oplysninger);

Undskyld venligst, for min software er ikke den bedste, og den er ikke rigtig velordnet. Inden du uploader til enheden, skal du ændre nogle parametre, så koden passer til din opsætning. Her kan du downloade softwaren. Almindelig LM35- og DS18B20 -konfiguration Du skal ændre pin -definition, token, kanalnummer, bruger og adgangskode til OTA -opdatering. Linje fra 15 til 23.

#definer rød YOURPINHERE #definer grøn YOURPINHERE

#define blue YOURPINHERE const char* host = "vælg værtadresse"; // ikke virkelig nødvendig kan du forlade esp8266-webupdate const char* update_path = "/firmware"; // for at ændre adressen til opdatering ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Trin 6: ESP8266 kode: LM35 -bruger

Du skal slutte attiny -kortet til esp8266, for at drive ADC -enheden med VU -pin og G -pin. Du skal vælge, hvilken pin du vil bruge til seriel kommunikation (for at holde hardware seriel fri til fejlfinding). Tx pin skal vælges, men bruges ikke rigtig. (Linie 27). SoftwareSerial mySerial (RXPIN, TXPIN); På toppen skal du tilføje: #define LM35USER

Trin 7: ESP8266 -kode: DS18B20 -bruger

Som første operation skal du identificere enhedens adresse for hver sensor. Kompilér og programmer denne kode til esp og se serielt efter resultaterne. Koden findes her (søg efter denne titel på siden: «Læs individuelle DS18B20 interne adresser»). Tilslut kun en sensor for at få adressen, resultaterne skal være sådan noget (tilfældigt tal her! Ligesom eksempel): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Derefter skal du ændre min kode i afsnittet " Konfiguration for DS18B20 "(linje 31 til 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (fra 9 til 12) #definer forsinkelse Dallas READINTERVAL // (I millisekunder er minimum 15s eller 15000mS) DeviceAddress blueSensor = {0x11, 0x9, 0x, 0x, 0x12}; // SKIFT MED DIN ADRESSE DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // SKIFT MED DIN ADRESSE DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // FORANDR MED DIN ADRESSE På toppen skal du tilføje: #define DSUSER

Trin 8: ESP8266 Little Trick

ESP8266 Lille trick
ESP8266 Lille trick

Efter lidt test fandt jeg ud af, at hvis du tilslutter esp8266 uden programmering, kører koden ikke, før du trykker på reset én gang. For at løse dette problem opdagede jeg efter lidt research, at du skal tilføje en pull-up-modstand fra 3,3V til D3. Dette vil fortælle processoren at indlæse koden fra flash -hukommelse. Med denne metode kan D3 direkte bruges til dataindgang til DS18B20 -sensorer.

Trin 9: Første gangs drift

Første gangs drift
Første gangs drift
Første gangs drift
Første gangs drift

Hvis du har uploadet koden korrekt, men aldrig bruger Wifi Manager -biblioteket, er det tid til at konfigurere din wifi -forbindelse. Vent, indtil du ser RGB -LED'en blinke hurtigere end før, og søg derefter med din mobil eller pc wifi -netværket kaldet "AutoConnectAp" og tilslut. Efter tilslutning skal du åbne en webbrowser og indtaste 192.168.4.1, du finder GUI -grænsefladen for wifi manager (se fotos) og trykke på "Konfigurer Wifi". Vent på, at esp8266 søger efter wifi -netværk, og vælg det ønskede. Indsæt adgangskode, og tryk på "gem". Esp8266 genstarter (ligeglad med RGB -led denne gang, fordi det udsender nogle tilfældige oplysninger) og opretter forbindelse til netværket.

Trin 10: Konklusion

Konklusion
Konklusion
Konklusion
Konklusion
Konklusion
Konklusion
Konklusion
Konklusion

Til sidst er her en graf taget fra dataloggeren i aktion, mens jeg logger min frysetemperatur. I orange er DS18B20 og i blå LM35 og dens kredsløb. Du kan se den største forskel i nøjagtighed fra digital til analog sensor (med mit dårlige "ADC-kredsløb"), der giver nogle ikke-fysiske data. Sammenfattende, hvis du vil bygge denne logger, foreslår jeg at bruge DS18B20 digital temperatursensor, da det er lettere at læse og næsten "plug and play", det er mere stabilt og præcist, det kører på 3,3V og kræver kun en pin til masser af sensorer. Tak for opmærksomheden, jeg håber, at dette projekt er godt for dig, og du har fundet nogle nyttige oplysninger. Og for hvem vil indse det, jeg ville ønske, at jeg gav alle de nødvendige oplysninger. Hvis ikke blev fri til at spørge alt, svarer jeg gerne på alle spørgsmålene. Da jeg ikke er engelsktalende, så lad mig vide det, hvis der er noget galt eller ikke forståeligt. Hvis du kunne lide dette projekt, kan du stemme det til konkurrencerne og/eller efterlade en kommentar ☺. Det vil opmuntre mig til at blive ved med at opdatere og udgive nyt indhold. Tak skal du have.

Anbefalede: