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

IBM Watson Με ESP32 ως τελικό σημείο: 11 βήματα
IBM Watson Με ESP32 ως τελικό σημείο: 11 βήματα

Βίντεο: IBM Watson Με ESP32 ως τελικό σημείο: 11 βήματα

Βίντεο: IBM Watson Με ESP32 ως τελικό σημείο: 11 βήματα
Βίντεο: Webinar Indobot "IoT Support Our Daily Life" 2024, Ιούλιος
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Δημοσιεύω σήμερα το πρώτο βίντεο μιας σειράς σχετικά με τον τρόπο τοποθέτησης μιας συσκευής Endpoint με το ESP32 και, στη συνέχεια, αποστολή της σε μια υπηρεσία cloud. Σε αυτό το συγκεκριμένο επεισόδιο, θα σας δείξω πώς να στέλνετε πληροφορίες από έναν αισθητήρα DHT22 χρησιμοποιώντας το πρωτόκολλο MQTT για την IBM Watson.

Αρχικά θα εισαγάγουμε το MQTT, το οποίο είναι ένα πρωτόκολλο από μηχανή σε μηχανή που χρησιμοποιείται στο IoT (Internet of Things). Θα στείλουμε επίσης δεδομένα από τον αισθητήρα θερμοκρασίας και υγρασίας χρησιμοποιώντας αυτό το πρωτόκολλο και στη συνέχεια θα ελέγξουμε το γράφημα με αυτά τα δεδομένα σε μια ιστοσελίδα.

Βήμα 1: ESP32 Pinout

Τοποθέτησα εδώ το Pinout του ESP32, το οποίο χρησιμοποιούμε στο παράδειγμά μας. Ωστόσο, θέλω να ξεκαθαρίσω ότι το έργο λειτουργεί επίσης με το ESP8266, ακόμη και με τον ίδιο πηγαίο κώδικα.

Βήμα 2: Pinout NodeMCU

NodeMCU Pinout
NodeMCU Pinout

Βήμα 3: MQTT

MQTT
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

Βιβλιοθήκη MQTT
Βιβλιοθήκη 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: Αρχεία

Κατεβάστε τα αρχεία:

PDF

ΕΓΩ ΔΕΝ

Συνιστάται: