Mục lục:

MQTT / Google Home Flood / Water WIFI cảm biến với ESP-01: 7 bước
MQTT / Google Home Flood / Water WIFI cảm biến với ESP-01: 7 bước

Video: MQTT / Google Home Flood / Water WIFI cảm biến với ESP-01: 7 bước

Video: MQTT / Google Home Flood / Water WIFI cảm biến với ESP-01: 7 bước
Video: MQTT C# ESP32 P1 2024, Tháng bảy
Anonim
MQTT / Google Home Flood / Water WIFI cảm biến với ESP-01
MQTT / Google Home Flood / Water WIFI cảm biến với ESP-01

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách xây dựng cảm biến lũ / nước wifi với chi phí tối thiểu. Toàn bộ dự án tiêu tốn của tôi ít hơn 8 đô la cho các bộ phận mà tôi mua được từ ebay và các phụ tùng thay thế hiện có của tôi.

Trong dự án này, chúng tôi sẽ sử dụng ESP-01 để cung cấp máy khách Wifi và MQTT để phát hiện sự hiện diện của nước và tùy chọn sử dụng loa / còi được kết nối trực tiếp để cung cấp cảnh báo cục bộ.

Ứng dụng cụ thể của tôi cho dự án là phát hiện lũ / nước bên trong giếng bơm bể phốt của tôi, trong trường hợp máy bơm bể phốt bị hỏng. Khi nước được phát hiện bởi 2 dây mở, nó sẽ gửi thông báo đến nhà môi giới MQTT. Nhà môi giới MQTT sau đó sẽ chuyển tiếp thông báo tới NodeRED. Khi nhận được tin nhắn MQTT, NodeRED sẽ gửi thông báo đến nhiều thiết bị gia đình của Google và cũng có thể tùy chọn gửi tin nhắn đến điện thoại di động / trình duyệt thông qua pushbullet

Tất nhiên bây giờ dự án này sẽ chỉ hoạt động nếu điện gia đình được BẬT. Trong bài hướng dẫn tiếp theo tôi sẽ tích hợp mạch pin dự phòng. Nhưng nếu bạn tạo nguồn điện giống như cách tôi đã làm, bạn có thể chỉ cần cắm vào một ngân hàng điện USB để dự phòng pin. Nếu bạn có một bộ sạc dự phòng cho phép bạn sạc và cung cấp điện cùng một lúc, thì bạn đã sẵn sàng.

Tôi sử dụng RaspberryPi ZeroW để lưu trữ máy chủ Mosquitto MQTT và NodeRED. Nó đã chạy hơn một năm mà không gặp bất kỳ vấn đề gì.

Tài liệu tham khảo: Raspberry Pi: https://www.switchdoc.com/2016/02/tutorial-installi…Cài đặt NodeRED trên Raspberry Pi:

Bước 1: Các bộ phận bạn sẽ cần

Các bộ phận mà bạn sẽ cần
Các bộ phận mà bạn sẽ cần
Các bộ phận mà bạn sẽ cần
Các bộ phận mà bạn sẽ cần
Các bộ phận mà bạn sẽ cần
Các bộ phận mà bạn sẽ cần

Danh sách các bộ phận:

(1) ESP-01

(2) Điện trở 10K ohm

(1) bóng bán dẫn NPN chung tín hiệu nhỏ (tôi đã sử dụng 2N3904)

(2) dây dài

(1) Nguồn điện chung 5V (mạch này yêu cầu dòng điện nhỏ hơn 300mA)

(1) Mô-đun điều chỉnh 3.3V AMS1117

(1) Bộ chuyển đổi Micro-USB sang DIP Đầu nối nữ Bộ chuyển đổi PCB Bộ chuyển đổi tự làm

(1) Cáp USB-A sang MicroUSB.

(1) Ổ cắm IC 8 chân - có thể bỏ qua nếu bạn muốn hàn trực tiếp ESP-01 vào bảng mạch. Cắt những chiếc cầu nhựa tạo khoảng cách giữa các hàng, sau đó dán 2 hàng lại với nhau, xem ảnh.

(1) Bao vây nhỏ cho dự án

Dưới đây là các bộ phận tùy chọn nếu bạn cần báo thức được bản địa hóa bằng loa / còi

(1) Transistor PNP chung, chọn theo yêu cầu của loa / buzzer / công suất. Trong trường hợp của tôi, tôi sử dụng 2N2907 vì loa của tôi chỉ có 0,3W (8 ohm), nó sẽ cung cấp đủ công suất để điều khiển loa. Bạn có thể chọn một bóng bán dẫn và loa lớn hơn nếu bạn muốn âm thanh lớn hơn.

(1) Loa, xem lưu ý về Transistor PNP ở trên

(1) Điện trở 100 - 110 ohm

Bước 2: Sơ đồ mạch

Sơ đồ mạch
Sơ đồ mạch

Bước đầu tiên sẽ là tạo mạch được hiển thị trong sơ đồ.

Tôi đã chế tạo bộ nguồn 3.3VDC bằng bộ sạc điện thoại di động 5V cũ kết hợp với bộ điều chỉnh AMS1117 3.3VDC. Đối với ổ cắm ESP-01, tôi sử dụng ổ cắm IC tiêu chuẩn 8 chân và cắt các cầu nối nhựa tạo khoảng cách giữa các hàng, sau đó dán 2 hàng lại với nhau.

Mạch mà tôi thiết kế là để cảm nhận sự hiện diện của nước giữa hai dây. Khi nước chạm đến đầu của cả hai dây, nó sẽ tạo ra điện trở khoảng 10K đến 20K ohm. Sau đó, mắc nối tiếp với R1 10K ohm, nó cung cấp một dòng điện nhỏ đến chân đế Q1 khiến Q1 bão hòa, kẹp GPIO-2 xuống đất. R1 là cần thiết để cung cấp sự bảo vệ cho Q1 trong trường hợp có sự cố ngắn dây cảm ứng.

R2 là một điện trở kéo lên để cho phép ESP-01 khởi động từ đèn flash.

Bây giờ đối với loa / còi tùy chọn, nếu bạn chỉ cần ESP-01 để nói MQTT và không muốn triển khai báo động cục bộ này, bạn có thể loại bỏ R2, Q2, Loa và đặt một điện trở kéo lên 10K giữa GPIO-0 và VCC.

Nếu bạn không cảm thấy cần thiết phải sử dụng bộ chuyển đổi Micro-USB sang DIP nữ, bạn có thể hàn dây giữa 5V PS với mô-đun điều chỉnh 3.3V. Tôi thích sử dụng bộ chuyển đổi MicroUSB nữ hơn nên tôi có thể sử dụng bất kỳ bộ sạc điện thoại di động chung nào và cáp MicroUSB.

Bước 3: Xây dựng mạch

Xây dựng mạch
Xây dựng mạch
Xây dựng mạch
Xây dựng mạch
Xây dựng mạch
Xây dựng mạch

Hàn tất cả các thành phần và bộ phận vào PCB theo sơ đồ mạch ở trang trước và cắt PCB theo kích thước.

Đặt PCB bên trong một vỏ bọc phù hợp với PCB và loa tùy chọn. Trong trường hợp của tôi, tất cả các bộ phận sẽ nằm gọn trong một hộp ổ cắm điện thoại nhỏ, mặc dù tôi phải làm nóng nắp một chút để tạo độ phồng sao cho vừa vặn với mô-đun ESP-01.

Bước 4: Nhấp nháy ESP-01

Trong bước này, chúng ta sẽ flash ESP-01 với bản phác thảo arduino. Nếu bạn chưa bao giờ cài đặt mô-đun ESP-01, bạn có thể làm theo hướng dẫn của tôi để bắt đầu:

Bạn có thể tìm thấy bản phác thảo của tôi trong trang github của tôi:

Trong bản phác thảo, tối thiểu bạn cần thay đổi thông tin sau liên quan đến thiết lập / mạng gia đình của bạn:

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

Trong mạng gia đình của tôi, tôi có 2 điểm truy cập khác nhau phát 2 SSID khác nhau và bản phác thảo này sẽ cho phép dự phòng bằng cách kết nối với SSID tiếp theo nếu kết nối với AP hiện tại bị mất. Nếu bạn chỉ có một SSID, hãy điền cả ssid1 và ssid2 với cùng một giá trị.

Sau khi bạn thực hiện sửa đổi, hãy tải bản phác thảo lên ESP-01 và cắm ESP-01 vào bảng giao diện.

Bước 5: Chạy thử nghiệm

Để kiểm tra xem dự án của chúng tôi có hoạt động hay không, cách dễ nhất là theo dõi các tin nhắn MQTT trong mạng. Để làm điều đó, bạn cần mở một phiên SSH cho nhà môi giới mosquitto và đưa ra lệnh sau:

mosquitto_sub -v -t '#'

Lệnh trên sẽ cho phép chúng tôi xem tất cả các thông báo MQTT đến với nhà môi giới.

Bây giờ, hãy khởi động mạch của chúng tôi và nếu mọi thứ hoạt động, ít nhất trong vài giây nữa, bạn sẽ thấy thông báo MQTT sau:

stat / SumpWaterSensor / LWT Trực tuyến

Bây giờ hãy kiểm tra cảm biến nước bằng cách nhúng 2 dây cảm biến vào cốc nước và bạn sẽ thấy thông báo sau:

tele / SumpWaterSensor WET

Và nếu bạn lấy dây ra khỏi nước, bạn sẽ thấy thông báo sau:

tele / SumpWaterSensor DRY

Nếu bạn nhìn thấy những thông báo đó, dự án của bạn đã thành công.

Tôi cũng bao gồm một số chủ đề MQTT hữu ích trong bản phác thảo mà bạn có thể sử dụng:

"stat / SumpWaterSensorInfo": tin nhắn này được gửi mỗi phút để cung cấp thời gian hoạt động và các thông tin khác.

"cmnd / SumpWaterSensorInfo": ESP-01 sẽ gửi thông tin nếu nhận được chủ đề này có giá trị là '1' (ascii = 49)

"cmnd / SumpWaterSensorCPUrestart": ESP-01 sẽ khởi động lại nếu nhận được chủ đề này có giá trị là '1' (ascii = 49)

"cmnd / SumpWaterSensorBeep": ESP-01 sẽ phát ra âm thanh của loa nếu nó nhận được chủ đề này có giá trị là '1' (ascii = 49)

"cmnd / SumpWaterSensorBeepFreq": Đặt tần số của cảnh báo bằng loa, mặc định = 900 (Hz)

"cmnd / SumpWaterSensorDebug": Bật và đặt mức gỡ lỗi nối tiếp (mặc định là 0 - không gỡ lỗi)

Bước 6: Gắn cảm biến

Gắn cảm biến
Gắn cảm biến
Gắn cảm biến
Gắn cảm biến

Trong đơn đăng ký của tôi, tôi muốn theo dõi mực nước bên trong giếng bơm bể phốt của mình và thông báo cho tôi nếu nước vượt quá công tắc phao của máy bơm bể phốt, điều đó có nghĩa là máy bơm bể phốt của tôi không hoạt động. Tôi luồn dây điện và dùng dây buộc cố định nó dọc theo đường ống thoát nước.

Bước 7: Chạm cuối cùng

Liên lạc cuối cùng
Liên lạc cuối cùng

Bây giờ chúng tôi đã có dự án hoạt động và có thể xuất bản thông điệp MQTT cho nhà môi giới, bước tiếp theo là nghĩ về ý tưởng phải làm gì với điều đó.

Trong dự án của mình, tôi sử dụng Node-RED để nghe / đăng ký chủ đề MQTT "tele / SumpWaterSensor" và thông báo với một số loa gia đình của google nếu phát hiện có nước. Ngoài ra, tôi cũng liên kết luồng với một nút pushbullet để gửi thông báo đến điện thoại Android của tôi.

Tôi cũng đã tạo giao diện người dùng web để xem trạng thái của cảm biến (bật / ngoại tuyến, thời gian hoạt động, v.v.). Đôi khi tôi thấy rằng nó hoạt động ngoại tuyến vài lần trong vòng 1 tuần, từ số liệu thống kê, rất nhiều lần là do ESP-01 bị ngắt kết nối với wifi hoặc MQTT. Nhưng đừng quá lo lắng, bản phác thảo của tôi đã bao gồm quy trình khởi động lại ESP-01 nếu nó tiếp tục không kết nối được với WIFI và / hoặc nhà môi giới MQTT.

Hình ảnh ở bước này cho thấy quy trình Node-RED để thực hiện điều này. Bạn cũng có thể dán luồng từ trang github của tôi vào Node-RED của mình:

Thông báo về trang chủ của Google chỉ là một ví dụ cho dự án này, nhưng tôi nghĩ nó hữu ích và thiết thực nhất. Bạn luôn có thể giao tiếp với trình nghe MQTT khác hoặc thậm chí sử dụng IFTTT để điều khiển các thiết bị khác khi phát hiện có nước.

Chúc vui vẻ…

Đề xuất: