Giải thích lưu đồ:
Đầu tiên kiểm tra xem UART có tồn ta ̣i không. Nếu chưa thì đợi đến khi có UART kết nối. Khi có kết nối UART, Arduino nhâ ̣n chuỗi dữ liê ̣u String. Sau đó tách chuỗi rồi gán giá tri ̣ cho từng biến tương ứng. Những biến này sẽ câ ̣p nhâ ̣t và điều
4.4.1.2 Lưu đồ chương trình NodeMCU ESP8266
Begin
T Khởi tạo port NodeMCU, Oled
Thiết lập kết nối Wifi, UART, MQTT, Firebase, OpenWeatherMap
Có kết nối Wifi?
Có kết nối MQTT?
Google assistant control
Có kết nối uart? ReceiveData() SendData() End T T F F
Lấy thơng tin thời tiết - thời gian hiện tại
Hiện thị thông tin thời tiết - thời gian lên Oled
Control() F
Giải thích lưu đồ:
Ban đầu hê ̣ thống khởi ta ̣o các port I/O cho NodeMCU và Oled. Thiết lâ ̣p các kết nối gồm Wifi, UART, MQTT, Firebase và OpenWeatherMap.
Sau đó kiểm tra kết nối Wifi, nếu có kết nối thì NodeMCU sẽ lấy thông tin thời tiết – thờ i gian từ API có sẵn trên OpenWeatherMap. Sau đó câ ̣p nhâ ̣t và hiển thi ̣ lên Oled
Kiểm tra kết nối MQTT. Nếu có thì vào chương trình con Google assistant control để điều khiển thiết bi ̣ trong hê ̣ thống bằng gio ̣ng nói. Ngược la ̣i thì đợi cho đến khi có kết nối MQTT.
Kiểm tra UART có kết nối không. Nếu có thì sẽ vào chương trình con ReceiveData() để nhâ ̣n dữ liê ̣u từ Arduino gửi qua và câ ̣p nhâ ̣t giá tri ̣ cho Firebase. Cuối cù ng vào chương trình con SendData() để gửi dữ liê ̣u vừa xử lí được về Arduino để điều khiển thiết bi ̣.
a. Chương trình con Google assistant control:
Google assistant control
Đọc lệnh nhận từ MQTT
Gán biến điều khiển = 1
Return New value = On
Delay 5000ms
Gán biến điều khiển = 0
T F
Hình 4.20: Google assistant control
Giải thích lưu đồ:
Khi ta nó i vào điê ̣n thoa ̣i, lê ̣nh đó được gửi lên MQTT và NodeMCU sẽ đo ̣c lên từ nó. Nếu có mô ̣t lê ̣nh mới thì sẽ delay 5000ms để đo ̣c. Nếu lê ̣nh đo ̣c được là “ON” trên MQTT thì biến điều khiển lên 1, ngược la ̣i biến điều khiển xuống 0. Sau đó sẽ được gửi qua Arduino qua chương trình con SendData.
b. Chương trình con ReceiveData:
ReceiveData
Đọc chuỗi dữ liệu nhận được từ Arduino qua UART
Tách chuỗi thành từng giá trị tương ứng với thiết bị
Cập nhật giá trị lên database Firebase
Return
Hình 4.21: Lưu đồ chương trình ReceiveData
Giải thích lưu đồ:
Nhận chuỗi giá tri ̣ String từ Arduino sau đó tách chuỗi ra thành từng phần giá tri ̣ tương ứng rồi câ ̣p nhâ ̣t giá tri ̣ lên Firebase.
c. Chương trình con Control:
Control
Lấy giá trị trạng thái thiết bị từ Firebase
Trạng thái thay đổi?
Đảo trạng thái
Gán trạng thái mới cho biến điều khiển
Return T
F