Mục lục:

IBM Watson với ESP32 làm điểm cuối: 11 bước
IBM Watson với ESP32 làm điểm cuối: 11 bước

Video: IBM Watson với ESP32 làm điểm cuối: 11 bước

Video: IBM Watson với ESP32 làm điểm cuối: 11 bước
Video: Hướng Dẫn Làm Data Visualisation Project với Matlplotlib và Python 2024, Tháng mười một
Anonim
Image
Image
Sơ đồ chân của ESP32
Sơ đồ chân của ESP32

Hôm nay, tôi sẽ đăng ở đây video đầu tiên của loạt bài về cách gắn thiết bị Endpoint với ESP32, sau đó gửi thiết bị đó lên dịch vụ đám mây. Trong tập cụ thể này, tôi sẽ chỉ cho bạn cách gửi thông tin từ cảm biến DHT22 bằng giao thức MQTT cho IBM Watson.

Trước tiên, chúng tôi sẽ giới thiệu MQTT, là một giao thức giữa máy và máy được sử dụng trong IoT (Internet of Things). Chúng tôi cũng sẽ gửi dữ liệu từ cảm biến nhiệt độ và độ ẩm bằng giao thức này, sau đó kiểm tra biểu đồ với dữ liệu này trên trang web.

Bước 1: Sơ đồ chân của ESP32

Tôi đã đặt ở đây Pinout của ESP32, mà chúng tôi sử dụng trong ví dụ của mình. Tuy nhiên, tôi muốn nói rõ rằng dự án cũng hoạt động với ESP8266 và thậm chí với cùng một mã nguồn.

Bước 2: Sơ đồ NodeMCU

Sơ đồ NodeMCU
Sơ đồ NodeMCU

Bước 3: MQTT

MQTT
MQTT

MQTT là một giao thức giữa máy và máy được sử dụng trong IoT. Nó được thiết kế để nhẹ và nhanh. Nó sử dụng hệ thống đăng ký / xuất bản, trong đó thiết bị "đăng ký" vào một chủ đề với thông tin cụ thể mà bạn quan tâm, sau đó nhận thông tin bất cứ khi nào thiết bị xuất bản dữ liệu liên quan đến chủ đề này.

Giống như một chương trình máy chủ, MQTT cần phần mềm. Đây được gọi là Nhà môi giới. Trong trường hợp cụ thể này, chúng tôi sẽ sử dụng Dịch vụ Bluemix IoT của IBM. Dịch vụ này miễn phí cho thử nghiệm điểm cuối.

Tiếp theo, chúng ta cần có điện thoại di động hoặc máy tính bảng với phía Ứng dụng, tức là máy khách MQTT. Chúng tôi cũng có mặt Thiết bị, là mặt ESP với nhiệt kế. Thao tác này sẽ gửi dữ liệu nhiệt độ và độ ẩm đến Bluemix, sau đó sẽ gửi thông tin này đến Phía ứng dụng.

Bước 4: Lắp ráp

cuộc họp
cuộc họp

Mạch của chúng tôi bao gồm một điện trở 4,7k Ohms giữa chân 3,3v và chân dữ liệu, cộng với một DHT22 được kết nối với GPIO4 của ESP32 hoặc NodeMCU. Vì vậy, đây là Điểm cuối của chúng tôi.

Bước 5: Sơ đồ

Biểu đồ
Biểu đồ
Biểu đồ
Biểu đồ

Tôi chỉ ra ở đây một số cách để làm việc với MQTT Local Broker. Tôi đã đặt hai mô hình sơ đồ. Trong video, tôi nói về một tình huống sử dụng Raspberry Pi để mở một cổng chẳng hạn.

Trong hình trên, chúng ta có kiến trúc đầu tiên sử dụng Nhà môi giới cục bộ với tính bền bỉ và kiến trúc thứ hai bên dưới chỉ giao tiếp với nhà môi giới trong đám mây.

Như thể hiện trong sơ đồ, cảm biến của chúng tôi sau đó sẽ gửi dữ liệu nhiệt độ và độ ẩm tới IBM Watson. Điều quan trọng cần nhấn mạnh là IBM Watson không ghi dữ liệu trong trường hợp này, vì nó chỉ được hiển thị dưới dạng đồ thị. Điều này là do chúng tôi sẽ không giải quyết bất kỳ hoạt động cơ sở dữ liệu nào trong ví dụ hôm nay, mà chỉ cho biết quyền truy cập vào trang Quickstart (https://quickstart.internetofthings.ibmcloud.com/), trang này sẽ hiển thị trạng thái của Endpoint. Đề án rất đơn giản và sử dụng WiFi để gửi dữ liệu.

Bước 6: Thư viện

Trong Arduino IDE, đi tới menu Phác thảo -> Bao gồm Thư viện -> Quản lý Thư viện…

Trên màn hình mở ra, nhập tìm kiếm "DHT" và cài đặt lib "Thư viện cảm biến DHT"

Sau đó, gõ "PubSubClient" và cài đặt lib "PubSubClient".

Bước 7: Thư viện đọc nhiệt độ và độ ẩm

Thư viện đọc nhiệt độ và độ ẩm
Thư viện đọc nhiệt độ và độ ẩm

Bước 8: Thư viện MQTT

Thư viện MQTT
Thư viện MQTT

Bước 9: MQTT.ino

Chúng tôi bắt đầu mã nguồn bằng cách kiểm tra xem ESP nào đang được sử dụng và nhập thư viện và WiFi tương ứng. Chúng tôi vẫn bao gồm MQTT Libs và Cảm biến nhiệt độ và độ ẩm.

// Xác minh trình độ ESP está sendo useizado // e importa a lib e wifi Phóng viên #if đã xác định (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

Tiếp theo, chúng tôi xác định những điều sau: khoảng thời gian giữa các lần gửi dữ liệu, máy chủ MQTT sẽ được sử dụng, thông tin in trên biểu đồ và ID. Chúng tôi cũng đã chỉ ra chuỗi QUICK_START nên như thế nào.

// Intervalo entre os envios # define INTERVAL 1000 // Substitua pelo SSID da sua red #define SSID "TesteESP" // Substitua pela senha da sua red #define MẬT KHẨU "87654321" // Máy chủ MQTT que iremos utlizar #define MQTT_SERVER "bắt đầu nhanh.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:";

Trong bước này, chúng tôi xác định một ID duy nhất. Trong ví dụ này, chúng tôi sử dụng Địa chỉ MAC của thiết bị chúng tôi đang sử dụng. Điều này sẽ đóng vai trò là nhận dạng trên trang QuickStart. Tại đây, chúng tôi cũng kết nối ID Quickstart với ID của thiết bị của chúng tôi.

// Không có DEVICE_ID você deve mudar para um id único // Aqui nesse exelo Operatingizamos o MAC Address // do dispositivo que estamos usedizando // Servirá como Idificaçã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;

Sau đó, chúng tôi định cấu hình MQTT và WiFi, cũng như các đối tượng và biến liên quan với các giá trị nhiệt độ và độ ẩm.

// Cliente WiFi que o MQTT irá Pracizar para se conectarWiFiClient wifiClient; // Cliente MQTT, passamos a url do server, a porta // e o cliente WiFi PubSubClient client (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 float nhiệt độ = 0; // Variável para Guardarmos o valor da umidade float Moisturiser = 0;

MQTT.ino - thiết lập

Trong phần Thiết lập, chúng tôi sẽ khởi tạo DHT và kết nối trong mạng WiFi và máy chủ MQTT.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Conectamos à red WiFi setupWiFi (); // Máy chủ Conectamos ao MQTT connectMQTTServer (); }

MQTT.ino - vòng lặp

Trong Vòng lặp, chúng tôi thu thập dữ liệu cảm biến để tạo ra Json sẽ được xuất bản trong chủ đề mà IBM Watson mong đợi để tạo ra biểu đồ.

void loop () {// Tempos agora em milisegundos long now = millis (); // Se o tempo desde o último envio for maior que o distanceo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Xuất bản thông báo:"); // Criamos o json que enviaremos para o server mqtt String msg = createJsonString (); Serial.println (msg); // Publicamos no tópico onde o servidor espera para Collectber // e gerar o gráfico client.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - setupWiFi

Ở đây, chúng ta có chức năng chịu trách nhiệm kết nối với mạng WiFi.

// Função responseável por conectar à red WiFivoid setupWiFi () {Serial.println (); Serial.print ("Đang kết nối với"); Serial.print (SSID); // Manda o esp se conectar à red através // do ssid e senha WiFi.begin (SSID, MẬT KHẨU); // Espera até que a conexão com a red seja settingelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Se chegou aqui é porque conectou Serial.println (""); Serial.println ("Đã kết nối WiFi"); }

MQTT.ino - connectMQTTServer

Trong bước này, chúng tôi sử dụng chức năng chịu trách nhiệm kết nối với máy chủ MQTT.

// Função responseável bởi máy chủ nónctar ao MQTTvoid connectMQTTServer () {Serial.println ("Đang kết nối với Máy chủ MQTT…"); // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("connect"); } else {// Se ocorreu algum erro Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

Việc đọc dữ liệu nhiệt độ và độ ẩm được xác định trong chức năng này.

// Função responseável por realizar a leitura // da temperatura e umidade void readSensor () {float value; // Faz a leitura da temperatura value = dht.readTempeosystem (); // Se o valor lido é válido if (! Isnan (value)) {// Armazena o novo valor da temperatura Temperature = value; } // Faz a leitura da umidade value = dht.readHumidity (); // Se o valor for válido if (! Isnan (value)) {// Armazena o novo valor da umidade Moisturiser = value; }}

MQTT.ino - createJsonString

Ở đây, chúng ta có chức năng chịu trách nhiệm tạo một Json với dữ liệu đã đọc.

// Função responseável por criar // um Json com os dados lidos String createJsonString () {String data = "{"; dữ liệu + = "\" d / ": {"; dữ liệu + = "\" nhiệt độ / ":"; data + = String (nhiệt độ); dữ liệu + = ","; dữ liệu + = "\" độ ẩm / ":"; data + = String (độ ẩm); dữ liệu + = "}"; dữ liệu + = "}"; trả về dữ liệu; }

Bước 10: Đồ họa

Đồ họa
Đồ họa
Đồ họa
Đồ họa

Để xem biểu đồ cảm biến, hãy

tới

Trong trường ID thiết bị, hãy nhập DEVICE_ID mà bạn đã xác định trong mã.

- Điều quan trọng là phải thay đổi ID thiết bị này thành ID duy nhất, chỉ được sử dụng để tránh xung đột với dữ liệu do người khác gửi.

Cuối cùng, chấp nhận các điều khoản và nhấp vào Bắt đầu.

Trong dự án này, chúng tôi đã thử nghiệm Điểm cuối của mình trên máy chủ IBM Watson. Điều này đảm bảo rằng chương trình Arduino của chúng tôi đang giao tiếp đúng cách với nền tảng và dữ liệu chúng tôi gửi sẽ được dịch vụ đám mây nhận một cách suôn sẻ nếu chúng tôi tạo tài khoản.

Trong video sắp tới của loạt bài này, tôi sẽ hướng dẫn bạn cách đăng nhập vào IBM Watson, cũng như viết vào cơ sở dữ liệu của dịch vụ đám mây này hoặc dịch vụ đám mây khác, chẳng hạn như Google, Amazon, trong số những dịch vụ khác.

Bước 11: Tập tin

Tải xuống các tệp:

PDF

NS

Đề xuất: