Innholdsfortegnelse:

WiFi Temperature Logger (med ESP8266): 11 trinn (med bilder)
WiFi Temperature Logger (med ESP8266): 11 trinn (med bilder)

Video: WiFi Temperature Logger (med ESP8266): 11 trinn (med bilder)

Video: WiFi Temperature Logger (med ESP8266): 11 trinn (med bilder)
Video: Введение в плату разработки NodeMCU ESP8266 WiFi с примером HTTP-клиента 2024, Juli
Anonim
Image
Image
Materialer
Materialer

Hei, hyggelig å se deg her. Jeg håper at du i denne instruksen vil finne nyttig informasjon. Send meg gjerne forslag, spørsmål,… Her er noen grunnleggende data og en rask oversikt over prosjektet. For mobilbrukere: Video. Gi meg beskjed om hva du synes om prosjektet i kommentarfeltet, takk. Jeg har nylig kjøpt et NodeMcu (esp8266 -basert) brett bare for å prøve det, så dette er ikke et virkelig avansert prosjekt. Men det fungerer og det er det jeg trenger, så det er ok. Hovedfunksjonen for denne dataloggeren er å samle temperatur og lagre den på en server. Dette lar brukerne sjekke data og tegne graf online, selv om de ikke er på samme sted som loggeren (for eksempel for en værstasjon). En annen nyttig funksjon er OTA -oppdateringen som er inkludert i koden, slik at brukeren enkelt kan oppdatere og tilpasse programvaren. Jeg skal analysere to sensorer og tilhørende oppkjøpsmetode for å finne en balanse mellom alle fordeler og ulemper.

Spoiler: Etter litt testing fant jeg ut at en digital sensor som DS18B20 er den beste løsningen fordi den gir stabilitet og høyere nøyaktighet. Det er allerede vanntett og med kabelen.

Trinn 1: Materialer

Materialer
Materialer
Materialer
Materialer
Materialer
Materialer

Dette er et minimalt prosjekt med bare få eksterne komponenter, for dette vil styklisten være veldig kort. La oss imidlertid se hvilket materiale som etterspørres:

  • NodeMcu V3 (eller hvilken som helst kompatibel ESP8266 mikroprosessor);
  • RGB led (vanlig anode);
  • Motstander for LED (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Integrated termometer);
  • LM35 (Texas Instrument termometer);
  • Eksternt batteri (valgfritt);
  • Kabel;
  • Kobling (for å gjøre den mer "avansert");
  • Box (valgfritt, igjen for å gjøre det mer "avansert");
  • LED -holder (valgfritt);

Merk: Som jeg sa må du velge en av de to metodene. Hvis du velger LM35 -termometer, trenger du noen andre komponenter:

  • Attiny45/85;
  • AVR programmerer (eller Arduino som ISP);
  • Motstand (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm stripekontakt (valgfritt)
  • Diode (2x1N914)
  • Perfboard eller PCB;

Trinn 2: Velge sensoren

Velge sensor
Velge sensor

Å velge sensor kan være et vanskelig skritt: i dag er det tonnevis med svingere (TI tilbyr 144 forskjellige elementer) både analoge og digitale med forskjellige temperaturområder, nøyaktighet og etui. Analoge sensorer (46 deler tilgjengelig fra TI): Fordeler:

  • Dataloggeren kan enkelt endres fra temperatur til en annen mengde (spenning, strøm, …);
  • Kan være litt billigere;
  • Enkel å bruke siden den ikke krever noe spesielt bibliotek;

Ulemper:

  • Krever ADC (som kan påvirke målingens nøyaktighet) og andre eksterne komponenter. Siden esp8266 bare har en ADC (og egentlig ikke nøyaktig), vil jeg foreslå å bruke en ekstern.
  • Trenger dedikert kabel med støyavvisning siden enhver induksjonsspenning kan endre resultatet.

Etter litt tenking bestemte jeg meg for å bruke LM35, en lineær sensor med +10mV/° C skalafaktor med 0,5 ° C nøyaktighet og en veldig lav strøm (ca. 60uA) med en driftsspenning fra 4V til 30V. For flere detaljer foreslår jeg å se databladet: LM35.

Digitale sensorer (sterkt anbefalt) Fordeler:

Nesten alle eksterne komponenter som trengs;

Integrert ADC

Ulemper:

Forespørselsbibliotek eller programvare kan dekode det digitale signalet (I2C, SPI, Serial, One Wire, …);

Dyrere;

Jeg har valgt DS18B20 fordi jeg fant et sett med 5 vanntette sensorer på Amazon og fordi det er mye dokumentert på internett. Hovedfunksjonen er 9-12bit måling, 1-leder buss, 3,0 til 5,5 forsyningsspenning, 0,5 ° C nøyaktighet. Igjen, for mer detalj her er databladet: DS18B20.

Trinn 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

La oss analysere hvordan jeg har implementert den eksterne ADC og andre funksjoner for LM35 -termometeret. Jeg fant en kabel med tre ledninger, en med skjerming og to uten. Jeg bestemte meg for å legge til en avkoblingskondensator for å stabilisere forsyningsspenningen nær sensoren. For å konvertere analog temperatur til digital, har jeg brukt Attiny85 mikroprosessor i en dip8 -pakke (igjen for mer informasjon, se databladet: attiny85). Det viktigste for oss er 10 -biters ADC (egentlig ikke den beste, men nok presis for meg). For å kommunisere med Esp8266 bestemte jeg meg for å bruke seriell kommunikasjon med tanke på at esp8266 fungerer med 3.3V og attiny85 ved 5V (da den trenger for å drive sensoren). For å oppnå det brukte jeg en enkel spenningsdeler (se skjematisk). For å lese negativ temperatur må vi legge til noen eksterne komponenter (2x1N914 og 1x18k motstand), siden jeg ikke vil bruke negativ strømforsyning. Her er koden: TinyADC repository. Merk: for å kompilere denne koden må du installere attiny to ide (sett inn dette i alternativet: https://drazzy.com/package_drazzy.com_index.json), hvis du ikke vet hvordan du gjør det, er det bare å søke på Google. Eller last opp.hex -filen direkte.

Trinn 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Jeg kjøpte sensorene fra Amazon (5 koster ca 10 €). Den kom med et deksel i rustfritt stål og en kabel på 1 m lengde. Denne sensoren kan returnere 9 til 12 biters temperaturdata. Mange sensorer kan kobles til den samme pinnen siden alle har en unik ID. For å koble DS18B20 til esp8266 kan du bare følge skjemaet (andre bilde). Siden jeg har bestemt at loggeren min skulle ha hatt tre sonder, har jeg måttet skille hvilken som er hvilken. Så jeg tenkte å gi dem en farge knyttet til programvaren til adressen deres. Jeg har brukt et termokrympbart rør (tredje bilde).

Trinn 5: ESP8266 -kode

ESP8266 -kode
ESP8266 -kode
ESP8266 -kode
ESP8266 -kode

Siden jeg er ny i denne verden, bestemte jeg meg for å bruke mange biblioteker. Som sagt i innledningen er hovedtrekkene:

  • OTA -oppdatering: du trenger ikke koble esp8266 til datamaskinen hver gang du trenger å laste opp koden (du må bare gjøre det første gangen);
  • Trådløs leder, hvis det trådløse nettverket endres, trenger du ikke laste opp skissen på nytt. Du kan ganske enkelt konfigurere nettverksparameterne som kobler til esp8266 tilgangspunkt igjen;
  • Thingspeak dataoverføring;
  • Både LM35 og DS18B20 støttes;
  • Enkelt brukergrensesnitt (RGB -LED indikerer nyttig informasjon);

Beklager meg fordi programvaren min ikke er den beste, og at den ikke er ordentlig ordnet. Før du laster opp til enheten, må du endre noen parametere for å passe koden til oppsettet ditt. Her kan du laste ned programvaren. Vanlig LM35- og DS18B20 -konfigurasjon Du må endre pin -definisjon, token, kanalnummer, bruker og passord for OTA -oppdatering. Linje fra 15 til 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "velg vertsadresse"; // egentlig ikke nødvendig kan du la esp8266-webupdate const char* update_path = "/firmware"; // for å endre adressen for oppdatering ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Trinn 6: ESP8266 kode: LM35 -bruker

Du må koble attiny -kortet til esp8266, for å drive ADC -enheten bruker du VU -pinnen og G -pinnen. Du må velge hvilken pin du vil bruke til seriell kommunikasjon (for å holde maskinvaren seriell fri for feilsøkingsformål). Tx -pinne må velges, men brukes egentlig ikke. (Linje 27). SoftwareSerial mySerial (RXPIN, TXPIN); På toppen må du legge til: #define LM35USER

Trinn 7: ESP8266 -kode: DS18B20 -bruker

Som første operasjon må du identifisere enhetsadressen for hver sensor. Kompiler og programmer denne koden til esp og se i serien for resultatene. Koden finner du her (søk etter denne tittelen på siden: «Les individuelle DS18B20 interne adresser»). Koble bare til en sensor for å få adressen, resultatene skal være omtrent som dette (tilfeldig tall her! Bare som eksempel): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Da må du endre koden min i delen " Konfigurasjon for DS18B20 "(linje 31 til 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (fra 9 til 12) #define delayDallas READINTERVAL // (I millisekunder er minimum 15s eller 15000mS) DeviceAddress blueSensor = {0x11, 0x, 0x, 0x, 0x, 0x12}; // ENDRE MED DIN ADRESSE DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ENDRE MED DIN ADRESSE DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ENDRE MED ADRESSEEN På toppen må du legge til: #define DSUSER

Trinn 8: ESP8266 Little Trick

ESP8266 Little Trick
ESP8266 Little Trick

Etter litt testing fant jeg ut at hvis du kobler til esp8266 uten programmering, vil den ikke kjøre koden før du trykker på reset en gang. For å løse dette problemet, etter litt undersøkelser, oppdaget jeg at du må legge til en pull-up-motstand fra 3.3V til D3. Dette vil fortelle prosessoren å laste koden fra flash -minne. Med denne metoden kan D3 brukes direkte til datainngang for DS18B20 -sensorer.

Trinn 9: Første gangs drift

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

Hvis du har lastet opp koden riktig, men aldri bruker Wifi Manager -biblioteket, er det på tide å konfigurere wifi -tilkoblingen. Vent til du ser RGB -lysdioden blinke raskere enn før, og søk deretter med din mobil eller PC wifi -nettverket kalt "AutoConnectAp" og koble til. Etter tilkobling, åpne en nettleser og skriv inn 192.168.4.1, du finner GUI -grensesnittet til wifi manager (se bilder) og trykk "Konfigurer Wifi". Vent til esp8266 søker i wifi -nettverk, og velg ønsket. Sett inn passord og trykk "lagre". Esp8266 starter på nytt (bryr meg ikke om RGB -ledd denne gangen fordi den sender ut tilfeldig informasjon) og kobler seg til nettverket.

Trinn 10: Konklusjon

Konklusjon
Konklusjon
Konklusjon
Konklusjon
Konklusjon
Konklusjon
Konklusjon
Konklusjon

Til slutt, her er en graf hentet fra dataloggeren i aksjon mens jeg logger frysertemperaturen min. I oransje er DS18B20 og i blått LM35 og kretsen. Du kan se den største forskjellen i nøyaktighet fra digital til analog sensor (med min dårlige "ADC-krets") som gir noen ikke-fysiske data. Oppsummering, hvis du vil bygge denne loggeren, foreslår jeg at du bruker DS18B20 digital temperatursensor siden det er lettere å lese og nesten "plug and play", det er mer stabilt og nøyaktig, det går på 3,3V og krever bare en pin for mange sensorer. Takk for oppmerksomheten, jeg håper at dette prosjektet er bra for deg og du har fant nyttig informasjon. Og for hvem som ønsker å innse det, skulle jeg ønske at jeg ga all nødvendig informasjon. Hvis ikke ble fri til å spørre alt, svarer jeg gjerne på alle spørsmålene. Siden jeg ikke er engelsktalende, vennligst gi meg beskjed hvis noe er galt eller ikke forståelig. Hvis du likte dette prosjektet, kan du stemme det for konkurransene og/eller legge igjen en kommentar ☺. Det vil oppmuntre meg til å fortsette å oppdatere og publisere nytt innhold. Takk skal du ha.

Anbefalt: