Talaan ng mga Nilalaman:

Pinapagana ng Water Collector Level na Sensor ng baterya: 7 Mga Hakbang (na may Mga Larawan)
Pinapagana ng Water Collector Level na Sensor ng baterya: 7 Mga Hakbang (na may Mga Larawan)

Video: Pinapagana ng Water Collector Level na Sensor ng baterya: 7 Mga Hakbang (na may Mga Larawan)

Video: Pinapagana ng Water Collector Level na Sensor ng baterya: 7 Mga Hakbang (na may Mga Larawan)
Video: Alien Abductions during UFO Conference 2024, Nobyembre
Anonim
Ang Sensor sa Antas ng Kolektor ng Tubig na pinapatakbo ng baterya
Ang Sensor sa Antas ng Kolektor ng Tubig na pinapatakbo ng baterya
Ang Sensor sa Antas ng Kolektor ng Tubig na pinapatakbo ng baterya
Ang Sensor sa Antas ng Kolektor ng Tubig na pinapatakbo ng baterya

Ang aming bahay ay may isang tangke ng tubig na pinakain mula sa pagbagsak ng ulan sa bubong, at ginagamit para sa banyo, washing machine at pagtutubig ng mga halaman sa hardin. Sa huling tatlong taon ang mga tag-init ay napaka tuyo, kaya't binantayan namin ang antas ng tubig sa tank. Sa ngayon, gumamit kami ng kahoy na stick, na inilalagay namin sa tank at minarkahan ang antas. Ngunit tiyak na dapat posible upang mapagbuti ito!

Dito pumapasok ang proyektong ito. Ang ideya ay upang maglakip ng isang sensor ng distansya ng ultrasonic sa tuktok ng tangke. Gumagana ang sensor na ito bilang isang sonar na nagpapalabas ng mga sound wave, na kung saan ay makikita ng ibabaw ng tubig. Mula sa oras na kinakailangan upang bumalik ang mga alon at ang bilis ng tunog, maaari mong kalkulahin ang distansya sa ibabaw ng tubig at matukoy kung gaano ang laman ng tanke.

Dahil wala akong koneksyon ng mains na malapit sa tangke mahalaga na ang kumpletong aparato ay gumagana sa mga baterya. Nangangahulugan ito na kailangan kong magkaroon ng kamalayan tungkol sa pagkonsumo ng kuryente ng lahat ng mga bahagi. Upang maibalik ang data nagpasya akong gamitin ang built-in na Wifi ng isang microchip ng ESP8266. Habang ang Wifi ay medyo gutom sa lakas, mayroon itong kalamangan sa isa pang uri ng koneksyon sa radyo: maaari kang direktang kumonekta sa wireless router ng iyong bahay nang hindi kinakailangang bumuo ng isa pang aparato na kumikilos bilang isang relay.

Upang makatipid ng kuryente ilalagay ko ang ESP8266 sa mahimbing na pagtulog sa halos lahat ng oras at magsukat sa bawat oras. Para sa aking hangarin na subaybayan ang antas ng tubig higit pa sa sapat. Ipapadala ang data sa ThingSpeak at maaaring mabasa sa isang smartphone sa pamamagitan ng isang app.

Isa pang detalye! Ang bilis ng tunog, mahalaga para sa pagsukat ng distansya, nakasalalay sa temperatura at sa mas kaunting lawak sa halumigmig. Para sa isang tumpak na pagsukat sa labas ng mga panahon ay itinapon namin ang isang sensor ng BME280, na sumusukat sa temperatura, kahalumigmigan at presyon. Bilang isang bonus na ginagawa ito mula sa aming sensor ng antas ng tubig din sa isang mini istasyon ng panahon.

Mga Bahagi:

  • 1x ESP8266 ESP-12F.
  • 1x plate ng adapter ng ESP-12F.
  • 1x FT232RL FTDI: USB sa Serial adapter.
  • 1x HC-SR04-P: module ng pagsukat ng distansya ng ultrasonic. Tandaan na ang P ay mahalaga, dahil ito ang bersyon na mayroong isang mababang minimum na operating boltahe ng 3V.
  • 1x BME280 3.3V bersyon: temperatura, presyon at kahalumigmigan sensor.
  • 1x IRL2203N: n-channel MOSFET transistor.
  • 1x MCP1700-3302E 3.3V bersyon: boltahe regulator.
  • 3x rechargeable AA na baterya, hal. 2600mAh.
  • 1x may hawak ng baterya para sa 3 baterya.
  • 1x breadboard.
  • Mga resistorista: 1x 470K, 1x 100K, 4x 10K.
  • Mga Capacitor: 2x ceramic 1uF.
  • 3x toggle switch.
  • U-hugis na wire wires.
  • Jumper wires.
  • Plastong lalagyan ng sopas 1l.
  • Singsing para sa lalagyan.

Ginawa kong magagamit ang code sa GitHub.

Hakbang 1: Kilalanin ang Ultrasonic Distance Sensor

Pagkilala sa Ultrasonic Distance Sensor
Pagkilala sa Ultrasonic Distance Sensor
Pagkilala sa Ultrasonic Distance Sensor
Pagkilala sa Ultrasonic Distance Sensor

Susukatin namin ang distansya sa ibabaw ng tubig gamit ang isang ultrasonic sensor, ang HC-SR04-P. Tulad ng isang paniki, ang sensor na ito ay gumagamit ng sonar: nagpapadala ito ng isang tunog na pulso na may dalas na masyadong mataas para sa tainga ng tao, kaya't ultrasoniko, at naghihintay na tumama ito sa isang bagay, sumasalamin at bumalik. Pagkatapos ay makakalkula ang distansya form form ang oras na kinakailangan upang matanggap ang echo at ang bilis ng tunog.

Konkreto, kung ang Trig pin ay nakuha nang mataas para sa hindi bababa sa 10 μs ang sensor ay nagpapadala ng isang pagsabog ng 8 pulso na may dalas na 40 Hz. Ang sagot ay nakuha pagkatapos sa Echo pin sa anyo ng isang pulso na may tagal na katumbas ng oras sa pagitan ng pagpapadala at pagtanggap ng ultrasonic pulse. Pagkatapos ay kailangan nating hatiin sa 2, dahil ang ultrasonic pulse ay pabalik-balik at kailangan namin ang isang beses na oras ng paglalakbay, at i-multiply ng bilis ng tunog, na halos 340 m / s.

Ngunit sandali lang! Sa katunayan, ang bilis ng tunog ay nakasalalay sa temperatura at sa mas kaunting lawak sa halumigmig. Nakatitik ba ako o nauugnay ito? Gamit ang isang tool sa pagkalkula nalaman namin na sa taglamig (pagkuha -5 ° C) maaari kaming magkaroon ng 328.5 m / s, at sa tag-init (kumukuha ng 25 ° C) 347.1 m / s. Kaya't kunwari nakakita kami ng isang one-way na oras ng paglalakbay na 3 ms. Sa taglamig, nangangahulugan ito ng 98.55 cm at sa tag-init 104.13 cm. Iyon ay lubos na isang pagkakaiba! Kaya upang makakuha ng sapat na kawastuhan sa buong panahon at kahit araw at gabi kailangan naming magdagdag ng isang thermometer sa aming pag-setup. Napagpasyahan kong isama ang BME280, na sumusukat sa temperatura, kahalumigmigan at presyon. Sa code na ginamit ko sa function speedOfSound isang formula na kinakalkula ang bilis ng tunog sa mga tuntunin ng lahat ng tatlong mga parameter, kahit na ang temperatura talaga ang pinakamahalagang kadahilanan. Ang halumigmig ay mayroon pa ring isang maliit na epekto, ngunit ang epekto ng presyon ay bale-wala. Maaari kaming gumamit ng isang mas simpleng formula na isinasaalang-alang lamang ang temperatura na ipinatupad ko sa speedOfSoundSimple.

Mayroong isang karagdagang mahalagang punto sa HC-SR04. Mayroong dalawang mga bersyon na magagamit: ang karaniwang bersyon ay nagpapatakbo sa 5V, habang ang HC-SR04-P ay maaaring gumana sa isang saklaw ng mga voltages mula 3V hanggang 5V. Dahil ang 3 rechargeable AA na baterya ay nagbibigay ng paligid ng 3x1.25V = 3.75V mahalaga na makuha ang P-bersyon. Ang ilang mga nagbebenta ay maaaring magpadala ng hindi tama. Kaya tingnan ang mga larawan kung bumili ka ng isa. Ang dalawang bersyon ay magkakaiba ang hitsura pareho sa likuran at sa harap tulad ng ipinaliwanag sa pahinang ito. Sa likuran ng P-bersyon lahat ng tatlong mga chips ay pahalang habang sa karaniwang bersyon ang isa ay patayo. Sa harap ang karaniwang bersyon ay may labis na sangkap ng pilak.

Sa electronic circuit gagamitin namin ang isang transistor bilang isang switch upang patayin ang lakas sa ultrasonic sensor kapag ang aming pag-set up ay matutulog nang malalim upang mai-save ang buhay ng baterya. Kung hindi man, ubusin pa rin nito ang tungkol sa 2mA. Ang BME280 sa kabilang banda ay kumakain lamang ng halos 5 μ kapag hindi aktibo, kaya hindi kinakailangan na patayin ito gamit ang transistor.

Hakbang 2: Pagpili ng Lupon ng ESP8266

Pagpili ng Lupon ng ESP8266
Pagpili ng Lupon ng ESP8266

Upang mapatakbo ang sensor hangga't maaari sa isang baterya kailangan nating mag-economize sa pagkonsumo ng kuryente. Habang ang Wifi ng ESP8266 ay nagbibigay ng isang napaka-maginhawang paraan upang ikonekta ang aming sensor sa cloud, medyo gutom din ito sa kuryente. Sa operasyon ang ESP8266 ay kumonsumo ng halos 80mA. Kaya sa mga baterya na 2600 mAh makakapagpatakbo lamang kami ng aming aparato nang halos 32 oras bago sila walang laman. Sa pagsasagawa, magiging mas kaunti ito dahil hindi namin magagamit ang buong 2600 mAh na kapasidad bago bumaba ang boltahe sa isang napakababang antas.

Sa kabutihang palad ang ESP8266 ay mayroon ding deep-sleep mode, kung saan halos lahat ay naka-off. Kaya't ang plano ay ilagay ang ESP8266 sa mahimbing na pagtulog sa karamihan ng oras at gisingin ito nang madalas upang gumawa ng isang pagsukat at ipadala ang data sa Wifi sa ThingSpeak. Ayon sa pahinang ito ang oras ng max na mahimbing na pagtulog ay halos 71 minuto, ngunit dahil ang ESP8266 Arduino core 2.4.1 ay nadagdagan ito hanggang sa 3.5 oras. Sa aking code naayos ako ng isang oras.

Sinubukan ko muna ang maginhawang board ng pag-unlad ng NodeMCU, ngunit ang masalimuot, sa mahimbing na pagtulog ay natupok pa rin nito ang tungkol sa 9 mA, na nagbibigay sa amin ng halos 12 araw ng purong malalim na pagtulog nang hindi mo isinasaalang-alang ang agwat ng paggising. Ang isang mahalagang salarin ay ang AMS1117 boltahe regulator, na gumagamit ng lakas kahit na subukang i-bypass mo ito sa pamamagitan ng pagkonekta ng baterya nang direkta sa 3.3V pin. Ipinapaliwanag ng pahinang ito kung paano alisin ang voltage regulator at ang USB UART. Gayunpaman, hindi ko nagawa iyon nang hindi sinira ang aking board. Bukod dito, pagkatapos alisin ang USB UART hindi ka na makakonekta sa ESP8266 upang malaman kung ano ang mali.

Karamihan sa mga board ng pag-unlad ng ESP8266 ay tila gumagamit ng nasasayang na AMS1117 boltahe regulator. Ang isang pagbubukod ay ang WEMOS D1 mini (larawan sa kaliwa) na may kasamang mas matipid na ME6211. Sa katunayan, nalaman ko na ang WEMOS D1 mini ay gumagamit ng halos 150 μA sa mahimbing na pagtulog, na mas katulad nito. Karamihan sa mga ito ay marahil dahil sa USB UART. Sa board na ito kailangan mong maghinang ng mga header para sa mga pin sa iyong sarili.

Gayunpaman, mas magagawa natin ang paggamit ng isang board na walang buto tulad ng ESP-12F (larawan sa kanan), na walang isang USB UART o isang regulator ng boltahe. Ang pagpapakain sa 3.3V pin ay natagpuan ko ang isang pagkonsumo ng mahimbing na natutulog na 22 μA lamang!

Ngunit upang makuha ang ESP-12F upang gumana ang paghahanda para sa ilang paghihinang at medyo mas maraming problema sa pag-program nito! Dagdag dito maliban kung ang mga baterya ay direktang naghahatid ng tamang boltahe, na nasa pagitan ng 3V at 3.6V, kailangan naming magbigay ng aming sariling boltahe regulator. Sa pagsasagawa, naging mahirap upang makahanap ng isang system ng baterya na nagbibigay ng isang boltahe sa saklaw na ito sa buong siklo ng paglabas nito. Tandaan na kailangan din nating ipagana ang sensor ng HC-SR04-P, na maaaring gawin ng teoretikal na may boltahe na mas mababa sa 3V, ngunit mas tumpak ang paggana kung ang boltahe ay mas mataas. Bukod dito sa aking diagram ang HC-SR04-P ay nakabukas ng isang transistor, na nagpapahiwatig ng isang maliit na pagbagsak ng labis na boltahe. Gagamitin namin ang MCP1700-3302E boltahe regulator. Ang maximum na boltahe ng pag-input ay 6V kaya pinapakain namin ito ng hanggang sa 4 na baterya ng AA. Nagpasya akong gumamit ng 3 mga baterya ng AA.

Hakbang 3: Lumikha ng isang ThingSpeak Channel

Gagamitin namin ang ThingSpeak, isang serbisyo ng cloud ng IoT, upang maiimbak ang aming data. Pumunta sa https://thingspeak.com/ at lumikha ng isang account. Kapag naka-log in ka na, i-click ang pindutan ng Bagong Channel upang lumikha ng isang channel. Sa Mga Setting ng Channel punan ang pangalan at paglalarawan ayon sa gusto mo. Susunod ay pinangalanan namin ang mga patlang ng channel at pinapagana ang mga ito sa pamamagitan ng pag-click sa mga checkbox sa kanan. Kung gagamitin mo ang aking code na hindi nabago ang mga patlang ay ang mga sumusunod:

  • Patlang 1: antas ng tubig (cm)
  • Patlang 2: antas ng baterya (V)
  • Patlang 3: temperatura (° C)
  • Patlang 4: kahalumigmigan (%)
  • Patlang 5: presyon (Pa)

Para sa sanggunian sa hinaharap isulat ang Channel ID, ang Basahin ang API Key at ang Isulat ang API Key, na matatagpuan sa mga menu key ng API.

Maaari mong basahin ang data ng ThingSpeak sa iyong smartphone gamit ang isang app. Sa aking android phone ginagamit ko ang widget na IoT ThingSpeak Monitor. Kailangan mong i-configure ito sa Channel ID at sa Read API Key.

Hakbang 4: Paano Mag-Program ng ESP-12F

Paano Program ang ESP-12F
Paano Program ang ESP-12F
Paano Program ang ESP-12F
Paano Program ang ESP-12F

Kailangan namin ng board na walang buto upang makatipid sa buhay ng baterya, ngunit ang masama ay medyo mas mahirap mag-program kaysa sa isang development board na may built-in na USB UART.

Gagamitin namin ang Arduino IDE. Mayroong iba pang Mga Tagubilin na nagpapaliwanag kung paano ito gamitin kaya't magiging maikling ako rito. Ang mga hakbang upang maihanda ito para sa ESP8266 ay:

  • I-download ang Arduino IDE.
  • I-install ang suporta para sa board ng ESP8266. Sa menu File - Mga Kagustuhan - Mga setting idagdag ang URL https://arduino.esp8266.com/stable/package_esp8266com_index.json sa Mga Karagdagang URL ng Board Manager. Susunod sa menu Tools - Board - Boards Manager i-install ang esp8266 ng komunidad ng esp8266.
  • Piliin bilang Lupon: Generic na ESP8266 Modyul.

Upang hawakan ang ESP-12F Gumamit ako ng isang adapter plate, karaniwang magagamit sa mga online shop. Inhinang ko ang maliit na tilad sa plato at pagkatapos ay na-solder ang mga header sa plato. Nalaman ko lang na ang adapter plate ay masyadong malawak para sa isang karaniwang breadboard! Hindi ito nag-iiwan ng mga libreng pin sa gilid upang gawin ang iyong mga koneksyon.

Ang solusyon na pinuntahan ko ay ang paggamit ng mga wire na hugis U at ikonekta ang mga ito tulad ng nasa larawan sa kanan bago ilagay ang ESP8266 kasama ang adapter plate sa breadboard. Kaya ang GND at VCC ay konektado sa mga daang-bakal ng breadboard at ang natitirang mga pin ay magagamit na karagdagang down sa breadboard. Ang kawalan ay ang iyong breadboard ay magiging masikip sa mga wires kapag natapos mo ang kumpletong circuit. Ang isa pang solusyon ay ang magkakasamang dalawang mga breadboard tulad ng ipinakita sa video na ito.

Susunod, upang mai-program ang ESP-12F sa pamamagitan ng USB-port ng iyong computer kailangan namin ng USB sa serial adapter. Ginamit ko ang FT232RL FTDI programmer. Ang programmer ay may isang jumper upang pumili sa pagitan ng 3.3V o 5V. Dapat itong ilagay sa 3.3V para sa ESP8266. Huwag kalimutan ito dahil maaaring magprito ang iyong chip ng 5V! Ang pag-install ng mga driver ay dapat na awtomatiko, ngunit kung hindi gagana ang programa maaari mong subukang manu-manong mai-install ang mga ito mula sa pahinang ito.

Ang ESP8266 ay may isang mode mode upang mag-upload ng bagong firmware sa flash, at isang flash mode upang patakbuhin ang kasalukuyang firmware mula sa flash memory. Upang pumili sa pagitan ng mga mode na ito ang ilang mga pin ay dapat tumagal ng isang tiyak na halaga sa oras ng pag-boot:

  • Programming: GPIO0: mababa, CH-PD: mataas, GPIO2: mataas, GPIO15: mababa
  • Flash: GPIO0: mataas, CH-PD: mataas, GPIO2: mataas, GPIO15: mababa

Inaalagaan na ng plate ng adapter ang paghila ng CH-PD at paghila ng GPIO15 na may 10K resistors.

Kaya sa aming electronic circuit kailangan pa ring mag-pull-up ng GPIO2. Nagbibigay din kami ng isang switch upang ilagay ang ESP8266 sa programa o sa flash mode at isang switch upang i-reset ito, na ginagawa sa pamamagitan ng pagkonekta sa RST sa lupa. Karagdagang siguraduhin na ikonekta mo ang TX pin ng FT232RL sa RXD pin ng ESP8266 at vice versa.

Ang pagkakasunud-sunod ng programa ay ang mga sumusunod:

  • Itakda ang GPIO2 sa mababa sa pamamagitan ng pagsara ng switch ng programa.
  • I-reset ang ESP8266 sa pamamagitan ng pagsasara at pagkatapos ay muling buksan ang switch ng pag-reset. Ang ESP8266 ngayon ay naka-boot sa mode ng pagprograma.
  • Itakda ang GPIO2 pabalik sa mataas sa pamamagitan ng pagbubukas ng switch ng programa.
  • I-upload ang bagong firmware mula sa Arduino IDE.
  • I-reset muli ang ESP8266 sa pamamagitan ng pagsara at muling pagbubukas ng reset switch. Ang ESP8266 ngayon ay naka-boot sa flash mode at nagpapatakbo ng bagong firmware.

Ngayon ay maaari mong subukan kung gumagana ang programa sa pamamagitan ng pag-upload ng sikat na Blink sketch.

Kung ang lahat ng ito ay gumagana kahit papaano ang mga GND, VCC, GPIO2, RST, TXD at RXD na mga pin ay wastong na-solder at konektado. Hay salamat! Ngunit bago magpatuloy ay inirerekumenda kong subukan din ang iba pang mga pin sa iyong multimeter. Nagkaroon ako ng problema sa aking sarili sa isa sa mga pin. Maaari mong gamitin ang sketch na ito, na nagtatakda ng lahat ng mga pin sa mataas isa-isa sa loob ng 5 segundo, at pagkatapos ay inilalagay ang ESP8266 sa mahimbing na pagtulog sa loob ng 20 segundo. Upang paganahin ang ESP8266 upang magising pagkatapos ng mahimbing na pagtulog kailangan mong ikonekta ang RST sa GPIO16, na nagbibigay ng signal ng paggising.

Hakbang 5: Pag-upload ng Sketch

Ginawa kong magagamit ang code sa GitHub, isa lamang itong file: Level-Sensor-Deepsidur.ino. I-download lamang ito at buksan ito sa Arduino IDE. O maaari mong piliin ang File - Bago at kopyahin / i-paste lamang ang code.

Mayroong ilang impormasyon na kailangan mong punan ang simula ng file: ang pangalan at password ng WLAN na gagamitin, mga static na detalye ng IP at ang Channel ID at Isulat ang API Key ng ThingSpeak Channel.

Sumusunod sa tip sa blog na ito, sa halip na DHCP kung saan ang router ay palaging nagtatalaga ng isang IP, gumagamit kami ng static IP, kung saan itinakda namin ang aming IP address ng ESP8266 mismo. Ito ay naging mas mabilis, kaya nakakatipid kami sa aktibong oras at sa gayon sa enerhiya ng baterya. Kaya kailangan naming magbigay ng isang magagamit na static IP address pati na rin ang IP ng router (gateway), ang subnet mask at isang DNS server. Kung hindi ka sigurado tungkol sa kung ano ang pupunan, basahin ang tungkol sa pag-set up ng isang static na IP sa manu-manong ng iyong router. Sa isang Windows computer na konektado sa pamamagitan ng Wifi sa iyo ng router, magsimula ng isang shell (Windows button-r, cmd) at ipasok ang ipconfig / lahat. Mahahanap mo ang karamihan sa impormasyong kailangan mo sa ilalim ng seksyong Wi-Fi.

Sinusuri ang code na nakikita mo na hindi katulad ng ibang Arduino code na karamihan sa mga aksyon ay nangyayari sa pag-andar ng pag-set sa halip na ang pag-andar ng loop. Ito ay sapagkat ang ESP8266 ay natutulog nang matulog matapos nitong matapos ang pag-andar ng pag-setup (maliban kung nagsimula kami sa OTA mode). Matapos itong magising, ito ay tulad ng isang sariwang pag-restart at tumatakbo itong pag-setup muli.

Narito ang mga nakikitang tampok ng code:

  • Pagkatapos ng paggising ay nagtatakda ang code ng switchPin (default GPIO15) sa mataas. Buksan nito ang transistor, na siya namang ay lilipat sa sensor ng HC-SR04-P. Bago matulog nang malalim ay itinatakda nito ang pin pabalik sa mababang, pinapatay ang transistor at ang HC-SR04-P, tinitiyak na hindi ito makakakain ng anumang mas mahalagang lakas ng baterya.
  • Kung ang modePIN (default GPIO14) ay mababa ang code ay napupunta sa OTA mode sa halip na pagsukat mode. Sa OTA (over-the-air update) maaari naming i-update ang firmware sa paglipas ng Wifi sa halip na ang serial port. Sa aming kaso ito ay lubos na maginhawa dahil hindi na namin kailangang ikonekta ang serial sa USB adapter para sa karagdagang mga pag-update. Itakda lamang ang GPIO14 sa mababa (kasama ang OTA switch sa electronic circuit), i-reset ang ESP8266 (gamit ang reset switch) at dapat itong magamit sa Arduino IDE para ma-upload.
  • Sa analog PIN (A0), sinusukat namin ang boltahe ng baterya. Pinapayagan kaming patayin ang aming aparato, aka permanenteng mahimbing na tulog, kung ang boltahe ay napakababa, sa ibaba ng minVoltage, upang maprotektahan ang mga baterya mula sa sobrang paglabas. Ang pagsukat ng analog ay hindi masyadong tumpak, ginagawa namin ang mga hakbang sa numMeasuresBattery (default 10) at gawin ang average upang mapabuti ang kawastuhan.
  • Ang pagsukat ng distansya ng sensor ng HC-SR04-P ay tapos na sa pag-andar ng distansya ng Pagsukat. Upang mapabuti ang katumpakan ang pagsukat ay paulit-ulit na numMeasuresDistansya (default 3) beses.
  • Mayroong isang funtion upang makalkula ang speedOfSound mula sa temperatura, halumigmig at sukat ng presyon ng sensor ng BME280. Ang default na I2C address ng BME280 ay 0x76, ngunit kung hindi ito gumana maaaring kailanganin mong baguhin ito sa 0x77: bool bme280Started = bme280.begin (0x77);
  • Gagamitin namin ang BME280 sa sapilitang mode, na nangangahulugang kinakailangan ng isang pagsukat at babalik sa pagtulog upang makatipid ng kuryente.
  • Kung itinakda mo ang kapasidad (l), fullDistansya (cm) at lugar (m2), kinakalkula ng code ang natitirang dami ng tangke ng tubig mula sa pagsukat ng distansya: doble natitirangVolume = kapasidad + 10.0 * (fullDistansya-distansya) * lugar; at i-upload ito sa ThingSpeak. Kung panatilihin mo ang mga default na halaga mag-upload ito ng distansya sa ibabaw ng tubig sa cm.

Hakbang 6: Pagbuo ng Electronic Circuit

Pagbuo ng Electronic Circuit
Pagbuo ng Electronic Circuit

Sa itaas ay ang diagram ng electronic circuit. Medyo malaki ito para sa isang breadboard, lalo na sa sobrang laki ng plate ng adapter at trick sa mga hugis na U wire. Sa ilang mga punto ay tiyak na hiniling kong nagamit ko ang kahalili ng pagkonekta ng dalawang mga breadboard, ngunit sa huli pinamahalaan ko.

Narito ang mga mahahalagang tampok ng circuit:

  • Mayroong dalawang mga boltahe na gumaganap ng isang papel: ang input boltahe mula sa baterya (sa paligid ng 3.75V) at ang 3.3V na nagpapakain sa ESP8266 at sa BME280. Inilagay ko ang 3.3V sa kaliwang riles ng breakboard at ang 3.75V sa kanang riles. Binabago ng regulator ng boltahe ang 3.75V hanggang 3.3V. Kasunod sa mga tagubilin sa datasheet nagdagdag ako ng 1 μF capacitor sa input at output ng boltahe regulator upang madagdagan ang katatagan.
  • Ang GPIO15 ng ESP8266 ay konektado sa gate ng transistor. Pinapayagan nito ang ESP8266 na i-on ang transistor at sa gayon ang ultrasonic sensor kapag aktibo at patayin ito kapag natutulog ka.
  • Ang GPIO14 ay konektado sa isang switch, ang OTA switch. Ang pagsara ng switch ay nagbibigay ng senyas sa ESP8266 na nais naming simulan sa OTA mode sa susunod, ibig sabihin pagkatapos naming pindutin (isara at buksan) ang RESET switch, at mag-upload ng isang bagong sketch over-the-air.
  • Ang mga RST at GPIO2 na pin ay konektado tulad ng diagram ng programa. Ang RST pin ay konektado din ngayon sa GPIO16 upang payagan ang ESP8266 na magising mula sa mahimbing na pagtulog.
  • Ang mga pin na TRIG at ECHO ng ultrasonic sensor ay konektado sa GPIO12 at GPIO13, habang ang mga pin na SCL at SDA ng BME280 ay konektado sa GPIO5 at GPIO4.
  • Sa wakas, ang analog pin ADC ay sa pamamagitan ng isang boltahe divider na konektado sa input boltahe. Pinapayagan nitong sukatin ang input boltahe upang suriin ang singil ng mga baterya. Maaaring sukatin ng pin ng ADC ang mga voltages sa pagitan ng 0V at 1V. Para sa voltage divider pinili namin ang mga resistors ng 100K at 470K. Nangangahulugan ito na ang boltahe sa ADC pin ay ibinibigay ng: V_ADC = 100K / (100K + 470K) V_in. Ang pagkuha ng V_ADC = 1V nangangahulugan ito na maaari naming sukatin ang mga input voltage hanggang sa V_in = 570/100 V_ADC = 5.7V. Tulad ng para sa pagkonsumo ng kuryente mayroon ding ilang kasalukuyang pagtulo sa pamamagitan ng divider ng boltahe. Sa V_in = 3.75V mula sa mga baterya na matatagpuan namin ang I_leak = 3.75V / 570K = 6.6 μA.

Kahit na tumatakbo ang circuit mula sa mga baterya, posible na ikonekta ang USB sa serial adapter. Siguraduhin lamang na i-unplug ang VCC ng adapter at ikonekta ang GND, RX at TX tulad ng sa diagram ng programa. Ginagawa nitong posible na buksan ang Serial Monitor sa Arduino IDE upang mabasa ang mga mensahe sa pag-debug at tiyaking gumagana ang lahat ayon sa inaasahan.

Para sa kumpletong circuit sinukat ko ang isang kasalukuyang pagkonsumo ng 50 μA sa mahimbing na pagtulog kapag tumatakbo mula sa mga baterya. Kasama rito ang ESP8266, ang BME280, ang ultrasonic sensor (pinatay ng transistor) at pagtulo sa pamamagitan ng voltage divider at marahil iba pang mga pagtulo. Kaya't hindi iyon masyadong masama!

Nalaman ko na ang kabuuang aktibong oras ay tungkol sa 7 segundo, kung saan 4.25 segundo upang kumonekta sa Wifi at 1.25 segundo upang maipadala ang data sa ThingSpeak. Kaya sa isang aktibong kasalukuyang 80mA nahanap ko ang 160 μAh bawat oras para sa aktibong oras. Pagdaragdag ng 50 μAh bawat oras para sa deep-sleep state na mayroon kami sa kabuuang 210 μAh bawat oras. Nangangahulugan ito na ang 2600 mAh na baterya ay teoretikal na tumatagal ng 12400 na oras = 515 araw. Ito ang ganap na maximum kung magagamit namin ang buong kakayahan ng mga baterya (na hindi ito ang kaso) at walang mga pagtulo na hindi ko nakita sa aking kasalukuyang mga sukat. Kaya't hindi ko pa nakikita kung ito ba talaga

Hakbang 7: Tinatapos ang Sensor

Tinatapos ang Sensor
Tinatapos ang Sensor
Tinatapos ang Sensor
Tinatapos ang Sensor
Tinatapos ang Sensor
Tinatapos ang Sensor

Inilagay ko ang sensor sa isang lalagyan ng plastik na 1 litro, na naglalaman ng sopas dati. Sa ilalim ay gumawa ako ng dalawang butas upang magkasya ang "mga mata" ng HC-SR04-P sensor. Bukod sa mga butas ang lalagyan ay dapat na hindi tinatagusan ng tubig. Pagkatapos ay nakakabit ito sa dingding ng tangke ng tubig na may isang pabilog na singsing na karaniwang ginagamit para sa isang tubong paagusan ng tubig-ulan.

Maglibang sa proyekto!

Inirerekumendang: