Talaan ng mga Nilalaman:

MQTT / Google Home Flood / Water WIFI Sensor Sa ESP-01: 7 Mga Hakbang
MQTT / Google Home Flood / Water WIFI Sensor Sa ESP-01: 7 Mga Hakbang

Video: MQTT / Google Home Flood / Water WIFI Sensor Sa ESP-01: 7 Mga Hakbang

Video: MQTT / Google Home Flood / Water WIFI Sensor Sa ESP-01: 7 Mga Hakbang
Video: Home Assistant How To - program LilyGo TTGO HiGrow plant sensor 2024, Hulyo
Anonim
MQTT / Google Home Flood / Water WIFI Sensor Sa ESP-01
MQTT / Google Home Flood / Water WIFI Sensor Sa ESP-01

Sa itinuturo na ito, ipapakita ko sa iyo kung paano bumuo ng wifi banjir / water sensor na may kaunting gastos. Ang buong proyekto ay nagkakahalaga sa akin ng mas mababa sa $ 8 para sa mga bahagi na nakuha ko mula sa ebay at sa aking mayroon nang mga ekstrang bahagi.

Sa proyektong ito, gagamitin namin ang ESP-01 upang magbigay ng Wifi at MQTT client upang makita ang pagkakaroon ng tubig, at opsyonal na gumamit ng direktang konektadong speaker / buzzer upang magbigay ng naisalokal na alarma.

Ang aking tukoy na aplikasyon para sa proyekto ay upang makita ang baha / tubig sa loob ng aking sump pump na rin, sa kaso ng pagkabigo ng sump pump. Kapag nakita ang tubig ng 2 bukas na mga wire, magpapadala ito ng mensahe sa MQTT broker. Ipapasa ng MQTT broker ang mensahe sa NodeRED. Sa pagtanggap ng mensahe ng MQTT, magpapadala ang NodeRED ng anunsyo sa maraming mga aparatong bahay sa google at opsyonal ding magpadala ng mensahe sa cellphone / browser sa pamamagitan ng pushbullet

Ngayon syempre gagana lang ang proyektong ito kung ON ang elektrisidad sa bahay. Sa susunod na maituturo ay isasama ko ang backup na circuit ng baterya. Ngunit kung gagawin mo ang supply ng kuryente sa parehong paraan na ginawa ko, maaari ka lamang mag-plug sa isang USB power-bank para sa pag-backup ng baterya. Kung mayroon kang isang power-bank na nagpapahintulot sa iyo na singilin at mag-supply ng lakas nang sabay, pagkatapos ay handa ka na.

Gumagamit ako ng RaspberryPi ZeroW upang i-host ang Mosquitto MQTT server at NodeRED. Tumatakbo ito ng higit sa isang taon nang walang anumang isyu.

Mga Sanggunian: Raspberry Pi: https://www.switchdoc.com/2016/02/tutorial-installi…I-install ang NodeRED sa Raspberry Pi:

Hakbang 1: Mga Bahagi Na Kakailanganin Mo

Mga Bahagi Na Kakailanganin Mo
Mga Bahagi Na Kakailanganin Mo
Mga Bahagi Na Kakailanganin Mo
Mga Bahagi Na Kakailanganin Mo
Mga Bahagi Na Kakailanganin Mo
Mga Bahagi Na Kakailanganin Mo

Listahan ng Mga Bahagi:

(1) ESP-01

(2) 10K ohm Resistor

(1) maliit na signal generic na NPN transistor (ginamit ko ang 2N3904)

(2) mahabang wires

(1) 5V generic power supply (ang circuit na ito ay nangangailangan ng mas mababa sa 300mA kasalukuyang)

(1) 3.3V module ng regulator AMS1117

(1) Micro-USB To DIP Adapter Babae Connector PCB Converter DIY Kit

(1) USB-A hanggang MicroUSB cable.

(1) 8-pin IC socket - maaaring matanggal kung nais mong direktang maghinang ng ESP-01 sa circuit board. Gupitin ang mga plastik na tulay na lumilikha ng puwang sa pagitan ng mga hilera, at pagkatapos ay idikit ang 2 mga hilera, tingnan ang larawan.

(1) Maliit na enclosure para sa proyekto

Nasa ibaba ang mga opsyonal na bahagi kung kailangan mo ng isang naisalokal na alarma gamit ang speaker / buzzer

(1) Generic PNP Transistor, pumili alinsunod sa kinakailangang speaker / buzzer kasalukuyang / wattage. Sa aking kaso gumagamit ako ng 2N2907 dahil ang aking speaker ay 0.3W lamang (8 ohm), magbibigay ito ng sapat na lakas upang himukin ang nagsasalita. Maaari kang pumili ng isang mas malaking transistor & speaker kung nais mo ng mas malakas na tunog.

(1) Tagapagsalita, tingnan ang tala sa PNP Transistor sa itaas

(1) 100 - 110 ohm Resistor

Hakbang 2: Diagram ng Circuit

Diagram ng Circuit
Diagram ng Circuit

Ang unang hakbang ay upang lumikha ng circuit na ipinapakita sa diagram.

Itinayo ko ang 3.3VDC power supply gamit ang isang lumang 5V cellphone charger na isinama sa AMS1117 3.3VDC regulator. Para sa socket ng ESP-01, gumagamit ako ng isang 8-pin na karaniwang socket ng IC, at pinuputol ang mga plastik na tulay na lumilikha ng puwang sa pagitan ng mga hilera, at pagkatapos ay idikit ang 2 mga hilera nang magkasama.

Ang circuit na dinisenyo ko ay upang maunawaan ang pagkakaroon ng tubig sa pagitan ng dalawang mga wire. Kapag naabot ng tubig ang dulo ng parehong mga wire, lilikha ito ng isang pagtutol na humigit-kumulang 10K hanggang 20K ohm. Pagkatapos ay sa serye ng 10K ohm R1, nagbibigay ito ng isang maliit na kasalukuyang sa base ng Q1 na sanhi ng Q1 upang mababad, clamping ang GPIO-2 sa lupa. Ang R1 ay kinakailangan upang magbigay ng proteksyon sa Q1 kung sakaling may isang hindi sinasadyang maikli sa mga sensing wires.

Ang R2 ay isang pull-up risistor upang payagan ang ESP-01 na mag-boot mula sa flash.

Ngayon para sa opsyonal na speaker / buzzer, kung kailangan mo lamang ng ESP-01 upang magsalita ng MQTT at hindi nais na ipatupad ang naisalokal na nakakaalarma na ito, maaari mong alisin ang R2, Q2, Speaker, at maglagay ng isang 10K pull-up risistor sa pagitan ng GPIO-0 at VCC.

Kung hindi mo naramdaman ang pangangailangan ng paggamit ng babaeng Micro-USB sa DIP adapter, maaari kang maghinang ng mga wire sa pagitan ng 5V PS sa module ng 3.3V regulator. Mas gusto ko ang paggamit ng babaeng MicroUSB adapter upang makagamit ako ng anumang generic na cellphone charger at MicroUSB cable.

Hakbang 3: Pagbuo ng Circuit

Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit
Pagbuo ng Circuit

Solder lahat ng mga bahagi at bahagi sa PCB ayon sa circuit diagram sa nakaraang pahina, at gupitin ang PCB sa laki.

Ilagay ang PCB sa loob ng isang enclosure na magkasya sa PCB at ang opsyonal na speaker. Sa aking kaso, ang lahat ng mga bahagi ay magkakasya sa loob ng isang maliit na kahon ng outlet ng telepono, kahit na kailangan kong magpainit ng maliit na takip upang lumikha ng isang umbok upang magkasya ang module na ESP-01.

Hakbang 4: Flashing ang ESP-01

Sa hakbang na ito, i-flash namin ang ESP-01 na may arduino sketch. Kung hindi mo pa nai-flash ang module ng ESP-01, maaari mong sundin ang aking itinuro upang makapagsimula ka:

Mahahanap mo ang aking sketch sa aking pahina ng github:

Sa sketch, sa minimum na kailangan mo upang baguhin ang sumusunod na impormasyon na nauugnay sa iyong home network / setup:

#define MQTT_SERVER "10.0.0.30" const char * ssid1 = "SSID"; const char * password1 = "MYSSIDpassword"; const char * ssid2 = "SSID1"; const char * password2 = "MYSSIDpassword";

Sa aking home network, mayroon akong 2 magkakaibang access point na nag-broadcast ng 2 magkakaibang SSID, at papayagan ng sketch na ito ang kalabisan sa pamamagitan ng pagkonekta sa susunod na SSID kung ang komunikasyon sa kasalukuyang AP ay nawala. Kung mayroon ka lamang isang SSID, i-populate ang parehong ssid1 at ssid2 na may parehong halaga.

Kapag nagawa mong baguhin, i-upload ang sketch sa ESP-01, at i-plug ang ESP-01 sa interface board.

Hakbang 5: Patakbuhin ang Pagsubok

Upang masubukan kung gumagana ang aming proyekto, ang pinakamadali ay upang subaybayan ang mga mensahe ng MQTT sa network. Upang magawa iyon, kailangan mong buksan ang isang sesyon ng SSH sa mosquitto broker at ilabas ang sumusunod na utos:

mosquitto_sub -v -t '#'

Papayagan kami ng utos sa itaas na makita ang lahat ng mga mensahe sa MQTT na papasok sa broker.

Patayin ngayon ang aming circuit, at kung gumagana ang lahat, sa loob ng ilang segundo dapat mo man lang makita ang sumusunod na mensahe ng MQTT:

stat / SumpWaterSensor / LWT Online

Ngayon subukan ang water sensor sa pamamagitan ng paglubog ng 2 sensing wires sa isang tasa ng tubig, at dapat mong makita ang mensaheng ito:

tele / SumpWaterSensor WET

At kung aalisin mo ang mga wire sa tubig, dapat mong makita ang mensaheng ito:

tele / SumpWaterSensor DRY

Kung nakikita mo ang mga mensahe, ang iyong proyekto ay isang tagumpay.

Nagsama din ako ng maraming kapaki-pakinabang na mga paksa ng MQTT sa sketch na maaari mong gamitin:

"stat / SumpWaterSensorInfo": ang mensaheng ito ay ipinapadala bawat minuto upang magbigay ng uptime at iba pang impormasyon.

"cmnd / SumpWaterSensorInfo": Ang ESP-01 ay magpapadala ng impormasyon kung tatanggapin ang paksang ito na may halagang '1' (ascii = 49)

"cmnd / SumpWaterSensorCPUrestart": Magsisimula muli ang ESP-01 kung tatanggapin ang paksang ito na may halagang '1' (ascii = 49)

"cmnd / SumpWaterSensorBeep": tunog ng speaker ng ESP-01 kung tatanggapin ang paksang ito na may halagang '1' (ascii = 49)

"cmnd / SumpWaterSensorBeepFreq": Itinatakda ang dalas ng alarm ng speaker, default = 900 (Hz)

"cmnd / SumpWaterSensorDebug": Paganahin at itakda ang antas ng serial debugging (ang default ay 0 - walang pag-debug)

Hakbang 6: I-mount ang Sensor

I-mount ang Sensor
I-mount ang Sensor
I-mount ang Sensor
I-mount ang Sensor

Sa aking aplikasyon, nais kong subaybayan ang antas ng tubig sa loob ng aking sump pump, at upang abisuhan ako kung umabot ang tubig sa itaas ng sump pump float switch, na nangangahulugang hindi gumagana ang aking sump pump. Pinatakbo ko ang mga wire at gumagamit ng mga kurbatang kurdon upang ma-secure ito sa kahabaan ng tubo ng paagusan.

Hakbang 7: Pangwakas na Pag-ugnay

Final Touch
Final Touch

Ngayon na nakagawa kami ng proyekto na gumagana at nagawang mai-publish ang mensahe ng MQTT sa broker, ang susunod na hakbang ay mag-isip ng ideya kung ano ang gagawin dito.

Sa aking proyekto, gumagamit ako ng Node-RED upang makinig / mag-subscribe sa paksang "tele / SumpWaterSensor" MQTT at ipahayag sa maraming mga nagsasalita ng bahay sa google kung may nakita na tubig. Bilang karagdagan sa na, na-link ko din ang daloy sa isang pushbullet node upang magpadala ng abiso sa aking android phone.

Lumikha din ako ng isang web front-end upang makita ang katayuan ng sensor (nasa / offline, uptime, atbp). Minsan nakita ko na ito ay offline nang ilang beses sa kurso ng 1 linggo, mula sa mga istatistika, maraming beses na dahil sa ESP-01 na naka-disconnect mula sa wifi o MQTT. Ngunit hindi masyadong mag-alala, ang aking sketch ay may kasamang gawain upang muling simulan ang ESP-01 kung patuloy itong nabigo sa pagsubok na kumonekta sa WIFI at / o MQTT broker.

Ang imahe sa hakbang na ito, ay nagpapakita ng daloy ng Node-RED upang magawa ito. Maaari mo ring i-paste ang daloy mula sa aking pahina ng github papunta sa iyong Node-RED:

Ang anunsyo sa Google sa bahay ay isang halimbawa lamang para sa proyektong ito, ngunit sa palagay ko ito ang pinaka kapaki-pakinabang at praktikal. Maaari mong palaging i-interface sa ibang tagapakinig ng MQTT, o kahit na ang paggamit ng IFTTT upang himukin ang iba pang mga aparato kapag nakita ang tubig.

Magsaya…

Inirerekumendang: