Nhóm sử dụng phần mềm lập trình Arduino IDE để lập trình cho vi điều khiển wifi ESP8266-V12. Nhóm sử dụng USB TTL-PL203 để nạp chương trình cho vi điều khiển(Hình 4.28)
Phần mềm Arduino IDE đang được sử dụng rất rộng rãi trên thế giới để lập trình cho các mạch Arduino, phần mềm được thiết kế rất dễ dàng cho người sử dụng kể cả những người không chuyên về lập trình về các vi điều khiển cũng dễ dàng tiếp cận và lập trình được, dựa trên thư viện nguồn mở nên rất dễ trong việc tìm kiếm tài liệu và các chương trình liên quan, giúp người sử dụng có thể dễ dàng tạo ra các dự án của riêng mình mà cũng không cần quá am hiểu về phần cứng của vi điều khiển. Ngôn ngữ sử dụng để lập trình là ngôn ngữ C và ngôn ngữ C++. Các bước sử dụng phần mềm lập trình Arduino IDE để lập trình: -Tải phần mềm và mở phần mềm.
-Để sử dụng được chương trình lập trình chúng ta tiến hành tải phần mềm từ trang web:arduino.cc
-Nhóm sử dụng phần mềm để lập trình cho mạch vi điều khiển ESP8266 nên nhóm lựa chọn phiên bản Arduino IDE1.8.9 hoặc cao hơn và cụ thể là phiên bản ArduinoIDE.1.9.1.
Sau khi tải phần mềm về thành công, mở phần mềm và phần mềm sẽ xuất hiện giao diện như hình và chúng ta có thể tiến hành lập trình.(Hình 4.32).
Hình 4. 32 Giao diện phần mềm Arduino IDE khi hoạt động
Hình 4. 33 Lấy tên ngoại vi nạp vào máy tính
Sau đó sẽ hiện ra một cửa sổ khác và nhóm sẽ tiến hành chọn vào “Device Manager” và phía bên phải màn hình chọn tiếp tục vào “Ports (COM & LPT) và lúc đó sẽ hiện ra “USB-SERIAL PL2303 (COM3)”, đây là thiết bị nạp chương trình cho Modul wifi ESP8266 và COM lựa chọn trong phần mềm Arduino là COM3.Tiếp tục nhóm sẽ tiến hành cài đặt trong phần mềm COM tương ứng với thiết bị mạch nạp và lựa chọn là COM3
Hình 4. 34 Lựa chọn cổng COM thích hợp với thiết bị nạp
Tạo project, viết chương trình và biên dịch chương trình cho Modul wifi ESP8266. Để có thể lập trình cho mạch vi điều khiển ESP8266 trên phần mềm Arduino IDE thì chúng ta cần cài bộ thư viện hỗ trợ.
Để cài thư viện cần mở phần mềm Arduino IDE sau đó lựa chọn vào “File” sau đó lựa chọn “Preferences” và thêm đường dẫn để cài đặt bộ thư viện tại “Manager.
URLs: http://arduino.esp8266.com/stable/package_esp8266com_index.json”.
Hình 4. 35 Đường dẫn để cài gói thư viện lập trình cho Modul wifi ESP8266
Sau đó nhóm sẽ tiến hành vào mục “Tools” và lựa chọn vào “Board” tiếp sau đó là “Boards Manager” để cài đặt thêm thư viện cho Modul wifi ESP8266 NodeMCU. Sau đó chọn phiên bản và chọn “Install”.
Hình 4. 36 Tiến hành cài gói thư viện cho mo dule ESP8266
Tiếp sau đó nhóm sẽ cài đặt các thông số để có thể lập trình, biên dịch và nạp chương trình cho ESP8266, nhóm sẽ tiến hành chọn vào “Tools” sau đó chọn “Board”và tiếp tục chọn NodeMCU 1.0 (ESP-12E Module)
Sau đó thiết lập các thông số như tốc độ xử lý của CPU (CPU Frequency) lựa chọn tùy theo mục đích sử dụng, bộ nhớ Flash, tốc độ nạp chương trình 115200 (Upload Speed) là tốc độ nạp chương trình cao nhất, tốc độ càng cao nạp càng nhanh..
Hình 4. 37 Thiết lập các thông số cho ESP8266 cho Arduino
Sau đó tiến hành kết nối mạch nạp cho Modul wifi ESP8266.
Sau khi đã cài đặt xong nhóm sẽ tiến hành lập trình mẫu cho mạch vi điều khiển:
Hình 4. 38 Lập chương trình mẫu cho ESP8266 cho Arduino
Sau khi chọn nạp chương trình thì quá trình biên dịch và nạp sẽ tiến hành như hình bên dưới, sẽ có thông báo hiện lên số % chương trình được nạp. Khi đủ 100% thì chương trình đã nạp hoàn thành và Module wifi ESP8266 sẽ hoạt động theo chương trình đã lập trình.
Lưu đồ giải thuật chính của mạch vi điền khiển ESP8266
BẮT ĐẦU
Các bộ phận vi xử lý, hạ áp, relay sẽ được cấp nguồn
Vi xử lý ESP8266 sẽ phát Wifi có IP, để truy cập Wifi cho ESP
Tiến hành kết nối Wifi
Mạng Wifi được kết nối
Kết nối với cở sở dữ liệu FIREBASE, BUTTON, DISPLAY
Thực thi điều khiển
Kết thúc
Đ S
Hình 4. 39 Lưu đồ giải thuật chương trình chính ESP8266
Giải thích: Khi ta cấp nguồn vi điều khiển, lúc này ESP8266 sẽ kích hoạt vào chế độ Station, thiết bị có kết nối wifi (điện thoại, laptop…) truy cập vào ESP8266 (tên và mật khẩu do ta thiết lập trong code), nhập địa chỉ IP mặc định của nó (192.168.4.1) vào trình duyệt web để vào trang config. Ở trang config, nó sẽ hiện ra danh sách các điểm wifi gần ESP8266, ta chọn vào một điểm rồi nhập mật khẩu để kết nối. Tên và mật khẩu sẽ được lưu trong bộ nhớ để phục vụ cho lần kết nối sau.– Hệ thống sẽ tự reset lại và kết nối đến với điểm wifi được lưu trong bộ nhớ. Có thể thay đổi dễ dàng các thông số về mạng Wifi để có thể kết nối mỗi khi có sự thay đổi về mạng
Hình 4. 40 Danh sách các Wifi gần nhất Hình 4. 41 Điềm Wifi cố định do ta cài đặt
Khi có nguồn cấp cho ESP, ESP sẽ kích hoạt chế độ Station, phát ra điểm Wifi cố định do ta thiết lập trước( điểm kết nối này không có dữ liệu), sau đó ta nhập IP của ESP lên Webserver(192.168.4.1-mặc định). Tiếp tục sẽ hiện các danh sách Wifi gần nhất mà vi điều khiển quét được. Ta đăng nhập tài khoản và mật khẩu, lập tức ESP sẽ kết nối với Wifi đó để thực thi truyền dữ liệu.
Giúp ta linh hoạt kết nối mọi Wifi ở mọi lúc mọi nơi, sẽ tiện hơn rất nhiều trong việc config cứng cố định một Wifi.
#define QUOTE(...) #__VA_ARGS__ // hỗ trợ write các đoạn mã http dễ dàng hơn
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h> //tạo ra 1 sever wifi để save vào bộ nhớ
#include "Nextion.h"
#include "FS.h" // quản lý bộ nhớ
#include <SoftwareSerial.h>
#include <Wire.h> // Comes with Arduino IDE
ESP8266WebServer server(80); // dùng sever cổng 80
#define DS3231_I2C_ADDRESS 0x68
#include <FirebaseArduino.h>
#define.FIREBASE_AUTH"Pjo5ZTsJTnFSU63eUzyNGkrhKaX7xG8goTgTD hmQ"
#define FIREBASE_HOST "timerrtc-30fc8.firebaseio.com"
Các thư viện cần thiết thực hiện các tính năng của vi điều khiển, đọc và ghi dữ liệu lên cơ sở dữ liệu thời gian thực FIREBASE thông qua thư viện #include<FirebaseArduino.h>
#define.FIREBASE_AUTH"Pjo5ZTsJTnFSU63eUzyNGkrhKaX7xG8goTgTD hmQ"
#define FIREBASE_HOST "timerrtc-30fc8.firebaseio.com"
Ta sẽ lấy 2 thông tin này ở trên trang web Firebase nơi ta đã tạo project.
Khởi tạo tên và mật khẩu chứa thông tin Wifi sẽ kết nối:
server.begin();
WiFi.mode(WIFI_AP_STA); //SETUP TÊN WIFI
WiFi.softAP("DATN_THANG7", "12345678"); //SETUP TÊN WIFI
Điểm Wifi này sẽ được phát khi có cấp nguồn nhưng không dữ liệu, ta dùng mạng đó để đăng nhập bằng ip đã nói ở trên cấu hình Wifi cho vi điều khiển.
Serial.println(String("Đang kết nối: ") + id + " | " + pass);
WiFi.begin(id, pass);
while (WiFi.status() != WL_CONNECTED )
{
delay(100);
//Serial.print(".");
server.handleClient();
}
Sau khi so sánh tài khoản và mật khẩu trùng khớp, nếu kếp nối thành công thì WL_CONNECTED, còn kết nối thất bại thì sẽ lặp lại chờ đến khi nào kết nối đúng tài khoản và mật khẩu.
MÀN CÀI ĐẶT
KIỂM TRA NGÀY NGHỈ LỄ?
Đ
S BẮT ĐẦU
KIỂM TRA NGÀY THI? MẶC ĐỊNH? Đ Đ S ĐIỀU CHỈNH? Đ THỜI GIAN THỰC BẰNG THỜI GIAN MẶC ĐỊNH Đ ĐƯA DỮ LIỆU TRÊN FIREBASE
KIỂM TRA BIẾN TRÊN FIREBASE mothoi==1 CHUÔNG KÊU (5s) TẮT CHUÔNG KẾT THÚC S S Đ Đ THỜI GIAN THỰC BẰNG THỜI GIAN ĐIỀU CHỈNH Đ ĐƯA DỮ LIỆU TRÊN FIREBASE
KIỂM TRA BIẾN TRÊN FIREBASE mothoi==1 CHUÔNG KÊU (5s) S S Đ Đ S KIỂM TRA CHẾ ĐỘ TỰ ĐỘNG THEO TIẾT S
Hình 4. 42 Lưu đồ hoạt động theo mặc định
Khi ta mở ứng dụng đã thiết lập cho điện thoại để điều khiển thiết bị, lúc này app sẽ chạy ở chế độ mặc định, tùy vào nhu cầu người sử dụng cài đặt hẹn giờ, chọn ngày lễ hoặc thi. Ta thiết lập các chế độ xong, khởi động lại app, app sẽ tự động lưu chế độ trước đó để hoạt động.
Ở chế độ ngày lễ, ta thiết lập chuông tắt (hệ thống sẽ gởi giá trị biến 0) trong khoảng thời gian ta chọn, sau khi kết thúc hết khoảng, hệ thống sẽ chuyển về chế độ tự động chạy 12 tiết hoặc đang trong thời gian thi sẽ thực thi chế độ này.
Hình 4. 43 Lưu đồ ở màn hình chính điện thoại
Chế động mặc định ta chia giao diện thành 2 phần: 1 phần chạy tự động 12 tiết thiết lập mặc định, ta config khung giờ theo từng tiết(vào học=10s, chuyển tiết=5s, ra chơi=5s ,ra về=10s) tương ứng với lịch học của trường ĐH.SPKT, ta cũng có thể cho tắt chuông hoặc bật chuông sẽ hoạt động trong tiết tiếp theo. 1
phần ta tạo 2 nút nhấn trên màn hình điện thoại, giúp ta can thiệt trực tiếp khi chế độ 12 tiết khong hoạt động. Điều khiển bằng nút giúp ta linh hoạt khi hệ thống có trục trặc.
Lưu đồ giải thuật chính của nút nhấn
NÚT NHẤN
KHAI BÁO TRẠNG THÁI CÁC NÚT NHẤN NHẤN NÚT CHUÔNG KÊU Đ S CHUÔNG TẮT S TT_BTN=1 TT_BTN=!TT_BTN TT_BTN=0 TT_BTN=!TT_BTN S
Hình 4. 44 Lưu đồ ở màn hình chính điện thoại
Ta sẽ kiểm tra liên tục trạng thái của nút nhấn, nếu trạng thái nút nhấn đang ở mức 1 thì khi tác động sẽ là 0 hoặc ngược lại đồng thời lúc này sẽ gởi tín hiệu về Firebase điều khiển phần cứng.