Turinys:

Baterijomis maitinamas vandens kolektoriaus lygio jutiklis: 7 žingsniai (su nuotraukomis)
Baterijomis maitinamas vandens kolektoriaus lygio jutiklis: 7 žingsniai (su nuotraukomis)

Video: Baterijomis maitinamas vandens kolektoriaus lygio jutiklis: 7 žingsniai (su nuotraukomis)

Video: Baterijomis maitinamas vandens kolektoriaus lygio jutiklis: 7 žingsniai (su nuotraukomis)
Video: 🧨 Čia surinktos visos Volvo XC90 silpnybės ir problemos. Subtitrai! 2024, Liepa
Anonim
Akumuliatorinis vandens kolektoriaus lygio jutiklis
Akumuliatorinis vandens kolektoriaus lygio jutiklis
Akumuliatorinis vandens kolektoriaus lygio jutiklis
Akumuliatorinis vandens kolektoriaus lygio jutiklis

Mūsų namuose yra vandens bakas, maitinamas nuo lietaus, krintančio ant stogo, ir naudojamas tualetui, skalbimo mašinai ir sodo laistymui. Pastaruosius trejus metus vasaros buvo labai sausos, todėl akylai stebėjome vandens lygį. Iki šiol mes naudojome medinę lazdą, kurią įdėjome į baką ir pažymėjome lygį. Bet tikrai turi būti įmanoma tai pagerinti!

Čia ir yra šis projektas. Idėja yra pritvirtinti ultragarsinį atstumo jutiklį bako viršuje. Šis jutiklis veikia kaip sonatas, skleidžiantis garso bangas, kurias vėliau atspindi vandens paviršius. Nuo to laiko, kai bangos sugrįžta, ir garso greičio, galite apskaičiuoti atstumą iki vandens paviršiaus ir nustatyti, kiek bakas pilnas.

Kadangi prie bako neturiu elektros jungties, būtina, kad visas įrenginys veiktų su baterijomis. Tai reiškia, kad turėjau būti sąmoningas dėl visų dalių energijos suvartojimo. Norėdami atsiųsti duomenis, nusprendžiau naudoti integruotą ESP8266 mikroschemos „Wifi“. Nors „Wifi“yra pakankamai energijos reikalaujantis, jis turi pranašumą prieš kito tipo radijo ryšį: galite tiesiogiai prisijungti prie savo namų belaidžio maršrutizatoriaus, nesukurdami kito įrenginio, kuris veiktų kaip relė.

Norėdami sutaupyti energijos, didžiąją laiko dalį užmigdysiu ESP8266 ir matuosiu kas valandą. Mano tikslui sekti vandens lygį to daugiau nei pakanka. Duomenys bus siunčiami į „ThingSpeak“ir vėliau juos bus galima nuskaityti išmaniajame telefone per programą.

Dar viena detalė! Garso greitis, būtinas atstumui matuoti, priklauso nuo temperatūros ir mažesniu mastu - nuo drėgmės. Norėdami tiksliai matuoti išorę per sezonus, mes įdėsime BME280 jutiklį, kuris matuoja temperatūrą, drėgmę ir slėgį. Kaip papildomą pranašumą, mūsų vandens lygio jutiklis taip pat yra mini orų stotis.

Dalys:

  • 1x ESP8266 ESP-12F.
  • 1x ESP-12F adapterio plokštė.
  • 1x FT232RL FTDI: USB į nuoseklųjį adapterį.
  • 1x HC-SR04-P: ultragarsinis atstumo matavimo modulis. Atminkite, kad P yra svarbus, nes tai yra versija, kurios mažiausia darbinė įtampa yra 3 V.
  • 1x BME280 3.3V versija: temperatūros, slėgio ir drėgmės jutiklis.
  • 1x IRL2203N: n-kanalų MOSFET tranzistorius.
  • 1x MCP1700-3302E 3.3V versija: įtampos reguliatorius.
  • 3x įkraunama AA baterija, pvz. 2600 mAh.
  • 1x baterijų laikiklis 3 baterijoms.
  • 1x duonos lenta.
  • Rezistoriai: 1x 470K, 1x 100K, 4x 10K.
  • Kondensatoriai: 2x keraminiai 1uF.
  • 3x perjungimo jungiklis.
  • U formos duonos plokštės laidai.
  • Jumperio laidai.
  • Plastikinė sriubos talpa 1l.
  • Tvirtinimo žiedas konteineriui.

Aš padariau kodą prieinamą „GitHub“.

1 žingsnis: Susipažinkite su ultragarso atstumo jutikliu

Susipažinimas su ultragarsiniu atstumo jutikliu
Susipažinimas su ultragarsiniu atstumo jutikliu
Susipažinimas su ultragarsiniu atstumo jutikliu
Susipažinimas su ultragarsiniu atstumo jutikliu

Mes išmatuosime atstumą iki vandens paviršiaus ultragarso jutikliu HC-SR04-P. Kaip ir šikšnosparnis, šis jutiklis naudoja sonarą: jis siunčia garso impulsą, kurio dažnis yra per didelis žmogaus ausiai, taigi ir ultragarsinį, ir laukia, kol jis atsitrenks į objektą, atspindės ir grįš. Tada atstumą galima apskaičiuoti iš laiko, per kurį gaunamas aidas, ir garso greičio.

Konkrečiai, jei „Trig“kaištis yra aukštai traukiamas mažiausiai 10 μs, jutiklis siunčia 8 impulsų pliūpsnį 40 Hz dažniu. Tada atsakymas gaunamas ant „Echo“kaiščio pulso pavidalu, kurio trukmė lygi laikui tarp ultragarsinio impulso siuntimo ir gavimo. Tada turime padalyti iš 2, nes ultragarsinis impulsas juda pirmyn ir atgal ir mums reikia vienos krypties kelionės laiko, ir padauginti iš garso greičio, kuris yra apie 340 m/s.

Bet palauk minutėlę! Tiesą sakant, garso greitis priklauso nuo temperatūros ir mažesniu mastu nuo drėgmės. Ar aš kvatojuosi, ar tai aktualu? Naudodami skaičiavimo įrankį nustatome, kad žiemą (imant -5 ° C) galime turėti 328,5 m/s, o vasarą (imant 25 ° C) 347,1 m/s. Taigi tarkime, kad vienos krypties kelionės laikas yra 3 ms. Žiemą tai reikštų 98,55 cm, o vasarą 104,13 cm. Tai gana skirtumas! Taigi, kad pasiektume pakankamą tikslumą visais metų laikais ir net dieną ir naktį, prie savo sąrankos turime pridėti termometrą. Aš nusprendžiau įtraukti BME280, kuris matuoja temperatūrą, drėgmę ir slėgį. Kode, kurį naudojau funkcijoje speedOfSound, yra formulė, kuri apskaičiuoja garso greitį pagal visus tris parametrus, nors temperatūra iš tikrųjų yra svarbiausias veiksnys. Drėgmė vis dar turi mažesnį poveikį, tačiau slėgio poveikis yra nereikšmingas. Galėtume naudoti paprastesnę formulę, atsižvelgdami tik į temperatūrą, kurią įdiegiau programoje speedOfSoundSimple.

Yra dar vienas svarbus HC-SR04 punktas. Galimos dvi versijos: standartinė versija veikia esant 5 V įtampai, o HC-SR04-P gali veikti esant įtampai nuo 3 V iki 5 V. Kadangi 3 įkraunamos AA baterijos suteikia maždaug 3x1,25V = 3,75V, svarbu įsigyti P versiją. Kai kurie pardavėjai gali atsiųsti netinkamą. Taigi, jei perkate, pažiūrėkite į nuotraukas. Abi versijos tiek gale, tiek priekyje atrodo skirtingai, kaip paaiškinta šiame puslapyje. P-versijos gale visi trys lustai yra horizontalūs, o standartinėje-vienas vertikalus. Priekyje standartinė versija turi papildomą sidabrinį komponentą.

Elektroninėje grandinėje mes naudosime tranzistorių kaip jungiklį, kad išjungtume ultragarso jutiklio maitinimą, kai mūsų sąranka pereina į gilų miego režimą, kad būtų taupomas akumuliatoriaus veikimo laikas. Priešingu atveju jis vis tiek sunaudos apie 2 mA. Kita vertus, BME280 sunaudoja tik apie 5 μ, kai jis yra neaktyvus, todėl nebūtina jo išjungti naudojant tranzistorių.

2 žingsnis: ESP8266 valdybos pasirinkimas

ESP8266 valdybos pasirinkimas
ESP8266 valdybos pasirinkimas

Kad jutiklis veiktų kuo ilgiau su baterija, turime sutaupyti energijos. Nors „ESP8266“„Wifi“yra labai patogus būdas prijungti mūsų jutiklį prie debesies, jis taip pat yra gana energijos reikalaujantis. Veikdamas ESP8266 sunaudoja apie 80 mA. Taigi su 2600 mAh talpos baterijomis savo įrenginį galėtume paleisti ne ilgiau kaip 32 valandas, kol jos bus tuščios. Praktiškai jo bus mažiau, nes negalėsime išnaudoti visos 2600 mAh talpos, kol įtampa nukris iki per žemo lygio.

Laimei, ESP8266 taip pat turi gilaus miego režimą, kuriame beveik viskas išjungta. Taigi planuojama didžiąją laiko dalį užmigdyti ESP8266 ir taip dažnai pažadinti, kad būtų galima išmatuoti ir siųsti duomenis per „Wifi“į „ThingSpeak“. Remiantis šiuo puslapiu, maksimalus gilaus miego laikas buvo apie 71 minutes, tačiau nuo ESP8266 „Arduino“branduolio 2.4.1 jis padidėjo iki maždaug 3,5 valandos. Pagal savo kodą aš nusistovėjau vieną valandą.

Pirmiausia išbandžiau patogią „NodeMCU“kūrimo plokštę, tačiau, deja, giliai miegant ji vis tiek sunaudojo apie 9 mA, o tai suteikia mums daugiausia 12 dienų gryno gilaus miego, net neatsižvelgiant į pabudimo intervalus. Svarbus kaltininkas yra įtampos reguliatorius AMS1117, kuris naudoja energiją, net jei bandote ją apeiti, akumuliatorių prijungdami tiesiai prie 3,3 V kaiščio. Šiame puslapyje paaiškinama, kaip pašalinti įtampos reguliatorių ir USB UART. Tačiau man niekada nepavyko to padaryti nesunaikinus savo lentos. Be to, pašalinus USB UART, nebegalite prisijungti prie ESP8266, kad išsiaiškintumėte, kas nutiko.

Atrodo, kad dauguma ESP8266 kūrimo plokščių naudoja švaistomą įtampos reguliatorių AMS1117. Viena išimtis yra „WEMOS D1 mini“(nuotrauka kairėje) su ekonomiškesniu ME6211. Iš tiesų, aš sužinojau, kad WEMOS D1 mini giliai miegant naudoja apie 150 μA, o tai labiau panašu. Dauguma to greičiausiai yra dėl USB UART. Tačiau naudodami šią lentą kaiščių antraštes turite lituoti patys.

Tačiau mes galime padaryti daug geriau, naudodami plokščią kaulų plokštę, tokią kaip ESP-12F (nuotrauka dešinėje), kurioje nėra USB UART ar įtampos reguliatoriaus. Maitindamas 3,3 V kaištį radau tik 22 μA gilaus miego suvartojimą!

Bet kad ESP-12F veiktų, pasiruoškite tam tikram litavimui ir šiek tiek daugiau vargo jį programuodami! Be to, nebent baterijos tiesiogiai tiekia teisingą įtampą, kuri yra tarp 3V ir 3,6V, turime pateikti savo įtampos reguliatorių. Praktiškai paaiškėja, kad sunku rasti akumuliatorių sistemą, kuri užtikrintų tokio diapazono įtampą per visą iškrovimo ciklą. Atminkite, kad taip pat turime maitinti HC-SR04-P jutiklį, kuris teoriškai gali veikti esant 3 V įtampai, tačiau veikia tiksliau, jei įtampa yra didesnė. Be to, mano diagramoje HC-SR04-P įjungiamas tranzistoriumi, kuris sukelia nedidelį papildomą įtampos kritimą. Mes naudosime įtampos reguliatorių MCP1700-3302E. Maksimali įėjimo įtampa yra 6 V, todėl ją tiekiame iki 4 AA baterijų. Aš nusprendžiau naudoti 3 AA baterijas.

3 veiksmas: sukurkite „ThingSpeak“kanalą

Savo duomenims saugoti naudosime daiktų interneto debesies paslaugą „ThingSpeak“. Eikite į https://thingspeak.com/ ir sukurkite paskyrą. Prisijungę spustelėkite mygtuką Naujas kanalas, kad sukurtumėte kanalą. Kanalo nustatymuose įveskite pavadinimą ir aprašymą, kaip jums patinka. Toliau mes pavadiname kanalo laukus ir suaktyviname juos spustelėdami žymimuosius laukelius dešinėje. Jei naudojate mano kodą nepakeistą, laukai yra tokie:

  • 1 laukas: vandens lygis (cm)
  • 2 laukas: akumuliatoriaus įkrovos lygis (V)
  • 3 laukas: temperatūra (° C)
  • 4 laukas: drėgmė (%)
  • 5 laukas: slėgis (Pa)

Ateityje užsirašykite kanalo ID, „Read API Key“ir „Write API Key“, kuriuos rasite meniu API raktuose.

„ThingSpeak“duomenis galite nuskaityti išmaniajame telefone naudodami programą. „Android“telefone naudoju „IoT ThingSpeak Monitor“valdiklį. Turite jį sukonfigūruoti naudodami kanalo ID ir skaitymo API raktą.

4 žingsnis: Kaip užprogramuoti ESP-12F

Kaip užprogramuoti ESP-12F
Kaip užprogramuoti ESP-12F
Kaip užprogramuoti ESP-12F
Kaip užprogramuoti ESP-12F

Mums reikia plikų kaulų plokštės, kad sutaupytume akumuliatoriaus veikimo laiką, tačiau trūkumas yra tas, kad ją programuoti yra šiek tiek sunkiau nei kūrimo plokštę su įmontuotu USB UART.

Mes naudosime „Arduino IDE“. Yra ir kitų instrukcijų, paaiškinančių, kaip juo naudotis, todėl čia trumpai. Norint paruošti ESP8266, reikia atlikti šiuos veiksmus:

  • Atsisiųskite „Arduino IDE“.
  • Įdiekite ESP8266 plokštės palaikymą. Meniu Failas - Nuostatos - Nustatymai pridėkite URL https://arduino.esp8266.com/stable/package_esp8266com_index.json prie papildomų valdytojo URL. Kitas meniu Įrankiai - Lenta - Lentų tvarkytuvė įdiegti bendruomenės esp8266 by esp8266.
  • Pasirinkite kaip plokštę: bendras ESP8266 modulis.

Norėdami tvarkyti ESP-12F, naudoju adapterio plokštę, paprastai prieinamą internetinėse parduotuvėse. Lustą lituodavau prie plokštelės, o po to - ant plokštelės. Tik tada atradau, kad adapterio plokštė yra per plati standartinei duonos lentai! Jis nepalieka laisvų kaiščių šone, kad galėtumėte prisijungti.

Sprendimas, kurio siekiau, yra naudoti U formos laidus ir prijungti juos, kaip parodyta paveikslėlyje dešinėje, prieš padėdami ESP8266 su adapterio plokštele ant duonos lentos. Taigi GND ir VCC yra prijungti prie duonos lentos bėgelių, o likusieji kaiščiai yra prieinami toliau. Trūkumas yra tas, kad baigus visą grandinę, jūsų duonos lenta bus gana perpildyta laidais. Kitas sprendimas yra suderinti dvi duonos lentas, kaip parodyta šiame vaizdo įraše.

Be to, norint užprogramuoti ESP-12F per kompiuterio USB prievadą, mums reikia USB į nuoseklųjį adapterį. Aš naudoju FT232RL FTDI programuotoją. Programuotojas turi trumpiklį, kurį galima pasirinkti tarp 3.3V arba 5V. ESP8266 atveju jis turėtų būti nustatytas iki 3,3 V. Nepamirškite, nes 5 V gali iškepti jūsų mikroschemą! Tvarkyklės turėtų būti įdiegtos automatiškai, tačiau jei programavimas neveikia, galite pabandyti jas rankiniu būdu įdiegti iš šio puslapio.

ESP8266 turi programavimo režimą, skirtą įkelti naują programinę įrangą į blykstę, ir blykstės režimą, kad paleistų esamą programinę -aparatinę įrangą iš „flash“atminties. Norėdami pasirinkti vieną iš šių režimų, kai kurie kaiščiai turi turėti tam tikrą vertę įkrovos metu:

  • Programavimas: GPIO0: žemas, CH-PD: aukštas, GPIO2: aukštas, GPIO15: žemas
  • Blykstė: GPIO0: didelė, CH-PD: didelė, GPIO2: didelė, GPIO15: žema

Adapterio plokštė jau pasirūpina, kad būtų ištrauktas CH-PD ir nuimtas GPIO15 su 10K rezistoriais.

Taigi mūsų elektroninėje grandinėje vis tiek turime pritraukti GPIO2. Mes taip pat pateikiame jungiklį, skirtą ESP8266 programavimui arba blykstės režimui įjungti, ir jungiklį, kad jį iš naujo nustatytumėte, o tai daroma prijungus RST prie žemės. Be to, būtinai prijunkite FT232RL TX kaištį prie ESP8266 RXD kaiščio ir atvirkščiai.

Programavimo seka yra tokia:

  • Uždarydami programavimo jungiklį, nustatykite žemą GPIO2 lygį.
  • Iš naujo nustatykite ESP8266, uždarydami ir vėl atidarydami atstatymo jungiklį. Dabar ESP8266 paleidžiamas programavimo režimu.
  • Atidarykite programavimo jungiklį, kad nustatytumėte GPIO2 aukštą.
  • Įkelkite naują programinę -aparatinę įrangą iš „Arduino IDE“.
  • Iš naujo nustatykite ESP8266, uždarydami ir vėl atidarydami atstatymo jungiklį. Dabar ESP8266 paleidžiamas blykstės režimu ir veikia nauja programinė įranga.

Dabar galite patikrinti, ar programavimas veikia, įkeldami garsųjį „Blink“eskizą.

Jei visa tai veikia, bent jau GND, VCC, GPIO2, RST, TXD ir RXD kaiščiai yra tinkamai lituoti ir prijungti. Koks palengvėjimas! Tačiau prieš tęsdamas rekomenduočiau išbandyti ir kitus kaiščius savo multimetru. Pati turėjau problemų su vienu kaiščiu. Galite naudoti šį eskizą, kuriame visi kaiščiai po vieną nustatomi aukštai 5 sekundes, o po to ESP8266 20 sekundžių užmiega. Kad ESP8266 galėtų pabusti po gilaus miego, turite prijungti RST prie GPIO16, kuris duoda pažadinimo signalą.

5 veiksmas: eskizo įkėlimas

Aš padariau kodą prieinamą „GitHub“, tai tik vienas failas: „Level-Sensor-Deepsleep.ino“. Tiesiog atsisiųskite jį ir atidarykite „Arduino IDE“. Arba galite pasirinkti Failas - Naujas ir tiesiog nukopijuokite/įklijuokite kodą.

Yra tam tikra informacija, kurią turite užpildyti failo pradžioje: naudojamo WLAN pavadinimas ir slaptažodis, statinė IP informacija ir „ThingSpeak“kanalo kanalo ID bei „Write API Key“.

Vadovaudamiesi šio tinklaraščio patarimu, vietoj DHCP, kur maršrutizatorius dinamiškai priskiria IP, mes naudojame statinį IP, kur patys nustatome ESP8266 IP adresą. Tai pasirodo daug greičiau, todėl taupome aktyvų laiką, taigi ir akumuliatoriaus energiją. Taigi turime pateikti galimą statinį IP adresą, taip pat maršrutizatoriaus (šliuzo) IP, potinklio kaukę ir DNS serverį. Jei nesate tikri, ką užpildyti, skaitykite apie statinio IP nustatymą maršrutizatoriaus vadove. „Windows“kompiuteryje, prijungtame per „Wifi“prie maršrutizatoriaus, paleiskite apvalkalą („Windows“mygtukas-r, cmd) ir įveskite „ipconfig /all“. Daugumą reikalingos informacijos rasite skiltyje „Wi-Fi“.

Nagrinėdami kodą matote, kad skirtingai nuo kitų „Arduino“kodų, dauguma veiksmų vyksta sąrankos funkcijoje, o ne ciklo funkcijoje. Taip yra todėl, kad ESP8266 užmiega, kai baigia sąrankos funkciją (nebent pradėjome veikti OTA režimu). Kai jis atsibunda, tai tarsi naujas paleidimas ir vėl paleidžia sąranką.

Čia yra svarbiausios kodo savybės:

  • Po pabudimo kodas nustato „SwitchPin“(numatytasis GPIO15) į aukštą. Tai įjungia tranzistorių, kuris savo ruožtu įjungia HC-SR04-P jutiklį. Prieš eidamas giliai miegoti, jis grąžina kaištį į žemą, išjungdamas tranzistorių ir HC-SR04-P, įsitikindamas, kad jis nenaudoja brangesnės baterijos energijos.
  • Jei „modePIN“(numatytasis GPIO14) yra žemas, kodas eina OTA režimu, o ne matavimo režimu. Naudodami OTA (atnaujinimą per orą) galime atnaujinti programinę-aparatinę įrangą per „Wifi“, o ne nuoseklųjį prievadą. Mūsų atveju tai yra gana patogu, nes mums nebereikia prijungti serijos prie USB adapterio tolesniems atnaujinimams. Tiesiog nustatykite GPIO14 žemą (su OTA jungikliu elektroninėje grandinėje), iš naujo nustatykite ESP8266 (naudodami atstatymo jungiklį) ir jis turėtų būti pasiekiamas „Arduino IDE“įkėlimui.
  • Analoginiu PIN kodu (A0) matuojame akumuliatoriaus įtampą. Tai leidžia mums išjungti savo prietaisą, dar vadinamą nuolatiniu giliu miego režimu, jei įtampa tampa per žema, žemesnė nei min. Įtampa, kad apsaugotume baterijas nuo per didelio išsikrovimo. Analoginis matavimas nėra labai tikslus, mes atliekame numMeasuresBattery (numatytasis 10) matavimus ir imame vidurkį, kad pagerintume tikslumą.
  • HC-SR04-P jutiklio atstumas matuojamas funkcijoje distanceMeasurement. Siekiant pagerinti tikslumą, matavimas kartojamas numMeasuresDistance (numatytasis) 3 kartus.
  • Yra funkcija „speedOfSound“apskaičiuoti pagal temperatūros, drėgmės ir slėgio matavimą pagal BME280 jutiklį. Numatytasis BME280 I2C adresas yra 0x76, tačiau jei jis neveikia, gali tekti jį pakeisti į 0x77: bool bme280Started = bme280.begin (0x77);
  • Mes naudosime BME280 priverstiniu režimu, o tai reiškia, kad reikia atlikti vieną matavimą ir vėl užmigti, kad būtų taupoma energija.
  • Jei nustatysite talpą (l), fullDistance (cm) ir plotą (m2), kodas pagal atstumo matavimą apskaičiuoja likusį vandens rezervuaro tūrį: dvigubas likęs tūris = talpa+10,0*(fullDistance-distance)*plotas; ir įkelkite tai į „ThingSpeak“. Jei išlaikysite numatytas vertes, atstumas iki vandens paviršiaus įkeliamas cm.

6 žingsnis: sukurkite elektroninę grandinę

Elektroninės grandinės kūrimas
Elektroninės grandinės kūrimas

Viršuje yra elektroninės grandinės schema. Jis yra gana didelis vienai duonos plokštei, ypač su per didele adapterio plokšte ir triuku su U formos laidais. Kažkada aš tikrai norėjau, kad būčiau naudojęs dviejų duonos lentų prijungimo alternatyvą, bet galų gale man pavyko.

Čia yra svarbios grandinės savybės:

  • Yra dvi įtampos, kurios vaidina svarbų vaidmenį: įėjimo įtampa iš akumuliatoriaus (apie 3,75 V) ir 3,3 V, tiekianti ESP8266 ir BME280. Įdėjau 3,3 V ant kairiojo lūžio bėgio ir 3,75 V ant dešiniojo bėgio. Įtampos reguliatorius konvertuoja 3,75 V į 3,3 V. Vadovaudamasis duomenų lapo instrukcijomis, į įtampos reguliatoriaus įvestį ir išėjimą pridėjau 1 μF kondensatorių, kad padidėtų stabilumas.
  • ESP8266 GPIO15 yra prijungtas prie tranzistoriaus vartų. Tai leidžia ESP8266 įjungti tranzistorių, taigi ir ultragarsinį jutiklį, kai jis yra aktyvus, ir išjungti jį einant giliai miegoti.
  • GPIO14 yra prijungtas prie jungiklio, OTA jungiklio. Uždarius jungiklį, gaunamas signalas ESP8266, kurį norime pradėti OTA režimu, t. Y. Po to, kai paspaudžiame (uždarome ir atidarome) RESET jungiklį ir įkeliame naują eskizą belaidžiu būdu.
  • RST ir GPIO2 kaiščiai yra prijungti kaip programavimo schemoje. RST kaištis dabar taip pat prijungtas prie GPIO16, kad ESP8266 galėtų pabusti iš gilaus miego.
  • Ultragarsinio jutiklio kaiščiai TRIG ir ECHO yra prijungti prie GPIO12 ir GPIO13, o BME280 kaiščiai SCL ir SDA yra prijungti prie GPIO5 ir GPIO4.
  • Galiausiai, analoginis kaištis ADC yra per įtampos skirstytuvą, prijungtą prie įėjimo įtampos. Tai leidžia išmatuoti įėjimo įtampą ir patikrinti baterijų įkrovą. ADC kaištis gali matuoti įtampą nuo 0V iki 1V. Įtampos dalikliui pasirinkome 100K ir 470K rezistorius. Tai reiškia, kad įtampą prie ADC kaiščio nurodo: V_ADC = 100K/(100K+470K) V_in. Atsižvelgiant į V_ADC = 1V, tai reiškia, kad galime išmatuoti įėjimo įtampą iki V_in = 570/100 V_ADC = 5.7V. Kalbant apie energijos suvartojimą, taip pat yra tam tikra srovė, tekanti per įtampos skirstytuvą. Kai V_in = 3,75V iš baterijų, randame I_leak = 3,75V/570K = 6,6 μA.

Net kai grandinė veikia iš baterijų, USB jungtį galima prijungti prie nuoseklaus adapterio. Tiesiog atjunkite adapterio VCC ir prijunkite GND, RX ir TX, kaip nurodyta programavimo schemoje. Tai leidžia atidaryti „Arduino IDE“serijos monitorių, kad būtų galima perskaityti derinimo pranešimus ir įsitikinti, kad viskas veikia taip, kaip tikėtasi.

Visoje grandinėje aš matavau 50 μA srovės suvartojimą giliai miegant, kai veikia iš baterijų. Tai apima ESP8266, BME280, ultragarso jutiklį (išjungtą tranzistoriaus) ir nuotėkį per įtampos skirstytuvą ir galbūt kitus nuotėkius. Taigi tai nėra labai blogai!

Radau, kad bendras aktyvus laikas yra apie 7 sekundes, iš kurių 4,25 sekundės prisijungti prie „Wifi“ir 1,25 sekundės siųsti duomenis į „ThingSpeak“. Taigi, esant aktyviai 80 mA srovei, aktyviam laikui radau 160 μAh per valandą. Pridedant 50 μAh per valandą gilaus miego būsenai, iš viso turime 210 μAh per valandą. Tai reiškia, kad 2600 mAh baterijos teoriškai tarnauja 12400 valandų = 515 dienų. Tai yra absoliutus maksimumas, jei galėtume išnaudoti visą baterijų talpą (taip nėra) ir nėra nuotėkio, kurio neradau atlikdamas dabartinius matavimus. Taigi aš dar nematau, ar tai tikrai pasibaigs.

7 žingsnis: jutiklio užbaigimas

Jutiklio užbaigimas
Jutiklio užbaigimas
Jutiklio užbaigimas
Jutiklio užbaigimas
Jutiklio užbaigimas
Jutiklio užbaigimas

Aš įdėjau jutiklį į plastikinį 1 litro indą, kuriame anksčiau buvo sriuba. Apačioje padariau dvi skyles, kad tilptų HC-SR04-P jutiklio „akys“. Be skylių, konteineris turi būti atsparus vandeniui. Tada jis pritvirtinamas prie vandens rezervuaro sienos su apskrito žiedo, kuris paprastai naudojamas lietaus nuotekų vamzdžiui.

Linksminkitės su projektu!

Rekomenduojamas: