INHOUDSOPGAWE:

WiFi temperatuur logger (met ESP8266): 11 stappe (met foto's)
WiFi temperatuur logger (met ESP8266): 11 stappe (met foto's)

Video: WiFi temperatuur logger (met ESP8266): 11 stappe (met foto's)

Video: WiFi temperatuur logger (met ESP8266): 11 stappe (met foto's)
Video: Oplossing! Monitor mini zonnesysteem op afstand met #wifi, installatie test - HOOTS Battery APP 2024, November
Anonim
Image
Image
Materiaal
Materiaal

Hallo, bly om jou hier te sien. Ek hoop dat u in hierdie instruksies nuttige inligting sal vind. Stuur gerus vir my voorstelle, vrae,… Hier is 'n paar basiese data en 'n vinnige oorsig van die projek. Vir mobiele gebruikers: Video. Laat weet my wat u van die projek dink in die kommentaarafdeling, dankie. Ek het onlangs 'n NodeMcu (op esp8266 gebaseerde) bord gekoop net om dit te probeer, so dit is nie 'n baie gevorderde projek nie. Maar dit werk en dit is wat ek nodig het, so dit is ok. Hoof funksie vir hierdie data logger is om temperatuur te versamel en te stoor dit op 'n bediener. Hiermee kan gebruikers data en grafiek aanlyn kontroleer, selfs al is hulle nie op dieselfde plek as die logger nie (byvoorbeeld vir 'n weerstasie). 'N Ander nuttige funksie is die OTA -opdatering wat in die kode ingesluit is, waarmee gebruikers die sagteware maklik kan opdateer en aanpas. Ek sal twee sensors en hul verwante verkrygingsmetode ontleed om 'n balans te vind tussen alle voor- en nadele.

Spoiler: na 'n bietjie toets het ek gevind dat 'n digitale sensor soos DS18B20 die beste oplossing is, want dit bied stabiliteit en hoër akkuraatheid. Dit is reeds waterdig en met die kabel.

Stap 1: materiaal

Materiaal
Materiaal
Materiaal
Materiaal
Materiaal
Materiaal

Dit is 'n minimale projek met slegs 'n paar eksterne komponente; hiervoor is die stembuslys baie kort. Laat ons egter kyk watter materiaal gevra word:

  • NodeMcu V3 (of enige versoenbare ESP8266 -verwerker);
  • RGB gelei (gewone anode);
  • Weerstands vir led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Geïntegreerde termometer);
  • LM35 (Texas Instrument -termometer);
  • Eksterne battery (opsioneel);
  • Kabel;
  • Connector (om dit meer "gevorderd" te maak);
  • Box (opsioneel, weer om dit meer "gevorderd" te maak);
  • Led houer (opsioneel);

Nota: Soos ek gesê het, moet u een van die twee metodes kies. As u 'n LM35 -termometer kies, benodig u 'n paar ander komponente:

  • Attiny45/85;
  • AVR -programmeerder (of Arduino as ISP);
  • Weerstand (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2.54 mm strookverbinder (opsioneel)
  • Diode (2x1N914)
  • Perfboard of PCB;

Stap 2: Kies die sensor

Kies die sensor
Kies die sensor

Die keuse van die sensor kan 'n moeilike stap wees: vandag is daar talle omvormers (TI bied 144 verskillende elemente), beide analoog en digitaal met verskillende temperatuurbereik, akkuraatheid en omhulsel. Analoog sensors (46 dele beskikbaar by TI): Voor:

  • Die datalogger kan maklik van temperatuur na 'n ander hoeveelheid verander word (spanning, stroom, …);
  • Kan 'n bietjie goedkoper wees;
  • Maklik om te gebruik, aangesien dit geen spesiale biblioteek benodig nie;

Nadele:

  • Vereis ADC (wat die akkuraatheid van die meting kan beïnvloed) en ander eksterne komponente. Aangesien esp8266 slegs een ADC het (en nie regtig akkuraat nie), sou ek voorstel om 'n eksterne een te gebruik.
  • Benodig 'n spesiale kabel met afwysing van geraas, aangesien enige geïnduseerde spanning die resultaat kan verander.

Na 'n bietjie nadink het ek besluit om LM35 te gebruik, 'n lineêre sensor met 'n skaalfaktor van +10 mV/° C met 'n akkuraatheid van 0,5 ° C en 'n baie lae stroom (ongeveer 60uA) met 'n werkspanning van 4V tot 30V. Vir meer besonderhede stel ek voor dat u die datablad: LM35.

Digitale sensors (sterk aanbeveel) Voordele:

Byna enige eksterne komponente benodig;

Geïntegreerde ADC

Nadele:

Versoek biblioteek of sagteware om die digitale sein te dekodeer (I2C, SPI, Serial, One Wire, …);

Duurder;

Ek het DS18B20 gekies omdat ek 'n stel van 5 waterdigte sensors op Amazon gevind het en omdat dit wyd op die internet gedokumenteer is. Die belangrikste kenmerk is meting van 9-12bit, bus met 1 draad, 3,0 tot 5,5 voedingsspanning, akkuraatheid van 0,5 ° C. Hier is die datablad vir meer besonderhede: DS18B20.

Stap 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Kom ons ontleed hoe ek die eksterne ADC en ander funksies vir die LM35 -termometer geïmplementeer het. Ek het 'n kabel met drie drade gevind, een met afskerming en twee sonder. Ek het besluit om 'n ontkoppelingskondensator by te voeg om die voedingspanning naby die sensor te stabiliseer. Om analoog temperatuur na digitaal om te skakel, het ek Attiny85 mikroverwerker in 'n dip8 -pakket gebruik (sien die datablad: attiny85 weer vir meer inligting. Die belangrikste ding vir ons is die 10 -bits ADC (nie regtig die beste nie, maar genoeg presies vir my). Om met Esp8266 te kommunikeer, het ek besluit om seriële kommunikasie te gebruik, met in gedagte dat esp8266 werk met 3.3V en attiny85 by 5V (aangesien dit die sensor benodig). Om dit te bereik, gebruik ek 'n eenvoudige spanningsverdeler (sien skema). Om 'n negatiewe temperatuur te lees, moet ons 'n paar eksterne komponente (2x1N914 en 1x18k weerstand) byvoeg, aangesien ek nie 'n negatiewe kragtoevoer wil gebruik nie. Hier is die kode: TinyADC repository. Let wel: om hierdie kode saam te stel, moet u installeer totiny ide (voeg dit in by opsie: https://drazzy.com/package_drazzy.com_index.json), as u nie weet hoe om dit te doen nie, soek net op Google. Of laai.hex -lêer direk op.

Stap 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Ek het die sensors by Amazon gekoop (5 kos ongeveer 10 €). Dit het gekom met 'n deksel van vlekvrye staal en 'n kabel van 1 m lank. Hierdie sensor kan 9 tot 12 bis data van temperatuur teruggee. Daar kan baie sensors in dieselfde pen ingeprop word, aangesien almal 'n unieke ID het. Om die DS18B20 aan esp8266 te koppel, kan u net die skema volg (tweede foto). Aangesien ek besluit het dat my logger drie sondes sou gehad het, moes ek onderskei watter een is. Daarom het ek gedink om 'n kleur aan hulle adres te gee wat deur sagteware gekoppel is. Ek het 'n termokrimp gebruik (derde foto).

Stap 5: ESP8266 -kode

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

Aangesien ek nuut is in hierdie wêreld, het ek besluit om baie biblioteke te gebruik. Soos in die inleiding gesê, is die belangrikste kenmerke:

  • OTA -opdatering: u hoef nie esp8266 elke keer as u die kode oplaai op u rekenaar aan te sluit nie (u moet dit slegs die eerste keer doen);
  • Draadlose bestuurder, as die draadlose netwerk verander, hoef u nie die skets weer op te laai nie. U kan eenvoudig weer die netwerkparameters instel wat aansluit by esp8266 -toegangspunt;
  • Thingspeak data transmissie;
  • Beide LM35 en DS18B20 ondersteun;
  • Eenvoudige gebruikerskoppelvlak (RGB -led dui nuttige inligting aan);

Verskoon my, want my sagteware is nie die beste nie en dit is nie regtig goed georden nie. Voordat u dit na die toestel oplaai, moet u 'n paar parameters verander om die kode by u opset te pas. Hier kan u die sagteware aflaai. Gewone LM35- en DS18B20 -konfigurasie U moet die definisie van die pen, token, kanaalnommer, gebruiker en wagwoord verander vir OTA -opdatering. Reël van 15 tot 23.

#definieer rooi YOURPINHERE #definieer groen YOURPINHERE

#define blue YOURPINHERE const char* host = "kies gasheeradres"; // nie regtig nodig nie, kan u esp8266-webupdate verlaat const char* update_path = "/firmware"; // om die adres vir die opdatering te verander, byvoorbeeld: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Stap 6: ESP8266 Kode: LM35 -gebruiker

U moet die attiny -bord aansluit op esp8266, om die ADC -eenheid aan te dryf, gebruik die VU -pen en G -pen. U moet kies watter pen u vir seriële kommunikasie wil gebruik (om die hardeware serievol te hou vir ontfoutingsdoeleindes). Tx -pen moet gekies word, maar word nie regtig gebruik nie. (Reël 27). SoftwareSerial mySerial (RXPIN, TXPIN); Aan die bokant moet u byvoeg: #define LM35USER

Stap 7: ESP8266 -kode: DS18B20 -gebruiker

As eerste operasie moet u die toesteladres vir elke sensor identifiseer. Stel hierdie kode saam en programmeer dit op die esp en kyk in reekse na die resultate. Die kode kan hier gevind word (soek na hierdie titel op die bladsy: «Lees individuele DS18B20 interne adresse»). Koppel slegs een sensor om die adres te verkry; resultate moet so wees (willekeurige getal hier! Net as voorbeeld): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Dan moet u my kode in die afdeling verander " Opstelling vir DS18B20 "(reël 31 tot 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (van 9 tot 12) #definieer vertraging Dallas READINTERVAL // (In millisekondes, minimum is 15s of 15000mS) DeviceAddress blueSensor = {0x11, 0x1, 0xDX, 0x, 0x12}; // VERANDER MET JOU ADRES DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // VERANDER MET JOU ADRES DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // VERANDER MET U ADRES Bo -op moet u byvoeg: #define DSUSER

Stap 8: ESP8266 Little Trick

ESP8266 Little Trick
ESP8266 Little Trick

Na 'n bietjie toets het ek gevind dat as u esp8266 sonder programmering aansluit, die kode eers sal loop totdat u een keer op reset druk. Om hierdie probleem op te los, het ek na 'n bietjie navorsing ontdek dat u 'n optrekweerstand van 3.3V na D3 moet byvoeg. Dit sal die verwerker vertel om die kode uit die flash -geheue te laai. Met hierdie metode kan D3 direk gebruik word om data -invoer vir DS18B20 -sensors in te voer.

Stap 9: Eerste keer gebruik

Eerste keer operasie
Eerste keer operasie
Eerste keer operasie
Eerste keer operasie

As u die kode korrek opgelaai het, maar nooit die Wifi -bestuurderbiblioteek gebruik nie, is dit tyd om u wifi -verbinding op te stel. Wag totdat die RGB -LED vinniger as voorheen flikker, en soek dan met u selfoon of rekenaar die wifi -netwerk genaamd "AutoConnectAp" en maak verbinding. Na die verbinding, maak 'n webblaaier oop en voer 192.168.4.1 in; u vind die GUI -koppelvlak van die wifi -bestuurder (sien foto's) en druk op "Wifi instel". Wag totdat esp8266 wifi -netwerke deursoek, en kies die gewenste een. Voeg wagwoord in en druk "stoor". Esp8266 sal weer begin (gee nie om RGB -led hierdie keer nie, want dit gee willekeurige inligting) en maak verbinding met die netwerk.

Stap 10: Gevolgtrekking

Afsluiting
Afsluiting
Afsluiting
Afsluiting
Afsluiting
Afsluiting
Afsluiting
Afsluiting

Hier is uiteindelik 'n grafiek wat uit die datalogger in aksie geneem is terwyl ek my vrieskas se temperatuur aanteken. In oranje is die DS18B20 en in blou die LM35 en sy kring. U kan die grootste akkuraatheidsverskil sien van digitale na analoog sensor (met my swak "ADC-stroombaan") wat 'n paar nie-fisiese data gee. As u hierdie logger wil opstel, stel ek voor dat u die digitale temperatuursensor DS18B20 gebruik, aangesien dit makliker om te lees en amper "plug and play", dit is meer stabiel en akkuraat, dit loop op 3.3V en benodig slegs een pen vir baie sensors. Dankie vir die aandag, ek hoop dat hierdie projek goed is vir u en dat u nuttige inligting gevind. En vir wie dit wil besef, ek wens dat ek al die nodige inligting gegee het. As u nie alles vra nie, beantwoord ek graag al die vrae. Aangesien ek nie 'n Engelssprekende is nie, laat weet my as iets verkeerd is of nie verstaanbaar is nie. As u van hierdie projek gehou het, stem dit dan vir die wedstryde en/of lewer 'n opmerking ☺. Dit sal my aanmoedig om aan te hou om nuwe inhoud by te werk en te publiseer. Dankie.

Aanbeveel: