HƯỚNG PHÁT TRIỂN

Một phần của tài liệu Thiết kế và thi công mô hình điều khiển thiết bị điện (Trang 101 - 110)

Hệ thống hiện tại đã đáp ứng được việc điều khiển các thiết bị. Trong quá trình thực hiện, nhóm thấy rằng đề tài này rất phổ biến, có tính ứng dụng rất cao trong nhiều dự án thực tế. Vì vậy nhóm đưa ra một số đề xuất nhằm cải tiến và nâng cấp hệ thống:

- Mở rộng số lượng cũng như công suất thiết bị điều khiển.

- Giám sát nơi điều khiển bằng camera, cảnh báo chống trộm, báo cháy. - Điều chỉnh độ sáng đèn, tốc độ quạt, nhiệt độ điều hòa, …

- Thiết lập hệ thống điều khiển thiết bị tự động nhằm tối ưu hóa việc sử dụng và tiết kiệm điện năng.

TÀI LIỆU THAM KHẢO

Sách tham khảo

[1] Nguyễn Đình Phú, Giáo trình Vi điều khiển PIC, Nhà xuất bản ĐH Quốc gia Tp. Hồ Chí Minh, 8/2016.

[2] Nguyễn Đình Phú – Nguyễn Trường Duy, Giáo trình Kỹ thuật số, Nhà xuất bản ĐH Quốc gia Tp. Hồ Chí Minh.

[3] Trần Thu Hà – Trương Thị Bích Ngà – Nguyễn Thị Lưỡng – Bùi Thị Tuyết Đan – Phù Thị Ngọc Hiếu – Dương Thị Cẩm Tú, Giáo trình Điện tử cơ bản, Nhà xuất bản ĐH Quốc gia Tp. Hồ Chí Minh.

Website tham khảo

[1] stackoverflow.com.

[2] “Học IoT cơ bản”, hocarm.org.

[3] Hệ thống giao tiếp với IoT, “Real Time Data Transfer for IoT with MQTT, Android and NodeMCU”, Medium.com, 11/2018.

[4] Giao thức MQTT, “MQTT Protocol”, 1sheeld.com, 7/2018. [5] Giới thiệu Android, “Learn Android”, tutorialspoint.com/android.

[6] ESP32, “ESP32: Connecting to a WiFi network”, techtutorialsx.com, 4/2017. [7] Datasheet: ESP32: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pd f ESP32-WOOM-32: https://www.espressif.com/sites/default/files/documentation/esp32-wroom- 32_datasheet_en.pdf

PHỤ LỤC SOURCE CODE

Chương trình điều khiển Hàm main #include <Arduino.h> #include "InfoWifiMQTT.h" #include "configDHT.h" #include "configHardware.h" #include "configMQTT.h"

unsigned long lastMillis = 0;

void setup() { SetupHardware(); SetupMQTT(); SetupDHT(); } void loop() { ClientLoop();

// publish a message roughly every second.

if (millis() - lastMillis > 10000) {

lastMillis = millis();

float temp = ReadTemp();

float humi = ReadHumi();

MQTTPublish(TOPIC_PUB_TEMP,String(temp)); MQTTPublish(TOPIC_PUB_HUMI,String(humi)); }

}

File Header

//Cấu hình thông tin thiết lập Server:

#include <Arduino.h>

#define NAME_WIFI_1 "NgocDiem" #define PASS_WIFI_1 "0979677439"

#define NAME_WIFI_2 "Phuong's phuong" #define PASS_WIFI_2 "pianoviolin" #define NAME_WIFI_3 "Tam"

#define PASS_WIFI_3 "123456"

#define HOST_NAME "m12.cloudmqtt.com" #define PORT 19950

#define CLIENT_ID "calib" #define USER_NAME "njiexcgi" #define PASS_MQTT "t42k_aJXkDGY" #define TOPIC_SUB_LIGHT_1 "cmd1" #define TOPIC_SUB_LIGHT_2 "cmd2" #define TOPIC_SUB_LIGHT_3 "cmd3" #define TOPIC_SUB_LIGHT_4 "cmd4" #define TOPIC_PUB_LIGHT_1 "status1" #define TOPIC_PUB_LIGHT_2 "status2" #define TOPIC_PUB_LIGHT_3 "status3" #define TOPIC_PUB_LIGHT_4 "status4" #define TOPIC_PUB_STATUS_ON "on" #define TOPIC_PUB_STATUS_OFF "off" #define TOPIC_PUB_TEMP "temp" #define TOPIC_PUB_HUMI "humi"

//Cấu hình MQTT: #include <Arduino.h> #include "InfoWifiMQTT.h" #include "configHardware.h" #include <WiFi.h> #include <MQTT.h>

void CheckWifi(const char * NameWifi, const char * PassWifi);

void Connect();

void PublishTopic();

void SubscribeTopic();

void OnAndOff(String payload,uint8_t light, String status);

void MakeAction(String topic, String payload);

void MakeAction(String topic, String payload);

void messageReceived(String &topic, String &payload);

void SetupMQTT();

void ClientLoop();

//Cấu hình thiết bị: #include <Arduino.h> #define DEN1 16 #define DEN2 4 #define DEN3 0 #define DEN4 2 #define ON HIGH

#define OFF LOW

void SetupHardware();

void TurnOn(uint8_t light);

void TurnOff(uint8_t light);

//Cấu hình nhiệt độ, độ ẩm: #include <Arduino.h> #include "DHT.h" #define DHTPIN 15 #define DHTTYPE DHT11 void SetupDHT(); float ReadHumi(); float ReadTemp(); Chương trình con

//Cấu hình thiết lập thông tin Server:

#include <configMQTT.h>

WiFiClient net; MQTTClient client;

void CheckWifi(const char * NameWifi, const char * PassWifi) {

int time = 0;

while(WiFi.status() != WL_CONNECTED) {

WiFi.begin(NameWifi, PassWifi); Serial.print(".");

delay(1000); time++;

if(WiFi.status() == WL_CONNECTED){

} if(time >=10){ return; } } } void Connect() {

Serial.print("checking wifi...");

while (WiFi.status() != WL_CONNECTED) {

CheckWifi(NAME_WIFI_1,PASS_WIFI_1); CheckWifi(NAME_WIFI_2,PASS_WIFI_2); CheckWifi(NAME_WIFI_3,PASS_WIFI_3); }

Serial.print("\nconnecting...");

while (!client.connect(CLIENT_ID, USER_NAME, PASS_MQTT)) {

Serial.print("."); delay(1000);

}

Serial.println("\nconnected!"); }

void PublishTopic() {

client.publish(TOPIC_PUB_LIGHT_1,TOPIC_PUB_STATUS_OFF);

client.publish(TOPIC_PUB_LIGHT_2,TOPIC_PUB_STATUS_OFF);

client.publish(TOPIC_PUB_LIGHT_3,TOPIC_PUB_STATUS_OFF);

client.publish(TOPIC_PUB_LIGHT_4,TOPIC_PUB_STATUS_OFF);

}

void SubscribeTopic() {

client.subscribe(TOPIC_SUB_LIGHT_1);

client.subscribe(TOPIC_SUB_LIGHT_2);

client.subscribe(TOPIC_SUB_LIGHT_3);

client.subscribe(TOPIC_SUB_LIGHT_4);

}

void OnAndOff(String payload,uint8_t light, String status) {

if(payload.compareTo(TOPIC_PUB_STATUS_ON) == 0)

{

TurnOn(light);

client.publish(status,TOPIC_PUB_STATUS_ON);

}

else if(payload.compareTo(TOPIC_PUB_STATUS_OFF) == 0)

TurnOff(light);

client.publish(status,TOPIC_PUB_STATUS_OFF);

} }

void MakeAction(String topic, String payload) {

if(topic.compareTo(TOPIC_SUB_LIGHT_1) == 0)

{

OnAndOff(payload,DEN1,TOPIC_PUB_LIGHT_1); }

else if(topic.compareTo(TOPIC_SUB_LIGHT_2) == 0)

{

OnAndOff(payload,DEN2,TOPIC_PUB_LIGHT_2); }

else if(topic.compareTo(TOPIC_SUB_LIGHT_3) == 0)

{

OnAndOff(payload,DEN3,TOPIC_PUB_LIGHT_3); }

else if (topic.compareTo(TOPIC_SUB_LIGHT_4) == 0)

{

OnAndOff(payload,DEN4,TOPIC_PUB_LIGHT_4); }

}

void messageReceived(String &topic, String &payload) {

Serial.println("incoming: " + topic + " - " + payload); MakeAction(topic,payload);

}

void SetupMQTT() {

WiFi.begin(NAME_WIFI_1, PASS_WIFI_1);

client.begin(HOST_NAME,PORT, net);

client.onMessage(messageReceived);

Connect(); PublishTopic(); SubscribeTopic(); } void ClientLoop() { client.loop();

delay(10); // <- fixes some issues with WiFi stability

if (!client.connected())

{

Connect(); }

void MQTTPublish(String topic, String data) {

client.publish(topic,data);

}

//Cấu hình phần cứng điều khiển thiết bị:

#include "configHardware.h" void SetupHardware() { pinMode(DEN1,OUTPUT); pinMode(DEN2,OUTPUT); pinMode(DEN3,OUTPUT); pinMode(DEN4,OUTPUT); TurnOff(DEN1); TurnOff(DEN2); TurnOff(DEN3); TurnOff(DEN4); Serial.begin(115200); }

void TurnOn(uint8_t light) {

digitalWrite(light,ON); }

void TurnOff(uint8_t light) { digitalWrite(light,OFF); } //Cấu hình nhiệt độ, độ ẩm: #include "configDHT.h" DHT dht(DHTPIN,DHTTYPE); void SetupDHT() { dht.begin(); } float ReadHumi() {

float humi = dht.readHumidity();

if(isnan(humi)){

return -1; }

else{

Serial.print(F("Humidity: ")); Serial.print(humi);

Serial.println(F("%")); return humi; } } float ReadTemp() {

float temp = dht.readTemperature();

if(isnan(temp)){

Serial.println(F("Failed to read temperature from DHT sensor!")); return -1;

} else{

Serial.print(F("Temperature: ")); Serial.print(temp);

Serial.println(F("C ")); return temp;

} }

Một phần của tài liệu Thiết kế và thi công mô hình điều khiển thiết bị điện (Trang 101 - 110)

Tải bản đầy đủ (PDF)

(110 trang)