สารบัญ:
- ขั้นตอนที่ 1: ESP32 Pinout
- ขั้นตอนที่ 2: NodeMCU Pinout
- ขั้นตอนที่ 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 13:07
วันนี้ฉันจะโพสต์วิดีโอชุดแรกของซีรีส์เกี่ยวกับวิธีการเมานต์อุปกรณ์ปลายทางด้วย ESP32 แล้วส่งไปยังบริการคลาวด์ ในตอนพิเศษนี้ ฉันจะแสดงวิธีส่งข้อมูลจากเซ็นเซอร์ DHT22 โดยใช้โปรโตคอล MQTT สำหรับ IBM Watson
ก่อนอื่นเราจะแนะนำ MQTT ซึ่งเป็นโปรโตคอลแบบเครื่องต่อเครื่องที่ใช้ใน IoT (Internet of Things) เราจะส่งข้อมูลจากเซ็นเซอร์อุณหภูมิและความชื้นโดยใช้โปรโตคอลนี้ จากนั้นตรวจสอบกราฟด้วยข้อมูลนี้บนหน้าเว็บ
ขั้นตอนที่ 1: ESP32 Pinout
ฉันวาง Pinout ของ ESP32 ไว้ที่นี่ ซึ่งเราใช้ในตัวอย่างของเรา อย่างไรก็ตาม ฉันต้องการทำให้ชัดเจนว่าโปรเจ็กต์นี้ใช้งานได้กับ ESP8266 และถึงแม้จะใช้ซอร์สโค้ดเดียวกันก็ตาม
ขั้นตอนที่ 2: NodeMCU Pinout
ขั้นตอนที่ 3: MQTT
MQTT เป็นโปรโตคอลแบบเครื่องต่อเครื่องที่ใช้ใน IoT ออกแบบมาให้มีน้ำหนักเบาและรวดเร็ว ใช้ระบบสมัคร/เผยแพร่ โดยอุปกรณ์ "สมัครรับข้อมูล" หัวข้อที่มีข้อมูลเฉพาะที่คุณสนใจ จากนั้นรับข้อมูลทุกครั้งที่อุปกรณ์เผยแพร่ข้อมูลเกี่ยวกับหัวข้อนี้
เช่นเดียวกับโปรแกรมเซิร์ฟเวอร์ MQTT ต้องการซอฟต์แวร์ นี้เรียกว่านายหน้า ในกรณีนี้ เราจะใช้บริการ Bluemix IoT ของ IBM บริการนี้ฟรีสำหรับการทดสอบปลายทาง
ต่อไป เราจำเป็นต้องมีโทรศัพท์มือถือหรือแท็บเล็ตที่มีด้านแอปพลิเคชัน นั่นคือ เป็นไคลเอ็นต์ MQTT เรายังมีด้านอุปกรณ์ซึ่งเป็นด้าน ESP พร้อมเทอร์โมมิเตอร์ ซึ่งจะส่งข้อมูลอุณหภูมิและความชื้นไปยัง Bluemix ซึ่งจะส่งข้อมูลนี้ไปยังฝั่งแอปพลิเคชัน
ขั้นตอนที่ 4: การประกอบ
วงจรของเราประกอบด้วยตัวต้านทาน 4.7k Ohms ระหว่าง 3.3v และดาต้าพิน รวมทั้ง DHT22 ที่เชื่อมต่อกับ GPIO4 ของ ESP32 หรือ NodeMCU ดังนั้น นี่คือจุดสิ้นสุดของเรา
ขั้นตอนที่ 5: แผนภาพ
ฉันแสดงวิธีการทำงานกับ MQTT Local Broker หลายวิธีที่นี่ ฉันวางโมเดลไดอะแกรมสองแบบ ในวิดีโอ ฉันพูดถึงสถานการณ์โดยใช้ Raspberry Pi เพื่อเปิดประตู เป็นต้น
ในภาพด้านบน เรามีสถาปัตยกรรมแรกที่ใช้นายหน้าในพื้นที่ด้วยความคงอยู่ และสถาปัตยกรรมที่สองด้านล่างที่สื่อสารกับนายหน้าในระบบคลาวด์เท่านั้น
ดังแสดงในแผนภาพ จากนั้นเซ็นเซอร์ของเราจะส่งข้อมูลอุณหภูมิและความชื้นไปยัง IBM Watson สิ่งสำคัญคือต้องเน้นว่า IBM Watson ไม่ได้เขียนข้อมูลในกรณีนี้ เนื่องจากจะแสดงเป็นกราฟเท่านั้น เนื่องจากเราจะไม่จัดการกับการดำเนินการฐานข้อมูลใดๆ ในตัวอย่างของวันนี้ แต่ระบุการเข้าถึงหน้า Quickstart เท่านั้น (https://quickstart.internetofthings.ibmcloud.com/) ซึ่งจะแสดงสถานะของ Endpoint โครงร่างนี้เรียบง่ายและใช้ WiFi เพื่อส่งข้อมูล
ขั้นตอนที่ 6: ห้องสมุด
ใน Arduino IDE ให้ไปที่เมนู Sketch -> Include Library -> Manage Libraries …
บนหน้าจอที่เปิดขึ้น ให้ค้นหา "DHT" และติดตั้ง lib "DHT sensor library"
จากนั้นพิมพ์ "PubSubClient" และติดตั้ง "PubSubClient" lib
ขั้นตอนที่ 7: ห้องสมุดการอ่านอุณหภูมิและความชื้น
ขั้นตอนที่ 8: ไลบรารี MQTT
ขั้นตอนที่ 9: MQTT.ino
เราเริ่มต้นซอร์สโค้ดโดยตรวจสอบว่า ESP ใดกำลังใช้อยู่และนำเข้าไลบรารีและ WiFi ที่เกี่ยวข้อง เรายังคงรวม MQTT Libs และเซ็นเซอร์อุณหภูมิและความชื้นไว้ด้วย
// Verifica qual ESP está sendo utilizado // นำเข้าจาก lib e wifi ที่สอดคล้องกัน #if กำหนด (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include
ต่อไป เรากำหนดสิ่งต่อไปนี้: ช่วงเวลาระหว่างการส่งข้อมูล เซิร์ฟเวอร์ MQTT ที่จะใช้ ข้อมูลการพิมพ์บนแผนภูมิ และ ID เรายังได้ชี้ให้เห็นว่าสตริง 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 #define.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 พัฒนา permanecer como está const String QUICK_START = "d:quickstart:arduino:";
ในขั้นตอนนี้ เรากำหนด ID เฉพาะ ในตัวอย่างนี้ เราใช้ที่อยู่ MAC ของอุปกรณ์ที่เราใช้ ซึ่งจะใช้เป็นข้อมูลระบุตัวตนบนไซต์ QuickStart ที่นี่ เรายังเชื่อมต่อ Quickstart ID กับ ID ของอุปกรณ์ของเรา
//ไม่มี 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. Stringibm DEVICE_ID const = "240ac40e3fd0"; //Concatemos o id do quickstart com o id do nosso //dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;
จากนั้นเรากำหนดค่า MQTT และ WiFi ตลอดจนวัตถุและตัวแปรที่เกี่ยวข้องกับค่าอุณหภูมิและความชื้น
//Cliente WiFi คิว o MQTT irá utilizar para se conectarWiFiClient wifiClient; //Cliente MQTT, ส่งผ่าน url ของเซิร์ฟเวอร์, porta //e o ไคลเอนต์ WiFi PubSubClient ไคลเอนต์ (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 อุณหภูมิลอยตัว = 0; //Variável para guardarmos o valor da umidade ความชื้นลอย = 0;
MQTT.ino - ตั้งค่า
ในการตั้งค่า เราจะเริ่มต้น DHT และเชื่อมต่อในเครือข่าย WiFi และเซิร์ฟเวอร์ MQTT
การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); //Incializamos o dht dht.begin(); //Conectamos à rede WiFi setupWiFi(); //Conectamos ao เซิร์ฟเวอร์ MQTT connectMQTTServer(); }
MQTT.ino - ลูป
ใน Loop เรารวบรวมข้อมูลเซ็นเซอร์เพื่อสร้าง Json ที่จะเผยแพร่ในหัวข้อที่ IBM Watson คาดว่าจะสร้างกราฟ
วงเป็นโมฆะ () {// Tempos agora em milisegundos ยาวแล้ว = มิลลิวินาที (); // Se o tempo desde o último envio สำหรับ maior que o intervalo de envio ถ้า (ตอนนี้ - lastPublishTime > INTERVAL) { // Atualizamos o tempo em que ocorreu o último envio lastPublishTime = ตอนนี้; //Fazemos a leitura da temperatura e umidade readSensor();/ Serial.print("ประกาศข้อความ: "); // Criamos o json que enviaremos สำหรับเซิร์ฟเวอร์ mqtt String msg = createJsonString (); Serial.println(msg); //ประกาศ o 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 บนการเชื่อมต่อ WiFivoid setupWiFi () { Serial.println (); Serial.print("กำลังเชื่อมต่อกับ "); Serial.print(SSID); //Manda o esp se conectar à rede através //do ssid e senha WiFi.begin(SSID, รหัสผ่าน); // Espera até que a conexão com a rede seja estabelecida while (WiFi.status() != WL_CONNECTED) { ล่าช้า (500); Serial.print("."); } //Se chegou aqui é porque conectou Serial.println(""); Serial.println ("เชื่อมต่อ WiFi"); }
MQTT.ino - connectMQTTServer
ในขั้นตอนนี้ เราใช้ฟังก์ชันที่รับผิดชอบในการเชื่อมต่อกับเซิร์ฟเวอร์ MQTT
//การตอบกลับของ Função บนเซิร์ฟเวอร์ conectar ao MQTTvoid connectMQTTServer () { Serial.println ("กำลังเชื่อมต่อกับเซิร์ฟเวอร์ MQTT …"); //Seconecta ao id que definimos if (client.connect(CLIENT_ID.c_str())) { //Se a conexão foi bem sucedida Serial.println ("เชื่อมต่อแล้ว"); } อื่น { //Se ocorreu algum erro Serial.print ("error = "); Serial.println(client.state()); } }
MQTT.ino - readSensor
การอ่านข้อมูลอุณหภูมิและความชื้นถูกกำหนดไว้ในฟังก์ชันนี้
//การตอบกลับของ Função por realizar a leitura //da temperatura e umidade void readSensor(){ float value; // Faz a leitura da temperatura ค่า = dht.readTemperature(); //Se o valor lido é válido if(!isnan(value))){ //Armazena o novo valor da temperatura อุณหภูมิ = ค่า; } //สร้างค่า leitura da umidade = dht.readHumidity(); //Se o valor for válido if(!isnan(value))){ //Armazena o novo valor da umidade ความชื้น = ค่า; } }
MQTT.ino - createJsonString
ที่นี่ เรามีฟังก์ชันที่รับผิดชอบในการสร้าง Json ด้วยการอ่านข้อมูล
// การตอบสนองของ Função por criar // um Json com os dados lidos String createJsonString () { ข้อมูลสตริง = "{"; data+= "\"d\": {"; data+="\"อุณหภูมิ\":"; data+=String(อุณหภูมิ); ข้อมูล+=", "; data+="\"ความชื้น\":"; data+=String(ความชื้น); ข้อมูล+="}"; ข้อมูล+="}"; ส่งคืนข้อมูล; }
ขั้นตอนที่ 10: กราฟิก
หากต้องการดูกราฟเซ็นเซอร์ ให้ไป
ไปที่
ในช่องรหัสอุปกรณ์ ให้ป้อน DEVICE_ID ที่คุณกำหนดไว้ในรหัส
- สิ่งสำคัญคือต้องเปลี่ยน Device ID นี้เป็น ID ที่ไม่ซ้ำ ซึ่งใช้เพื่อหลีกเลี่ยงความขัดแย้งกับข้อมูลที่ส่งโดยบุคคลอื่นเท่านั้น
สุดท้าย ยอมรับข้อกำหนดและคลิกไป
ในโครงการนี้ เราได้ทดสอบอุปกรณ์ปลายทางของเราบนเซิร์ฟเวอร์ IBM Watson สิ่งนี้ทำให้มั่นใจได้ว่าโปรแกรม Arduino ของเรากำลังสื่อสารกับแพลตฟอร์มอย่างเหมาะสม และข้อมูลที่เราส่งจะได้รับอย่างราบรื่นโดยบริการคลาวด์หากเราสร้างบัญชี
ในวิดีโอชุดต่อไปในชุดนี้ ฉันจะแสดงวิธีลงชื่อเข้าใช้ IBM Watson รวมถึงเขียนใน databank ของบริการคลาวด์นี้หรือบริการอื่นๆ เช่น Google, Amazon และอื่นๆ
ขั้นตอนที่ 11: ไฟล์
ดาวน์โหลดไฟล์:
ไฟล์ PDF
ฉันไม่
แนะนำ:
MQTT Mood Lights พร้อม ESP32: 4 ขั้นตอน (พร้อมรูปภาพ)
MQTT Mood Lights พร้อม ESP32: ฉันถูกล่อลวงมาเป็นเวลานานแล้วที่จะกระโดดขึ้นไปบนแถบ LED ดังนั้นฉันจึงวิ่งออกไปหยิบแถบ LED ขึ้นมาเพื่อเล่น ฉันลงเอยด้วยการสร้างแสงอารมณ์เหล่านี้ สามารถควบคุมได้ด้วย MQTT ทำให้สามารถเพิ่มสมาร์ทได้ทุกประเภท นี่คือ
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: 3 ขั้นตอน
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: เป็นโปรเจ็กต์เครื่องรับย่านความถี่ทั้งหมด ใช้ห้องสมุด Arduino Si4734 ห้องสมุดนี้มีตัวอย่างมากกว่า 20 ตัวอย่าง คุณสามารถฟัง FM ด้วย RDS สถานี AM (MW) ในพื้นที่ SW และสถานีวิทยุสมัครเล่น (SSB) เอกสารทั้งหมดที่นี่
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: 5 ขั้นตอน
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: Micropython เป็นการเพิ่มประสิทธิภาพของ python และมีขนาดเล็กของ python ซึ่งหมายถึงการสร้างสำหรับอุปกรณ์ฝังตัวซึ่งมีข้อจำกัดด้านหน่วยความจำและใช้พลังงานต่ำ Micropython สามารถใช้ได้กับคอนโทรลเลอร์หลายตระกูล ซึ่งรวมถึง ESP8266, ESP32, Ardui
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน
PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
IoT Hydroponics - การใช้ Watson ของ IBM สำหรับการวัดค่า PH และ EC: 7 ขั้นตอน (พร้อมรูปภาพ)
IoT Hydroponics - การใช้ Watson ของ IBM สำหรับการวัด PH และ EC: คำแนะนำนี้จะแสดงวิธีการตรวจสอบ EC, pH และอุณหภูมิของการตั้งค่าไฮโดรโปนิกส์และอัปโหลดข้อมูลไปยังบริการ Watson ของ IBM วัตสันมีอิสระที่จะเริ่มต้น มีแผนชำระเงิน แต่แผนฟรีมีมากเกินพอสำหรับโครงการนี้