• Interfacing LoRa SX1276 with STM32 Microcontroller | LR1276-915MHz

QC

Interfacing LoRa SX1276 with STM32 Microcontroller | LR1276-915MHz

 Interfacing LoRa SX1276 with STM32 Microcontroller | LR1276-915MHz - Giao tiếp LoRa SX1276 với Vi điều khiển STM32 | LR1276-915MHz


Tổng quát

Trong hướng dẫn này, chúng ta sẽ tìm hiểu Giao diện của Mô-đun LoRa SX1276 với Vi điều khiển STM32 Bluepill. Mô-đun LR1276UA-A-915 sử dụng IC SX1276 và hoạt động trên tần số 915MHz. Sử dụng tính năng nhảy tần, nó mang lại sự cân bằng ngọt ngào về chất lượng truyền tín hiệu sẽ bao gồm dải tần 915MHz. LoRa LR1276 / SX1276 hoạt động với giao thức truyền thông SPI nên nó có thể được sử dụng với bất kỳ bộ vi điều khiển nào hỗ trợ SPI. Mô-đun SX1276 hoặc LR1276 có thể dễ dàng giao tiếp với chip STM32F103.


Trước đó, chúng tôi đã sử dụng mô-đun Reyax LoRa RYLR890 / RYLR896 với Arduino. Bạn cũng có thể xem qua bài viết. Mô-đun Reyax RYLR890 LoRa hoạt động trên Giao tiếp UART và có một số lỗi giao tiếp trong khi thử nghiệm. Nhưng Gplus-IoT LR1276 là Mô-đun SPI có hiệu suất tốt hơn tương tự như Mô-đun LoRa SX1278.


Hướng dẫn bao gồm hai ví dụ. Trong ví dụ đầu tiên, chúng tôi sẽ gửi một tin nhắn đơn giản “Xin chào thế giới” từ Người gửi / Người chuyển LoRa đến Người nhận. Nhưng trong ví dụ thứ hai, chúng tôi sẽ gửi dữ liệu cảm biến không dây. Cảm biến nhiệt độ độ ẩm DHT11 phù hợp nhất cho ứng dụng thử nghiệm. Bộ gửi LoRa STM32 sẽ gửi dữ liệu cảm biến đến Bộ nhận LoRa STM32.

S.N.COMPONENTS NAMEDESCRIPTIONQUANTITY
1STM32 MicrocontrollerSTM32F103C Bluepill Board2
2LoRa ModuleLR1276/SX12762
3HumidIty Temperature SensorDHT111
4Power Supply5V DC Adapter or 3.7V Battery2
5OLED Display0.96" SSD1306 I2C Display1
6Connecting WiresJumper Wires20
7Breadboard-1


LoRa Module LR1276/SX1276

Mô-đun LR1276 được thiết kế dựa trên SX1276. SX1276 kết hợp modem trải phổ LoRa có khả năng đạt được phạm vi xa hơn đáng kể so với các hệ thống hiện có dựa trên điều chế FSK hoặc OOK. Ở tốc độ dữ liệu tối đa của LoRa, độ nhạy tốt hơn FSK 8dB. Nhưng sử dụng hóa đơn vật liệu chi phí thấp với LoRa 2Oppm XTAL có thể cải thiện độ nhạy của máy thu hơn 20dB so với FSK.



LoRa cũng cung cấp những tiến bộ đáng kể về tính chọn lọc và hiệu suất chặn, nâng cao hơn nữa độ tin cậy của giao tiếp. Để có tính linh hoạt tối đa, người dùng có thể quyết định băng thông điều chế trải phổ (BW), hệ số trải rộng (SF) và tỷ lệ sửa lỗi (CR). Một lợi ích khác của điều chế chênh lệch là mỗi hệ số trải rộng là trực giao. Nó có nghĩa là nhiều tín hiệu được truyền đi có thể chiếm cùng một kênh mà không bị nhiễu.


Điều này cũng cho phép cùng tồn tại đơn giản với các hệ thống dựa trên FSK hiện có. Điều chế tiêu chuẩn GFSK, FSK, 00K và GMSK cũng được cung cấp để cho phép tương thích với các hệ thống hoặc tiêu chuẩn hiện có như MBUS không dây và IEEE 802.15.4g.

LR1276/SX1276 Features

  • LoRa Modem
  • 168 dB maximum link budget
  • +20 dBm – 100 mW constant RF output vs. V supply
  • +14 dBm high efficiency PA
  • Programmable bit rate up to 300 kbps
  • High sensitivity: down to -148 dBm
  • Bullet-proof front end: IIP3 = -11 dBm
  • Excellent blocking immunity
  • Operating Voltage 1.8-3.7V
  • Low RX current of 9.9 mA, 200 nA register retention
  • Fully integrated synthesizer with a resolution of 61 Hz
  • FSK, GFSK, MSK, GMSK, LoRaTMand 00K modulation
  • Built-in bit synchronizer for clock recovery
  • Preamble detection
  • 127 dB Dynamic Range RSSI
  • Automatic RF Sense and CAD with ultra-fast AFC
  • Packet engine up to 256 bytes with CRC
  • Built-in temperature sensor and low battery indicator

Applications

  • Automated Meter Reading.
  • Home and Building Automation.
  • Wireless Alarm and Security Systems.
  • Industrial Monitoring and Control
  • Long-range Irrigation System
Sơ đồ chân LR1276 / SX1276
Mô-đun Gplus-IoT LoRa LR1276 có tổng cộng 18 chân với các chức năng như sau:


Thư viện LoRa cho STM32

     Thư viện Arduino LoRa không được hỗ trợ bởi Bảng STM32F103. Đó là lý do tại sao có một thư viện được sửa đổi cho Bảng STM32F103 cho Arduino IDE. Thư viện STM32 LoRa được sử dụng để gửi và nhận dữ liệu bằng bộ đàm LoRa.

Thư viện này hiển thị trực tiếp đài LoRa và cho phép bạn gửi dữ liệu đến bất kỳ đài nào trong phạm vi có cùng thông số vô tuyến. Tất cả dữ liệu được phát đi và không có địa chỉ.



Giao diện Gplus-IoT LoRa LR1276 / SX1276 với STM32
Sơ đồ & Kết nối
Bây giờ, chúng ta hãy giao diện Mô-đun LoRa LR1276 / SX1276 với Bảng STM32F103C và tạo một Thiết bị nhận Người gửi LoRa STM32 đơn giản. Kết nối giữa SX1276 & STM32F103 như sau:



Sơ đồ được đưa ra dưới đây. Bạn có thể lắp ráp các cặp mạch trên breadboard. Một trong các mạch sẽ hoạt động như một máy phát hoặc người gửi và mạch kia đóng vai trò là máy thu.



Sender Code



#include <SPI.h>
#include <LoRa_STM32.h>
#define SS PA4
#define RST PB0
#define DI0 PA1
#define TX_P 17
#define BAND 915E6
#define ENCRYPT 0x78
int counter = 0;
void setup()
{
  Serial.begin(115200);
  while (!Serial);
  Serial.println("LoRa Sender");
  LoRa.setTxPower(TX_P);
  LoRa.setSyncWord(ENCRYPT);
  
  LoRa.setPins(SS, RST, DI0);
  if (!LoRa.begin(BAND))
  {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}
void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);
  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
  counter++;
  delay(5000);
}


Receiver Code

#include <SPI.h>
#include <LoRa_STM32.h>
#define SS PA4
#define RST PB0
#define DI0 PA1
#define TX_P 17
#define BAND 915E6
#define ENCRYPT 0x78
void setup()
{
  Serial.begin(115200);
  while (!Serial);
  Serial.println("LoRa Receiver");
  LoRa.setTxPower(TX_P);
  LoRa.setSyncWord(ENCRYPT);
  
  LoRa.setPins(SS, RST, DI0);
  if (!LoRa.begin(BAND))
  {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}
void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");
    // read packet
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }
    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}


Kiểm tra & Kết quả
Sau khi mã được tải lên, hãy mở Serial Monitor cho cả bộ phát và bộ thu. Người gửi sẽ gửi một số dữ liệu được nhận bởi người nhận.



















Hex

 :020000040800F2 :10000000000003200D3700085D3700085D37000849 :100010005D3700085D3700085D3700085D37000870 :100020000000000000000000000000005D...