Isi kandungan:
- Langkah 1: Pinout ESP32
- Langkah 2: NodeMCU Pinout
- Langkah 3: MQTT
- Langkah 4: Perhimpunan
- Langkah 5: Diagram
- Langkah 6: Perpustakaan
- Langkah 7: Perpustakaan Membaca Suhu dan Kelembapan
- Langkah 8: Perpustakaan MQTT
- Langkah 9: MQTT.ino
- Langkah 10: Grafik
- Langkah 11: Fail
Video: IBM Watson Dengan ESP32 Sebagai Titik Akhir: 11 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
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
Langkah 3: 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
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
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
Langkah 8: 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
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:
INO
Disyorkan:
Titik ke Titik Atari Punk Console Satu dan Separuh: 19 Langkah
Titik ke Titik Atari Punk Console Satu dan Separuh: Apa! ?? Satu lagi Atari Punk Console build? Tunggu tunggu tunggu orang, ini berbeza, janji. Waaay kembali pada tahun 1982, Forrest Mims, penulis buku kecil Radio Shack dan Young Earth Creationist (roll eyes emoji) menerbitkan rancangan untuk Stepped Tone Genera
Kereta Api Model Titik ke Titik Automatik Mudah: 10 Langkah (dengan Gambar)
Kereta Api Model Titik Titik Automatik Sederhana: Pengawal mikro Arduino sangat bagus untuk mengautomasikan susun atur kereta api model. Susun atur automatik berguna untuk banyak tujuan seperti meletakkan susun atur anda pada paparan di mana operasi susun atur dapat diprogram untuk menjalankan kereta api dalam urutan automatik. L
Kereta Api Model Titik ke Titik Automatik Mudah Mengendalikan Dua Keretapi: 13 Langkah (dengan Gambar)
Railroad Point to Point Model Automatik yang Sederhana Menjalankan Dua Keretapi: Pengawal mikro Arduino adalah kaedah terbaik untuk mengautomasikan susun atur kereta api model kerana ketersediaan kos rendah, perkakasan dan perisian sumber terbuka dan komuniti besar untuk membantu anda. Untuk landasan kereta api model, mikrokontroler Arduino dapat membuktikan
Kereta Api Model Titik ke Titik Automatik Dengan Sisi Halaman: 10 Langkah (dengan Gambar)
Kereta Api Model Titik ke Titik Automatik Dengan Sisi Yard: Pengawal mikro Arduino membuka kemungkinan besar dalam pembuatan kereta api model, terutama ketika berkaitan dengan automasi. Projek ini adalah contoh aplikasi seperti itu. Ini adalah kesinambungan dari salah satu projek sebelumnya. Projek ini terdiri daripada
Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)
Pengecaman Wajah Masa Nyata: Projek Akhir-ke-Akhir: Pada tutorial terakhir saya yang meneroka OpenCV, kami mempelajari TRACKING OBJEK VISI AUTOMATIK. Sekarang kami akan menggunakan PiCam kami untuk mengenali wajah dalam masa nyata, seperti yang anda lihat di bawah: Projek ini dilakukan dengan " Perpustakaan Penglihatan Komputer Sumber Terbuka & hebat ini