Tìm hiểu Module RF LoRa SX1278

0
530

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.

Sơ đồ chân module RF LoRa SX1278

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 .

Sơ đồ chân module RF LoRa SX1278 

Chi tiết cấu hình chân

Đố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 giao tiếp SPI

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 module LoRa

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.

  • Module SX1278 có thể gửi dữ liệu ở chế độ noneblocking một cách dễ dàng.
  • Có thể sử dụng các phương pháp điều chế tín hiệu khác nhau.
  • Phương pháp xử lý thể chọn là GFSK, FSK, OOK và GMSK.
  • Thiết bị có một ăng-ten bên ngoài giúp mở rộng phạm vi giao tiếp của module và Semtech là công ty chính thức sản xuất nó.
  • SX1278 sử dụng modem LoRa Spectrum có thể đạt được phạm vi xa nhất mà hệ thống điều chế tín hiệu FSK hoặc OOK hiện có có thể đạt được.
  • Hoạt động ở tần số 433MHz và sử dụng giao thức bán song công (half-duplex) cho giao tiếp SPI.
  • Theo chuẩn logic TLL và yêu cầu nguồn 3.3V để hoạt động.
  • Phạm vi giao tiếp của module từ 5-10KM, phù hợp trong công nghiệp và thương mại.
  • Sử dụng công nghệ FIFO 256-bit để truyền dữ liệu.
  • Trong module, người dùng có thể quyết định tỷ lệ sửa lỗi, hệ số lan truyền và cả băng thông.
  • Nhiều tín hiệu có thể truyền qua cùng một kênh mà không ảnh hưởng đến nhau.
  • SX1278 hỗ trợ kênh Super Anti Jamming ở 56db.

Ứng dụng module RF LoRa SX1278

  • Khả năng giao tiếp thành công với tầm xa của module làm cho nó phù hợp với mọi sản phẩm thương mại.
  • Trong Nông nghiệp do yêu cầu phạm vi liên lạc xa, SX1278 được  sử dụng nhiều trong hầu hết các dự án này.
  • Trong các ngành công nghiệp, với giao tiếp IoT thì module SX1278 là lựa chọn tốt nhất.
  • Máy đo công suất điện cũng cso thể giao tiếp với module RF.
  • Để tạo cấu trúc mạng hình sao hoặc mạng Mesh thì SX1278 rất đáng tin cậy.

Sơ đồ khối

Sơ đồ khối xác định cấu trúc bên trong các chân và ăng-ten của module.

Sơ đồ khối

Cách sử dụng Module Lora RF SX1278

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.

Giao tiếp module RF Lora với Arduino

Đầ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.

Giao tiếp module RF Lora với Arduino

Thư viện hỗ trợ Arduino SX1278

Đâ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.

Gửi tín hiệu tới module LoRa

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.

Nhận gói tin nhắn từ module LoRa

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.

Sơ đồ 2D SX1278

Sơ đồ 2D SX1278

>>> Mời anh em xem thêm

Tôi là một người làm việc trong lĩnh vực cơ khí, thiết bị công nghiệp....Blog là nơi tôi chia sẻ thông tin hữu ích đến các bạn đọc.
Subscribe
Notify of
0 Bình luận
Inline Feedbacks
View all comments