Turinys:

„WiFi“temperatūros registratorius (su ESP8266): 11 žingsnių (su nuotraukomis)
„WiFi“temperatūros registratorius (su ESP8266): 11 žingsnių (su nuotraukomis)

Video: „WiFi“temperatūros registratorius (su ESP8266): 11 žingsnių (su nuotraukomis)

Video: „WiFi“temperatūros registratorius (su ESP8266): 11 žingsnių (su nuotraukomis)
Video: BTT GTR v1.0/M5 v1.0 - Basics 2024, Lapkritis
Anonim
Image
Image
Medžiagos
Medžiagos

Sveiki, malonu jus čia matyti. Tikiuosi, kad šioje pamokoje rasite naudingos informacijos. Nedvejodami atsiųskite man pasiūlymų, klausimų,… Štai keletas pagrindinių duomenų ir greita projekto apžvalga. Mobiliesiems naudotojams: vaizdo įrašas. Leiskite man žinoti, ką manote apie projektą komentarų skiltyje, ačiū. Neseniai nusipirkau „NodeMcu“(esp8266 pagrįstą) plokštę, kad galėčiau išbandyti, todėl tai nėra tikrai pažangus projektas. Bet tai veikia ir man to reikia, todėl viskas gerai. Pagrindinė šio duomenų kaupiklio funkcija yra surinkti temperatūrą ir išsaugoti ją serveryje. Tai leidžia vartotojams tikrinti duomenis ir grafiką internete, net jei jie nėra toje pačioje registratoriaus vietoje (pavyzdžiui, orų stotyje). Kita naudinga funkcija yra į kodą įtrauktas OTA atnaujinimas, leidžiantis vartotojui lengvai atnaujinti ir pritaikyti programinę įrangą. Išanalizuosiu du jutiklius ir su jais susijusį įsigijimo metodą, kad subalansuotų visus privalumus ir trūkumus.

Spoileris: po šiek tiek bandymų sužinojau, kad skaitmeninis jutiklis, toks kaip DS18B20, yra geriausias sprendimas, nes jis užtikrina stabilumą ir didesnį tikslumą. Jis jau atsparus vandeniui ir su kabeliu.

1 žingsnis: medžiagos

Medžiagos
Medžiagos
Medžiagos
Medžiagos
Medžiagos
Medžiagos

Tai minimalus projektas, turintis tik keletą išorinių komponentų, todėl BOM sąrašas bus tikrai trumpas. Tačiau pažiūrėkime, kokios medžiagos prašoma:

  • „NodeMcu V3“(arba bet kuris suderinamas ESP8266 mikroprocesorius);
  • RGB LED (bendras anodas);
  • LED rezistoriai (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 („Maxim“integruotas termometras);
  • LM35 („Texas Instrument“termometras);
  • Išorinė baterija (neprivaloma);
  • Kabelis;
  • Jungtis (kad ji būtų „pažangesnė“);
  • Dėžutė (neprivaloma, dar kartą, kad ji būtų „pažangesnė“);
  • LED laikiklis (neprivaloma);

Pastaba: kaip sakiau, turite pasirinkti vieną iš dviejų metodų. Jei pasirinksite LM35 termometrą, jums reikės kelių kitų komponentų:

  • Attiny45/85;
  • AVR programuotojas (arba „Arduino“kaip IPT);
  • Rezistorius (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm juostos jungtis (neprivaloma)
  • Diodas (2x1N914)
  • Perfboard arba PCB;

2 žingsnis: Jutiklio pasirinkimas

Jutiklio pasirinkimas
Jutiklio pasirinkimas

Jutiklio pasirinkimas gali būti sudėtingas žingsnis: šiandien yra daugybė keitiklių (TI siūlo 144 skirtingus elementus), tiek analoginius, tiek skaitmeninius su skirtingu temperatūros diapazonu, tikslumu ir korpusu. Analoginiai jutikliai (46 dalys iš TI):

  • Duomenų kaupiklį galima lengvai pakeisti iš temperatūros į kitą kiekį (įtampa, srovė,…);
  • Gali būti šiek tiek pigiau;
  • Lengva naudoti, nes tam nereikia jokios specialios bibliotekos;

Minusai:

  • Reikalauti ADC (tai gali turėti įtakos matavimo tikslumui) ir kitų išorinių komponentų. Kadangi esp8266 turi tik vieną ADC (ir nėra tikrai tikslus), siūlyčiau naudoti išorinį.
  • Reikia specialaus kabelio su triukšmo slopinimu, nes bet kokia indukcinė įtampa gali pakeisti rezultatą.

Šiek tiek pagalvojęs nusprendžiau naudoti LM35 - linijinį jutiklį, kurio skalės koeficientas +10 mV/° C, 0,5 ° C tikslumu ir labai mažą srovę (apie 60uA), kurios darbinė įtampa yra nuo 4 V iki 30 V. Norėdami gauti daugiau informacijos, siūlau pamatyti duomenų lapą: LM35.

Skaitmeniniai jutikliai (labai rekomenduojama):

Beveik visi reikalingi išoriniai komponentai;

Integruotas ADC

Minusai:

Paprašykite bibliotekos ar programinės įrangos iššifruoti skaitmeninį signalą (I2C, SPI, Serial, One Wire,…);

Brangesnis;

Aš pasirinkau DS18B20, nes „Amazon“radau 5 vandeniui atsparių jutiklių rinkinį ir todėl, kad tai plačiai dokumentuota internete. Pagrindinis bruožas yra 9–12 bitų matavimas, 1 laidų magistralė, 3,0–5,5 maitinimo įtampa, 0,5 ° C tikslumas. Vėlgi, norėdami sužinoti daugiau, čia yra duomenų lapas: DS18B20.

3 žingsnis: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Paanalizuokime, kaip įdiegiau išorinį ADC ir kitą LM35 termometro funkciją. Radau kabelį su trimis laidais, vienas su ekranavimu ir du be. Aš nusprendžiau pridėti atsiejamąjį kondensatorių, kad stabilizuotų maitinimo įtampą šalia jutiklio. Norėdami konvertuoti analoginę temperatūrą į skaitmeninę, aš naudoju „Attiny85“mikroprocesorių „dip8“pakuotėje (dar kartą daugiau informacijos rasite duomenų lape: attiny85). Mums svarbiausia yra 10 bitų ADC (tikrai ne pats geriausias, bet man pakankamai tikslus). Norėdami bendrauti su „Esp8266“, nusprendžiau naudoti serijinį ryšį, turėdamas omenyje, kad „esp8266“veikia su 3,3 V ir „attiny85“esant 5 V įtampai (nes reikia maitinti jutiklį). Norėdami tai padaryti, naudoju paprastą įtampos daliklį (žr. Schemą). Norėdami nuskaityti neigiamą temperatūrą, turime pridėti keletą išorinių komponentų (2x1N914 ir 1x18k rezistorius), nes nenoriu naudoti neigiamo maitinimo šaltinio. Čia yra kodas: „TinyADC“saugykla. Pastaba: norint surinkti šį kodą, turėsite įdiegti attiny to ide (įterpkite šią parinktį: https://drazzy.com/package_drazzy.com_index.json), jei nežinote, kaip tai padaryti, tiesiog ieškokite „Google“. Arba tiesiogiai įkelkite.hex failą.

4 žingsnis: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Aš nusipirkau tuos jutiklius iš „Amazon“(5 kainuoja apie 10 €). Jis atkeliavo su nerūdijančio plieno dangteliu ir 1 m ilgio kabeliu. Šis jutiklis gali grąžinti 9–12 bitų temperatūros duomenis. Į tą patį kaištį galima prijungti daug jutiklių, nes visi jie turi unikalų ID. Norėdami prijungti DS18B20 prie esp8266, galite tiesiog sekti schemą (antroji nuotrauka). Kadangi nusprendžiau, kad mano registratorius būtų turėjęs tris zondus, turėjau atskirti, kuris yra kuris. Taigi galvojau suteikti jiems spalvą, susietą per programinę įrangą jų adresui. Aš naudoju termosusitraukiantį vamzdelį (trečioji nuotrauka).

5 veiksmas: ESP8266 kodas

ESP8266 kodas
ESP8266 kodas
ESP8266 kodas
ESP8266 kodas

Kadangi esu naujokas šiame pasaulyje, nusprendžiau naudotis daugybe bibliotekų. Kaip minėta įvade, pagrindinės savybės yra šios:

  • OTA atnaujinimas: jums nereikia prijungti esp8266 prie kompiuterio kiekvieną kartą, kai reikia įkelti kodą (tai turite padaryti tik pirmą kartą);
  • Belaidžio ryšio valdytojas, jei pasikeičia belaidis tinklas, jums nereikia iš naujo įkelti eskizo. Galite tiesiog vėl sukonfigūruoti tinklo parametrus, jungiančius prie esp8266 prieigos taško;
  • „Thingspeak“duomenų perdavimas;
  • Tiek LM35, tiek DS18B20 palaikomi;
  • Paprasta vartotojo sąsaja (RGB indikatorius rodo naudingą informaciją);

Prašau manęs atsiprašyti, nes mano programinė įranga nėra pati geriausia ir ji nėra gerai užsakyta. Prieš įkeldami į įrenginį, turite pakeisti kai kuriuos parametrus, kad kodas atitiktų jūsų sąranką. Čia galite atsisiųsti programinę įrangą. Bendra LM35 ir DS18B20 konfigūracija OTA atnaujinimui turite pakeisti kaiščio apibrėžimą, žetoną, kanalo numerį, vartotoją ir slaptažodį. Linija nuo 15 iki 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "pasirinkti pagrindinio kompiuterio adresą"; // nelabai reikalingas, galite palikti esp8266-webupdate const char* update_path = "/firmware"; // pakeisti atnaujinimo adresą, pvz.: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; nepasirašytas ilgas myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

6 veiksmas: ESP8266 kodas: LM35 vartotojas

Turite prijungti „attiny“plokštę prie esp8266, kad maitintumėte ADC įrenginį naudodami VU ir G kontaktus. Turite pasirinkti, kurį kaištį norite naudoti nuosekliam ryšiui (kad aparatinė įranga nebūtų nuosekli derinimo tikslais). Tx kaištis turi būti pasirinktas, bet iš tikrųjų nenaudojamas. (27 eilutė). Programinė įrangaSerial mySerial (RXPIN, TXPIN); Viršuje turite pridėti: #define LM35USER

7 veiksmas: ESP8266 kodas: DS18B20 vartotojas

Kaip pirmąjį veiksmą turite nustatyti kiekvieno jutiklio įrenginio adresą. Surinkite ir užprogramuokite šį kodą esp ir ieškokite rezultatų serijiniu būdu. Kodą rasite čia (ieškokite šio pavadinimo puslapyje: «Skaityti atskirus DS18B20 vidinius adresus»). Prijunkite tik vieną jutiklį, kad gautumėte adresą, rezultatai turėtų būti maždaug tokie (čia atsitiktinis skaičius! Kaip pavyzdys): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Tada jums reikia pakeisti mano kodą skyriuje " DS18B20 "konfigūracija (31–36 eilutės)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (nuo 9 iki 12) #define delayDallas READINTERVAL // (milisekundėmis, mažiausiai 15s arba 15000mS) DeviceAddress blueSensor = {0xx, 0x12}; // PAKEISTI JŪSŲ ADRESU DeviceDdress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PAKEISTI JŪSŲ ADRESU DeviceDdress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PAKEISTI SU SAVO ADRESU Viršuje reikia pridėti: #define DSUSER

8 žingsnis: ESP8266 „Mažasis triukas“

ESP8266 Mažoji gudrybė
ESP8266 Mažoji gudrybė

Po šiek tiek bandymų sužinojau, kad jei prijungsite esp8266 be programavimo, kodas nebus paleistas, kol vieną kartą nepaspausite atstatyti. Norėdami išspręsti šią problemą, šiek tiek ištyręs sužinojau, kad turite pridėti ištraukiamąjį rezistorių nuo 3,3 V iki D3. Tai nurodys procesoriui įkelti kodą iš „flash“atminties. Taikant šį metodą, D3 gali būti tiesiogiai naudojamas DS18B20 jutiklių duomenų įvedimui.

9 žingsnis: operacija pirmą kartą

Pirmą kartą operacija
Pirmą kartą operacija
Pirmą kartą operacija
Pirmą kartą operacija

Jei teisingai įkėlėte kodą, bet niekada nenaudojate „Wifi“tvarkyklės bibliotekos, laikas konfigūruoti „Wi -Fi“ryšį. Palaukite, kol pamatysite, kad RGB lemputė mirksi greičiau nei anksčiau, tada mobiliuoju telefonu ar kompiuteriu ieškokite „Wi -Fi“tinklo, vadinamo „AutoConnectAp“, ir prisijunkite. Prisijungę atidarykite žiniatinklio naršyklę ir įveskite 192.168.4.1, rasite „wifi“tvarkyklės GUI sąsają (žr. Nuotraukas) ir paspauskite „Configure Wifi“. Palaukite, kol esp8266 ieškos „Wi -Fi“tinklų, ir pasirinkite norimą. Įveskite slaptažodį ir paspauskite „išsaugoti“. „Esp8266“bus paleistas iš naujo (šį kartą nerūpi RGB, nes jis išves atsitiktinę informaciją) ir prisijungs prie tinklo.

10 žingsnis: Išvada

Išvada
Išvada
Išvada
Išvada
Išvada
Išvada
Išvada
Išvada

Galų gale, čia yra diagrama, paimta iš duomenų kaupiklio, kai registruojama mano šaldiklio temperatūra. Oranžinė spalva yra DS18B20, o mėlyna - LM35 ir jos grandinė. Galite pamatyti didžiausią tikslumo skirtumą nuo skaitmeninio iki analoginio jutiklio (su mano prasta „ADC grandine“), kurie pateikia kai kuriuos ne fizinius duomenis. Apibendrinant, jei norite sukurti šį registratorių, siūlau naudoti skaitmeninį temperatūros jutiklį DS18B20, nes lengviau skaitomas ir beveik „įjunkite ir paleiskite“, jis yra stabilesnis ir tikslesnis, veikia 3,3 V įtampa ir reikalauja tik vieno kaiščio daugeliui jutiklių. Dėkojame už dėmesį, tikiuosi, kad šis projektas jums tinka ir jūs rado naudingos informacijos. O kas nori tai suvokti, linkiu, kad duočiau visą reikalingą informaciją. Jei neatsisakysite klausti visko, mielai atsakysiu į visus klausimus. Kadangi aš nekalbu angliškai, praneškite man, jei kažkas negerai ar nesuprantama. Jei jums patiko šis projektas, balsuokite už konkursus ir (arba) palikite komentarą ☺. Tai paskatins mane nuolat atnaujinti ir skelbti naują turinį. Ačiū.

Rekomenduojamas: