Talaan ng mga Nilalaman:

WiFi Temperature Logger (na may ESP8266): 11 Mga Hakbang (na may Mga Larawan)
WiFi Temperature Logger (na may ESP8266): 11 Mga Hakbang (na may Mga Larawan)

Video: WiFi Temperature Logger (na may ESP8266): 11 Mga Hakbang (na may Mga Larawan)

Video: WiFi Temperature Logger (na may ESP8266): 11 Mga Hakbang (na may Mga Larawan)
Video: Introduction to NodeMCU ESP8266 WiFi Development board with HTTP Client example- Robojax 2024, Nobyembre
Anonim
Image
Image
Mga Kagamitan
Mga Kagamitan

Kumusta, natutuwa akong makita ka rito. Inaasahan ko na sa pagtuturo na ito ay makakahanap ka ng ilang kapaki-pakinabang na impormasyon. Huwag mag-atubiling magpadala sa akin ng mga mungkahi, katanungan,… Narito ang ilang pangunahing data at isang mabilis na pangkalahatang ideya ng proyekto. Para sa mga mobile na gumagamit: Video. Ipaalam sa akin kung ano ang palagay mo sa proyekto sa seksyon ng komento, salamat. Kamakailan ay bumili ako ng isang board na NodeMcu (batay sa esp8266) upang subukan lamang kaya hindi ito isang talagang advanced na proyekto. Ngunit gumagana ito at ito ang kailangan ko, kaya't ok lang. Pangunahing pagpapaandar para sa data logger na ito ay upang mangolekta ng temperatura at i-save ito sa isang server. Pinapayagan nitong suriin ng mga gumagamit ang data at grap sa online kahit na wala sila sa parehong lokasyon ng logger (halimbawa para sa isang istasyon ng panahon). Ang isa pang kapaki-pakinabang na tampok ay ang pag-update ng OTA na kasama sa code na hinahayaan ang gumagamit na mag-update at ipasadya ang software nang madali. Susuriin ko ang dalawang mga sensor at ang kanilang kaugnay na pamamaraan ng pagkuha upang makagawa ng isang balanse ng lahat ng mga kalamangan at kahinaan.

Spoiler: pagkatapos ng kaunting pagsubok nalaman ko na ang isang digital sensor tulad ng DS18B20 ay ang pinakamahusay na solusyon sapagkat nag-aalok ito ng katatagan at mas mataas na kawastuhan. Hindi na ito tinatablan ng tubig at may cable.

Hakbang 1: Mga Kagamitan

Mga Kagamitan
Mga Kagamitan
Mga Kagamitan
Mga Kagamitan
Mga Kagamitan
Mga Kagamitan

Ito ay isang maliit na proyekto na may kaunting panlabas na sangkap lamang, para dito ang listahan ng BOM ay magiging maikli. Gayunpaman, tingnan natin kung anong materyal ang hiniling:

  • NodeMcu V3 (o anumang katugmang ESP8266 μprocessor);
  • Pinangunahan ng RGB (karaniwang anode);
  • Mga resistor para sa led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim Integrated thermometer);
  • LM35 (thermometer ng Instrumentong Texas);
  • Panlabas na baterya (opsyonal);
  • Cable;
  • Connector (upang gawing mas "advanced");
  • Box (opsyonal, muli upang gawin itong mas "advanced");
  • Humahawak ng led (opsyonal);

Tandaan: Tulad ng sinabi ko kailangan mong pumili ng isa sa dalawang pamamaraan. Kung pinili mo ang LM35 thermometer, kakailanganin mo ng ilang iba pang bahagi:

  • Attiny45 / 85;
  • Programmer ng AVR (o Arduino bilang ISP);
  • Resistor (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2.54mm strip konektor (opsyonal)
  • Diode (2x1N914)
  • Perfboard o PCB;

Hakbang 2: Pagpili ng Sensor

Pagpili ng Sensor
Pagpili ng Sensor

Ang pagpili ng sensor ay maaaring maging isang mahirap na hakbang: ngayon may mga toneladang transduser (nag-aalok ang TI ng 144 magkakaibang elemento) kapwa analog at digital na may iba't ibang saklaw ng temperatura, kawastuhan at kaso. Mga Sensor ng analog (46 na bahagi na magagamit mula sa TI): Mga kalamangan:

  • Ang logger ng data ay madaling mabago mula sa temperatura sa isa pang dami (boltahe, kasalukuyang,…);
  • Maaaring maging isang maliit na mas mura;
  • Madaling gamitin dahil hindi ito nangangailangan ng anumang espesyal na silid-aklatan;

Kahinaan:

  • Atasan ang ADC (na maaaring maka-impluwensya sa katumpakan ng pagsukat) at iba pang panlabas na mga bahagi. Dahil ang esp8266 ay may isang ADC lamang (at hindi talaga tumpak) iminumungkahi kong gumamit ng isang panlabas.
  • Kailangan ng nakatuon na cable na may pagtanggi sa ingay dahil ang anumang inducted boltahe ay maaaring baguhin ang resulta.

Pagkatapos ng kaunting pag-iisip nagpasya akong gamitin ang LM35, isang linear sensor na may + 10mV / ° C scale factor na may 0.5 ° C katumpakan at isang napakababang kasalukuyang (tungkol sa 60uA) na may operating boltahe mula 4V hanggang 30V. Para sa karagdagang detalye iminumungkahi ko na makita ang datasheet: LM35.

Mga Digital Sensor (lubos na inirerekomenda) Mga kalamangan:

Halos anumang mga panlabas na sangkap na kinakailangan;

Pinagsamang ADC

Kahinaan:

Humiling ng library o software na mag-decode ng digital signal (I2C, SPI, Serial, One Wire,…);

Mas mahal;

Pinili ko ang DS18B20 sapagkat nakakita ako ng isang hanay ng 5 mga hindi tinatagusan ng tubig na sensor sa Amazon at dahil malawak itong naitala sa internet. Pangunahing tampok ang pagsukat ng 9-12bit, 1-Wire bus, 3.0 hanggang 5.5 na boltahe ng suplay, kawastuhan ng 0.5 ° C. Muli, para sa karagdagang detalye narito ang datasheet: DS18B20.

Hakbang 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Pag-aralan natin kung paano ko ipinatupad ang panlabas na ADC at iba pang tampok para sa LM35 thermometer. Natagpuan ko ang isang kable na may tatlong mga wires, isa na may kalasag at dalawa wala. Nagpasya akong magdagdag ng isang decoupling capacitor upang patatagin ang supply boltahe malapit sa sensor. Upang mai-convert ang temperatura ng analog sa digital, ginamit ko ang Attiny85 microprocessor sa isang dip8 package (muli para sa karagdagang impormasyon tingnan ang datasheet: attiny85). Ang pinakamahalagang bagay para sa amin ay ang 10 bit ADC (hindi talaga ang pinakamahusay ngunit sapat na tumpak para sa akin). Upang makipag-usap sa Esp8266 nagpasya akong gamitin ang Serial na komunikasyon na isinasaalang-alang na ang esp8266 ay gumagana sa 3.3V at attiny85 sa 5V (dahil kinakailangan nito upang paandarin ang sensor). Upang makamit iyon, gumamit ako ng isang simpleng divider ng boltahe (tingnan ang eskematiko). Upang mabasa ang negatibong temperatura kailangan nating magdagdag ng ilang mga panlabas na sangkap (2x1N914 at 1x18k risistor), dahil ayaw kong gumamit ng negatibong suplay ng kuryente. Narito ang code: TinyADC repository. Tandaan: upang maipon ang code na ito kailangan mong i-install nakakaakit sa idey (ipasok ito sa pagpipilian: https://drazzy.com/package_drazzy.com_index.json), kung hindi mo alam kung paano ito gawin, maghanap lamang sa Google. O mag-upload ng.hex file nang direkta.

Hakbang 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Binili ko ang mga sensor mula sa Amazon (5 gastos tungkol sa 10 €). Dumating ito na may takip na hindi kinakalawang na asero at isang cable na 1m ang haba. Maaaring ibalik ng sensor na ito ang 9 hanggang 12 bit na data ng temperatura. Maraming sensor ang maaaring mai-plug sa parehong pin dahil lahat sila ay may natatanging ID. Upang mai-plug ang DS18B20 sa esp8266 maaari mo lamang sundin ang eskematiko (pangalawang larawan). Dahil napagpasyahan kong ang aking magtotroso ay magkakaroon ng tatlong mga pagsisiyasat, kailangan kong makilala kung alin. Kaya naisip kong bigyan sila ng isang kulay na nauugnay sa pamamagitan ng software sa kanilang address. Gumamit ako ng ilang thermo-shrinkable tube (pangatlong larawan).

Hakbang 5: Code ng ESP8266

Code ng ESP8266
Code ng ESP8266
Code ng ESP8266
Code ng ESP8266

Dahil bago ako sa mundong ito, nagpasya akong gumamit ng maraming mga aklatan. Tulad ng sinabi sa pagpapakilala pangunahing mga tampok ay:

  • Pag-update ng OTA: hindi mo kailangang i-plug ang esp8266 sa iyong computer sa tuwing kailangan mong i-upload ang code (kailangan mo lamang gawin ito sa unang pagkakataon);
  • Ang wireless manager, kung nagbago ang wireless network, hindi mo kailangang i-upload muli ang sketch. Maaari mo lamang mai-configure muli ang mga parameter ng network na kumokonekta sa esp8266 access point;
  • Thingspeak data trasmission;
  • Parehong suportado ng LM35 at DS18B20;
  • Simpleng User Interface (pinangunahan ng RGB na nagpapahiwatig ng ilang kapaki-pakinabang na impormasyon);

Mangyaring humingi ng paumanhin sa akin dahil ang aking software ay hindi pinakamahusay at hindi talaga ito maayos. Bago mag-upload sa aparato, kailangan mong baguhin ang ilang mga parameter upang magkasya ang code sa iyong pag-set up. Dito maaari mong i-download ang software. Karaniwang pagsasaayos ng LM35 at DS18B20 Kailangan mong baguhin ang kahulugan ng pin, token, numero ng channel, gumagamit at password para sa pag-update ng OTA. Linya mula 15 hanggang 23.

# tukuyin ang pula ang IYONG PINHERE #Tukuyin ang berdeng IYONG PINHERE

# tukuyin ang asul na MYPINHERE const char * host = "piliin ang host address"; // hindi talaga kinakailangan maaari kang umalis sa esp8266-webupdate const char * update_path = "/ firmware"; // upang baguhin ang address para sa pag-update ng hal: 192.168.1.5/firmware const char * update_username = "HISUSERHERE"; const char * update_password = "HISPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Hakbang 6: Code ng ESP8266: Gumagamit ng LM35

Kailangan mong ikonekta ang attiny board sa esp8266, upang mapagana ang yunit ng ADC gamitin ang VU pin at G pin. Kailangan mong piliin kung aling pin ang nais mong gamitin para sa serial komunikasyon (upang panatilihing libre ang serial serial para sa layunin ng pag-debug). Dapat piliin ang tx pin ngunit hindi talaga ginagamit. (Linya 27). SoftwareSerial mySerial (RXPIN, TXPIN); Sa tuktok kailangan mong idagdag: # tukuyin ang LM35USER

Hakbang 7: Code ng ESP8266: Gumagamit ng DS18B20

Bilang unang operasyon kailangan mong kilalanin ang Address ng aparato para sa bawat sensor. Compile at programa ang code na ito sa esp at tumingin sa serial para sa mga resulta. Ang code ay matatagpuan dito (hanapin ang pamagat na ito sa pahina: «Basahin ang indibidwal na Mga Panloob na Address ng DS18B20»). Ikonekta lamang ang isang sensor upang makuha ang address, ang mga resulta ay dapat na isang bagay tulad nito (random na numero dito! Tulad ng halimbawa): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Pagkatapos ay kailangan mong baguhin ang aking code sa seksyon na " Pag-configure para sa DS18B20 "(linya 31 hanggang 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (from 9 to 12) #define delayDallas READINTERVAL // (Sa Milliseconds, minimum ay 15s o 15000mS) DeviceAddress blueSensor = {xx, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0 0x12}; // CHANGE WITH YOUR ADDRESS DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // CHANGE WITH YOUR ADDRESS DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // PAGBABAGO SA IYONG ADDRESS Sa tuktok kailangan mong idagdag: # tukuyin ang DSUSER

Hakbang 8: ESP8266 Little Trick

ESP8266 Little Trick
ESP8266 Little Trick

Matapos ang kaunting pagsubok nalaman ko na kung i-plug mo ang esp8266 nang walang programa, hindi nito tatakbo ang code hanggang sa pindutin mo ang pag-reset ng isang beses. Upang malutas ang isyung ito, pagkatapos ng kaunting pagsasaliksik, natuklasan kong kailangan mong magdagdag ng isang pull-up risistor mula sa 3.3V hanggang D3. Sasabihin nito sa processor na i-load ang code mula sa flash memory. Sa pamamaraang ito, maaaring direktang magamit ang D3 sa input ng data para sa mga sensor ng DS18B20.

Hakbang 9: First Time Operation

Operasyon ng First Time
Operasyon ng First Time
Operasyon ng First Time
Operasyon ng First Time

Kung na-upload mo nang tama ang code ngunit hindi kailanman ginagamit ang library ng Wifi manager oras na upang mai-configure ang iyong koneksyon sa wifi. Maghintay hanggang makita mo ang RGB na humantong kumikislap nang mas mabilis kaysa dati, pagkatapos maghanap gamit ang iyong mobile o PC ang wifi network na tinatawag na "AutoConnectAp" at kumonekta. Pagkatapos ng koneksyon, buksan ang isang web browser at ipasok ang 192.168.4.1, mahahanap mo ang interface ng GUI ng wifi manager (tingnan ang mga larawan) at pindutin ang "I-configure ang Wifi". Maghintay para sa esp8266 upang maghanap ng mga network ng wifi, at piliin ang nais. Ipasok ang password at pindutin ang "i-save". Mag-restart ang Esp8266 (huwag mag-alala na humantong ang RGB sa oras na ito dahil maglalabas ito ng ilang random na impormasyon) at kumonekta sa network.

Hakbang 10: Konklusyon

Konklusyon
Konklusyon
Konklusyon
Konklusyon
Konklusyon
Konklusyon
Konklusyon
Konklusyon

Sa huli, narito ang isang grap na kinuha mula sa data logger sa pagkilos habang ang pag-log sa temperatura ng aking freezer. Sa orange ang DS18B20 at asul ang LM35 at ito ay circuit. Maaari mong makita ang pinakamalaking pagkakaiba-iba sa kawastuhan mula sa digital hanggang sa analog sensor (kasama ang aking mahirap na "ADC circuit") na nagbibigay ng ilang hindi pang-pisikal na data. Ang pagtatapos, kung nais mong buuin ang logger na ito iminumungkahi ko na gamitin ang DS18B20 digital temperatura sensor dahil ito ay mas madaling basahin at halos "plug and play", ito ay mas matatag at tumpak, tumatakbo ito sa 3.3V at nangangailangan lamang ng isang pin para sa maraming mga sensor. Salamat sa pansin, inaasahan kong ang proyektong ito ay mabuti para sa iyo at ikaw ay natagpuan ang ilang mga kapaki-pakinabang na impormasyon. At para sa kung sino ang nais mapagtanto ito, nais kong ibigay ko ang lahat ng impormasyong kinakailangan. Kung hindi malaya na tanungin ang lahat, masisiyahan akong sagutin ang lahat ng mga katanungan. Dahil hindi ako isang nagsasalita ng Ingles, kung may mali o hindi maintindihan mangyaring ipaalam sa akin. Kung nagustuhan mo ang proyektong ito, mangyaring iboto ito para sa mga paligsahan at / o mag-iwan ng komento ☺. Hikayatin ako nito na patuloy na mag-update at maglathala ng mga bagong nilalaman. Salamat.

Inirerekumendang: