Sadržaj:

WiFi zapisnik temperature (sa ESP8266): 11 koraka (sa slikama)
WiFi zapisnik temperature (sa ESP8266): 11 koraka (sa slikama)

Video: WiFi zapisnik temperature (sa ESP8266): 11 koraka (sa slikama)

Video: WiFi zapisnik temperature (sa ESP8266): 11 koraka (sa slikama)
Video: ПРОСОФТ: Приложение IoT на NodeMCU и Cayenne 2024, Juli
Anonim
Image
Image
Materijali
Materijali

Zdravo, drago mi je što vas vidim ovdje. Nadam se da ćete u ovom uputstvu pronaći neke korisne informacije. Slobodno mi šaljite prijedloge, pitanja,… Evo nekoliko osnovnih podataka i kratak pregled projekta. Za mobilne korisnike: Video. Recite mi šta mislite o projektu u odjeljku za komentare, hvala. Nedavno sam kupio ploču NodeMcu (zasnovanu na esp8266) samo da isprobam, tako da ovo nije zaista napredan projekt. Ali radi i to je ono što mi treba, tako da je u redu. Glavna funkcija ovog zapisivača podataka je prikupljanje temperature i spremanje na poslužitelj. Ovo omogućava korisnicima da provjeravaju podatke i grafikone na mreži čak i kada nisu na istoj lokaciji zapisivača (na primjer za meteorološku stanicu). Još jedna korisna značajka je OTA ažuriranje uključeno u kôd koje korisnicima omogućuje jednostavno ažuriranje i prilagođavanje softvera. Analizirat ću dva senzora i njihovu srodnu metodu stjecanja kako bih napravio balans između svih prednosti i nedostataka.

Spojler: nakon kratkog testiranja otkrio sam da je digitalni senzor poput DS18B20 najbolje rješenje jer nudi stabilnost i veću točnost. Već je vodootporan i sa kablom.

Korak 1: Materijali

Materijali
Materijali
Materijali
Materijali
Materijali
Materijali

Ovo je minimalan projekt sa samo nekoliko vanjskih komponenti, jer će lista BOM -ova biti zaista kratka. No, da vidimo koji se materijal traži:

  • NodeMcu V3 (ili bilo koji kompatibilni ESP8266 μ procesor);
  • RGB LED (zajednička anoda);
  • Otpornici za LED (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim integrirani termometar);
  • LM35 (termometar Texas Instrument);
  • Vanjska baterija (opcionalno);
  • Cable;
  • Konektor (kako bi bio "napredniji");
  • Okvir (opcionalno, ponovo da bude „napredniji“);
  • LED držač (opcionalno);

Napomena: Kao što sam rekao, morate odabrati jednu od dvije metode. Ako odaberete termometar LM35, trebat će vam nekoliko drugih komponenti:

  • Attiny45/85;
  • AVR programer (ili Arduino kao ISP);
  • Otpornik (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2,54 mm konektor za traku (opcionalno)
  • Dioda (2x1N914)
  • Perfboard ili PCB;

Korak 2: Odabir senzora

Odabir senzora
Odabir senzora

Odabir senzora može biti težak korak: danas postoji mnoštvo pretvarača (TI nudi 144 različita elementa) i analognih i digitalnih s različitim temperaturnim rasponom, preciznošću i kućištem. Analogni senzori (46 dijelova dostupno u TI -u): Pros:

  • Zapisnik podataka može se lako promijeniti s temperature na drugu veličinu (napon, struja, …);
  • Možda je malo jeftinije;
  • Jednostavan za upotrebu jer ne zahtijeva nikakvu posebnu biblioteku;

Protiv:

  • Zahtijevajte ADC (koji može utjecati na točnost mjerenja) i druge vanjske komponente. Budući da esp8266 ima samo jedan ADC (i nije baš precizan), predlažem da se koristi vanjski.
  • Potreban je namjenski kabel s odbijanjem šuma jer bilo koji inducirani napon može promijeniti rezultat.

Nakon malo razmišljanja odlučio sam se za LM35, linearni senzor s faktorom skale +10mV/° C s točnošću od 0,5 ° C i vrlo niskom strujom (oko 60uA) s radnim naponom od 4V do 30V. Za više detalja predlažem da pogledate podatkovnu tablicu: LM35.

Digitalni senzori (visoko preporučeno) Prednosti:

Gotovo sve potrebne vanjske komponente;

Integrisani ADC

Protiv:

Biblioteka zahtjeva ili softver con dekodiraju digitalni signal (I2C, SPI, serijski, jedna žica, …);

Skuplje;

Odabrao sam DS18B20 jer sam na Amazonu pronašao set od 5 vodootpornih senzora i zato što je široko dokumentiran na internetu. Glavna karakteristika je mjerenje 9-12 bita, 1-žična sabirnica, napon napajanja 3,0 do 5,5, tačnost 0,5 ° C. Opet, za više detalja ovdje je podatkovna tablica: DS18B20.

Korak 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Hajde da analiziramo kako sam implementirao vanjski ADC i druge karakteristike za termometar LM35. Našao sam kabel s tri žice, jednu sa zaštitom i dvije bez. Odlučio sam dodati kondenzator za razdvajanje kako bih stabilizirao napon napajanja u blizini senzora. Za pretvaranje analogne temperature u digitalnu, koristio sam mikroprocesor Attiny85 u paketu dip8 (ponovo za više informacija pogledajte podatkovnu tablicu: attiny85). Najvažnija stvar za nas je 10 -bitni ADC (nije baš najbolji, ali meni dovoljno precizan). Za komunikaciju s Esp8266 odlučio sam koristiti serijsku komunikaciju imajući na umu da esp8266 radi sa 3.3V i attiny85 na 5V (jer mu je potrebno napajanje senzora). Da bih to postigao, koristio sam jednostavan razdjelnik napona (vidi shemu). Za očitavanje negativne temperature moramo dodati neke vanjske komponente (2x1N914 i 1x18k otpornik), jer ne želim koristiti negativno napajanje. Evo koda: spremište TinyADC. Napomena: za sastavljanje ovog koda morate instalirati attiny to ide (umetnite ovo u opciju: https://drazzy.com/package_drazzy.com_index.json), ako ne znate kako to učiniti, samo pretražite na Googleu. Ili direktno prenesite.hex datoteku.

Korak 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Senzore sam kupio od Amazona (5 košta oko 10 €). Došao je s poklopcem od nehrđajućeg čelika i kabelom dužine 1 m. Ovaj senzor može vratiti 9 do 12 bitne podatke o temperaturi. Mnogo senzora može se priključiti na isti pin jer svi oni imaju jedinstveni ID. Da biste DS18B20 priključili na esp8266, samo slijedite shemu (druga fotografija). Pošto sam odlučio da će moj drvosječa imati tri sonde, morao sam razlikovati koja je koja. Pa sam mislio dati im boju povezanu putem softvera na njihovu adresu. Koristio sam termoskupljajuću cijev (treća fotografija).

Korak 5: Kod ESP8266

Kod ESP8266
Kod ESP8266
Kod ESP8266
Kod ESP8266

Budući da sam tek nov u ovom svijetu, odlučio sam koristiti mnoge biblioteke. Kao što je rečeno u uvodu, glavne karakteristike su:

  • OTA ažuriranje: ne morate da priključujete esp8266 na računar svaki put kada morate da otpremite kôd (morate to učiniti samo prvi put);
  • Bežični upravitelj, ako se promijeni bežična mreža, ne morate ponovo učitavati skicu. Možete jednostavno ponovo konfigurirati mrežne parametre koji se povezuju s pristupnom točkom esp8266;
  • Stvarni prenos podataka;
  • Podržani su i LM35 i DS18B20;
  • Jednostavno korisničko sučelje (RGB LED označava neke korisne informacije);

Izvinite me jer moj softver nije najbolji i nije dobro uređen. Prije postavljanja na uređaj morate promijeniti neke parametre kako bi se kôd uklopio u vaše postavke. Ovdje možete preuzeti softver. Uobičajena konfiguracija LM35 i DS18B20Za OTA ažuriranje morate promijeniti definiciju pina, token, broj kanala, korisnika i lozinku. Linija od 15 do 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "odaberi adresu hosta"; // nije baš potrebno, možete ostaviti esp8266-webupdate const char* update_path = "/firmware"; // za promjenu adrese za ažuriranje npr: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Korak 6: ESP8266 Šifra: LM35 korisnik

Morate spojiti attiny ploču na esp8266, za napajanje ADC jedinice koristite VU pin i G pin. Morate izabrati pin koji želite koristiti za serijsku komunikaciju (kako bi hardver bio serijski slobodan radi otklanjanja grešaka). Tx pin mora biti odabran, ali se zapravo ne koristi. (Red 27). Softverski serijski mySerial (RXPIN, TXPIN); Na vrhu morate dodati: #define LM35USER

Korak 7: ESP8266 Kod: DS18B20 Korisnik

Kao prvu operaciju morate identificirati adresu uređaja za svaki senzor. Kompilirajte i programirajte ovaj kod na esp -u i rezultate potražite u serijskoj izvedbi. Kôd možete pronaći ovdje (potražite ovaj naslov na stranici: «Pročitajte pojedinačne interne adrese DS18B20»). Povežite samo jedan senzor da biste dobili adresu, rezultati bi trebali biti otprilike ovakvi (ovdje je nasumičan broj! Samo kao primjer): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Onda morate promijeniti moj kôd u odjeljku " Konfiguracija za DS18B20 "(linije 31 do 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (od 9 do 12) #define delayDallas READINTERVAL // (U milisekundama, minimum je 15s ili 15000mS) Adresa uređaja blueSensorx, 0x9, 0x9, 0x, 0x9, 0x, 0x12}; // PROMJENA SA ADRESOM Adresa uređaja redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PROMJENA SA ADRESOM Adresa uređaja greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PROMJENA SA ADRESOM Na vrhu morate dodati: #define DSUSER

Korak 8: Mali trik ESP8266

ESP8266 Mali trik
ESP8266 Mali trik

Nakon malo testiranja otkrio sam da ako uključite esp8266 bez programiranja, on neće pokrenuti kôd sve dok jednom ne pritisnete reset. Da bih riješio ovaj problem, nakon malo istraživanja otkrio sam da morate dodati pull-up otpornik od 3,3 V na D3. Ovo će reći procesoru da učita kôd iz flash memorije. Ovom metodom, D3 se može direktno koristiti za unos podataka za senzore DS18B20.

Korak 9: Prva operacija

Prva operacija
Prva operacija
Prva operacija
Prva operacija

Ako ste ispravno prenijeli kôd, ali nikada ne koristite biblioteku Wifi upravitelja, vrijeme je da konfigurirate svoju WiFi vezu. Pričekajte dok ne vidite da RGB LED dioda treperi brže nego prije, a zatim pretražite mobilnim telefonom ili računarom WiFi mrežu pod nazivom "AutoConnectAp" i povežite se. Nakon povezivanja otvorite web preglednik i unesite 192.168.4.1, pronaći ćete GUI sučelje wifi menadžera (pogledajte fotografije) i pritisnite "Konfiguriraj Wifi". Pričekajte da esp8266 pretraži WiFi mreže i odaberite željenu. Unesite lozinku i pritisnite "spremi". Esp8266 će se ponovo pokrenuti (ovaj put nije briga za RGB jer će emitirati neke nasumične informacije) i povezati se na mrežu.

Korak 10: Zaključak

Zaključak
Zaključak
Zaključak
Zaključak
Zaključak
Zaključak
Zaključak
Zaključak

Na kraju, evo grafikona preuzetog iz zapisnika podataka u akciji dok bilježim temperaturu zamrzivača. U narandžastoj boji je DS18B20, a u plavoj LM35 i njeno kolo. Možete vidjeti najveću razliku u preciznosti s digitalnog na analogni senzor (s mojim lošim "ADC krugom") koji daje neke nefizičke podatke. Ukratko, ako želite izgraditi ovaj zapisnik, predlažem korištenje digitalnog senzora temperature DS18B20 jer je lakši za čitanje i gotovo "plug and play", stabilniji je i precizniji, radi na 3.3V i zahtijeva samo jedan pin za mnogo senzora. Hvala na pažnji, nadam se da je ovaj projekt dobar za vas i da ste pronašao neke korisne informacije. A za one koji to žele shvatiti, volio bih da sam dao sve potrebne informacije. Ako ne možete slobodno pitati sve, rado ću odgovoriti na sva pitanja. S obzirom da ne govorim engleski, ako nešto nije u redu ili nije razumljivo, javite mi. Ako vam se svidio ovaj projekat, glasajte za natječaje i/ili ostavite komentar ☺. Potaknut će me na stalno ažuriranje i objavljivanje novih sadržaja. Hvala ti.

Preporučuje se: