สารบัญ:

MQTT/Google Home Flood/Water WIFI Sensor พร้อม ESP-01: 7 ขั้นตอน
MQTT/Google Home Flood/Water WIFI Sensor พร้อม ESP-01: 7 ขั้นตอน

วีดีโอ: MQTT/Google Home Flood/Water WIFI Sensor พร้อม ESP-01: 7 ขั้นตอน

วีดีโอ: MQTT/Google Home Flood/Water WIFI Sensor พร้อม ESP-01: 7 ขั้นตอน
วีดีโอ: Live monitoring your sensor's value from anywhere in the world using ESP8266 and Adafruit MQTT 2024, กรกฎาคม
Anonim
MQTT/Google Home Flood/Water WIFI Sensor พร้อม ESP-01
MQTT/Google Home Flood/Water WIFI Sensor พร้อม ESP-01

ในคำแนะนำนี้ ฉันจะแสดงวิธีสร้างเซ็นเซอร์น้ำท่วม/น้ำ wifi ด้วยต้นทุนที่ต่ำที่สุด โปรเจ็กต์ทั้งหมดมีค่าใช้จ่ายน้อยกว่า 8 ดอลลาร์สำหรับชิ้นส่วนที่ฉันซื้อจากอีเบย์และอะไหล่ที่มีอยู่

ในโครงการนี้ เราจะใช้ ESP-01 เพื่อจัดหา Wifi และไคลเอนต์ MQTT เพื่อตรวจจับว่ามีน้ำอยู่ และใช้ลำโพง/ออดที่เชื่อมต่อโดยตรงเพื่อส่งสัญญาณเตือนเฉพาะที่

แอปพลิเคชันเฉพาะของฉันสำหรับโครงการคือการตรวจจับน้ำท่วม/น้ำภายในบ่อปั๊มทิ้งของฉัน ในกรณีของความล้มเหลวของปั๊มทิ้ง เมื่อตรวจพบน้ำโดยสายไฟเปิด 2 เส้น มันจะส่งข้อความถึงนายหน้า MQTT โบรกเกอร์ MQTT จะส่งต่อข้อความไปยัง NodeRED เมื่อได้รับข้อความ MQTT แล้ว NodeRED จะส่งประกาศไปยังอุปกรณ์โฮมของ Google หลายเครื่องและเลือกที่จะส่งข้อความไปยังโทรศัพท์มือถือ/เบราว์เซอร์ผ่าน pushbullet

แน่นอนว่าโครงการนี้จะใช้ได้ก็ต่อเมื่อไฟฟ้าในบ้านเปิดอยู่เท่านั้น ในคำแนะนำต่อไปฉันจะรวมวงจรสำรองแบตเตอรี่ แต่ถ้าคุณทำพาวเวอร์ซัพพลายแบบเดียวกับที่ฉันทำ คุณสามารถเสียบพาวเวอร์แบงค์แบบ USB เพื่อสำรองแบตเตอรีได้ หากคุณมีพาวเวอร์แบงค์ที่ให้คุณชาร์จและจ่ายไฟได้พร้อมกัน แสดงว่าคุณพร้อมแล้ว

ฉันใช้ RaspberryPi ZeroW เพื่อโฮสต์เซิร์ฟเวอร์ Mosquitto MQTT และ NodeRED มันทำงานมานานกว่าหนึ่งปีโดยไม่มีปัญหาใด ๆ

ข้อมูลอ้างอิง:Raspberry Pi:https://www.switchdoc.com/2016/02/tutorial-installi…ติดตั้ง NodeRED บน Raspberry Pi:

ขั้นตอนที่ 1: อะไหล่ที่คุณต้องการ

อะไหล่ที่คุณต้องการ
อะไหล่ที่คุณต้องการ
อะไหล่ที่คุณต้องการ
อะไหล่ที่คุณต้องการ
อะไหล่ที่คุณต้องการ
อะไหล่ที่คุณต้องการ

ส่วนรายการ:

(1) ESP-01

(2) ตัวต้านทาน 10K โอห์ม

(1) ทรานซิสเตอร์ NPN สัญญาณขนาดเล็กทั่วไป (ฉันใช้ 2N3904)

(2) สายยาว

(1) แหล่งจ่ายไฟทั่วไป 5V (วงจรนี้ต้องการกระแสไฟน้อยกว่า 300mA)

(1) โมดูลควบคุม 3.3V AMS1117

(1) Micro-USB ไปยังอะแดปเตอร์ DIP ตัวเมีย เชื่อมต่อ ตัวแปลง PCB DIY Kit

(1) สาย USB-A เป็น MicroUSB

(1) ซ็อกเก็ตไอซี 8 พิน - สามารถละเว้นได้หากคุณต้องการบัดกรี ESP-01 เข้ากับแผงวงจรโดยตรง ตัดสะพานพลาสติกที่สร้างช่องว่างระหว่างแถว แล้วทากาวทั้ง 2 แถวเข้าด้วยกัน ดูรูป

(1) ตู้ขนาดเล็กสำหรับโครงการ

ด้านล่างนี้เป็นส่วนเสริมหากคุณต้องการให้การเตือนเป็นภาษาท้องถิ่นโดยใช้ลำโพง/กริ่ง

(1) ทรานซิสเตอร์ PNP ทั่วไป เลือกตามความต้องการของกระแสไฟ/กำลังไฟของลำโพง/ออดเซอร์ ในกรณีของฉัน ฉันใช้ 2N2907 เนื่องจากลำโพงของฉันมีเพียง 0.3W (8 โอห์ม) มันจะให้พลังงานเพียงพอในการขับลำโพง คุณสามารถเลือกทรานซิสเตอร์และลำโพงที่ใหญ่ขึ้นได้หากต้องการให้เสียงดังขึ้น

(1) ลำโพง ดูหมายเหตุเกี่ยวกับทรานซิสเตอร์ PNP ด้านบน

(1) ตัวต้านทาน 100 - 110 โอห์ม

ขั้นตอนที่ 2: แผนภาพวงจร

แผนภูมิวงจรรวม
แผนภูมิวงจรรวม

ขั้นตอนแรกคือการสร้างวงจรที่แสดงในแผนภาพ

ฉันสร้างแหล่งจ่ายไฟ 3.3VDC โดยใช้เครื่องชาร์จมือถือ 5V รุ่นเก่า ร่วมกับตัวควบคุม AMS1117 3.3VDC สำหรับซ็อกเก็ต ESP-01 ฉันใช้ซ็อกเก็ต IC มาตรฐาน 8 พิน และตัดสะพานพลาสติกที่สร้างช่องว่างระหว่างแถว แล้วกาว 2 แถวเข้าด้วยกัน

วงจรที่ฉันออกแบบคือการรับรู้ว่ามีน้ำอยู่ระหว่างสายไฟสองเส้น เมื่อน้ำไปถึงปลายสายทั้งสอง มันจะสร้างความต้านทานประมาณ 10K ถึง 20K โอห์ม จากนั้นในซีรีส์ที่มี 10K ohm R1 จะจ่ายกระแสไฟขนาดเล็กไปที่ฐานของ Q1 ทำให้ Q1 อิ่มตัว โดยยึด GPIO-2 กับกราวด์ R1 จำเป็นสำหรับการป้องกัน Q1 ในกรณีที่สายตรวจจับไฟฟ้าลัดวงจรโดยไม่ได้ตั้งใจ

R2 เป็นตัวต้านทานแบบดึงขึ้นเพื่อให้ ESP-01 สามารถบู๊ตจากแฟลชได้

ตอนนี้สำหรับลำโพง/ออดเสริม หากคุณต้องการให้ ESP-01 พูด MQTT และไม่ต้องการใช้การเตือนที่แปลแล้ว คุณสามารถลบ R2, Q2, ลำโพง และวางตัวต้านทานแบบดึงขึ้น 10K ระหว่าง GPIO-0 และวีซีซี

หากคุณไม่ต้องการใช้อะแดปเตอร์ Micro-USB เป็น DIP ตัวเมีย คุณสามารถบัดกรีสายไฟระหว่าง 5V PS กับโมดูลตัวควบคุม 3.3V ได้ ฉันชอบใช้อะแดปเตอร์ MicroUSB ตัวเมีย ดังนั้นฉันจึงสามารถใช้ที่ชาร์จโทรศัพท์มือถือทั่วไปและสาย MicroUSB ได้

ขั้นตอนที่ 3: สร้างวงจร

การสร้างวงจร
การสร้างวงจร
การสร้างวงจร
การสร้างวงจร
การสร้างวงจร
การสร้างวงจร

ประสานส่วนประกอบและชิ้นส่วนทั้งหมดลงใน PCB ตามแผนภาพวงจรในหน้าก่อนหน้า แล้วตัด PCB ให้มีขนาด

วาง PCB ไว้ในกล่องหุ้มที่จะพอดีกับ PCB และลำโพงเสริม ในกรณีของฉัน ชิ้นส่วนทั้งหมดจะพอดีกับกล่องเต้าเสียบโทรศัพท์ขนาดเล็ก แม้ว่าฉันต้องทำให้ฝาครอบร้อนขึ้นเล็กน้อยเพื่อสร้างส่วนนูนเพื่อให้โมดูล ESP-01 จะพอดี

ขั้นตอนที่ 4: กระพริบ ESP-01

ในขั้นตอนนี้ เราจะแฟลช ESP-01 ด้วยภาพสเก็ตช์ Arduino หากคุณไม่เคยแฟลชโมดูล ESP-01 คุณสามารถทำตามคำแนะนำของฉันเพื่อเริ่มต้นใช้งาน:

คุณสามารถค้นหาภาพสเก็ตช์ของฉันได้ในหน้า github ของฉัน:

ในแบบร่าง อย่างน้อยที่สุด คุณต้องเปลี่ยนข้อมูลต่อไปนี้ที่เกี่ยวข้องกับเครือข่ายในบ้าน/การตั้งค่าของคุณ:

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

ในเครือข่ายในบ้านของฉัน ฉันมีจุดเชื่อมต่อ 2 จุดที่เผยแพร่ SSID ที่แตกต่างกัน 2 ตัว และแบบร่างนี้จะอนุญาตให้มีความซ้ำซ้อนโดยเชื่อมต่อกับ SSID ถัดไป หากการสื่อสารไปยัง AP ปัจจุบันหายไป หากคุณมี SSID เพียงอันเดียว ให้เติมทั้ง ssid1 และ ssid2 ด้วยค่าเดียวกัน

เมื่อคุณทำการแก้ไขแล้ว ให้อัปโหลดภาพสเก็ตช์ไปที่ ESP-01 และเสียบ ESP-01 เข้ากับบอร์ดอินเทอร์เฟซ

ขั้นตอนที่ 5: ทดสอบ Run

เพื่อทดสอบว่าโครงการของเราใช้งานได้หรือไม่ วิธีที่ง่ายที่สุดคือตรวจสอบข้อความ MQTT ในเครือข่าย ในการทำเช่นนั้น คุณต้องเปิดเซสชัน SSH ให้กับโบรกเกอร์ mosquitto และออกคำสั่งต่อไปนี้:

mosquitto_sub -v -t '#'

คำสั่งข้างต้นจะช่วยให้เราเห็นข้อความ MQTT ทั้งหมดที่เข้ามาในโบรกเกอร์

ตอนนี้เพิ่มพลังให้วงจรของเรา และหากทุกอย่างทำงานได้ อย่างน้อยในไม่กี่วินาที คุณควรเห็นข้อความ MQTT ต่อไปนี้:

stat/SumpWaterSensor/LWT Online

ตอนนี้ให้ทดสอบเซ็นเซอร์น้ำโดยจุ่มสายตรวจจับ 2 เส้นลงในถ้วยน้ำ และคุณควรเห็นข้อความนี้:

เทเล/SumpWaterSensor WET

และหากคุณนำสายไฟขึ้นจากน้ำ คุณจะเห็นข้อความนี้:

เทเล/SumpWaterSensor DRY

หากคุณเห็นข้อความเหล่านั้น แสดงว่าโครงการของคุณประสบความสำเร็จ

ฉันยังรวมหัวข้อ MQTT ที่มีประโยชน์ไว้ในแบบร่างที่คุณสามารถใช้ได้:

"stat/SumpWaterSensorInfo": ข้อความนี้ถูกส่งทุกนาทีเพื่อแจ้งเวลาทำงานและข้อมูลอื่นๆ

"cmnd/SumpWaterSensorInfo": ESP-01 จะส่งข้อมูลหากได้รับหัวข้อนี้ด้วยค่า '1' (ascii=49)

"cmnd/SumpWaterSensorCPUrestart": ESP-01 จะรีสตาร์ทหากได้รับหัวข้อนี้ด้วยค่า '1' (ascii=49)

"cmnd/SumpWaterSensorBeep": ESP-01 จะส่งเสียงผู้พูดหากได้รับหัวข้อนี้ด้วยค่า '1' (ascii=49)

"cmnd/SumpWaterSensorBeepFreq": ตั้งค่าความถี่ของการเตือนของลำโพง ค่าเริ่มต้น = 900 (Hz)

"cmnd/SumpWaterSensorDebug": เปิดใช้งานและตั้งค่าระดับการดีบักแบบอนุกรม (ค่าเริ่มต้นคือ 0 - ไม่มีการดีบัก)

ขั้นตอนที่ 6: ติดตั้งเซนเซอร์

ติดตั้งเซนเซอร์
ติดตั้งเซนเซอร์
ติดตั้งเซนเซอร์
ติดตั้งเซนเซอร์

ในใบสมัครของฉัน ฉันต้องการตรวจสอบระดับน้ำในบ่อบ่อพัก และแจ้งให้ฉันทราบว่าน้ำถึงเหนือสวิตช์ลูกลอยของปั๊มทิ้ง ซึ่งหมายความว่าปั๊มทิ้งของฉันไม่ทำงาน ฉันเดินสายไฟและใช้ที่รัดสายไฟเพื่อยึดไว้ตามท่อระบายน้ำ

ขั้นตอนที่ 7: สัมผัสสุดท้าย

สัมผัสสุดท้าย
สัมผัสสุดท้าย

ตอนนี้ เรามีโปรเจ็กต์ที่ทำงานและสามารถเผยแพร่ข้อความ MQTT ไปยังนายหน้าได้ ขั้นตอนต่อไปคือการคิดว่าจะทำอย่างไรกับสิ่งนั้น

ในโครงการของฉัน ฉันใช้ Node-RED เพื่อฟัง/สมัครรับข้อมูลหัวข้อ MQTT "tele/SumpWaterSensor" และประกาศให้ผู้พูดในบ้านของ Google หลายคนทราบหากตรวจพบน้ำ นอกจากนั้น ฉันยังเชื่อมโยงโฟลว์กับโหนด pushbullet เพื่อส่งการแจ้งเตือนไปยังโทรศัพท์ Android ของฉัน

ฉันยังสร้างส่วนหน้าของเว็บเพื่อดูสถานะของเซ็นเซอร์ (เปิด/ออฟไลน์ เวลาทำงาน ฯลฯ) บางครั้งฉันเห็นว่ามันออฟไลน์ไม่กี่ครั้งในช่วง 1 สัปดาห์จากสถิติ หลายครั้งที่ ESP-01 ถูกตัดการเชื่อมต่อจาก wifi หรือ MQTT แต่ไม่ต้องกังวลไป สเก็ตช์ของฉันได้รวมรูทีนเพื่อรีสตาร์ท ESP-01 หากยังคงล้มเหลวในการพยายามเชื่อมต่อกับนายหน้า WIFI และ/หรือ MQTT

รูปภาพในขั้นตอนนี้แสดงโฟลว์ Node-RED เพื่อทำสิ่งนี้ให้สำเร็จ คุณยังสามารถวางโฟลว์จากหน้า github ของฉันลงใน Node-RED ของคุณ:

การประกาศหน้าแรกของ Google เป็นเพียงตัวอย่างหนึ่งสำหรับโครงการนี้ แต่ฉันคิดว่ามันมีประโยชน์และใช้งานได้จริงมากที่สุด คุณสามารถเชื่อมต่อกับ MQTT listener อื่นๆ ได้ตลอดเวลา หรือแม้แต่ใช้ IFTTT เพื่อขับเคลื่อนอุปกรณ์อื่นๆ เมื่อตรวจพบน้ำ

มีความสุข…

แนะนำ: