Სარჩევი:

MQTT/Google Home Flood/Water WIFI სენსორი ESP-01: 7 ნაბიჯი
MQTT/Google Home Flood/Water WIFI სენსორი ESP-01: 7 ნაბიჯი

ვიდეო: MQTT/Google Home Flood/Water WIFI სენსორი ESP-01: 7 ნაბიჯი

ვიდეო: MQTT/Google Home Flood/Water WIFI სენსორი ESP-01: 7 ნაბიჯი
ვიდეო: #242 How to Build a Cheap 433 - MQTT Gateway (RFLink, Arduino, ESP8266, Node-Red, Weather Station) 2024, ივლისი
Anonim
MQTT/Google Home Flood/Water WIFI სენსორი ESP-01– ით
MQTT/Google Home Flood/Water WIFI სენსორი ESP-01– ით

ამ სასწავლო ინსტრუქციაში მე გაჩვენებთ თუ როგორ უნდა ავაშენოთ wifi წყალდიდობის/წყლის სენსორი მინიმალური ხარჯებით. მთელი პროექტი 8 დოლარზე ნაკლები დამიჯდება იმ ნაწილებისთვის, რომლებსაც ვიღებ ebay– დან და ჩემი არსებული სათადარიგო ნაწილებიდან.

ამ პროექტში ჩვენ გამოვიყენებთ 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 ჟოლოს პიზე:

ნაბიჯი 1: ნაწილები, რომლებიც დაგჭირდებათ

ნაწილები, რომლებიც დაგჭირდებათ
ნაწილები, რომლებიც დაგჭირდებათ
ნაწილები, რომლებიც დაგჭირდებათ
ნაწილები, რომლებიც დაგჭირდებათ
ნაწილები, რომლებიც დაგჭირდებათ
ნაწილები, რომლებიც დაგჭირდებათ

ნაწილების სია:

(1) ESP-01

(2) 10K ohm რეზისტორი

(1) მცირე სიგნალის ზოგადი NPN ტრანზისტორი (მე გამოვიყენე 2N3904)

(2) გრძელი მავთულები

(1) 5V საერთო კვების წყარო (ეს წრე მოითხოვს 300mA- ზე ნაკლებ მიმდინარეობას)

(1) 3.3V რეგულატორის მოდული AMS1117

(1) Micro-USB To DIP Adapter ქალი კონექტორი PCB Converter წვრილმანი ნაკრები

(1) USB-A to MicroUSB კაბელი.

(1) 8 პინიანი IC სოკეტი-შეიძლება გამოტოვდეს, თუ გსურთ ESP-01 პირდაპირ შეაერთოთ მიკროსქემის დაფაზე. გაჭერით პლასტიკური ხიდები, რომლებიც ქმნიან უფსკრულს რიგებს შორის და შემდეგ წებოვანა 2 სტრიქონს ერთად, იხილეთ ფოტო.

(1) მცირე დანართი პროექტისთვის

ქვემოთ არის დამატებითი ნაწილები, თუ გჭირდებათ ლოკალიზებული სიგნალი დინამიკის/ზუზერის გამოყენებით

(1) ზოგადი PNP ტრანზისტორი, შეარჩიეთ დინამიკის/ზუზერის დენის/სიმძლავრის მოთხოვნის შესაბამისად. ჩემს შემთხვევაში მე ვიყენებ 2N2907 რადგან ჩემი დინამიკი არის მხოლოდ 0.3 W (8 ohm), ის უზრუნველყოფს საკმარის ძალას სპიკერის მართვისთვის. თქვენ შეგიძლიათ აირჩიოთ უფრო დიდი ტრანზისტორი და დინამიკი, თუ გსურთ ხმამაღალი ხმა.

(1) სპიკერი, იხილეთ შენიშვნა ზემოთ PNP ტრანზისტორზე

(1) 100 - 110 ohm რეზისტორი

ნაბიჯი 2: სქემის დიაგრამა

Წრიული დიაგრამა
Წრიული დიაგრამა

პირველი ნაბიჯი იქნება სქემაში ნაჩვენები სქემის შექმნა.

მე ავაშენე 3.3VDC ელექტრომომარაგება ძველი 5 ვ მობილური ტელეფონის დამტენის გამოყენებით AMS1117 3.3VDC მარეგულირებელთან ერთად. ESP-01 სოკეტისთვის ვიყენებ 8 პინიან სტანდარტულ IC სოკეტს და ვჭრი პლასტმასის ხიდებს, რომლებიც ქმნიან უფსკრულს რიგებს შორის, შემდეგ კი ვწებ 2 რიგს ერთმანეთთან.

წრე, რომელიც მე შევიმუშავე, არის წყლის მგრძნობელობა ორ მავთულს შორის. როდესაც წყალი მიაღწევს ორივე მავთულის წვერს, ის შექმნის წინააღმდეგობას დაახლოებით 10K– დან 20K Ohm– მდე. სერიაში 10K ohm R1– ით, ის უზრუნველყოფს მცირე დენს Q1– ის ბაზაზე, რამაც გამოიწვია Q1 გაჯერება და GPIO-2 მიწასთან მიყვანა. R1 აუცილებელია Q1– ის დაცვის უზრუნველსაყოფად იმ შემთხვევისთვის, როდესაც მგრძნობიარე მავთულხლართებზე შემთხვევითი შეწყვეტაა.

R2 არის გამყვანი რეზისტორი, რომელიც საშუალებას აძლევს ESP-01 ჩატვირთვას ფლეშიდან.

რაც შეეხება დამატებით დინამიკს/ზუმერს, თუ თქვენ უბრალოდ გჭირდებათ ESP-01 MQTT- ის სალაპარაკოდ და არ გსურთ ამ ლოკალიზებული განგაშის განხორციელება, შეგიძლიათ ამოიღოთ R2, Q2, სპიკერი და განათავსოთ 10K გამყვანი რეზისტორი GPIO-0- ს შორის. და VCC.

თუ თქვენ არ გრძნობთ Micro-USB to DIP ადაპტერის გამოყენების აუცილებლობას, შეგიძლიათ შეაერთოთ მავთულები 5V PS– ს შორის 3.3V მარეგულირებელი მოდულის საშუალებით. მე მირჩევნია გამოვიყენო ქალი MicroUSB ადაპტერი, ასე რომ შემიძლია გამოვიყენო ნებისმიერი მობილური ტელეფონის დამტენი და MicroUSB კაბელი.

ნაბიჯი 3: წრის შექმნა

წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა
წრის შექმნა

შეაერთეთ ყველა კომპონენტი და ნაწილი PCB– ში წინა გვერდის სქემის მიხედვით და გაჭერით PCB ზომაზე.

მოათავსეთ PCB შიგთავსში, რომელიც მოერგება PCB- ს და სურვილისამებრ დინამიკს. ჩემს შემთხვევაში, ყველა ნაწილი მოთავსდება ტელეფონის პატარა განყოფილების ყუთში, თუმცა საფარი ოდნავ უნდა გავათბო, რომ შეიქმნას ამობურცულობა ისე, რომ ESP-01 მოდული მოერგოს.

ნაბიჯი 4: განათება ESP-01

ამ ეტაპზე, ჩვენ ESP-01 გავანათებთ არდუინოს ესკიზით. თუ თქვენ არასოდეს გაგიბრწყინავთ ESP-01 მოდული, შეგიძლიათ დაიცვათ ჩემი ინსტრუქცია დასაწყებად:

თქვენ შეგიძლიათ ნახოთ ჩემი ესკიზი ჩემს github გვერდზე:

ესკიზში, მინიმუმ თქვენ უნდა შეცვალოთ შემდეგი ინფორმაცია, რომელიც ეხება თქვენს სახლის ქსელს/კონფიგურაციას:

#განსაზღვრეთ MQTT_SERVER "10.0.0.30" const char* ssid1 = "SSID"; const char* password1 = "MYSSIDpassword"; const char* ssid2 = "SSID1"; const char* password2 = "MYSSIDpassword";

ჩემს საშინაო ქსელში, მე მაქვს 2 განსხვავებული წვდომის წერტილი, რომელიც მაუწყებლობს 2 სხვადასხვა SSID- ს და ეს ესკიზი საშუალებას მოგვცემს დავტოვო დამატებითი SSID– თან დაკავშირება, თუკი დღევანდელ AP– სთან კავშირი დაიკარგება. თუ თქვენ გაქვთ მხოლოდ ერთი SSID, შეავსეთ ssid1 და ssid2 ერთი და იგივე მნიშვნელობით.

მას შემდეგ რაც შეცვალეთ, ატვირთეთ ესკიზი ESP-01– ში და შეაერთეთ ESP-01 ინტერფეისის დაფაზე.

ნაბიჯი 5: სატესტო გაშვება

იმის შესამოწმებლად, მუშაობს თუ არა ჩვენი პროექტი, ყველაზე მარტივი იქნება MQTT შეტყობინებების მონიტორინგი ქსელში. ამისათვის თქვენ უნდა გახსნათ SSH სესია კოღოების ბროკერთან და გასცეთ შემდეგი ბრძანება:

mosquitto_sub -v -t '#'

ზემოთ მოყვანილი ბრძანება საშუალებას მოგვცემს ვნახოთ ყველა MQTT შეტყობინება, რომელიც შედის ბროკერში.

ახლა ჩართეთ ჩვენი წრე და თუ ყველაფერი მუშაობს, რამდენიმე წამში თქვენ უნდა ნახოთ შემდეგი MQTT შეტყობინება:

stat/SumpWaterSensor/LWT ონლაინ რეჟიმში

ახლა შეამოწმეთ წყლის სენსორი 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- ს, რომ მოვისმინო/გამოვიწერო "tele/SumpWaterSensor" MQTT თემა და გამოვაცხადო Google– ის რამდენიმე სახლის დინამიკზე წყლის აღმოჩენის შემთხვევაში. გარდა ამისა, მე ასევე დავუკავშირე ნაკადი pushbullet კვანძს, რომ გამოეგზავნა შეტყობინება ჩემს Android ტელეფონზე.

მე ასევე შევქმენი ვებ წინა გვერდი სენსორის სტატუსის სანახავად (ჩართული/ხაზგარეშე, დროულად და ა.შ.). ხანდახან ვხედავდი, რომ ის რამდენჯერმე მიდის ხაზგარეშე 1 კვირის განმავლობაში, სტატისტიკური მონაცემებიდან, ბევრჯერ ეს იმის გამო ხდება, რომ ESP-01 გათიშულია wifi ან MQTT. მაგრამ ძალიანაც ნუ ინერვიულებ, ჩემი ესკიზი შეიცავს რუტინულ გადატვირთვას ESP-01, თუ ის განაგრძობს WIFI და/ან MQTT ბროკერთან დაკავშირების მცდელობას.

სურათი ამ საფეხურზე გვიჩვენებს Node-RED ნაკადს ამის მისაღწევად. თქვენ ასევე შეგიძლიათ ჩასვათ ნაკადი ჩემი github გვერდიდან თქვენს Node-RED– ში:

Google– ის სახლის განცხადება მხოლოდ ერთი მაგალითია ამ პროექტისთვის, მაგრამ მე ვფიქრობ, რომ ის ყველაზე სასარგებლო და პრაქტიკულია. თქვენ ყოველთვის შეგიძლიათ დაუკავშირდეთ სხვა MQTT მსმენელს, ან თუნდაც გამოიყენოთ IFTTT სხვა მოწყობილობების მართვისას წყლის აღმოჩენისთანავე.

Გაერთე…

გირჩევთ: