Përmbajtje:

Regjistruesi i temperaturës WiFi (me ESP8266): 11 hapa (me fotografi)
Regjistruesi i temperaturës WiFi (me ESP8266): 11 hapa (me fotografi)

Video: Regjistruesi i temperaturës WiFi (me ESP8266): 11 hapa (me fotografi)

Video: Regjistruesi i temperaturës WiFi (me ESP8266): 11 hapa (me fotografi)
Video: Введение в плату разработки NodeMCU ESP8266 WiFi с примером HTTP-клиента 2024, Nëntor
Anonim
Image
Image
Materiale
Materiale

Përshëndetje, më vjen mirë që ju shoh këtu. Shpresoj që në këtë udhëzues të gjeni disa informacione të dobishme. Mos ngurroni të më dërgoni sugjerime, pyetje,… Këtu janë disa të dhëna themelore dhe një përmbledhje e shpejtë e projektit. Për përdoruesit e celularëve: Video. Më tregoni se çfarë mendoni për projektin në pjesën e komenteve, faleminderit. Kohët e fundit kam blerë një bord NodeMcu (bazuar në esp8266) vetëm për ta provuar kështu që ky nuk është një projekt vërtet i avancuar. Por funksionon dhe është ajo që më duhet, kështu që është në rregull. Funksioni kryesor për këtë regjistrues të të dhënave është të mbledhë temperaturën dhe ta ruajë atë në një server. Kjo i lejon përdoruesit të kontrollojnë të dhënat dhe grafikët në internet edhe kur ata nuk janë në të njëjtin vend të regjistruesit (për shembull për një stacion moti). Një veçori tjetër e dobishme është azhurnimi OTA i përfshirë në kodin që lejon përdoruesin të përditësojë dhe personalizojë softuerin me lehtësi. Unë do të analizoj dy sensorë dhe metodën e tyre të marrjes për të bërë një ekuilibër të të gjitha të mirat dhe të këqijat.

Spoiler: pas një pak testimi zbulova se një sensor dixhital si DS18B20 është zgjidhja më e mirë sepse ofron stabilitet dhe saktësi më të lartë. Alreadyshtë tashmë i papërshkueshëm nga uji dhe me kabllo.

Hapi 1: Materialet

Materiale
Materiale
Materiale
Materiale
Materiale
Materiale

Ky është një projekt minimal me vetëm pak përbërës të jashtëm, për këtë lista e BOM do të jetë vërtet e shkurtër. Sidoqoftë, le të shohim se çfarë materiali kërkohet:

  • NodeMcu V3 (ose ndonjë përpunues i pajtueshëm ESP8266);
  • RGB led (anodë e zakonshme);
  • Rezistorë për led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Termometër Maxim i Integruar);
  • LM35 (termometër Texas Instrument);
  • Bateri e jashtme (opsionale);
  • Kabllo;
  • Lidhës (për ta bërë atë më "të avancuar");
  • Kuti (opsionale, përsëri për ta bërë atë më "të avancuar");
  • Mbajtës led (opsional);

Shënim: Siç thashë ju duhet të zgjidhni një nga dy metodat. Nëse zgjidhni termometrin LM35, do t'ju nevojiten disa përbërës të tjerë:

  • Attiny45/85;
  • Programues AVR (ose Arduino si ISP);
  • Rezistencë (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Lidhës shirit 2.54 mm (opsional)
  • Diodë (2x1N914)
  • Perfboard ose PCB;

Hapi 2: Zgjedhja e sensorit

Zgjedhja e sensorit
Zgjedhja e sensorit

Zgjedhja e sensorit mund të jetë një hap i vështirë: sot ka mijëra transmetues (TI ofron 144 elementë të ndryshëm) si analog ashtu edhe dixhital me diapazon të ndryshëm të temperaturës, saktësi dhe rast. Sensorë analoge (46 pjesë të disponueshme nga TI): Të mirat:

  • Regjistruesi i të dhënave mund të ndryshohet lehtësisht nga temperatura në një sasi tjetër (tension, rrymë,…);
  • Mund të jetë pak më e lirë;
  • Lehtë për t’u përdorur pasi nuk kërkon ndonjë bibliotekë të veçantë;

Disavantazhet:

  • Kërkoni ADC (që mund të ndikojë në saktësinë e matjes) dhe përbërës të tjerë të jashtëm. Meqenëse esp8266 ka vetëm një ADC (dhe jo vërtet të saktë) do të sugjeroja të përdorni një të jashtëm.
  • Ka nevojë për kabllo të dedikuar me refuzim të zhurmës pasi çdo tension i induktuar mund të ndryshojë rezultatin.

Pas pak mendimi vendosa të përdor LM35, një sensor linear me faktor shkallë +10mV/° C me saktësi 0.5 ° C dhe një rrymë shumë të ulët (rreth 60uA) me një tension pune nga 4V në 30V. Për më shumë detaje unë sugjeroj të shihni fletën e të dhënave: LM35.

Sensorë dixhitalë (rekomandohet shumë) Pro:

Pothuajse çdo përbërës i jashtëm i nevojshëm;

ADC e integruar

Disavantazhet:

Kërkoni bibliotekë ose softuer që të deshifrojë sinjalin dixhital (I2C, SPI, Serial, One Wire,…);

Më e shtrenjtë;

Unë kam zgjedhur DS18B20 sepse gjeta një grup prej 5 sensorë të papërshkueshëm nga uji në Amazon dhe sepse është dokumentuar gjerësisht në internet. Karakteristika kryesore është matja 9-12bit, autobusi 1-tela, tensioni i furnizimit 3.0 deri në 5.5, saktësia 0.5 ° C. Përsëri, për më shumë detaje këtu është fleta e të dhënave: DS18B20.

Hapi 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Le të analizojmë se si kam zbatuar ADC të jashtme dhe veçori të tjera për termometrin LM35. Gjeta një kabllo me tre tela, një me mbrojtje dhe dy pa. Vendosa të shtoj një kondensator shkëputës për të stabilizuar tensionin e furnizimit pranë sensorit. Për të konvertuar temperaturën analoge në dixhitale, kam përdorur mikroprocesorin Attiny85 në një paketë dip8 (përsëri për më shumë informacion shikoni fletën e të dhënave: attiny85). Gjëja më e rëndësishme për ne është ADC 10 -bitësh (jo vërtet më e mira, por mjaft e saktë për mua). Për të komunikuar me Esp8266 vendosa të përdor komunikimin Serial duke pasur parasysh se esp8266 punon me 3.3V dhe attiny85 në 5V (pasi ka nevojë për të ndezur sensorin). Për ta arritur këtë, unë përdor një ndarës të thjeshtë të tensionit (shiko skemën). Për të lexuar temperaturën negative, duhet të shtojmë disa përbërës të jashtëm (rezistencë 2x1N914 dhe 1x18k), pasi nuk dua të përdor furnizim me energji negative. Këtu është kodi: depoja TinyADC. Shënim: për të përpiluar këtë kod do t'ju duhet të instaloni attiny to ide (futeni këtë në opsionin: https://drazzy.com/package_drazzy.com_index.json), nëse nuk dini si ta bëni, thjesht kërkoni në Google. Ose ngarkoni direkt skedarin.hex.

Hapi 4: DS18B20

GJ18B20
GJ18B20
GJ18B20
GJ18B20
GJ18B20
GJ18B20
GJ18B20
GJ18B20

I bleva ata sensorë nga Amazon (5 kushtojnë rreth 10 €). Ai mbërriti me një mbulesë çeliku inox dhe një kabllo të gjatë 1m. Ky sensor mund të kthejë të dhëna të temperaturës prej 9 deri në 12 bit. Shumë sensorë mund të lidhen me të njëjtën kunj pasi të gjithë kanë një ID unike. Për ta lidhur DS18B20 me esp8266, thjesht mund të ndiqni skemën (fotografia e dytë). Meqenëse kam vendosur që prerësja ime do të kishte tre sonda, më është dashur të dalloj se cila është cila. Kështu që unë mendova t'u jepja atyre një ngjyrë të lidhur përmes softuerit në adresën e tyre. Kam përdorur një tub termo-tkurrës (fotografia e tretë).

Hapi 5: Kodi ESP8266

Kodi ESP8266
Kodi ESP8266
Kodi ESP8266
Kodi ESP8266

Meqenëse jam i ri në këtë botë, vendosa të përdor shumë biblioteka. Siç u tha në hyrje tiparet kryesore janë:

  • Përditësimi OTA: nuk keni nevojë të lidhni esp8266 në kompjuterin tuaj sa herë që keni nevojë të ngarkoni kodin (duhet ta bëni vetëm herën e parë);
  • Menaxher pa tel, nëse ndryshon rrjeti pa tel, nuk keni nevojë të ringarkoni skicën. Ju thjesht mund të konfiguroni përsëri parametrat e rrjetit që lidhen me pikën e hyrjes esp8266;
  • Transmetimi i të dhënave Thingspeak;
  • Të dy LM35 dhe DS18B20 mbështeten;
  • Ndërfaqja e thjeshtë e përdoruesit (led RGB tregon disa informacione të dobishme);

Ju lutem më falni sepse softueri im nuk është më i miri dhe nuk është me të vërtetë i rregulluar mirë. Para se të ngarkoni në pajisje, duhet të ndryshoni disa parametra për t'iu përshtatur kodit në konfigurimin tuaj. Këtu mund të shkarkoni programin. Konfigurimi i zakonshëm LM35 dhe DS18B20 Ju duhet të ndryshoni përcaktimin e pinit, shenjën, numrin e kanalit, përdoruesin dhe fjalëkalimin për përditësimin OTA. Linja nga 15 në 23.

#përcaktoni të kuqen YOURPINHERE #përcaktoni jeshilen YOURPINHERE

#define blu YOURPINHERE const char* host = "zgjidhni adresën e hostit"; // nuk është vërtet e nevojshme mund të lini esp8266-webupdate const char* update_path = "/firmware"; // për të ndryshuar adresën për përditësimin p.sh.: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "FJALA JUA E PARA; e panënshkruar myChannelNumber gjatë = CHANNELNUMBERHERE; const char * myWriteAPIKey =" SHKRUAJ ";

Hapi 6: Kodi ESP8266: Përdoruesi LM35

Ju duhet të lidhni bordin e veshjes me esp8266, për të fuqizuar njësinë ADC përdorni pin VU dhe pin G. Ju duhet të zgjidhni cilën pin doni të përdorni për komunikim serik (për ta mbajtur serialin e harduerit të lirë për qëllime të korrigjimit). Kodi Tx duhet të zgjidhet, por nuk përdoret me të vërtetë. (Linja 27). SoftwareSerial mySerial (RXPIN, TXPIN); Në krye duhet të shtoni: #define LM35USER

Hapi 7: Kodi ESP8266: Përdoruesi DS18B20

Si operacioni i parë ju duhet të identifikoni Adresën e pajisjes për secilin sensor. Përpiloni dhe programoni këtë kod në esp dhe shikoni në seri për rezultatet. Kodi mund të gjendet këtu (kërkoni këtë titull në faqen: «Lexoni adresat e brendshme individuale DS18B20»). Lidhni vetëm një sensor për të marrë adresën, rezultatet duhet të jenë diçka e tillë (numri i rastësishëm këtu! Ashtu si shembulli): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12Pastaj duhet të ndryshoni kodin tim në seksionin " Konfigurimi për DS18B20 "(rreshti 31 deri 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (nga 9 në 12) #define delayDallas READINTERVAL // (në milisekonda, minimum është 15s ose 15000mS) DeviceAddress blueSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // NDRYSHO ME ADRESN TUAJ DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // NDRYSHO ME ADRESN TUAJ DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // NDRYSHO ME ADRESN TUAJ Në krye duhet të shtosh: #define DSUSER

Hapi 8: ESP8266 Trick i vogël

ESP8266 Truk i vogël
ESP8266 Truk i vogël

Pas një pak testimi zbulova se nëse lidhni esp8266 pa programim, ai nuk do të ekzekutojë kodin derisa të shtypni një herë reset. Për të zgjidhur këtë çështje, pas pak kërkimesh, zbulova se duhet të shtoni një rezistencë tërheqëse nga 3.3V në D3. Kjo do t'i thotë procesorit të ngarkojë kodin nga memoria flash. Me këtë metodë, D3 mund të përdoret drejtpërdrejt për futjen e të dhënave për sensorët DS18B20.

Hapi 9: Operacioni për herë të parë

Operacioni për herë të parë
Operacioni për herë të parë
Operacioni për herë të parë
Operacioni për herë të parë

Nëse e keni ngarkuar kodin saktë, por kurrë nuk përdorni bibliotekën e menaxherit Wifi, është koha për të konfiguruar lidhjen tuaj wifi. Prisni derisa drita RGB të ndizet më shpejt se më parë, pastaj kërkoni me celularin ose kompjuterin tuaj rrjetin wifi të quajtur "AutoConnectAp" dhe lidheni. Pas lidhjes, hapni një shfletues uebi dhe futni 192.168.4.1, do të gjeni ndërfaqen GUI të menaxherit wifi (shihni fotot) dhe shtypni "Konfiguro Wifi". Prisni që esp8266 të kërkojë rrjetet wifi dhe zgjidhni atë të dëshiruar. Vendosni fjalëkalimin dhe shtypni "ruaj". Esp8266 do të riniset (mos u interesoni RGB këtë herë sepse do të nxjerrë disa informacione të rastësishme) dhe do të lidhet me rrjetin.

Hapi 10: Përfundimi

Përfundim
Përfundim
Përfundim
Përfundim
Përfundim
Përfundim
Përfundim
Përfundim

Në fund, këtu është një grafik i marrë nga regjistruesi i të dhënave në veprim gjatë regjistrimit të temperaturës së ngrirësit tim. Në portokalli është DS18B20 dhe në blu LM35 dhe qarku i tij. Ju mund të shihni ndryshimin më të madh në saktësinë nga sensori dixhital në atë analog (me "qarkun tim" të dobët) që japin disa të dhëna jo-fizike. Duke përmbledhur, nëse doni të ndërtoni këtë regjistrues ju sugjeroj të përdorni sensorin digjital të temperaturës DS18B20 pasi është më e lehtë për t'u lexuar dhe pothuajse "plug and play", është më e qëndrueshme dhe e saktë, funksionon në 3.3V dhe kërkon vetëm një kunj për shumë sensorë. Faleminderit për vëmendjen, shpresoj se ky projekt është i mirë për ju dhe ju keni gjeti disa informacione të dobishme. Dhe për kë dëshiron ta kuptojë, uroj që të jap të gjithë informacionin e nevojshëm. Nëse nuk jeni të lirë të bëni gjithçka, do të jem i lumtur t'u përgjigjem të gjitha pyetjeve. Meqenëse nuk jam folës i gjuhës angleze, nëse diçka nuk shkon ose është e kuptueshme ju lutem më tregoni. Nëse ju pëlqeu ky projekt, ju lutemi votoni për konkurset dhe/ose lini një koment ☺. Do të më inkurajojë të vazhdoj të azhurnoj dhe publikoj përmbajtje të reja. Faleminderit.

Recommended: