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, Studeni
Anonim
Image
Image
Materijali
Materijali

Pozdrav, 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 korisnike mobilnih uređaja: Video. Recite mi što mislite o projektu u odjeljku za komentare, hvala. Nedavno sam kupio ploču NodeMcu (na bazi esp8266) samo da isprobam, pa ovo nije baš 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. To omogućuje korisnicima provjeru podataka i grafikona na mreži čak i kada nisu na istom mjestu 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 ravnotežu svih prednosti i nedostataka.

Spoiler: 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 s kabelom.

Korak 1: Materijali

Materijali
Materijali
Materijali
Materijali
Materijali
Materijali

Ovo je minimalan projekt sa samo nekoliko vanjskih komponenti, jer će popis BOM -ova biti jako kratak. No, pogledajmo koji se materijal traži:

  • NodeMcu V3 (ili bilo koji kompatibilni ESP8266 μ procesor);
  • RGB LED (zajednička anoda);
  • Otpornici za LED diode (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim integrirani termometar);
  • LM35 (termometar Texas Instrument);
  • Vanjska baterija (opcionalno);
  • Kabel;
  • Connector (kako bi bio "napredniji");
  • Okvir (opcionalno, opet radi "naprednijeg");
  • 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, točnošć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 korištenje 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š točan), predlažem korištenje vanjskog.
  • Potreban je namjenski kabel s odbijanjem šuma jer bilo koji inducirani napon može promijeniti rezultat.

Nakon malo razmišljanja odlučio sam koristiti 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;

Integrirani ADC

Protiv:

Zahtjev biblioteke ili softvera za dekodiranje digitalnog signala (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 značajka je mjerenje 9-12 bita, 1-žična sabirnica, opskrbni napon od 3,0 do 5,5, točnost od 0,5 ° C. Opet, za više detalja ovdje je podatkovni list: DS18B20.

Korak 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Analizirajmo kako sam implementirao vanjski ADC i druge značajke za termometar LM35. Našao sam kabel s tri žice, jednu s oklopom i dvije bez. Odlučio sam dodati kondenzator za razdvajanje kako bih stabilizirao napon napajanja u blizini senzora. Za pretvaranje analogne temperature u digitalnu, upotrijebio sam mikroprocesor Attiny85 u paketu dip8 (opet 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 s 3,3 V i attiny85 na 5 V (jer treba napajati senzor). Da bih to postigao, koristio sam jednostavan razdjelnik napona (vidi shemu). Za čitanje 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 tražite na Googleu. Ili izravno prenesite.hex datoteku.

Korak 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Senzore sam kupio od Amazona (5 košta oko 10 €). Stigao je s poklopcem od nehrđajućeg čelika i kabelom duljine 1m. 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). Budući da sam odlučio da će moj drvosječa imati tri sonde, morao sam razlikovati koja je koja. Pa sam im mislio dati boju povezanu putem softvera na njihovu adresu. Koristio sam neku termoskupljajuću cijev (treća fotografija).

Korak 5: Kôd ESP8266

Kod ESP8266
Kod ESP8266
Kod ESP8266
Kod ESP8266

Budući da sam tek nov na ovom svijetu, odlučio sam koristiti mnoge knjižnice. Kao što je rečeno u uvodu, glavne značajke su:

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

Ispričajte mi se jer moj softver nije najbolji i nije dobro uređen. Prije prijenosa na uređaj morate promijeniti neke parametre kako bi kod odgovarao vašim postavkama. Ovdje možete preuzeti softver. Uobičajena konfiguracija LM35 i DS18B20Morate promijeniti definiciju pina, token, broj kanala, korisnika i lozinku za OTA ažuriranje. Red od 15 do 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char* host = "odaberi adresu hosta"; // nije stvarno 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 odabrati koji pin želite koristiti za serijsku komunikaciju (kako bi hardver bio serijski slobodan radi otklanjanja pogreš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 se može pronaći ovdje (potražite ovaj naslov na stranici: «Pročitajte pojedine unutarnje 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, minimalno je 15s ili 15000mS) Adresa uređaja blueSensorx, 0xx, 0x9, 0x9, 0x9, 0x12}; // PROMJENA S ADRESOM Adresa uređaja redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PROMJENA S VAŠOM ADRESOM Adresa uređaja greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PROMJENA S 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, kôd se neće pokrenuti 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. To će reći procesoru da učita kôd iz flash memorije. Ovom metodom, D3 se može izravno 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 knjižnicu Wifi upravitelja, vrijeme je da konfigurirate svoju WiFi vezu. Pričekajte dok LED dioda RGB ne počne bljeskati brže nego prije, a zatim pretražite mobilnim telefonom ili računalom 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 upravitelja (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 ponovno pokrenuti (ovaj put nije briga za RGB jer će emitirati neke nasumične podatke) i spojiti 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 na djelu tijekom bilježenja temperature zamrzivača. Narančastom bojom označen je DS18B20, a plavom LM35 i njegovo kolo. Možete vidjeti najveću razliku u točnosti 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 točniji, 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 tko želi to shvatiti, volio bih da sam dao sve potrebne podatke. Ako niste slobodni 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 projekt, glasajte za natječaje i/ili ostavite komentar ☺. Potaknut će me na stalno ažuriranje i objavljivanje novih sadržaja. Hvala vam.

Preporučeni: