Isi kandungan:

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, Julai
Anonim
Image
Image
Pinout ESP32
Pinout ESP32

Saya menyiarkan di sini hari ini video pertama siri mengenai cara memasang peranti Endpoint dengan ESP32, dan kemudian menghantarnya ke perkhidmatan cloud. Dalam episod khusus ini, saya akan menunjukkan cara menghantar maklumat dari sensor DHT22 menggunakan protokol MQTT untuk IBM Watson.

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

Langkah 1: Pinout ESP32

Saya meletakkan di sini Pinout ESP32, yang kami gunakan dalam contoh kami. Walau bagaimanapun, saya ingin menjelaskan bahawa projek ini juga berfungsi dengan ESP8266, dan walaupun dengan kod sumber yang sama.

Langkah 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Langkah 3: MQTT

MQTT
MQTT

MQTT adalah protokol mesin-ke-mesin yang digunakan di IoT. Ia direka agar ringan dan cepat. Ini menggunakan sistem langganan / penerbitan, di mana perangkat "berlangganan" ke topik dengan informasi khusus yang Anda minati, dan kemudian menerima informasi setiap kali perangkat menerbitkan data mengenai topik ini.

Seperti program pelayan, MQTT memerlukan perisian. Ini dipanggil Broker. Dalam kes khusus ini, kami akan menggunakan Perkhidmatan IBM Bluemix IoT. Perkhidmatan ini percuma untuk ujian titik akhir.

Seterusnya, kita perlu memiliki telefon bimbit atau tablet dengan sisi Aplikasi, iaitu sebagai klien MQTT. Kami juga mempunyai bahagian Peranti, yang merupakan sisi ESP dengan termometer. Ini menghantar data suhu dan kelembapan ke Bluemix, yang kemudian mengirimkan maklumat ini ke Sisi Aplikasi.

Langkah 4: Perhimpunan

perhimpunan
perhimpunan

Litar kami terdiri daripada perintang Ohms 4.7k antara 3.3v dan pin data, ditambah DHT22 yang disambungkan ke GPIO4 ESP32 atau NodeMCU. Oleh itu, ini adalah Titik Akhir kami.

Langkah 5: Diagram

Gambar rajah
Gambar rajah
Gambar rajah
Gambar rajah

Saya menunjukkan di sini beberapa cara untuk bekerjasama dengan MQTT Local Broker. Saya meletakkan dua model rajah. Dalam video tersebut, saya bercakap mengenai situasi menggunakan Raspberry Pi untuk membuka pintu, misalnya.

Dalam gambar di atas, kami mempunyai seni bina pertama yang menggunakan Broker tempatan dengan kegigihan, dan seni bina kedua di bawah yang hanya berkomunikasi dengan broker di awan.

Seperti yang ditunjukkan dalam rajah, sensor kami kemudian mengirimkan data suhu dan kelembapan ke IBM Watson. Penting untuk ditegaskan bahawa IBM Watson tidak menulis data dalam kes ini, kerana hanya dipaparkan dalam grafik. Ini kerana kami tidak akan menangani sebarang operasi pangkalan data dalam contoh hari ini, tetapi hanya menunjukkan akses ke halaman Quickstart (https://quickstart.internetofthings.ibmcloud.com/), yang akan memaparkan status Endpoint. Skimnya mudah dan menggunakan WiFi untuk menghantar data.

Langkah 6: Perpustakaan

Di Arduino IDE, pergi ke menu Lakaran -> Sertakan Perpustakaan -> Urus Perpustakaan…

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

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

Langkah 7: Perpustakaan Membaca Suhu dan Kelembapan

Perpustakaan Membaca Suhu dan Kelembapan
Perpustakaan Membaca Suhu dan Kelembapan

Langkah 8: Perpustakaan MQTT

Perpustakaan MQTT
Perpustakaan MQTT

Langkah 9: MQTT.ino

Kami memulakan kod sumber dengan memeriksa ESP mana yang digunakan dan mengimport perpustakaan dan WiFi yang sesuai. Kami masih menyertakan MQTT Lib dan Sensor Suhu dan Kelembapan.

// Verifica qual ESP está sendo utilizado // e importa a lib e wifi koresponden #jika ditentukan (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Seterusnya, kami menentukan yang berikut: selang antara penyerahan data, pelayan MQTT yang akan digunakan, maklumat cetak pada carta, dan ID. Kami juga menunjukkan bagaimana rentetan QUICK_START seharusnya.

// 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 #define MQTT_SERVER "cepat.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:";

Dalam langkah ini, kami menentukan ID unik. Dalam contoh ini, kami menggunakan Alamat MAC peranti yang kami gunakan. Ini akan berfungsi sebagai pengenalan di laman QuickStart. Di sini, kami juga menghubungkan ID Quickstart dengan ID peranti kami.

// No DEVICE_ID você deve mudar para um id único // Aqui nesse exemplo utilizamos o MAC Address // do dispositivo que estamos utilizando // Servirá como identificação no site //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 pemboleh ubah yang terlibat dengan nilai suhu dan kelembapan.

// Pelanggan WiFi que o MQTT irá utilizar para se conectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, porta // e o client WiFi PubSubClient client (MQTT_SERVER, 1883, wifiClient); // Tempo em que o último envio juga telah lama terakhirPublishTime = 0; // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4, DHT22); // Variável para guardarmos o valor da temperatura suhu apungan = 0; // Variável para guardarmos o valor da umidade float kelembapan = 0;

MQTT.ino - persediaan

Dalam Persediaan, kami akan menginisialisasi DHT, dan menyambung di rangkaian WiFi dan pelayan MQTT.

persediaan tidak sah () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos red rede WiFi setupWiFi (); // Conectamos ao server MQTT connectMQTTServer (); }

MQTT.ino - gelung

Dalam Gelung, kami mengumpulkan data sensor untuk membuat Json yang akan diterbitkan dalam topik yang diharapkan oleh IBM Watson untuk menghasilkan grafik.

gelung kosong () {// Tempos agora em milisegundos lama sekarang = milis (); // Se o tempo desde o último envio untuk maior que o intervalo de envio jika (sekarang - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = sekarang; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Terbitkan mesej:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico onde o servidor espera para receiver // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Di sini, kita mempunyai fungsi yang bertanggungjawab untuk menyambung ke rangkaian WiFi.

// Função responsável por conectar à rede WiFivoid setupWiFi () {Serial.println (); Serial.print ("Menyambung ke"); 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 sambil (WiFi.status ()! = WL_CONNECTED) {kelewatan (500); Cetakan bersiri ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("WiFi disambungkan"); }

MQTT.ino - sambungkanMQTTServer

Pada langkah ini, kita menggunakan fungsi yang bertanggungjawab untuk menyambung ke pelayan MQTT.

// Função responsável por conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("Menyambung ke MQTT Server…"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se conexão juga bem sucedida Serial.println ("terhubung"); } lain {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - bacaSensor

Pembacaan data suhu dan kelembapan ditentukan dalam fungsi ini.

// Função responsável por realizar a leitura // da temperatura e umidade batal readSensor () {nilai apungan; // Faz a leitura da temperatura value = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (nilai)) {// Armazena o novo valor da temperatura suhu = nilai; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor untuk válido jika (! Isnan (nilai)) {// Armazena o novo valor da umidade kelembapan = nilai; }}

MQTT.ino - createJsonString

Di sini, kita mempunyai fungsi yang bertanggungjawab 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 + = Rentetan (suhu); data + = ","; data + = "\" kelembapan / ":"; data + = Rentetan (kelembapan); data + = "}"; data + = "}"; mengembalikan data; }

Langkah 10: Grafik

Grafik
Grafik
Grafik
Grafik

Untuk melihat grafik sensor, pergi

ke

Di medan ID Peranti, masukkan DEVICE_ID yang anda tentukan dalam kod.

- Penting untuk menukar ID Peranti ini menjadi ID unik, digunakan hanya untuk mengelakkan konflik dengan data yang dihantar oleh orang lain.

Akhirnya, terima syarat dan klik Pergi.

Dalam projek ini, kami menguji Endpoint kami di pelayan IBM Watson. Ini memastikan bahawa program Arduino kami berkomunikasi dengan betul dengan platform, dan bahawa data yang kami kirim akan diterima dengan lancar oleh perkhidmatan cloud jika kami membuat akaun.

Dalam video yang akan datang dalam siri ini, saya akan menunjukkan kepada anda cara log masuk ke IBM Watson, dan juga menulis di pangkalan data perkhidmatan ini atau perkhidmatan awan lain, seperti Google, Amazon, dan lain-lain.

Langkah 11: Fail

Muat turun fail:

PDF

INO

Disyorkan: