Πίνακας περιεχομένων:
- Βήμα 1: ESP32 Pinout
- Βήμα 2: Pinout NodeMCU
- Βήμα 3: MQTT
- Βήμα 4: Συναρμολόγηση
- Βήμα 5: Διάγραμμα
- Βήμα 6: Βιβλιοθήκες
- Βήμα 7: Βιβλιοθήκη ανάγνωσης θερμοκρασίας και υγρασίας
- Βήμα 8: Βιβλιοθήκη MQTT
- Βήμα 9: MQTT.ino
- Βήμα 10: Γραφικό
- Βήμα 11: Αρχεία
Βίντεο: IBM Watson Με ESP32 ως τελικό σημείο: 11 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Δημοσιεύω σήμερα το πρώτο βίντεο μιας σειράς σχετικά με τον τρόπο τοποθέτησης μιας συσκευής Endpoint με το ESP32 και, στη συνέχεια, αποστολή της σε μια υπηρεσία cloud. Σε αυτό το συγκεκριμένο επεισόδιο, θα σας δείξω πώς να στέλνετε πληροφορίες από έναν αισθητήρα DHT22 χρησιμοποιώντας το πρωτόκολλο MQTT για την IBM Watson.
Αρχικά θα εισαγάγουμε το MQTT, το οποίο είναι ένα πρωτόκολλο από μηχανή σε μηχανή που χρησιμοποιείται στο IoT (Internet of Things). Θα στείλουμε επίσης δεδομένα από τον αισθητήρα θερμοκρασίας και υγρασίας χρησιμοποιώντας αυτό το πρωτόκολλο και στη συνέχεια θα ελέγξουμε το γράφημα με αυτά τα δεδομένα σε μια ιστοσελίδα.
Βήμα 1: ESP32 Pinout
Τοποθέτησα εδώ το Pinout του ESP32, το οποίο χρησιμοποιούμε στο παράδειγμά μας. Ωστόσο, θέλω να ξεκαθαρίσω ότι το έργο λειτουργεί επίσης με το ESP8266, ακόμη και με τον ίδιο πηγαίο κώδικα.
Βήμα 2: Pinout NodeMCU
Βήμα 3: MQTT
Το MQTT είναι ένα πρωτόκολλο από μηχανή σε μηχανή που χρησιμοποιείται στο IoT. Σχεδιάστηκε για να είναι ελαφρύ και γρήγορο. Χρησιμοποιεί ένα σύστημα εγγραφής/δημοσίευσης, όπου μια συσκευή "εγγράφεται" σε ένα θέμα με τις συγκεκριμένες πληροφορίες που σας ενδιαφέρουν και στη συνέχεια λαμβάνει τις πληροφορίες κάθε φορά που μια συσκευή δημοσιεύει δεδομένα σχετικά με αυτό το θέμα.
Όπως ένα πρόγραμμα διακομιστή, το MQTT χρειάζεται λογισμικό. Αυτό λέγεται Broker. Σε αυτή τη συγκεκριμένη περίπτωση, θα χρησιμοποιήσουμε την υπηρεσία IoM Bluemix IoT. Αυτή η υπηρεσία είναι δωρεάν για δοκιμές τελικού σημείου.
Στη συνέχεια, πρέπει να έχουμε ένα κινητό τηλέφωνο ή tablet με την Εφαρμογή, δηλαδή ως πελάτη MQTT. Έχουμε επίσης την πλευρά της συσκευής, η οποία είναι η πλευρά ESP με θερμόμετρο. Αυτό αποστέλλει τα δεδομένα θερμοκρασίας και υγρασίας στο Bluemix, το οποίο στη συνέχεια στέλνει αυτές τις πληροφορίες στην πλευρά της εφαρμογής.
Βήμα 4: Συναρμολόγηση
Το κύκλωμά μας αποτελείται από μια αντίσταση 4,7k Ohms μεταξύ του 3,3v και την ακίδα δεδομένων, συν ένα DHT22 συνδεδεμένο στο GPIO4 ενός ESP32 ή NodeMCU. Έτσι, αυτό είναι το τελικό μας σημείο.
Βήμα 5: Διάγραμμα
Δείχνω εδώ τους διάφορους τρόπους συνεργασίας με το MQTT Local Broker. Τοποθέτησα δύο μοντέλα διαγραμμάτων. Στο βίντεο, μιλάω για μια κατάσταση χρησιμοποιώντας ένα Raspberry Pi για να ανοίξετε μια πύλη, για παράδειγμα.
Στην παραπάνω εικόνα, έχουμε την πρώτη αρχιτεκτονική που χρησιμοποιεί έναν τοπικό μεσίτη με επιμονή και μια δεύτερη αρχιτεκτονική από κάτω που επικοινωνεί μόνο με τον μεσίτη στο cloud.
Όπως φαίνεται στο διάγραμμα, ο αισθητήρας μας στέλνει στη συνέχεια τα δεδομένα θερμοκρασίας και υγρασίας στην IBM Watson. Είναι σημαντικό να τονιστεί ότι η IBM Watson δεν γράφει τα δεδομένα σε αυτήν την περίπτωση, καθώς εμφανίζεται μόνο σε γραφήματα. Αυτό συμβαίνει επειδή δεν θα αντιμετωπίσουμε καμία λειτουργία βάσης δεδομένων στο σημερινό παράδειγμα, αλλά θα υποδείξουμε μόνο την πρόσβαση στη σελίδα Quickstart (https://quickstart.internetofthings.ibmcloud.com/), η οποία θα εμφανίζει την κατάσταση του Endpoint. Το σχήμα είναι απλό και χρησιμοποιεί WiFi για την αποστολή δεδομένων.
Βήμα 6: Βιβλιοθήκες
Στο Arduino IDE, μεταβείτε στο μενού Sketch -> Include Library -> Manage Libraries…
Στην οθόνη που ανοίγει, πληκτρολογήστε στην αναζήτηση "DHT" και εγκαταστήστε τη lib "βιβλιοθήκη αισθητήρων DHT"
Στη συνέχεια, πληκτρολογήστε "PubSubClient" και εγκαταστήστε το lib "PubSubClient".
Βήμα 7: Βιβλιοθήκη ανάγνωσης θερμοκρασίας και υγρασίας
Βήμα 8: Βιβλιοθήκη MQTT
Βήμα 9: MQTT.ino
Ξεκινάμε τον πηγαίο κώδικα ελέγχοντας ποιο ESP χρησιμοποιείται και εισάγοντας την αντίστοιχη βιβλιοθήκη και WiFi. Εξακολουθούμε να συμπεριλαμβάνουμε τα MQTT Libs και τον αισθητήρα θερμοκρασίας και υγρασίας.
// Verifica qual ESP está sendo utilizado // e importa a lib e wifirespondente #if defined (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
Στη συνέχεια, ορίζουμε τα εξής: το διάστημα μεταξύ υποβολής δεδομένων, τον διακομιστή MQTT που θα χρησιμοποιηθεί, τις πληροφορίες εκτύπωσης στο γράφημα και το αναγνωριστικό. Επισημάνουμε επίσης πώς πρέπει να είναι η συμβολοσειρά QUICK_START.
// Intervalo entre os envios #define INTERVAL 1000 // Substitua pelo SSID θα σας ενημερώσει #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_S.messaging.internetofthings.ibmcloud.com "// Nome do tópico que devemos enviar os dados // para que eles apareçam nos gráficos #define TOPIC_NAME" iot-2/evt/status/fmt/json "// ID que usaremos para conectar // QUICK_START deve permanecer como está const String QUICK_START = "d: quickstart: arduino:";
Σε αυτό το βήμα, ορίζουμε ένα μοναδικό αναγνωριστικό. Σε αυτό το παράδειγμα, χρησιμοποιούμε τη διεύθυνση MAC της συσκευής που χρησιμοποιούμε. Αυτό θα χρησιμεύσει ως αναγνώριση στον ιστότοπο QuickStart. Εδώ, συνδέουμε επίσης το αναγνωριστικό Quickstart με το αναγνωριστικό της συσκευής μας.
// No DEVICE_ID você deve mudar para um id único // Aqui nesse exemplo utilisamos o MAC Address // do dispositivo que estamos utilisando // Δεν εξυπηρετεί την ταυτότητα χωρίς ιστότοπο //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ID = "240ac40e3fd0"; // Concatemos o id do quickstart com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
Στη συνέχεια, διαμορφώνουμε το MQTT και το WiFi, καθώς και τα αντικείμενα και τις μεταβλητές που σχετίζονται με τις τιμές θερμοκρασίας και υγρασίας.
// Cliente WiFi que o MQTT ή χρήση του conectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, porta // e o cliente WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio foi feito long lastPublishTime = 0; // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura float temperature = 0; // Variável para guardarmos o valor da umidade float υγρασία = 0;
MQTT.ino - ρύθμιση
Στη ρύθμιση, θα αρχικοποιήσουμε το DHT και θα συνδεθούμε στο δίκτυο WiFi και τον διακομιστή MQTT.
void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }
MQTT.ino - βρόχος
Στο Loop, συλλέγουμε τα δεδομένα των αισθητήρων για να δημιουργήσουμε το Json που θα δημοσιευτεί στο θέμα που η IBM Watson αναμένει να δημιουργήσει το γράφημα.
void loop () {// Tempos agora em milisegundos long now = millis (); // Se o tempo desde o último envio for maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Δημοσίευση μηνύματος:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico onde o servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}
MQTT.ino - setupWiFi
Εδώ, έχουμε τη λειτουργία που είναι υπεύθυνη για τη σύνδεση στο δίκτυο WiFi.
// Função responsável for conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Σύνδεση σε"); Serial.print (SSID); // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID, PASSWORD); // Espera até que a conexão com a rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi συνδεδεμένο"); }
MQTT.ino - σύνδεσηMQTTServer
Σε αυτό το βήμα, χρησιμοποιούμε τη συνάρτηση που είναι υπεύθυνη για τη σύνδεση στον διακομιστή MQTT.
// Λειτουργία απόκρισης για διακομιστή ή διακομιστή MQTTvoid connectMQTTServer () {Serial.println ("Σύνδεση σε διακομιστή MQTT …"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("συνδεδεμένο"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}
MQTT.ino - readSensor
Σε αυτή τη λειτουργία ορίζεται η ανάγνωση των δεδομένων θερμοκρασίας και υγρασίας.
// Função responsável for realizar a leitura // da temperatura e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura temperature = value? } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade υγρασία = τιμή? }}
MQTT.ino - createJsonString
Εδώ, έχουμε τη συνάρτηση που είναι υπεύθυνη για τη δημιουργία ενός Json με τα δεδομένα που διαβάζονται.
// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; δεδομένα+= "\" d / ": {"; δεδομένα+= "\" θερμοκρασία / ":"; δεδομένα+= συμβολοσειρά (θερμοκρασία); δεδομένα+= ","; δεδομένα+= "\" υγρασία / ":"; δεδομένα+= συμβολοσειρά (υγρασία); δεδομένα+= "}"; δεδομένα+= "}"; επιστροφή δεδομένων? }
Βήμα 10: Γραφικό
Για να δείτε το γράφημα του αισθητήρα, μεταβείτε
στο
Στο πεδίο Αναγνωριστικό συσκευής, εισαγάγετε το DEVICE_ID που ορίσατε στον κώδικα.
- Είναι σημαντικό να αλλάξετε αυτό το αναγνωριστικό συσκευής σε ένα μοναδικό αναγνωριστικό, που χρησιμοποιείται μόνο για την αποφυγή σύγκρουσης με δεδομένα που αποστέλλονται από άλλο άτομο.
Τέλος, αποδεχτείτε τους όρους και κάντε κλικ στο κουμπί Μετάβαση.
Σε αυτό το έργο, δοκιμάσαμε το Endpoint μας στον διακομιστή IBM Watson. Αυτό διασφαλίζει ότι το πρόγραμμα Arduino μας επικοινωνεί σωστά με την πλατφόρμα και ότι τα δεδομένα που στέλνουμε θα λαμβάνονται ομαλά από μια υπηρεσία cloud, εάν δημιουργήσουμε έναν λογαριασμό.
Σε ένα επερχόμενο βίντεο αυτής της σειράς, θα σας δείξω πώς να συνδέεστε στην IBM Watson, καθώς και να γράφετε στη βάση δεδομένων αυτής ή μιας άλλης υπηρεσίας cloud, όπως η Google, η Amazon, μεταξύ άλλων.
Βήμα 11: Αρχεία
Κατεβάστε τα αρχεία:
ΕΓΩ ΔΕΝ
Συνιστάται:
CPE 133 Τελικό έργο Δεκαδικό σε δυαδικό: 5 βήματα
CPE 133 Final Project Decimal to Binary: Οι δυαδικοί αριθμοί είναι ένα από τα πρώτα πράγματα που έρχονται στο μυαλό όταν σκεφτόμαστε την ψηφιακή λογική. Ωστόσο, οι Δυαδικοί Αριθμοί μπορεί να είναι μια δύσκολη ιδέα για όσους είναι νέοι σε αυτό. Αυτό το έργο θα βοηθήσει όσους είναι νέοι και έμπειροι με δυαδικούς αριθμούς
Απλός αυτοματοποιημένος σιδηρόδρομος από σημείο σε σημείο: 10 βήματα (με εικόνες)
Απλό αυτοματοποιημένο μοντέλο σιδηροδρόμου από σημείο σε σημείο: Οι μικροελεγκτές Arduino είναι εξαιρετικοί για την αυτοματοποίηση μοντέλων σιδηροδρόμων. Η αυτοματοποίηση των διατάξεων είναι χρήσιμη για πολλούς σκοπούς, όπως η τοποθέτηση της διάταξής σας σε μια οθόνη όπου η λειτουργία διάταξης μπορεί να προγραμματιστεί για την εκτέλεση τρένων σε μια αυτοματοποιημένη ακολουθία. Το l
Ταλαντωτής ελεγχόμενης τάσης από σημείο σε σημείο: 29 Βήματα
Point-to-point Voltage Controlled Oscillator: Γεια! Βρήκατε ένα έργο όπου παίρνουμε ένα πραγματικά φθηνό μικροτσίπ, ένα CD4069 (ωραίο), και κολλάμε μερικά μέρη σε αυτό, και παίρνουμε έναν πολύ χρήσιμο ταλαντωτή ελεγχόμενης τάσης pitch-tracking! Η έκδοση που θα κατασκευάσουμε έχει μόνο κυματομορφή πριονιού ή ράμπας, η οποία είναι
PHYS 339 Τελικό έργο: Simple Theremin: 3 βήματα
PHYS 339 Final Project: Simple Theremin: Ως μουσικός ψυχαγωγίας και φυσικός, πάντα πίστευα ότι εκεί είναι το πιο cool ηλεκτρονικό όργανο. Ο ήχος τους είναι σχεδόν υπνωτικός όταν παίζεται από έναν επαγγελματία και η θεωρία των ηλεκτρονικών που απαιτείται για να λειτουργήσουν είναι αρκετά
Φορετό - Τελικό έργο: 7 βήματα
Wearable - Final Project: ΕΙΣΑΓΩΓΗ Σε αυτό το έργο είχαμε το καθήκον να φτιάξουμε ένα λειτουργικό φορετό πρωτότυπο βασισμένο σε λειτουργίες cyborg. Γνωρίζατε ότι η καρδιά σας συγχρονίζεται με το BPM της μουσικής; Μπορείτε να προσπαθήσετε να ελέγξετε τη διάθεσή σας μέσω της μουσικής, αλλά τι γίνεται αν αφήσουμε να μην