Οι συσκευές IoT μπορούν να κάνουν ωραία πράγματα, αλλά ένα ουσιαστικό μέρος της εξίσωσης είναι ο τρόπος επικοινωνίας τους. Μπορείτε να το διαχειριστείτε με μια μονάδα ESP-01.
Το να έχετε προϋπολογισμό δεν σημαίνει απαραίτητα ότι δεν μπορείτε να αναλάβετε προηγμένα έργα DIY. Αν ψάχνετε για μια μικρή, προσιτή και βολική μονάδα WiFi για να αναβαθμίσετε τα έργα σας στο IoT, η μονάδα ESP-01 είναι μια εξαιρετική επιλογή. Ωστόσο, η ενσωμάτωση μιας τέτοιας μονάδας με ένα ελαφρύ πρωτόκολλο όπως το MQTT μπορεί να είναι δύσκολη, ειδικά αν είστε νέος στην ανάπτυξη IoT.
Ο προγραμματισμός της πλακέτας ESP-01 από μόνη της μπορεί να είναι δύσκολος σε σύγκριση με άλλες μονάδες της σειράς ESP8266. Ας δούμε όμως τα βασικά όλων των ρυθμίσεων υλικού και λογισμικού που χρειάζεστε για να αρχίσετε να χρησιμοποιείτε τη μονάδα, καθώς και πώς να ρυθμίσετε το MQTT με απλό και διαδικαστικό τρόπο.
Γνωριμία με το Δ.Σ
Το ESP8266 ESP-01 είναι μια μικρή και συμπαγής μονάδα WiFi που συνοδεύεται από ένα τσιπ ESP8266EX, το οποίο είναι ένα εξαιρετικά ενσωματωμένο SoC σχεδιασμένο για εφαρμογές IoT.
Η μονάδα περιλαμβάνει έναν ασύρματο μικροελεγκτή ενός τσιπ με στοίβα πρωτοκόλλου TCP/IP και μπορεί να συνδεθεί σε ασύρματο δίκτυο ή να λειτουργεί ως σημείο πρόσβασης. Η μονάδα ESP-01 διαθέτει επίσης μια κεφαλίδα 2x4 ακίδων που παρέχει πρόσβαση στις ακίδες GPIO, την τροφοδοσία και τη γείωση και τη διεπαφή UART.
Ρύθμιση του υλικού
Η μονάδα δεν είναι καθόλου φιλική προς το breadboard. Για ευκολία, μπορείτε να αγοράσετε μια προκατασκευασμένη σανίδα επέκτασης ή απλώς να ακολουθήσετε τον παλιό τρόπο—χρησιμοποιώντας καλώδια βραχυκυκλωτήρα και μια σανίδα ψωμιού.
Υπάρχει ένας αποκλειστικός προγραμματιστής, ο σειριακός πίνακας μονάδων ESP8266, που μπορεί να διευκολύνει την εμπειρία προγραμματισμού σας. Αν προτιμάτε να ακολουθήσετε αυτή τη διαδρομή, DIYHOBI έχει ένα εύχρηστο σεμινάριο για το πώς να αναβοσβήσετε ένα πρόγραμμα στη μονάδα ESP-01 χρησιμοποιώντας έναν προγραμματιστή (συμπεριλαμβανομένου του προσαρμογέα μονάδας μετατροπέα USB σε TTL CH340G).
Ωστόσο, μπορείτε ακόμα να προγραμματίσετε τη μονάδα χρησιμοποιώντας μια πλακέτα Arduino. Κοιτάξτε το παρακάτω διάγραμμα κυκλώματος για αναφορά.
Αν και μπορεί να φαίνεται δελεαστικό, γενικά δεν συνιστούμε να συνδέσετε τη μονάδα απευθείας στην ακίδα 3,3v του Arduino, καθώς απαιτεί περισσότερο ρεύμα από αυτό που παρέχει η ακίδα. Αντίθετα, συνδέστε το Arduino 5V σε έναν ρυθμιστή τάσης 3,3 V όπως ο LM1117/LD117 και, στη συνέχεια, τροφοδοτήστε τη μονάδα WiFi από τον ρυθμιστή.
Μη συνδέετε το VCC και CH_PD καρφίτσες του ESP στο 5V καρφίτσα του Arduino. Σύνδεση της μονάδας με 5V η δύναμη μπορεί να το καταστρέψει.
Όλοι οι πυκνωτές είναι 10uF και η αντίσταση είναι α 1 Χιλ αντίσταση.
Απαιτήσεις λογισμικού
Η μονάδα ESP-01 χρησιμοποιείται συνήθως με την πλατφόρμα Arduino. Ως εκ τούτου, η ρύθμιση του λογισμικού είναι αρκετά απλή, ειδικά αν είστε εξοικειωμένοι με το Arduino C. Ωστόσο, εάν είστε πιο εξοικειωμένοι με το Raspberry, υπάρχουν πολλά Έργα Raspberry Pi IoT μπορείτε να δοκιμάσετε.
Αυτές είναι οι βασικές απαιτήσεις:
- Μεσίτης ή διακομιστής MQTT (όπως το Mosquitto ή το CloudMQTT).
- Ένα Arduino IDE με τη βιβλιοθήκη πυρήνα ESP8266.
- Η βιβλιοθήκη PubSubClient για το Arduino.
Πρέπει να θυμάστε ότι το να έχετε τον δικό σας διακομιστή MQTT τοπικά σας δίνει ευελιξία στα έργα σας.
Εγκατάσταση των Απαραίτητων Βιβλιοθηκών
Πρώτα, κατεβάστε και εγκαταστήστε το Arduino IDE στον υπολογιστή σας. Μόλις εγκατασταθεί, ανοίξτε το Arduino IDE και μεταβείτε στο Αρχείο > Προτιμήσεις.
Στο Πρόσθετες διευθύνσεις URL διαχειριστή πινάκων πεδίο, εισαγάγετε την ακόλουθη διεύθυνση URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Κάντε κλικ Εντάξει για να κλείσετε το παράθυρο Προτιμήσεις.
Στη συνέχεια, μεταβείτε στο Εργαλεία > Σανίδα > Διευθυντής Δ.Σ.
Στη συνέχεια, αναζητήστε esp8266 και εγκαταστήστε το πακέτο πλακέτας esp8266—αυτό περιλαμβάνει όλες τις απαραίτητες βιβλιοθήκες για τη μονάδα ESP-01.
Για να εγκαταστήσετε τη βιβλιοθήκη PubSubClient, μεταβείτε στο Σκίτσο > Συμπεριλάβετε τη βιβλιοθήκη > Διαχείριση Βιβλιοθηκών.
Ψάχνω για PubSubClient και κάντε κλικ στη βιβλιοθήκη για να την εγκαταστήσετε.
Αφού εγκαταστήσετε όλες τις απαραίτητες βιβλιοθήκες, μπορείτε να ξεκινήσετε τον προγραμματισμό της μονάδας ESP-01. Ένα πράγμα που πρέπει να σημειώσετε όμως, είναι ότι μπορείτε να χρησιμοποιήσετε το Wifi.h που περιλαμβάνεται στη βιβλιοθήκη ή κατεβάστε το ESPWifi.h βιβλιοθήκη και συμπεριλάβετέ το στο σκίτσο σας.
Δημιουργία σύνδεσης μεταξύ ESP-01 και MQTT Broker
Ένας μεσίτης MQTT είναι ένας διακομιστής που λειτουργεί ως ενδιάμεσος μεταξύ των πελατών MQTT. Επιτρέπει στους πελάτες να στέλνουν και να λαμβάνουν μηνύματα ο ένας προς και από τον άλλο μέσω ενός μοντέλου δημοσίευσης-εγγραφής.
Για να συνδέσετε τη μονάδα ESP-01 σε έναν μεσίτη MQTT, θα χρειαστεί να καθορίσετε τη διεύθυνση IP του μεσίτη και τον αριθμό θύρας στον κώδικά σας. Θα χρειαστεί επίσης να παρέχετε ένα μοναδικό αναγνωριστικό πελάτη που προσδιορίζει τη μονάδα ESP-01 στον μεσίτη.
Πρώτα, συμπεριλάβετε τις απαραίτητες βιβλιοθήκες στο επάνω μέρος του σκίτσου σας
#περιλαμβάνω <ESP8266 WiFi.h>
#περιλαμβάνω <PubSubClient.h>
Στη συνέχεια, καθορίστε τις λεπτομέρειες σύνδεσης WiFi και MQTT.
συνθαπανθρακώνω* ssid = "YOUR_SSID";
συνθαπανθρακώνω* κωδικός = "Ο ΚΩΔΙΚΟΣ ΣΑΣ";
συνθαπανθρακώνω* mqtt_server = "YOUR_MQTT_SERVER";
Μην ξεχάσετε να αντικαταστήσετε τα σύμβολα κράτησης θέσης με τα δικά σας στοιχεία σύνδεσης WiFi και MQTT.
Μετά από αυτό, δημιουργήστε έναν πελάτη WiFi και συνδεθείτε στο τοπικό σας δίκτυο WiFi:
WiFiClient espClient;
κενόςsetup_wifi(){
καθυστέρηση (10);
WiFi.begin (ssid, Κωδικός πρόσβασης);
ενώ (WiFi.status() != WL_CONNECTED) {
καθυστέρηση (500);
}
}
Αυτή η συνάρτηση πρέπει να καλείται στο εγκατάσταση () λειτουργία του σκίτσου σας.
Στη συνέχεια, θα χρειαστεί να δημιουργήσετε έναν πελάτη MQTT και να συνδεθείτε στον μεσίτη MQTT:
PubSubClient πελάτης(κυρίως πελάτης);
κενόςεπανασύνδεση(){
ενώ (!client.connected()) {
αν (client.connect("ESP01", mqtt_user, mqtt_password)) {
// Εγγραφείτε σε ένα θέμα
client.subscribe("δοκιμή/θέμα");
} αλλού {
καθυστέρηση (5000);
}
}
}
Αφού συνδεθείτε με τον μεσίτη MQTT, μπορείτε να ξεκινήσετε τη δημοσίευση και την εγγραφή σας σε θέματα.
Δημοσίευση δεδομένων από το ESP-01 στο MQTT Broker
Τώρα που έχετε συνδέσει επιτυχώς τη μονάδα ESP01 με τον μεσίτη MQTT, ας δούμε πώς μπορείτε να δημοσιεύσετε δεδομένα από το ESP-01 στον μεσίτη.
Για να δημοσιεύσετε δεδομένα, χρησιμοποιήστε το client.publish() λειτουργία για δημοσίευση μηνύματος στο στο Θέμα θέμα.
client.publish("inTopic", "Γεια από το ESP-01");
Αυτό θα δημοσιεύσει το μήνυμα "Hello from ESP-01" στο στο Θέμα θέμα.
Μπορείτε επίσης να δημοσιεύσετε δεδομένα αισθητήρα από το ESP-01 στον μεσίτη. Για παράδειγμα, εάν έχετε έναν αισθητήρα θερμοκρασίας συνδεδεμένο στο ESP-01, μπορείτε να δημοσιεύσετε τα δεδομένα θερμοκρασίας στον μεσίτη όπως φαίνεται παρακάτω.
φλοτέρ θερμοκρασία = 25.5;
Σειρά θερμοκρασίαΣυμβολοσειρά = Σειρά(θερμοκρασία);
απανθρακώνω θερμοκρασίαΧαρ[5];
συμβολοσειρά θερμοκρασίας.toCharArray(θερμοκρασίαΧαρ, 5);
client.publish("Θερμοκρασία", θερμοκρασίαChar);
Αυτό θα δημοσιεύσει τα δεδομένα θερμοκρασίας στο Θερμ θέμα.
Τα δεδομένα μπορούν να δημοσιεύονται σε βρόχο ή σε τακτά χρονικά διαστήματα, ανάλογα με τις απαιτήσεις του έργου σας. Βεβαιωθείτε ότι δεν κατακλύζετε τον μεσίτη με πάρα πολλά δεδομένα και ότι δημοσιεύετε σε εύλογο χρονικό διάστημα.
Εγγραφή σε θέματα MQTT και λήψη δεδομένων στο ESP-01
Για να εγγραφείτε σε ένα θέμα, χρησιμοποιήστε το client.subscribe() λειτουργία. Για την παρακάτω περίπτωσή μας, ο πελάτης εγγράφεται στο εκτός θέματος θέμα.
client.subscribe("outTopic");
Αφού εγγραφείτε σε ένα θέμα, μπορείτε να λαμβάνετε μηνύματα που δημοσιεύονται σε αυτό το θέμα χρησιμοποιώντας το client.loop() λειτουργία στο βρόχος() λειτουργία στο παρακάτω σκίτσο:
κενόςβρόχος(){
αν (!πελάτης.συνδεδεμένος()) {
reconnect();
}
πελάτης.βρόχος();
}
Αυτό θα ελέγχει συνεχώς για νέα μηνύματα και θα εκτελεί τη λειτουργία επανάκλησης όταν ληφθεί ένα νέο μήνυμα.
Για να χειριστείτε τα ληφθέντα μηνύματα, ορίστε μια λειτουργία επανάκλησης όπως αυτή που φαίνεται παρακάτω:
κενόςεπανάκληση(απανθρακώνω* θέμα, ψηφιόλεξη* ωφέλιμο φορτίο, ανυπόγραφο ενθ μήκος){
// Εκτυπώστε το ληφθέν μήνυμα
Κατα συρροη.Τυπώνω("Έλαβε μήνυμα για το θέμα: ");
Κατα συρροη.Τυπώνω(θέμα);
Κατα συρροη.Τυπώνω(". Μήνυμα: ");
Για (ενθ i=0;ΕγώΚατα συρροη.Τυπώνω((απανθρακώνω)φορτίο επί πληρωμή[Εγώ]);
}
Κατα συρροη.println();
}
Αυτή η λειτουργία θα κληθεί όταν ληφθεί ένα νέο μήνυμα για το εγγεγραμμένο θέμα. Θα εκτυπώσει το ληφθέν μήνυμα στη σειριακή οθόνη.
Χρήση επιπέδων QoS (Ποιότητα υπηρεσίας) και λειτουργιών ασφαλείας
Μία από τις πιο σημαντικές τεχνικές που χρησιμοποιούνται για τον χειρισμό αιτημάτων είναι η χρήση των επιπέδων QoS (Quality of Service) για τα μηνύματά σας MQTT. Τα επίπεδα QoS καθορίζουν τον τρόπο με τον οποίο ο μεσίτης και οι συνδρομητές πρέπει να χειρίζονται τα μηνύματά σας. Υπάρχουν τρία επίπεδα QoS: 0, 1 και 2.
Το επίπεδο QoS 0 είναι το λιγότερο αξιόπιστο, καθώς τα μηνύματα αποστέλλονται μόνο μία φορά και δεν είναι εγγυημένη η παράδοση στον συνδρομητή. Το επίπεδο QoS 1 είναι πιο αξιόπιστο, καθώς τα μηνύματα αποστέλλονται τουλάχιστον μία φορά και είναι εγγυημένα ότι θα παραδοθούν στον συνδρομητή τουλάχιστον μία φορά. Το επίπεδο QoS 2 είναι το πιο αξιόπιστο, καθώς τα μηνύματα αποστέλλονται ακριβώς μία φορά και είναι εγγυημένα ότι θα παραδοθούν στον συνδρομητή ακριβώς μία φορά. Ο τρόπος επικοινωνίας των συσκευών σας συμφωνεί με άλλους κοινά ζητήματα ασφάλειας και επιδιορθώσεις του Διαδικτύου των πραγμάτων (IoT). θέλετε να μείνετε στην κορυφή.
Για να χρησιμοποιήσετε τα επίπεδα QoS, μπορείτε να καθορίσετε το επιθυμητό επίπεδο κατά τη δημοσίευση μηνυμάτων χρησιμοποιώντας το client.publish() λειτουργία:
client.publish("θέμα", "Γειά σου Κόσμε!", 1);
Αυτό θα δημοσιεύσει το μήνυμα Γειά σου Κόσμε! στο θέμα θέμα με επίπεδο QoS 1.
Μια άλλη προηγμένη τεχνική είναι η χρήση Τελευταία Βούληση και Διαθήκη (LWT) μηνύματα. Τα μηνύματα LWT είναι μηνύματα που αποστέλλονται από τον μεσίτη όταν ένας πελάτης αποσυνδεθεί απροσδόκητα. Πιστεύουμε ότι αυτό είναι σημαντικό για τον εντοπισμό συσκευών εκτός σύνδεσης ή για την ενεργοποίηση ενεργειών όταν μια συσκευή αποσυνδέεται.
Για να χρησιμοποιήσετε μηνύματα LWT, μπορείτε να καθορίσετε το μήνυμα LWT όταν συνδέεστε στον μεσίτη χρησιμοποιώντας το client.setWill() λειτουργία:
client.setWill("κατάσταση", "εκτός σύνδεσης", 1, αληθής);
Αυτό θα ρυθμίσει το μήνυμα LWT σε εκτός σύνδεσης στο κατάσταση θέμα με επίπεδο QoS 1 και τη σημαία διατήρησης ρυθμισμένη σε αληθής.
Προετοιμασία για το επόμενο έργο σας στο IoT
Η μονάδα ESP-01 είναι μια προσιτή και συμπαγής λύση για έργα IoT και η χρήση της με το MQTT μπορεί να οδηγήσει το έργο σας στο επόμενο επίπεδο. Αν και η αρχική ρύθμιση μπορεί να είναι τρομακτική, τα οφέλη του MQTT, όπως η ελαφριά επικοινωνία και η υψηλή επεκτασιμότητα, το καθιστούν μια αξιόλογη επένδυση.