Gửi nhận dữ liệu qua LoRa

Một phần của tài liệu [Giao Trinh] Microbit IoT - Adafruit - LoRa (Trang 109 - 110)

Chúng ta sẽ hiện thực chương trình gửi dữ liệu cho nốt cảm biến trước.Dữ liệu sẽ định kì gửi mỗi giây một lần. Một chương trình ví dụ cho việc gửi dữ liệu không

dây qua kênh LoRa như sau:

Hình 12.3:Chương trình gửi dữ liệu LoRa.

Một biến đếm, có tên làcntđược tạo ra và tăng dần sau mỗi lần gửi (cách đều nhau 1s). Đầu tiên, trong khốion start, biến cnt được gán ban đầu bằng 0. Tiếp theo, là

khai báo cổng Serial để kết nối với khối LoRa, ở đây là P0 và P1. Với khai báo này, chân P0 của Microbit sẽ nối với TXD của LoRa, chân P1 sẽ nối với RXD của LoRa.

Việc nối chân chéo giữa 2 thiết bị cần phải được kiểm tra kĩ lưỡng, đảm bảo sự chính xác giữa lập trình và kết nối mạch điện.

Cuối cùng, việc gửi dữ liệu sẽ được hiện thực định kì trong khốiforever. Câu lệnh serial write line sẽ được dùng để gửi thông tin ra thiết bị LoRa SX1278. Sau đó, thông tin sẽ được mã hóa và gửi đi không dây. Cần lưu ý là khi dùng câu lệnh này, thông tin gửi đi sẽ được tự động thêm kí tự xuống dòng (kí tựnew line).

3.2 Nhận dữ liệu

Phần cấu hình cho nốt nhận (trong câu lệnhon start) cũng khá tương tự với nốt

gửi. Tuy nhiên, câu lệnh set rx buffer size cần phải định thiết lập ban đầu để tránh hiện tượng tràn vùng nhớ trong mạch Microbit. Tùy kích thước dữ liệu bên nốt gửi, bên nốt nhận sẽ khai báo kích thước lớn hơn một chút là được. Trong ví dụ này, nốt gửi đang gửi 1 con số, nên kích thước của vùng nhớ tối đa là 4 bytes mà thôi. Chương trình cho nốt nhận được gửi ý như bên dưới:

Hình 12.4:Chương trình nhận dữ liệu LoRa.

Với câu lệnh gửi có kí tự xuống dòng, chúng ta phải chọn lựa cho tương xứng với câu lệnh nhận. Do trong khối nhận dữ liệu, chúng ta hiển thị ra đèn để kiểm tra, nên câu lệnhstop animationđược sử dụng thêm để tránh tình trạng nốt nhận dữ liệu khi đang hiển thị. Trong trường hợp gửi dữ liệu thưa (30 giây một lần), câu lệnh này có thể không cần phải sử dụng.

Một phần của tài liệu [Giao Trinh] Microbit IoT - Adafruit - LoRa (Trang 109 - 110)