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

ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 Βήματα
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 Βήματα

Βίντεο: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 Βήματα

Βίντεο: ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT: 4 Βήματα
Βίντεο: Tasmota #01 | Closet Led Project | From Introduction to Timers in Rules 2024, Νοέμβριος
Anonim
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT
ESP-NOW Home Automation Esp8266 Raspberry Pi MQTT

Σε αυτό το Instructable σας δείχνω πώς χρησιμοποίησα το ESP-NOW στον αυτοματισμό του σπιτιού μου. Στο σχηματικό μπορείτε να δείτε τις ροές επικοινωνίας

Θα σου δείξω:

  • πώς λειτουργεί ο αποστολέας
  • πώς λειτουργεί ο δέκτης
  • πώς λειτουργεί η σειριακή επικοινωνία με ένα Raspberry Pi

Δεν δείχνω πώς λειτουργεί το MQTT και ο αυτοματισμός του σπιτιού μου, μπορείτε να βρείτε άλλες καλές οδηγίες για αυτό.

Συντελεστές: Αυτό το Instructable εμπνεύστηκε από:

Βίντεο #172 από τον Andreas Spiess

www.esploradores.com/practica-6-conexion-es…

Βήμα 1: Δημιουργία αντιγράφων ασφαλείας μέσω WiFi και MQTT

Δημιουργία αντιγράφων ασφαλείας μέσω WiFi και MQTT
Δημιουργία αντιγράφων ασφαλείας μέσω WiFi και MQTT

Διαπίστωσα ότι το ESP-NOW είναι εξαιρετικά γρήγορο και αρκετά αξιόπιστο, αλλά μερικές φορές αποτυγχάνει. Στο πρόγραμμά μου πρόσθεσα ένα αντίγραφο ασφαλείας μέσω κανονικής σύνδεσης WiFi και MQTT.

Βήμα 2: Το τηλεχειριστήριο/αποστολέας

Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας
Το τηλεχειριστήριο/αποστολέας

Στο πρώτο σχήμα βλέπετε πώς λειτουργεί το πρόγραμμα του αποστολέα:

  1. Το esp8266 ξεκινά από την ενεργοποίηση ή από την επαναφορά
  2. Το ESP-NOW προετοιμάζεται
  3. Η μονάδα στέλνει ESP-NOW για καθορισμένο χρόνο
  4. Η μονάδα ελέγχει εάν το μήνυμα ESP-NOW ελήφθη από τον δέκτη σε μια λειτουργία επανάκλησης.

    1. Εάν ελήφθη το μήνυμα ESP-NOW, η μονάδα πηγαίνει σε βαθύ ύπνο χαμηλής ισχύος
    2. Εάν το μήνυμα ESP-NOW δεν ελήφθη, η μονάδα ξεκινά μια σύνδεση WiFi και μια σύνδεση MQTT ως εφεδρική σύνδεση.

Το πρόγραμμα για τον αποστολέα βρίσκεται στο Github μου (Master_sender.ino). Τα προγράμματα στέλνουν τόσο το θέμα όσο και το μήνυμα για τον αυτοματισμό του σπιτιού MQTT σε ένα συνδυασμένο μήνυμα ESP-NOW, σε συνδυασμό με το σύμβολο "&" για εύκολο διαχωρισμό στον δέκτη.

Έφτιαξα δύο διαφορετικά τηλεχειριστήρια/αποστολείς:

Αποστολέας 1: Το esp8266 βρίσκεται σε βαθύ ύπνο και ενεργοποιείται με επαναφορά. Το led στο κουμπί ανάβει και μειώνεται όταν τελειώσει η μονάδα. Εάν η τάση της μπαταρίας είναι χαμηλή, το led αναβοσβήνει. Εάν το ESP-NOW απέτυχε, το led αναβοσβήνει πριν αλλάξετε σε συνδέσεις WiFi/MQTT. Το esp8266 τροφοδοτείται από μπαταρία LiPo με ρυθμιστή τάσης HT7333 σε 3.3V

Αποστολέας 2: Το esp8266 απενεργοποιείται και τροφοδοτείται πατώντας το κουμπί. Κανονικά η σύνδεση ESP-NOW γίνεται μετά το κουμπί «κλικ». Το esp8266 τροφοδοτείται απευθείας από μπαταρία LiPo. Δεν ξέρω αν το esp8266 καταστραφεί από την υψηλή τάση μιας πλήρως φορτισμένης μπαταρίας (έως 4,2 V) όταν τροφοδοτείται με μόλις λίγα 100 ms. Είναι υψηλότερη από τις προδιαγραφές (3,0 - 3,6V).

Σημείωση: εάν η ισχύς της μπαταρίας είναι χαμηλή, το ESP-NOW αποτυγχάνει.

Βήμα 3: Ο δέκτης - Υλικό (esp8266 και Raspberry Pi)

Ο Δέκτης - Υλικό (esp8266 και Raspberry Pi)
Ο Δέκτης - Υλικό (esp8266 και Raspberry Pi)
Ο Δέκτης - Υλικό (esp8266 και Raspberry Pi)
Ο Δέκτης - Υλικό (esp8266 και Raspberry Pi)
Ο Δέκτης - Υλικό (esp8266 και Raspberry Pi)
Ο Δέκτης - Υλικό (esp8266 και Raspberry Pi)

Η περιγραφή του δέκτη χωρίζεται σε δύο μέρη:

  1. Σκεύη, εξαρτήματα
  2. Λογισμικό

Το υλικό

Ο παραλήπτης esp-01 συνδέεται με το Raspberry Pi Zero που τρέχει το σύστημα αυτοματισμού του σπιτιού μου (Openhab2) και το Node Red.

Στο σχηματικό σχήμα εμφανίζονται οι απλές συνδέσεις:

  • RX του esp-01 έως TX του RasPi
  • TX του esp-01 έως RX του RasPi
  • GND σε GND
  • Το esp-01 VCC τροφοδοτείται από τον ακροδέκτη 3.3V του Raspi
  • Στο esp-01 τόσο το RST όσο και το CH_PD τραβιούνται ψηλά.

Έφτιαξα ένα σύνδεσμο διασύνδεσης για να το τοποθετήσω εύκολα

Σε μια εικόνα μπορείτε να δείτε τις καλωδιακές συνδέσεις μου με το Raspberry Pi 3 (το οποίο έχει το ίδιο pinout, αλλά χρησιμοποίησα ένα άλλο pin 3.3V για σύνδεση στο CH_PD).

Το esp-01 προγραμματίστηκε όπως φαίνεται στο άλλο μου Instructable (δείτε βήμα 3).

Βήμα 4: Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)

Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)
Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)
Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)
Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)
Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)
Ο Δέκτης - Λογισμικό (Σειριακό, Κόμβος Κόκκινο, MQTT)

Πρόγραμμα στο esp8266

Το πρόγραμμα για τον δέκτη esp-01 βρίσκεται στο Github μου (Master_sender.ino). Το πρόγραμμα είναι πραγματικά απλό, εκτυπώνει μόνο το ληφθέν μήνυμα ESP-NOW στη σειριακή θύρα στο Raspberry Pi.

Σειριακή θύρα

Στο Raspberry Pi, πρέπει να ενεργοποιήσετε τη σειριακή θύρα (στο raspbian, εκτελέστε 'sudo raspi-config') για κανονική σειριακή επικοινωνία.

Το όνομα της σειριακής θύρας είναι:

  • Raspberry Pi Zero: /dev /ttyAMA0
  • Raspberry Pi 3: /dev /ttyS0

Μπορείτε να ελέγξετε τη σειριακή θύρα εκτελώντας το 'dmesg | grep tty 'ή' ls /dev '

Κόμβος Κόκκινο

Στο Κόμβος Κόκκινο, επιλέξτε τον κόμβο σειριακής εισόδου και ρυθμίστε τη σειριακή θύρα (δείτε τις συνημμένες εικόνες). Σημειώστε το baudrate της σειριακής σύνδεσης, αυτό πρέπει να ταιριάζει με το baudrate όπως έχει προγραμματιστεί στο esp8266.

Η έξοδος του σειριακού κόμβου μετασχηματίζεται από έναν κόμβο συνάρτησης που χωρίζει το μήνυμα στο σύμβολο '&' και ορίζει το msg.topic και το msg.payload. Η έξοδος της συνάρτησης οδηγείται στον κόμβο εξόδου mqtt που στέλνει το μήνυμα στον διακομιστή MQTT. Σημειώστε ότι το πεδίο θέματος του κόμβου mqtt είναι κενό, επειδή το θέμα έχει οριστεί στο μήνυμα.

Συνιστάται: