IoT_Cuoi_Ki

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

TRƯỜNG ĐẠI HỌC BÁCH KHOA

ĐẠI HỌC ĐÀ NẴNG


KHOA ĐIỆN

-----    -----

PROJECT IOT
……

Giảng viên hướng dẫn: Mr. Ngô Đình Thanh


Sinh viên thực hiện: Nguyễn Quang Linh
Nhóm HP : 20.33
Lớp HP: 20TDHCLC3
MSSV: 105200457
Đà Nẵng,2023
I. KIẾN TRÚC IOT CỦA HỆ THỐNG
II. DEMO GỬI DỮ LIỆU NHIỆT ĐỘ - ĐỘ ẨM LÊN PLATFORM

1. Thực hiện mô phỏng phần cứng trên Wokwi

- Sử dụng cảm biến DHT22 để kết nối với ESP32


 Kết nối chân VCC của cảm biến DHT22 với chân 3V3 trên ESP32.
 Kết nối chân SDA của cảm biến DHT22 với chân 5 trên ESP32.
 Kết nối chân GND của cảm biến DHT22 với chân GND.1 trên
ESP32.
2. Cấu hình Platform Thingsboard để tạo kênh lưu trữ và hiển thị dữ liệu
nhiệt độ - độ ẩm

- Tạo tài khoản ở trang web https://thingsboard.cloud , ta sẽ được giao diện


như hình dưới đây :

- Ở giao diện chính, chọn mục Devices => Add device => Add new device ,
sau đó nhập tên của dự án :
- Bước tiếp theo, chọn mục Next : Credentials => MQTT Basic, nhập các
dữ liệu Client ID, Username, Password , lưu lại để nhập vào chương trình
gửi dữ liệu lên Thingsboard :
- Để cấu hình bảng diều khiển hiển thị dữ liệu được gửi lên, ở giao diện
chính Thingsboard, chọn mục Dashboards => Add dashboard => Create
new dashboard , sau đó nhập tên của dữ liệu muốn hiển thị:
- Giao diện của bảng điều khiển hiển thị dữ liệu:
3. Chạy chương trình mô phỏng trên Wokwi gửi dữ liệu lên Thingsboard

- Code lập trình cho cảm biến DHT22 và NodeMCU ESP32:

#include <EspMQTTClient.h>
#include <WiFi.h>
#include <DHT.h>
#include <PubSubClient.h>

#define WIFI_NAME "Wokwi-GUEST" // YOUR_WIFI_NAME


#define WIFI_PASSWORD "" // YOUR_WIFI_PASSWORD
#define MQTT_USERNAME "NguyenCongChinh" // YOUR_MQTT_USERNAME
#define MQTT_PASSWORD "13505" // YOUR_MQTT_PASSWORD
#define MQTT_CLIENT_ID "13112002" // YOUR_MQTT_CLIENT_ID

EspMQTTClient client(
WIFI_NAME,
WIFI_PASSWORD,
"thingsboard.cloud", // MQTT Broker server ip
MQTT_USERNAME,
MQTT_PASSWORD,
MQTT_CLIENT_ID
);

// DHT information
#define DHTPIN 5
#define DHTTYPE DHT22 // or set DHT11 type if you use DHT11
DHT dht(DHTPIN, DHTTYPE);

unsigned long lastTime = 0;


unsigned long delayTime = 1000; // set a period of sending data.

void setup() {
Serial.begin(115200);

// Begin DHT
dht.begin();
}

void onConnectionEstablished() {
Serial.println("MQTT Client is connected to ThingsBoard!");
}

void publishData() {
if (client.isConnected() && (millis() - lastTime > delayTime)) {
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(F("\nTemperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.println(F("% "));

Serial.println(F("\nPublising data to ThingsBoard"));

String MY_TOPIC = "v1/devices/me/telemetry"; // build your topic:


v1/devices/me/telemetry
String payload = "{\"temperature\":" + String(t) +
",\"humidity\":" + String(h) + "}"; // build your payload:
{"temperature":<value1>,"humidity":<value2>}
client.publish(MY_TOPIC, payload);

Serial.println("Data published");
lastTime = millis();
}
}

void loop() {
client.loop();
publishData();
}

- Kết quả chạy chương trình trên Wokwi:

- Ở phần kết quả sau khi chạy chương trình, dữ liệu nhiệt độ và độ ẩm đã
được hiển thị, Publising data to Thingsboard báo dữ liệu đã được gửi
Thingsboard :

- Bảng điều khiển hiển thị dữ liệu trên Thingboard :

You might also like