Ang ideya ay hiniram mula sa proyekto. ESP8266 na Pagpapakita ng Panahon.
Napagpasyahan kong isipin ito.
Ang mga sumusunod na gawain ay itinakda:
- I-update ang code na may kaugnayan sa paggamit bagong bersyon mga aklatan ArduinoJson.h.
- Muling isulat ang code gamit ang millis () function sa halip na ang pagkaantala () function. Malinaw na ang paggamit ng pagkaantala upang magtakda ng isang pag-pause sa pagitan ng pagbabago ng impormasyon sa display, imposibleng ipatupad ang mga control button;
- Gumawa mag-download ng mga sketch sa pamamagitan ng Wifi;
- Lumayo mula sa napakalaking Wemos D1 R2 sa Wemos D1 mini;
- Kailanman maaari Ipakita ang Russify;
- Gumamit ng isang yari na kaso na may mga butas ng butones para sa mga aparato batay sa LCD1602;
- Gumamit ng mga standard na 6x6 na mga pindutan na naibenta sa breadboard. Magdagdag ng mga pindutan ng control ng backlight, isang pindutan ng carousel para sa pagbabago ng ipinakita na data at isang pindutan para sa pagpilit ng mga update ng data mula sa server.
Ang mga sumusunod na sangkap ay ginamit:
- Ang kaso ay gawa sa plastik na ABS na may isang hanay ng mga takip para sa mga pindutan;
- Ang mga stragon ng Nylon 6 + 5 mm na lalaki na M3 itim, 4 na mga PC;
- M3 nylon nuts itim, 4 na mga PC;
- Ang mga post ng Nylon ay 6 + 5 mm na lalaki na M2 puti, 3 mga PC;
- Ang Nylon ay tumayo ng 6 mm na puting ina, 1 pc;
- Ang Nylon ay tumayo ng 8 mm na puting ina, 1 pc;
- Ang riles ng naylon ay 10mm ina puti, 2 mga PC;
- LCD 1602 (I2C), dilaw;
- Wemos d1 mini;
- Wemos d1 DC-Power na kalasag;
- Boardboard ng board 3x7;
- Mga pindutan na 6x6, taas 7 mm, 3pcs;
- Ang mga wire ng Dupont 10cm ina-ina, 4 na PC;
- 24 mga wire ng AWG itim at pula;
- Silicone wires 20 AWG asul at puti;
- Mga Resistor 5 kOhm - 2 mga PC, 10 kOhm - 1 pc (na dumating sa kamay);
- Power adapter 9V 1A;
- Dalawang malagkit na epoxy adhesive.
Ang ginamit na kaso ay may maraming mga pakinabang. Una, bilang karagdagan sa pagpapakita, ang pamantayang 3x7 standard decoupling board, na may mga sangkap na naka-install sa magkabilang panig, perpektong akma sa taas. Pangalawa, sa dalawang dulo ay mayroon itong hugis-parihaba na pagbubukas para sa paglamig. Ito ay na ang mga jumper sa pagitan ng mga butas na ito ay perpektong gupitin ng mga mini-file 3 at 4 mm. Kung pinutol mo ang isang pares ng mga jumper at pinutol ang isang maliit na hugis-parihaba na butas sa kaso, kung gayon ang DC-005 na power connector ay napupunta perpekto sa butas ng kumplikadong geometry. Gayundin, ang likod ng kasong ito ay may isang malaking square hole, na, tila, ay dapat na mag-install ng mga baterya.Sa pamamagitan nito, maginhawa upang ikonekta ang isang bagay sa loob nang hindi nag-disassembling ng kaso. Kasunod nito, maaari itong sarado na may baso o plastik.
Bumuo ng pag-unlad:
Una, isang prototype ang ginawa sa isang breadboard.
Pagkatapos ang kaso ay na-finalize na may isang file.
Pagkatapos nito, ang mga pangunahing sangkap ay ibinebenta at ang pagsukat ay isinasagawa. Ang mga binti ay espesyal na baluktot upang ang nababagsak na mga kasukasuan ay magkasya sa taas. Ang isang pares ng mga naylon rack ay dapat na isampa upang ang lahat ng mga pindutan ay nasa parehong taas.
Bilang isang resulta, ang harap na bahagi ng board na may mga pindutan, resistors at wire ay ang mga sumusunod:
Bilang isang resulta, ang mga insides ng aparato ay ganito:
Kung tipunin, ganito ang hitsura ng aparato:
Pagtagumpayan ng mga paghihirap:
- Sa mahabang panahon hindi ko maintindihan kung bakit hindi gumana ang mga pindutan, kahit na ang multimeter ay malinaw na ipinakita 0 kapag ang mga pindutan ay pinindot at 4.6 - 5.0 V kapag pinindot (depende sa suplay ng kuryente). Ito ay na sa mga aparato ng Wemos / Lolin kinakailangan upang ipahiwatig ang mga numero ng GPIO bilang mga numero ng pin sa sketch. Halimbawa, ang D5 ay GPIO14. Kaya ito ang ika-14 na pin.
const int buttonPin = 14;
- Upang ipakita ang panahon, kinakailangan ang kondisyon:
kasalukuyangMillis - nakaraangMillis == panahonTime
Mahigpit na sulat, sapagkat dapat itong gawin nang isang beses.
Upang makagawa ng isang kahilingan sa server, kinakailangan ang kondisyon:kasalukuyangMillis - nakaraangMillis> = getDataTime
Maluwag na pagsunod, dahil ito ay naisakatuparan hanggang sa magtakda ang "data natanggap" bandila.
Sa katunayan, hindi ito halata, at upang maunawaan ito, tumagal ito ng mahabang panahon. - Kailangan ko ring pahirapan ang aking sarili sa tugon ng server:
String panahon = ugat ["taya ng panahon"] [0] ["pangunahing"]; Paglalarawan ng string = ugat ["taya ng panahon"] [0] ["paglalarawan"];
Si Zero ay ganap na walang kamalayan. Ito ay lumiliko na mayroong dalawang istasyon ng panahon sa Moscow, at ang pangalawa sa kanila ay hindi laging gumana (upang makatanggap ng data mula dito, dapat mong tukuyin kung [aktibo ito).
Matatagpuan ang repositoryo na may code at mga aklatan dito.