Πίνακας περιεχομένων:

MQTT/Google Home Flood/Water WIFI Sensor With ESP-01: 7 Steps
MQTT/Google Home Flood/Water WIFI Sensor With ESP-01: 7 Steps

Βίντεο: MQTT/Google Home Flood/Water WIFI Sensor With ESP-01: 7 Steps

Βίντεο: MQTT/Google Home Flood/Water WIFI Sensor With ESP-01: 7 Steps
Βίντεο: Connecting ESP8266 to the Internet | Thingspeak & MQTT Protocol | Webserver connections 2024, Ιούλιος
Anonim
MQTT/Google Home Flood/Water WIFI Sensor With ESP-01
MQTT/Google Home Flood/Water WIFI Sensor With ESP-01

Σε αυτό το διδακτικό, θα σας δείξω πώς να φτιάξετε αισθητήρα WiFi πλημμύρας/νερού με ελάχιστο κόστος. Όλο το έργο μου κοστίζει λιγότερο από $ 8 για ανταλλακτικά που αποκτώ από το ebay και τα υπάρχοντα ανταλλακτικά μου.

Σε αυτό το έργο, θα χρησιμοποιήσουμε το ESP-01 για να παρέχουμε στον πελάτη Wifi και MQTT τον εντοπισμό παρουσίας νερού και προαιρετικά θα χρησιμοποιήσουμε απευθείας συνδεδεμένο ηχείο/βομβητή για να παρέχουμε τοπικό συναγερμό.

Η συγκεκριμένη εφαρμογή μου για το έργο είναι να ανιχνεύσω πλημμύρα/νερό μέσα στο φρεάτιο της αντλίας μου, σε περίπτωση βλάβης της αντλίας φρεατίου. Όταν ανιχνεύεται νερό από 2 ανοιχτά καλώδια, θα έστελνε μήνυμα στον μεσίτη MQTT. Ο μεσίτης MQTT θα μετέφερε στη συνέχεια το μήνυμα στο NodeRED. Με τη λήψη του μηνύματος MQTT, το NodeRED θα έστελνε ανακοίνωση σε πολλές οικιακές συσκευές google και προαιρετικά θα έστελνε μήνυμα στο κινητό/πρόγραμμα περιήγησης μέσω pushbullet

Τώρα φυσικά αυτό το έργο θα λειτουργούσε μόνο εάν η οικιακή ηλεκτρική ενέργεια είναι ενεργοποιημένη. Στο επόμενο διδακτικό θα ενσωματώσω το κύκλωμα δημιουργίας αντιγράφων ασφαλείας της μπαταρίας. Αλλά αν κάνετε το τροφοδοτικό με τον ίδιο τρόπο που έκανα, μπορείτε απλά να συνδέσετε μια τροφοδοσία USB για δημιουργία αντιγράφων ασφαλείας μπαταρίας. Εάν έχετε ένα power-bank που σας επιτρέπει να φορτίζετε και να τροφοδοτείτε ταυτόχρονα, τότε είστε έτοιμοι.

Χρησιμοποιώ το RaspberryPi ZeroW για τη φιλοξενία διακομιστή Mosquitto MQTT και NodeRED. Λειτουργεί πάνω από ένα χρόνο χωρίς κανένα πρόβλημα.

Αναφορές: Raspberry Pi: https://www.switchdoc.com/2016/02/tutorial-installi… Εγκατάσταση NodeRED στο Raspberry Pi:

Βήμα 1: Μέρη που θα χρειαστείτε

Μέρη που θα χρειαστείτε
Μέρη που θα χρειαστείτε
Μέρη που θα χρειαστείτε
Μέρη που θα χρειαστείτε
Μέρη που θα χρειαστείτε
Μέρη που θα χρειαστείτε

Λίστα μερών:

(1) ESP-01

(2) Αντίσταση 10K ohm

(1) γενικό τρανζίστορ NPN μικρού σήματος (χρησιμοποίησα το 2N3904)

(2) μακριά καλώδια

(1) γενική τροφοδοσία 5V (αυτό το κύκλωμα απαιτεί λιγότερο από 300mA ρεύμα)

(1) μονάδα ρυθμιστή 3.3V AMS1117

(1) Προσαρμογέας Micro-USB σε DIP Γυναικεία Συσκευή μετατροπέα PCB DIY Kit

(1) Καλώδιο USB-A σε MicroUSB.

(1) Υποδοχή IC 8 ακίδων-μπορεί να παραλειφθεί εάν θέλετε να συγκολλήσετε το ESP-01 απευθείας στην πλακέτα κυκλώματος. Κόψτε τις πλαστικές γέφυρες που δημιουργούν το κενό μεταξύ των σειρών και, στη συνέχεια, κολλήστε τις 2 σειρές μεταξύ τους, δείτε τη φωτογραφία.

(1) Μικρό περίβλημα για το έργο

Παρακάτω υπάρχουν προαιρετικά μέρη εάν χρειάζεστε τοπικό συναγερμό χρησιμοποιώντας ηχείο/βομβητή

(1) Γενικό τρανζίστορ PNP, επιλέξτε σύμφωνα με την απαίτηση ηχείου/βομβητή/ισχύος. Στην περίπτωσή μου χρησιμοποιώ το 2N2907 αφού το ηχείο μου είναι μόνο 0,3 W (8 ωμ), θα παρέχει αρκετή ισχύ για να οδηγήσει το ηχείο. Θα μπορούσατε να επιλέξετε ένα μεγαλύτερο τρανζίστορ και ηχείο εάν θέλετε πιο δυνατό ήχο.

(1) Ηχείο, δείτε τη σημείωση στο PNP Transistor παραπάνω

(1) Αντίσταση 100 - 110 ohm

Βήμα 2: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Το πρώτο βήμα θα ήταν η δημιουργία του κυκλώματος που φαίνεται στο διάγραμμα.

Δημιούργησα το τροφοδοτικό 3.3VDC χρησιμοποιώντας έναν παλιό φορτιστή κινητών 5V σε συνδυασμό με ρυθμιστή AMS1117 3.3VDC. Για την υποδοχή ESP-01, χρησιμοποιώ μια τυπική υποδοχή IC 8 ακίδων και κόβω τις πλαστικές γέφυρες που δημιουργούν το κενό μεταξύ των σειρών και στη συνέχεια κολλάω τις 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 σε 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 διαφορετικά σημεία πρόσβασης που εκπέμπουν 2 διαφορετικά SSID και αυτό το σκίτσο θα επέτρεπε τον πλεονασμό με τη σύνδεση στο επόμενο SSID εάν χαθεί η επικοινωνία με το τρέχον AP. Εάν έχετε μόνο ένα SSID, συμπληρώστε και το ssid1 και το ssid2 με την ίδια τιμή.

Μόλις πραγματοποιήσετε την τροποποίηση, ανεβάστε το σκίτσο στο ESP-01 και συνδέστε το ESP-01 στην πλακέτα διεπαφής.

Βήμα 5: Δοκιμαστική εκτέλεση

Για να ελέγξετε εάν το έργο μας λειτουργεί, το πιο εύκολο θα ήταν να παρακολουθείτε τα μηνύματα MQTT στο δίκτυο. Για να το κάνετε αυτό, πρέπει να ανοίξετε μια συνεδρία SSH στον μεσίτη κουνουπιών και να εκδώσετε την ακόλουθη εντολή:

mosquitto_sub -v -t '#'

Η παραπάνω εντολή θα μας επιτρέψει να δούμε όλα τα μηνύματα MQTT που έρχονται στον μεσίτη.

Τώρα ενεργοποιήστε το κύκλωμά μας και αν όλα λειτουργούν, σε λίγα δευτερόλεπτα θα πρέπει τουλάχιστον να δείτε το ακόλουθο μήνυμα MQTT:

stat/SumpWaterSensor/LWT Online

Τώρα δοκιμάστε τον αισθητήρα νερού βυθίζοντας τα 2 καλώδια ανίχνευσης σε ένα φλιτζάνι νερό και θα δείτε αυτό το μήνυμα:

tele/SumpWaterSensor WET

Και αν αφαιρέσετε τα καλώδια από το νερό, θα πρέπει να δείτε αυτό το μήνυμα:

tele/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.

Δημιούργησα επίσης ένα web front-end για να βλέπω την κατάσταση του αισθητήρα (on/offline, uptime, κλπ). Μερικές φορές είδα ότι βγαίνει εκτός σύνδεσης μερικές φορές κατά τη διάρκεια 1 εβδομάδας, από τα στατιστικά, πολλές φορές οφείλεται στο ότι το ESP-01 αποσυνδέεται από το wifi ή το MQTT. Αλλά μην ανησυχείτε πολύ, το σκίτσο μου έχει συμπεριλάβει τη ρουτίνα επανεκκίνησης του ESP-01 εάν συνεχίσει να αποτυγχάνει στην προσπάθεια σύνδεσης με μεσίτη WIFI και/ή MQTT.

Η εικόνα σε αυτό το βήμα, δείχνει τη ροή Node-RED για να το επιτύχει αυτό. Μπορείτε επίσης να επικολλήσετε τη ροή από τη σελίδα μου github στο Node-RED σας:

Η ανακοίνωση Google για το σπίτι είναι μόνο ένα παράδειγμα για αυτό το έργο, αλλά νομίζω ότι είναι το πιο χρήσιμο και πρακτικό. Μπορείτε πάντα να συνδεθείτε με άλλους ακροατές MQTT ή ακόμα και να χρησιμοποιήσετε το IFTTT για να οδηγήσετε άλλες συσκευές όταν εντοπιστεί νερό.

Καλα να περνατε…

Συνιστάται: