Module RF LoRa SX1278 là một trong những module giao tiếp tầm xa và công nghệ RF mới nhất. SX1278 sử dụng giao thức truyền thông SPI phù hợp với những thiết bị và bộ điều khiển chỉ có giao thức SPI.
Module sử dụng một ăng-ten để giao tiếp RF. Nó sử dụng nhiều kiểu điều chế tín hiệu có thể lựa chọn để giao tiếp dữ liệu.
SX1278 sử dụng giao tiếp RF đơn giản như các module khác nhưng nó có nhiều phương pháp điều chế tín hiệu và phạm vi lên đến 5KM-10KM giúp hoạt động tốt nhất ở khoảng cách xa.
Sử dụng kỹ thuật truyền quang phổ Lora mở rộng phạm vi lên tối đa 10KM nhưng yêu cầu một kênh cụ thể có băng thông 1MHz.
SX1278 có tổng cộng 16 chân, giúp thiết kế một thiết bị giao tiếp phù hợp. Các chân sẽ giao tiếp với vi điều khiển hoặc bo mạch giao tiếp SPI thứ ba.
Sau đó, thiết bị điều khiển sẽ thực hiện mọi chức năng thông qua module. Đây là sơ đồ chân của module RF LoRa SX1278 .
Đối với giao tiếp, các chân cụ thể sẽ hữu ích nhưng các chân khác cũng có một số cách sử dụng. Tất cả các chân của mô-đun SX1278 LoRa là:
Các chân | Mô tả | |
Chân 1 | ANT | Chân này để gắn vào ăng-ten. |
Chân 2, 9, 16 | GND | Chân nối đất chung với bộ nguồn và bộ điều khiển. |
Chân 3 | 3,3V | Chân cấp nguồn |
Chân 4 | RESET | Chân 4 là để đặt lại mô-đun thông qua tín hiệu bên ngoài. |
Chân 5 | DIO0 | Thực hiện chức năng I / O thông qua module. Chân DIO0 có thể tùy chỉnh như một chân ngắt. |
Chân 6 | DIO1 | |
Chân 7 | DIO2 | |
Chân 8 | DIO3 | |
Chân 10 | DIO4 | |
Chân 11 | DIO5 | |
Chân 12 | SCK | Chân SCK là chân xung clock giao tiếp SPI. |
Chân 13 | MISO | MISO có nghĩa là Master in và Slave out, master sẽ là bộ điều khiển và slave sẽ là SX1278. Thông qua chân MISO, dữ liệu sẽ chuyển từ module sang vi điều khiển / Arduino |
Chân 14 | MOSI | MOSI có nghĩa là Master out Slave In. Vì vậy, chân này sẽ nhận dữ liệu từ Arduino. |
Chân 15 | NSS | Trong giao tiếp SPI, chân này sẽ kích hoạt slave. |
Chân 12-15 là các chân cho giao tiếp SPI. Có thể sử dụng các chân nayuf để giao tiếp với các vi điều khiển như vi điều khiển, Arduino Uno. Chúng ta có một ví dụ giao tiếp với Arduino ở phần cuối.
Các tính năng của SX1278 chủ yếu dựa trên các giao thức hiện đại và nó cũng có giải pháp cho hầu hết các vấn đề mà một nhà thiết kế có thể gặp phải trong giao tiếp RF.
Các tính năng này không yêu cầu thêm bất kỳ module hoặc phần cứng bên ngoài đặc biệt nào. Mọi thứ đều có trong một module SX1278 duy nhất.
Sơ đồ khối xác định cấu trúc bên trong các chân và ăng-ten của module.
Mọi bộ vi điều khiển có giao thức SPI đều có thể điều khiển module nhưng phương pháp phổ biến nhất có thể tìm thấy trên internet là giao tiếp với Arduino. Trong Arduino, mạch kết nối dây sẽ theo giao tiếp SPI nhưng phần lập trình còn lại sẽ theo giao thức nối tiếp.
Đầu tiên hãy kết nối module với Arduino. Mạch sau đây là dành cho Arduino UNO và hãy luôn nhớ bảng Arduino cũng có các chân cụ thể như các module khác. Chỉ cần kết nối SX1278 với Arduino UNO theo sơ đồ sau.
Đây là tất cả các yêu cầu về mặt phần cứng để SX1278 hoạt động. Phần còn lại sẽ thuộc vào lập trình Arduino. Để lập trình module từ Arduino, khai báo hai thư viện sau sẽ hỗ trợ:
#include <SPI.h> #include <LoRa.h>
Thư viện SPI đầu tiên là khai báo giao tiếp SPI và thư viện LoRa sẽ xác định giao thức giữa module và Arduino. Thư viện sử dụng sẽ không làm cho dữ liệu mã hóa. Để gửi dữ liệu được mã hóa, trước tiên, dữ liệu cần được mã hóa trước khi chuyển đến thư viện.
Trong hình ảnh mạch trên, các kết nối chân SPI thì k cần khai báo nhưng các chân khác như reset, chọn chip và chân ngắt cần phải khai báo trong code. Ba chân này có thể thay đổi được và có thể kết nối với bất kỳ chân digital nào. Lệnh Arduino cho ba chân này sẽ là:
LoRa.setPins(NSS, RESET, DIO0);
Các chân NSS và Reset có chức năng cụ thể nhưng chân DIO0 ở đây dùng để ngắt. Thư viện Lora cũng tương thích với hầu hết các thiết bị LoRa. Để sử dụng module với Arduino, tần số của nó cần phải xác định để nó có thể hoạt động ổn định.
Lệnh sau sẽ giúp đặt mức tần số của module. Trong trường hợp tần số mà module không có, sẽ gây ra lỗi khi hoạt động.
LoRa.begin (433E6);
Giá trị 433E6 sẽ đại diện cho tần số 433MHz. Module hoạt động với giao thức SPI đôi khi phải thay đổi theo bộ điều khiển. Để tùy chỉnh giao tiếp SPI, sử dụng các lệnh sau:
LoRa.setSPIFrequency(frequency); LoRa.setSPI(spi);
Lệnh đầu tiên sẽ thay đổi tần số vì một số thiết bị không hoạt động ở tần số 8MHz và SPI sẽ giúp lấy các chân SPI mới.
Tất cả các lệnh trên là các điều kiện khai báo ban đầu để điều khiển module. Phần quan trọng nhất của lập trình là phương thức gửi dữ liệu. Để gửi dữ liệu, các lệnh sau sẽ hữu ích.
LoRa.beginPacket(); LoRa.print("HELLO"); LoRa.endPacket();
Lệnh trên sẽ gửi dữ liệu và luôn nhớ dữ liệu chỉ có thể lên đến 255 byte. Lệnh LoRa.print sẽ gửi chuỗi theo byte nhưng lệnh sau đây được sử dụng nhiều hơn.
LoRa.beginPacket(); LoRa.write(byte); LoRa.write(buffer, length); LoRa.endPacket();
Độ dài của dữ liệu chỉ nên là 255 byte, đây là điều quan trọng nhất và để gửi 255 byte, các nhà phát triển luôn phải khai báo phần bắt đầu và kết thúc của gói tin. Mỗi gói tin sẽ được gửi bởi bộ vi điều khiển một lần.
Khi kết thúc nhận gói tin, nó sẽ nhận dữ liệu và hoạt động theo cách code được lập trình.
LoRa.parsePacket() LoRa.available() (char)LoRa.read() LoRa.packetRssi()
LoRa.parsePacket() là kích thước gói tin. Lệnh thứ hai LoRa.avaialable () sẽ kiểm tra tính khả dụng của dữ liệu. (Char) Lora.read () sẽ đọc dữ liệu và lệnh cuối cùng LoRa.packetRssi () sẽ độ dài tín hiệu đã nhận (RSSI).
Các lệnh này chỉ mô tả các chức năng chung của module khi giao tiếp với Arduino. Để sử dụng đúng module ở cấp độ thương mại và cấp độ công nghiệp, các xử lý có thể khác nhau.
Giải pháp cho mỗi vấn đề có thể giải quyết được bằng lập trình code. Các nội dung ở trên chỉ nhằm mục đích giao tiếp đơn giản cho giao tiếp gửi và nhận tín hiệu. Để có biết các chức năng nâng cao, hãy xem thư viện hỗ trợ chính thức của module.
>>> Mời anh em xem thêm