Lưu đồ chương trình và chi tiết hoạt động

Một phần của tài liệu THIẾT LẬP CẤU HÌNH PHẦN CỨNG TỪ XA CHO CÁC HỆ THỐNG GIÁM SÁT VÀ ĐIỀU KHIỂN (Trang 43 - 45)

Lưu đồ giải thuật tại Master

Hình 4.1 Lưu đồ giải thuật cho Master

Bắt đầu

Khởi tạo LoRa, khởi tạo OLED, khởi tạo khối nút ấn Menu

Cài đặt từ

Gsheet

Nhận lệnh cài đặt từ ESPgửi về

Gửi lệnh tìm kiếm Slave mới

Chờ phản

hồi 2s Cấp địa chỉ cho Slave mới

Chờ phản

hồi 1s Xóa địa chỉ Slave vừa cấp

Gửi khung lệnh Read_data

Chờ phản hồi 1.5s Gửi khung lệnh Receive_data Nhận đủ dữ liệu trong 6s Kiểm tra lỗi

Gửi dữ liệu đến ESP8266

Gửi lệnh cập nhật đến Slave đã kết nối

Đ S Đ S S Đ S Đ Đ Đ S S

SVTH: Huỳnh Văn Biên –Nguyễn Nhật Linh Trang 34

Mô tả hoạt động:

Khi hệ thống được cấp nguồn, MCU được khởi động và khởi tạo LoRa (giao tiếp UART) giúp truyền nhận tín hiệu với các Slave, màn hình Oled (giao tiếp I2C), các nút ấn điều khiển sẽ được khởi tạo để điều khiển các Slave.

Nếu có yêu cầu cập nhật dữ liệu từ Google sheets (Gsheet) thì Master sẽ gửi yêu cầu cập nhật đến ESP8266 và chờ để nhận lệnh cập nhật về, sau đó sẽ phân tích lệnh và tiến hành gửi lệnh cài đặt từ Gsheet đến các Slave đã kết nối.

Master sẽ gửi mã timkiem (0xff) để quét các Slave xung quanh, trong thời gian 2s nếu cóphản hồi (có sự xuất hiện của Slave mới) thì Master sẽ cấp địa chỉ cho Slave mới. Tiếp theo Master sẽ chờ tín hiệu phản hồi của Slave nhận được địa chỉ vừa cấp để chắc chắn Slave đã được cập nhật địa chỉ, nếu sau 1s không nhận được phản hồi thì Master sẽ xóa địa chỉ vừa cấp và tiếp tục công việc khác. Ngược lại nếu nhận được phản hồi thành công, Master sẽ gửi tiếp lệnh batdau (0x00) cho tất cả các Slave được kết nối, các Slave sẽ vào chế độ chờ gọi tên và thực thi lệnh do Master yêu cầu.

Master sẽ cài đặt cảm biến cho từng port của các Slave bằng việc gửi lệnh batdau, địa chỉ slave chỉ định và lệnh cài đặt cảm biến của port. Nó tiếp tục chỉ định Slave cần đọc cảm biến bằng khung lệnh Read_data, chờ trong 1,5s để Slave đọc cảm biến và yêu cầu Slave gửi dữ liệu về Master bằng khung lệnh Recieve_data.

Thời gian chờ nhận dữ liệu tổng cộng là 6s gồm 1s nhận địa chỉ và 5s cho dữ liệu, sau khi nhận đủ số byte dữ liệu, Master tiến hành kiểm tra lỗi bằng cách kiểm tra lẻ số bit 1 của dữ liệu. Tiếp theo đó sẽ EX-OR toàn bộ dữ liệu của Slave. Nếu tất cả bằng 0 và không có bắt kì lỗi xảy ra ở Byte nào thì sẽ gửi qua cho ESP8266.

Vậy khung truyền sẽ được tùy biến theo cách thức hoạt động của hệ thống

- Khung dữ liệusẽ là 1 Byte chỉ có mã lệnh nếu tìm kiếm thiết bị mới (timkiem).

- Khung dữ liệu là 3 Byte nếu điều khiển các Slave.

Ví dụ: cài đặt cảm biến DHT11 cho Port1của Slave 1.

Ví dụ: yêu cầu gửi dữ liệu Slave 1.

1 Byte 1 Byte 1 Byte (adsbygoogle = window.adsbygoogle || []).push({});

Mã lệnh Address Mã lệnh cài đặt

1 Byte 1 Byte 1 Byte

batdau (0x00) 0x01 (Slave1) DHT1 (0x11)

1 Byte 1 Byte 1 Byte

SVTH: Huỳnh Văn Biên –Nguyễn Nhật Linh Trang 35

Một phần của tài liệu THIẾT LẬP CẤU HÌNH PHẦN CỨNG TỪ XA CHO CÁC HỆ THỐNG GIÁM SÁT VÀ ĐIỀU KHIỂN (Trang 43 - 45)