Daftar Isi:

IBM Watson Dengan ESP32 Sebagai Titik Akhir: 11 Langkah
IBM Watson Dengan ESP32 Sebagai Titik Akhir: 11 Langkah

Video: IBM Watson Dengan ESP32 Sebagai Titik Akhir: 11 Langkah

Video: IBM Watson Dengan ESP32 Sebagai Titik Akhir: 11 Langkah
Video: Beth Smith, IBM Watson | IBM Data and AI Forum 2024, November
Anonim
Image
Image
Pinout ESP32
Pinout ESP32

Saya memposting di sini hari ini video pertama dari seri tentang cara memasang perangkat Endpoint dengan ESP32, dan kemudian mengirimkannya ke layanan cloud. Dalam episode khusus ini, saya akan menunjukkan cara mengirim informasi dari sensor DHT22 menggunakan protokol MQTT untuk IBM Watson.

Pertama-tama kami akan memperkenalkan MQTT, yang merupakan protokol mesin-ke-mesin yang digunakan di IoT (Internet of Things). Kami juga akan mengirim data dari sensor suhu dan kelembaban menggunakan protokol ini, dan kemudian memeriksa grafik dengan data ini di halaman web.

Langkah 1: Pinout ESP32

Saya menempatkan di sini Pinout dari ESP32, yang kami gunakan dalam contoh kami. Namun, saya ingin memperjelas bahwa proyek ini juga bekerja dengan ESP8266, dan bahkan dengan kode sumber yang sama.

Langkah 2: Pinout NodeMCU

Pinout NodeMCU
Pinout NodeMCU

Langkah 3: MQTT

MQTT
MQTT

MQTT adalah protokol mesin-ke-mesin yang digunakan di IoT. Itu dirancang untuk menjadi ringan dan cepat. Ini menggunakan sistem berlangganan/publikasikan, di mana perangkat "berlangganan" ke topik dengan informasi spesifik yang Anda minati, dan kemudian menerima informasi tersebut setiap kali perangkat menerbitkan data tentang topik ini.

Seperti program server, MQTT membutuhkan perangkat lunak. Ini disebut Pialang. Dalam kasus khusus ini, kami akan menggunakan Layanan Bluemix IoT IBM. Layanan ini gratis untuk pengujian titik akhir.

Selanjutnya, kita perlu memiliki ponsel atau tablet dengan sisi Aplikasi, yaitu sebagai klien MQTT. Kami juga memiliki sisi Perangkat, yang merupakan sisi ESP dengan termometer. Ini mengirimkan data suhu dan kelembaban ke Bluemix, yang kemudian mengirimkan informasi ini ke Sisi Aplikasi.

Langkah 4: Perakitan

perakitan
perakitan

Sirkuit kami terdiri dari resistor 4.7k Ohm antara 3.3v dan pin data, ditambah DHT22 yang terhubung ke GPIO4 dari ESP32 atau NodeMCU. Jadi, ini adalah Titik Akhir kami.

Langkah 5: Diagram

Diagram
Diagram
Diagram
Diagram

Saya tunjukkan di sini beberapa cara untuk bekerja dengan Pialang Lokal MQTT. Saya menempatkan dua model diagram. Dalam video, saya berbicara tentang situasi menggunakan Raspberry Pi untuk membuka gerbang, misalnya.

Pada gambar di atas, kami memiliki arsitektur pertama yang menggunakan Broker lokal dengan ketekunan, dan arsitektur kedua di bawah yang hanya berkomunikasi dengan broker di cloud.

Seperti yang ditunjukkan pada diagram, sensor kami kemudian mengirimkan data suhu dan kelembaban ke IBM Watson. Penting untuk ditekankan bahwa IBM Watson tidak menulis data dalam kasus ini, karena hanya ditampilkan dalam grafik. Ini karena kami tidak akan membahas operasi basis data apa pun dalam contoh hari ini, tetapi hanya menunjukkan akses ke halaman Quickstart (https://quickstart.internetofthings.ibmcloud.com/), yang akan menampilkan status Endpoint. Skemanya sederhana dan menggunakan WiFi untuk mengirim data.

Langkah 6: Perpustakaan

Di Arduino IDE, masuk ke menu Sketch -> Include Library -> Manage Libraries…

Pada layar yang terbuka, masukkan pencarian "DHT" dan instal lib "perpustakaan sensor DHT"

Kemudian, ketik "PubSubClient" dan instal lib "PubSubClient".

Langkah 7: Perpustakaan Pembacaan Suhu dan Kelembaban

Perpustakaan Pembacaan Suhu dan Kelembaban
Perpustakaan Pembacaan Suhu dan Kelembaban

Langkah 8: Perpustakaan MQTT

Perpustakaan MQTT
Perpustakaan MQTT

Langkah 9: MQTT.ino

Kami memulai kode sumber dengan memeriksa ESP mana yang digunakan dan mengimpor perpustakaan dan WiFi yang sesuai. Kami masih menyertakan MQTT Libs dan Sensor Suhu dan Kelembaban.

//Verifikasi kualitas ESP dan kirim utilizado//e importa lib e wifi koresponden #if didefinisikan(ESP8266) #include #else #include #endif //Lib de MQTT #include //Lib lakukan sensor suhu dan umidade #include

Selanjutnya kita definisikan sebagai berikut: interval antar pengiriman data, server MQTT yang akan digunakan, informasi print pada chart, dan ID. Kami juga menunjukkan bagaimana seharusnya string QUICK_START.

//Intervalo entre os envios#define INTERVAL 1000 //Substitua pelo SSID da sua rede #define SSID "TesteESP" //Substitua pela senha da sua rede #define PASSWORD "87654321" //Server MQTT que iremos utlizar #SERFINe.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 mengembangkan permanecer como está const String QUICK_START = "d:quickstart:arduino:";

Pada langkah ini, kami mendefinisikan ID unik. Dalam contoh ini, kami menggunakan Alamat MAC dari perangkat yang kami gunakan. Ini akan berfungsi sebagai identifikasi di situs QuickStart. Di sini, kami juga menghubungkan ID Quickstart dengan ID perangkat kami.

//No DEVICE_ID você deve mudar para um id nico//Aqui nesse exemplo utilizamos o Alamat MAC //lakukan dispositivo que estamos utilizando //Servirá como identificação tidak ada situs //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;

Kami kemudian mengkonfigurasi MQTT dan WiFi, serta objek dan variabel yang terlibat dengan nilai suhu dan kelembaban.

//Antrian WiFi klien o MQTT untuk digunakan secara konektarWiFiClient wifiClient; //Client MQTT, passamos url do server, porta //e o klien WiFi PubSubClient client(MQTT_SERVER, 1883, wifiClient); //Tempo em que o ltimo envio foi feito long lastPublishTime = 0; //Objeto que realiza a leitura da suhu dan umidade DHT dht(4, DHT22); //Variável para guardarmos o valor da temperaturea float temperature = 0; //Variável para guardarmos o valor da umidade float kelembaban = 0;

MQTT.ino - pengaturan

Di Setup, kami akan menginisialisasi DHT, dan terhubung di jaringan WiFi dan server MQTT.

void setup() { Serial.begin(115200); //Incializamos atau dht dht.begin(); //Conectamos ulang pengaturan WiFiWiFi(); //Conectamos dan server MQTT connectMQTTServer(); }

MQTT.ino - loop

Dalam Loop, kami mengumpulkan data sensor untuk membuat Json yang akan dipublikasikan dalam topik yang diharapkan IBM Watson untuk menghasilkan grafik.

void loop() { //Tempo agora em milisegundos lama sekarang = milis(); //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 = sekarang; //Fazemos dan suhu dan suhu readSensor(); Serial.print("Publikasikan pesan: "); //Criamos o json que enviaremos para o server mqtt String msg = createJsonString(); Serial.println(pesan); //Publicamos no tópico onde o service espera para receber //e gerar o gráfico client.publish(TOPIC_NAME, msg.c_str()); } }

MQTT.ino - setupWiFi

Di sini, kami memiliki fungsi yang bertanggung jawab untuk menghubungkan ke jaringan WiFi.

//Menyenangkan respons dari konektar rede WiFivoid setupWiFi() { Serial.println(); Serial.print("Menghubungkan ke "); Serial.print(SSID); //Manda o esp se conectar rede através //lakukan ssid dan 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 terhubung"); }

MQTT.ino - sambungkanMQTTServer

Pada langkah ini, kami menggunakan fungsi yang bertanggung jawab untuk menghubungkan ke server MQTT.

//Menyenangkan respons dari koneksi ke server MQTTvoid connectMQTTServer() { Serial.println("Menghubungkan ke Server MQTT…"); //Se conecta ao id que definimos if (client.connect(CLIENT_ID.c_str())) { //Se a conexão foi bem sucedida Serial.println("connected"); } else { //Se ocorreu algum erro Serial.print("error = "); Serial.println(klien.status()); } }

MQTT.ino - readSensor

Pembacaan data suhu dan kelembaban ditentukan dalam fungsi ini.

//Função responsável por realizar a leitura //da suhu dan umidade void readSensor(){ nilai float; //Faz a leiura da nilai suhu = dht.readTemperature(); //Se o valor lido é válido if(!isnan(value)){ //Armazena o novo valor da temperaturea temperature = nilai; } //Faz a leitura da umidade nilai = dht.readHumidity(); //Se o valor for válido if(!isnan(value)){ //Armazena o novo valor da umidade kelembaban = nilai; } }

MQTT.ino - createJsonString

Di sini, kami memiliki fungsi yang bertanggung jawab untuk membuat Json dengan data yang dibaca.

//Função responsável por criar//um Json com os dados lidos String createJsonString() { String data = "{"; data+= "\"d\": {"; data+="\"suhu\":"; data+=String(suhu); data+=", "; data+="\"kelembaban\":"; data+=String(kelembaban); data+="}"; data+="}"; mengembalikan data; }

Langkah 10: Grafik

Grafis
Grafis
Grafis
Grafis

Untuk melihat grafik sensor, buka

ke

Di bidang ID Perangkat, masukkan DEVICE_ID yang Anda tentukan dalam kode.

- Penting untuk mengubah ID Perangkat ini menjadi ID unik, yang digunakan hanya untuk menghindari konflik dengan data yang dikirim oleh orang lain.

Terakhir, terima persyaratannya dan klik Go.

Dalam proyek ini, kami menguji Endpoint kami di server IBM Watson. Ini memastikan bahwa program Arduino kami berkomunikasi dengan baik dengan platform, dan bahwa data yang kami kirim akan diterima dengan lancar oleh layanan cloud jika kami membuat akun.

Dalam video mendatang dalam seri ini, saya akan menunjukkan kepada Anda cara masuk ke IBM Watson, serta menulis di bank data layanan cloud ini atau lainnya, seperti Google, Amazon, dan lainnya.

Langkah 11: File

Unduh file:

PDF

SAYA TIDAK

Direkomendasikan: