Mục lục:
- Bước 1: Sơ đồ chân của ESP32
- Bước 2: Sơ đồ NodeMCU
- Bước 3: MQTT
- Bước 4: Lắp ráp
- Bước 5: Sơ đồ
- Bước 6: Thư viện
- Bước 7: Thư viện đọc nhiệt độ và độ ẩm
- Bước 8: Thư viện MQTT
- Bước 9: MQTT.ino
- Bước 10: Đồ họa
- Bước 11: Tập tin
Video: IBM Watson với ESP32 làm điểm cuối: 11 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
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
Bước 3: 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
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ơ đồ
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
Bước 8: 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
Để 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:
NS
Đề xuất:
Đường sắt mô hình điểm đến điểm tự động đơn giản: 10 bước (có hình ảnh)
Đường sắt mô hình điểm đến điểm tự động đơn giản: Bộ vi điều khiển Arduino rất tuyệt vời để tự động hóa bố cục đường ray mô hình. Tự động hóa bố cục rất hữu ích cho nhiều mục đích như đưa bố cục của bạn lên màn hình nơi thao tác bố trí có thể được lập trình để chạy tàu theo trình tự tự động. Cái l
Bộ dao động điều khiển điện áp điểm-điểm: 29 bước
Bộ tạo dao động điều khiển điện áp điểm-điểm: Xin chào! Bạn đã tìm thấy một dự án mà chúng tôi lấy một vi mạch thực sự rẻ, một CD4069 (đẹp) và gắn một số bộ phận vào đó và nhận được một bộ dao động điều khiển điện áp theo dõi cao độ rất hữu ích! Phiên bản chúng tôi sẽ xây dựng chỉ có dạng sóng dạng cưa hoặc đường dốc, là o
Bộ sạc pin đa năng tự làm với thiết bị đầu cuối từ tính: 5 bước
Tự làm bộ sạc pin đa năng có đầu cuối từ tính: Xin chào mọi người, Đây là tài liệu hướng dẫn thứ hai của tôi, vì vậy phản hồi của bạn sẽ thực sự hữu ích để tôi cải thiện hơn nữa. Ngoài ra, hãy xem kênh YouTube của tôi để biết thêm các dự án khác. Hôm nay tôi sẽ hướng dẫn bạn cách tạo một bộ sạc pin đa năng bằng Magneti
Mạch điểm-to-điểm Eurorack phân rã kép: 12 bước
Mạch điểm-to-điểm Eurorack Decay kép: Mục đích của tài liệu hướng dẫn này là chỉ ra cách bạn có thể tạo mạch DUAL DECAY cho bộ tổng hợp mô-đun của mình. Đây là một mạch điểm-điểm không có bất kỳ pcb nào và thể hiện một cách khác để xây dựng các mạch tổng hợp chức năng với các bộ phận tối thiểu
Mô hình đường sắt điểm đến điểm tự động đơn giản chạy hai đoàn tàu: 13 bước (có hình ảnh)
Mô hình đường sắt điểm đến điểm tự động đơn giản chạy hai chuyến tàu: Bộ vi điều khiển Arduino là một cách tuyệt vời để tự động hóa bố cục đường ray mô hình do tính sẵn có chi phí thấp, phần cứng và phần mềm mã nguồn mở và một cộng đồng lớn để trợ giúp bạn. Đối với các tuyến đường sắt mô hình, bộ vi điều khiển Arduino có thể chứng minh là một