สารบัญ:

IBM Watson พร้อม ESP32 เป็นอุปกรณ์ปลายทาง: 11 ขั้นตอน
IBM Watson พร้อม ESP32 เป็นอุปกรณ์ปลายทาง: 11 ขั้นตอน

วีดีโอ: IBM Watson พร้อม ESP32 เป็นอุปกรณ์ปลายทาง: 11 ขั้นตอน

วีดีโอ: IBM Watson พร้อม ESP32 เป็นอุปกรณ์ปลายทาง: 11 ขั้นตอน
วีดีโอ: Ubidots - IoT Application Development Platform overview 2024, กรกฎาคม
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

วันนี้ฉันจะโพสต์วิดีโอชุดแรกของซีรีส์เกี่ยวกับวิธีการเมานต์อุปกรณ์ปลายทางด้วย ESP32 แล้วส่งไปยังบริการคลาวด์ ในตอนพิเศษนี้ ฉันจะแสดงวิธีส่งข้อมูลจากเซ็นเซอร์ DHT22 โดยใช้โปรโตคอล MQTT สำหรับ IBM Watson

ก่อนอื่นเราจะแนะนำ MQTT ซึ่งเป็นโปรโตคอลแบบเครื่องต่อเครื่องที่ใช้ใน IoT (Internet of Things) เราจะส่งข้อมูลจากเซ็นเซอร์อุณหภูมิและความชื้นโดยใช้โปรโตคอลนี้ จากนั้นตรวจสอบกราฟด้วยข้อมูลนี้บนหน้าเว็บ

ขั้นตอนที่ 1: ESP32 Pinout

ฉันวาง Pinout ของ ESP32 ไว้ที่นี่ ซึ่งเราใช้ในตัวอย่างของเรา อย่างไรก็ตาม ฉันต้องการทำให้ชัดเจนว่าโปรเจ็กต์นี้ใช้งานได้กับ ESP8266 และถึงแม้จะใช้ซอร์สโค้ดเดียวกันก็ตาม

ขั้นตอนที่ 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

ขั้นตอนที่ 3: MQTT

MQTT
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

ห้องสมุด MQTT
ห้องสมุด 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

ฉันไม่

แนะนำ: