Professional Documents
Culture Documents
CHƯƠNG 3 MÔ PHỎNG MẠNG CẢM BIẾN
CHƯƠNG 3 MÔ PHỎNG MẠNG CẢM BIẾN
Nút Sink
ESP32
DHT11
LCD
Nút sink là nút nhận dữ liệu được truyền từ các nút cảm biến về. Nút sink
bao gồm vi xử lý ESP32, module cảm biến nhiệt độ, độ ẩm DHT11 và cảm biến
chất lượng không khí MQ135
Nút cảm biến 1 là nút truyền dữ liệu đến nút sink. Nút cảm biến 1 bao gồm
vi xử lý ESP32, module cảm biến nhiệt độ, độ ẩm DHT11 cảm biến chất lượng
không khí MQ135
3.1.1.3. Nút cảm biến 2
Nút cảm biến 2 là nút truyền dữ liệu đến nút sink. Nút cảm biến 2 bao gồm
vi xử lý ESP32, module cảm biến nhiệt độ, độ ẩm DHT11 cảm biến chất lượng
không khí MQ135
Hai nút cảm biến 1 và 2 thu thập dữ liệu từ môi trường, sau đó nút cảm biến
1 và 2 sẽ truyền dữ liệu về nút sink để xử lý.
- Vi xử lý ESP32
- Module DHT11
- Module MQ135
- Breadboard
- Capble
Nút cảm biến số 1 gồm vi điều khiển ESP32 và Module cảm biến nhiệt độ,
độ ẩm DHT11 và cảm biến MQ135
Nút cảm biến số 1 gồm vi điều khiển ESP32 và Module cảm biến nhiệt độ,
độ ẩm DHT11 và cảm biến MQ135
Hình 3.3: Nút cảm biến số 2
Arduino IDE là một phần mềm với một mã nguồn mở, được sử dụng chủ
yếu để viết và biên dịch mã vào module Arduino. Nó bao gồm phần cứng và
phần mềm. Phần cứng chứa đến 300,000 board mạch được thiết kế sẵn với các
cảm biến, linh kiện. Phần mềm giúp bạn có thể sử dụng các cảm biến, linh kiện
ấy của Arduino một cách linh hoạt phù hợp với mục đích sử dụng.
Hình 3.7: Giao diện phần mềm Arduino IDE
IDE trong Arduino IDE là phần có nghĩa là mã nguồn mở. Nghĩa là phần
mềm này miễn phí cả về phần tải về lẫn phần bản quyền. Người dùng có quyền
sửa đổi, cải tiến, phát triển, nâng cấp theo một số nguyên tắc chung được nhà
phát hành cho phép mà không cần xin phép ai, điều mà họ không được phép làm
đối với các phần mềm nguồn đóng.
b. Sử dụng ngôn ngữ lập trình C/C++ thân thiện với các lập trình viên
Arduino IDE sử dụng ngôn ngữ lập trình C/C++ rất phổ biến trong giới lập
trình. Bất kỳ đoạn code nào của C/C++ thì Arduino IDE đều có thể nhận dạng,
giúp các lập trình viên thuận tiện trong việc thiết kế chương trình lập cho các bo
mạch Arduino.
c. Thư viện hỗ trợ phong phú
Arduino IDE tích hợp với hơn 700 thư viện, được viết và chia sẻ bởi nhà
phát hành Arduino Software và thành viên trong cộng đồng Arduino. Mọi người
có thể tận dụng chúng cho dự án của riêng mình mà không cần phải bỏ ra bất kỳ
chi phí nào.
b. Giao diện đơn giản dễ sử dụng
Arduino IDE có một giao diện đơn giản, dễ sử dụng giúp người dùng thuận
tiện hơn trong thao tác. Dưới đây là một số tính năng chúng ta thường sử dụng:
● Nút kiểm tra chương trình (Verify): giúp dò lỗi phần code định truyền
xuống bo mạch Arduino.
● Nút tải đoạn code vào bo mạch Arduino (Upload): giúp nhập đoạn code
vào bo mạch Arduino.
● Vùng lập trình: người dùng sẽ viết chương trình tại khu vực này.
● Thanh Menu: gồm những thẻ chức năng nằm trên cùng như File, Edit,
Sketch, Tools, Help.
……………………………………….
…………………………………………
#include <WiFi.h>
#include "DHT.h"
int x;
int y;
} struct_message;
struct_message myData;
esp_now_peer_info_t peerInfo;
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
return;
}
esp_now_register_send_cb(OnDataSent);
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK){
return;
void loop() {
myData.id = 1;
float h = dht.readHumidity();
float t = dht.readTemperature();
myData.x = t;
myData.y = h;
if (result == ESP_OK) {
else {
delay(3000);
#include <esp_now.h>
#include <WiFi.h>
#include <IOXhop_FirebaseESP32.h>
#include <ArduinoJson.h>
#define FIREBASE_AUTH
"CxV2VWf74yPUCS0AfVvhwLg05S124wbNoc12ZYOy"
int id;
int x;
int y;
}struct_message;
struct_message myData;
struct_message board1;
struct_message board2;
boardsStruct[myData.id-1].x = myData.x;
boardsStruct[myData.id-1].y = myData.y;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
return;
//--------------------------------------------------
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Conectando ao wifi");
Serial.print(".");
delay(300);
Serial.println();
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
esp_now_register_recv_cb(OnDataRecv);
}
void loop() {
float h = boardsStruct[1].y;
float t = boardsStruct[1].x;
Serial.println();
//--------------------Sender---------------------------
sendDataPrevMillis = millis();
Firebase.setString("/Receiver/Title", "Dinh");
Firebase.setFloat("/Receiver/Number1", h); // Độ ẩm
}
3.4. Code WEB (HTML, CSS, JS)
Hình 3.8:
Đánh giá: Mô hình mạng cảm biến không dây này sử dụng giao thức HTTP để
truyền dữ liệu từ các nút cảm biến và nút sink với nhau. Tốc độ truyền dữ liệu khá
nhanh và sử dụng được trong môi trường không có mạng theo mô hình Access point –
Client của vi điều khiển ESP32.
Chúng ta đã mô phỏng một mạng cảm biến không dây trong một kho lạnh. Mạng
cảm biến này sử dụng các nút cảm biến với ESP32, DHT11 và màn hình LCD để thu
thập dữ liệu về nhiệt độ và độ ẩm trong kho lạnh và hiển thị chúng tại nút sink.
Qua quá trình mô phỏng, chúng ta đã nhìn thấy một số ưu điểm của mạng cảm
biến không dây trong môi trường kho lạnh. Với tính linh hoạt của mạng không dây,
chúng ta không cần phải cài đặt dây cáp phức tạp trong kho lạnh, điều này giúp tiết
kiệm thời gian và công sức khi triển khai.
Sử dụng ESP32, chúng ta có thể kết nối các nút cảm biến và nút sink với mạng
Wi-Fi, cho phép truyền dữ liệu từ các nút cảm biến đến nút sink một cách dễ dàng.
Điều này giúp theo dõi nhiệt độ và độ ẩm trong kho lạnh từ xa và thu thập dữ liệu một
cách hiệu quả.
DHT11 là một cảm biến giá rẻ và phổ biến, cho phép chúng ta đo nhiệt độ và độ
ẩm trong kho lạnh. Mặc dù độ chính xác của nó không cao như các cảm biến chuyên
nghiệp, nhưng trong mô phỏng này, nó vẫn cung cấp thông tin đáng tin cậy về điều
kiện môi trường trong kho lạnh.
Màn hình LCD được sử dụng để hiển thị dữ liệu nhiệt độ và độ ẩm một cách trực
quan và dễ đọc. Điều này giúp nhân viên trong kho lạnh dễ dàng theo dõi và kiểm soát
điều kiện nhiệt độ và độ ẩm một cách thuận tiện.
Tổng quát, mô phỏng mạng cảm biến không dây trong kho lạnh đã cho chúng ta
cái nhìn về cách sử dụng công nghệ để giám sát nhiệt độ và độ ẩm trong môi trường
lạnh. Mặc dù còn một số hạn chế, nhưng mạng cảm biến không dây vẫn là một giải
pháp hữu ích trong việc quản lý và kiểm soát điều kiện môi trường trong kho lạnh.