1. Trang chủ
  2. » Luận Văn - Báo Cáo

Điều khiển đèn, quạt, điều hòa qua smartphone 4

13 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 331,13 KB

Nội dung

Khóa luận tốt nghiệp SV Nguyễn Văn Hà Ngô Quang Khải 57 CHƯƠNG 4 LẬP TRÌNH NHÚNG CHO ESP8266 4 1 Giới thiệu về phần mềm Arduino IDE Môi trường phát triển tích hợp (Integrated Development Environment) của Arduino là một ứng dụng cross platform (đa nền tảng) được viết bằng Java, và từ IDE này sẽ được sử dụng cho ngôn ngữ lập trình xử lý (Processing programming language) và project Wiring Nó được thiết kế để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm Nó bao gồm một chươn.

SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp CHƯƠNG LẬP TRÌNH NHÚNG CHO ESP8266 4.1 Giới thiệu phần mềm Arduino IDE Môi trường phát triển tích hợp (Integrated Development Environment) Arduino ứng dụng cross-platform (đa tảng) viết Java, từ IDE sử dụng cho ngôn ngữ lập trình xử lý (Processing programming language) project Wiring Nó thiết kế để dành cho người tập làm quen với lĩnh vực phát triển phần mềm Nó bao gồm chương trình code editor với chức đánh dấu cú pháp, tự động brace matching, tự động canh lề, compile (biên dịch) upload chương trình lên board với cú nhấp chuột Một chương trình code viết cho Arduino gọi sketch Các chương trình Arduino viết C C++ Arduino IDE kèm với thư viện phần mềm gọi "Wiring", từ project Wiring gốc, giúp thao tác input/output dễ dàng Người dùng cần định nghĩa hàm để tạo chương trình vịng thực thi (cyclic executive) chạy được: - Setup(): hàm chạy khởi động chương trình, dùng để thiết lập cài đặt - Loop(): hàm gọi lặp lại tắt nguồn board mạch Hình 4.1 Phần mềm Arduino IDE 57 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp Môi trường phát triển viết Java dựa ngôn ngữ lập trình xử lý phần mềm mã nguồn mở khác Phần mềm sử với board mạch có thư viện hỗ trợ viết môi trường Arduino Kể từ tháng năm 2015, Arduino IDE tải xuống triệu lần Hiện tại, khơng sử dụng cho board mạch Arduino Genuido mà hàng trăm công ty giới sử dụng để lập trình cho thiết bị họ, bao gồm thiết bị tương đương Arduino môi trường phát triển tích hợp đa tảng, làm việc với điều khiển Arduino để viết, biên dịch tải code lên board mạch Phần mềm cung cấp sợ hỗ trợ lên loạt board mạch Arduino Arduino Uno, Nano, Mega, Esplora, Ethernet, Fio, Pro hay ProMini Lily Arduino Ngơn ngữ cho Arduino C C++, phần mềm phù hợp cho lập trình viên quen thuộc với ngơn ngữ Các tính làm bật cú pháp, thụt đầu dịng tự động, làm trở thành thay đại cho IDE khác 4.2 Nguyên lý truyền nhận thông tin điều khiển thiết bị với smartphone Server Blynk ESP8266 Smartphone client client 58 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp Để giao tiếp từ smartphone tới ESP8266 qua Internet ta thơng qua server trung gian làm cầu nối tín hiệu Server có chức tiếp nhận từ client (ESP8266 smartphone) truyền thơng tin, tín hiệu tới client 4.3 Lưu đồ giải thuật Hình 4.2 Lưu đồ giải thuật 59 SV: Nguyễn Văn Hà Ngô Quang Khải Khóa luận tốt nghiệp 4.4 Code ESP8266 #define BLYNK_PRINT Serial #include #include BlynkTimer reload; #include WiFiClient espClient; PubSubClient client(espClient); const char* mqtt_server = "io.adafruit.com"; #define auth "54070498c30d4fa39e07391226d84381" // mã blynk #define ssid "No Internet" // tài khoản wf #define pass "hoithanghuydi" // pass wf void setup_wifi() { delay(10); // bắt đầu kết nối với mạng Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) 60 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); if ((char)payload[0] == '1') { digitalWrite(D0, LOW); Blynk.virtualWrite(V1, 0); Serial.println("bat den"); } else { if ((char)payload[0] == '0') { digitalWrite(D0, HIGH); Blynk.virtualWrite(V1, 1); Serial.println("tat den"); } else { if ((char)payload[0] == '3') { digitalWrite(D1, LOW); Blynk.virtualWrite(V2, 0); Serial.println("bat quat"); } 61 SV: Nguyễn Văn Hà Ngô Quang Khải Khóa luận tốt nghiệp else { if ((char)payload[0] == '2') { digitalWrite(D1, HIGH); Blynk.virtualWrite(V2, 1); Serial.println("tat quat"); } else { if ((char)payload[0] == '5') { digitalWrite(D2, LOW); Blynk.virtualWrite(V3, 0); Serial.println("bat dieu hoa"); } else { if ((char)payload[0] == '4') { digitalWrite(D2, HIGH); Blynk.virtualWrite(V3, 1); Serial.println("tat dieu hoa"); } else { if ((char)payload[0] == '6') { digitalWrite(D6, LOW); Blynk.virtualWrite(V4, 0); Serial.println("bat o cam "); 62 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp } else { if ((char)payload[0] == '7') { digitalWrite(D6, HIGH); Blynk.virtualWrite(V4, 1); Serial.println("tat o cam 1"); } else { if ((char)payload[0] == '8') { digitalWrite(D7, LOW); Blynk.virtualWrite(V5, 0); Serial.println("bat o cam "); } else { if ((char)payload[0] == '9') { digitalWrite(D7, HIGH); Blynk.virtualWrite(V5, 1); Serial.println("tat o cam 2"); } }}}}}}}}} } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection "); // Create a random client ID String clientId = "ESP8266Client-"; 63 SV: Nguyễn Văn Hà Ngô Quang Khải Khóa luận tốt nghiệp clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str(),"nguyenvanha", "3fe0c16a352e4fbfbc8c398b53a040e0")) { Serial.println("connected"); client.subscribe("nguyenvanha/feeds/myhome"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in seconds"); // Wait seconds before retrying delay(5000); } } } int virtualPin1; int virtualPin2; int virtualPin3; int virtualPin4; int virtualPin5; int flag1 = 0; int flag2 = 0; int flag3 = 0; int flag4 = 0; int flag5 = 0; unsigned long int preTime = 0; #define relay1 D0 #define relay2 D1 #define relay3 D2 #define relay4 D6 64 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp #define relay5 D7 #define button1 D3 #define button2 D4 #define button3 D5 BLYNK_WRITE(V1) { virtualPin1 = param.asInt(); flag1 = 1; } BLYNK_WRITE(V2) { virtualPin2 = param.asInt(); flag2 = 1; } BLYNK_WRITE(V3) { virtualPin3 = param.asInt(); flag3 = 1; } BLYNK_WRITE(V4) { virtualPin4 = param.asInt(); flag4 = 1; } BLYNK_WRITE(V5) { virtualPin5= param.asInt(); flag5 = 1; } 65 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp //đồng lại trạng thái nguồn BLYNK_CONNECTED() { Blynk.syncVirtual(V1); Blynk.syncVirtual(V2); Blynk.syncVirtual(V3); Blynk.syncVirtual(V4); Blynk.syncVirtual(V5); } void setup() { Blynk.begin(auth, ssid, pass); pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); pinMode(relay4, OUTPUT); pinMode(relay5, OUTPUT); pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP); pinMode(button3, INPUT_PULLUP); Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { Blynk.run(); BLYNK_CONNECTED(); if (!client.connected()) { 66 SV: Nguyễn Văn Hà Ngô Quang Khải Khóa luận tốt nghiệp reconnect(); } client.loop(); if (flag1 == 1) { if (virtualPin1 == 0) { digitalWrite(relay1, LOW); } else digitalWrite(relay1, HIGH); } if (digitalRead(button1) == LOW) { while (digitalRead(button1) == LOW); int ledStatus = digitalRead(relay1); if (ledStatus == 0) { digitalWrite(relay1, HIGH); Blynk.virtualWrite(V1, 1); //Ghi liệu từ Nodemcu lên Blynk } else { digitalWrite(relay1, LOW); Blynk.virtualWrite(V1, 0); ////Ghi liệu từ Nodemcu lên Blynk } } if (flag2 == 1) { if (virtualPin2 == 0) { digitalWrite(relay2, LOW); } else digitalWrite(relay2, HIGH); } if (digitalRead(button2) == LOW) { while (digitalRead(button2) == LOW); int ledStatus = digitalRead(relay2); 67 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp if (ledStatus == 0) { digitalWrite(relay2, HIGH); Blynk.virtualWrite(V2, 1); //Ghi liệu từ Nodemcu lên Blynk } else { digitalWrite(relay2, LOW); Blynk.virtualWrite(V2, 0); ////Ghi liệu từ Nodemcu lên Blynk } } if (flag3 == 1) { if (virtualPin3 == 0) { digitalWrite(relay3, LOW); } else digitalWrite(relay3, HIGH); } if (digitalRead(button3) == LOW) { while (digitalRead(button3) == LOW ); int ledStatus = digitalRead(relay3); if (ledStatus == 0) { digitalWrite(relay3, HIGH); Blynk.virtualWrite(V3, 1); //Ghi liệu từ Nodemcu lên Blynk } else { digitalWrite(relay3, LOW); Blynk.virtualWrite(V3, 0); ////Ghi liệu từ Nodemcu lên Blynk } } if (flag4 == 1) { if (virtualPin4 == 0) 68 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp { digitalWrite(relay4, LOW); Blynk.virtualWrite(V4, 0); } else { digitalWrite(relay4, HIGH); Blynk.virtualWrite(V4, 1) } } if (flag5 == 1) { if (virtualPin5 == 0) { digitalWrite(relay5, LOW); Blynk.virtualWrite(V5, 0); } else{ digitalWrite(relay5, HIGH); Blynk.virtualWrite(V5, 1);}} flag1 = 0; flag2 = 0; flag3 = 0; flag4 = 0; flag5 = 0;} 69 ... 4. 2 Nguyên lý truyền nhận thông tin điều khiển thiết bị với smartphone Server Blynk ESP8266 Smartphone client client 58 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp Để giao tiếp từ smartphone. .. } if (flag4 == 1) { if (virtualPin4 == 0) 68 SV: Nguyễn Văn Hà Ngơ Quang Khải Khóa luận tốt nghiệp { digitalWrite(relay4, LOW); Blynk.virtualWrite(V4, 0); } else { digitalWrite(relay4, HIGH);... ESP8266 qua Internet ta thông qua server trung gian làm cầu nối tín hiệu Server có chức tiếp nhận từ client (ESP8266 smartphone) truyền thơng tin, tín hiệu tới client 4. 3 Lưu đồ giải thuật Hình 4. 2

Ngày đăng: 11/07/2022, 13:03

HÌNH ẢNH LIÊN QUAN

Hình 4.1 Phần mềm Arduino IDE - Điều khiển đèn, quạt, điều hòa qua smartphone 4
Hình 4.1 Phần mềm Arduino IDE (Trang 1)
Hình 4.2 Lưu đồ giải thuật - Điều khiển đèn, quạt, điều hòa qua smartphone 4
Hình 4.2 Lưu đồ giải thuật (Trang 3)

TỪ KHÓA LIÊN QUAN