You are on page 1of 3

Họ và tên: Lưu Quang Thái

MSSV: 105200383
Lớp: 20TDHCLC1
Lớp HP: 20N33 IOT
a. Trình bày kiến trúc IOT của hệ thống:
 Tầng Cảm biến: Tầng này bao gồm cảm biến dòng điện ACS712 và cảm biến tốc
độ, nơi mà dòng điện và tốc độ được đo và gửi đến module ESP32 thông qua
giao thức nối tiếp.
 Tầng Giao tiếp: Tầng này bao gồm module ESP32, nơi dữ liệu từ cảm biến
ACS712 và cảm biến tốc độ được nhận và gửi đi. Module ESP32 thiết lập kết
nối WiFi với mạng cung cấp và sử dụng giao thức nối tiếp để làm việc với cảm
biến ACS712 và cảm biến tốc độ. Nó cũng sử dụng giao thức HTTP để gửi dữ
liệu lên Thingspeak thông qua kết nối WiFi.
 Tầng Mạng: Tầng này bao gồm mạng WiFi, cho phép module ESP32 kết nối với
Internet. Module ESP32 sẽ sử dụng thông tin đăng nhập WiFi để thiết lập kết nối
và truyền dữ liệu từ cảm biến ACS712 và cảm biến tốc độ lên Thingspeak.
 Tầng Ứng dụng: Tầng này bao gồm Thingspeak, nơi dữ liệu nhiệt độ và độ ẩm
được gửi và lưu trữ. Thingspeak cung cấp giao diện để hiển thị dữ liệu, thực hiện
phân tích và quản lý dữ liệu được thu thập từ cảm biến ACS712 và cảm biến tốc
độ.
b. Thiết lập kết nối phần cứng của hệ thống:

Sơ đồ nối phần cứng


c. Chương trình lập trình giám sát dòng điện và tốc độ(có chú thích rõ rãng):
#include <WiFi101.h>
#include <ThingSpeak.h>
#include <ACS712.h>
#include <AnalogSmooth.h>

// Cài đặt thông tin WiFi


const char* ssid = "IP_5G";
const char* password = "10203040";

// Cài đặt thông tin ThingSpeak


const char* server = "api.thingspeak.com";
const char* apiKey = "3ANX1J5CG8OP6CVX";
WiFiClient client;

// Khai báo chân kết nối của cảm biến ACS712 và cảm biến tốc độ vào
Arduino
const int ACS712_PIN = A0;
const int SPEED_PIN = 10;

// Khởi tạo đối tượng cảm biến ACS712


ACS712 sensor(ACS712_PIN);

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

// Kết nối WiFi


WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi not connected");
}
Serial.println("WiFi connected");
String ipAddress = IPAddress(WiFi.localIP()).toString();
Serial.println("Local IP: " + WiFi.localIP().toString());

// Khởi tạo ThingSpeak


ThingSpeak.begin(client);
}

void loop() {
// Đọc giá trị dòng điện từ cảm biến ACS712
float current = sensor.getCurrentAC();

// Đọc giá trị tốc độ từ cảm biến tốc độ


int speed = digitalRead(SPEED_PIN);
// Gửi dữ liệu lên ThingSpeak
ThingSpeak.setField(1, current);
ThingSpeak.setField(2, speed);
int httpCode = ThingSpeak.writeFields(2308060, 3ANX1J5CG8OP6CVX);

// Kiểm tra xem dữ liệu có được gửi thành công hay không
if (httpCode == 200) {
Serial.println("Data sent to ThingSpeak successfully.");
} else {
Serial.println("Error sending data to ThingSpeak. HTTP code: " +
String(httpCode));
}

delay(1000); // Đợi 1 giây trước khi gửi dữ liệu tiếp theo


}
d. Kết quả ThingSpeak:

You might also like