使用Arduino UNO和SX1278进行LoRa数据收发
使用的硬件
- Arduino UNO开发板
- EByte的E32-TTL-100(频段:410-441MHz,功率100mW)LoRa模块,用的是SX1278的LoRa芯片
- 1K欧电阻
接线方法
E32-TTL-100----- Arduino UNO
M0 ----- GND
M1 ----- GND
TX ----- PIN 2 (PullUP)
RX ----- PIN 3 (PullUP & Voltage divider)
AUX ----- Not connected
VCC ----- 3.3v/5v
GND ----- GND
其中E32-TTL-100的RX引脚需要连接一个1K欧姆电阻再连到Arduino UNO的引脚3。
测试代码
用的是Arduino库管理器下载的EByte LoRa E32 library
(https://www.mischianti.org/category/my-libraries/lora-e32-devices/)。
发送代码
#include "Arduino.h"
#include "LoRa_E32.h"
LoRa_E32 e32ttl100(2, 3);
void setup() {
Serial.begin(9600);
delay(500);
e32ttl100.begin();
Serial.println("LoRa EByte E32, SX1278 Sender");
}
int loop_cnt = 0;
void loop() {
String s = "LoRa Message " + String(loop_cnt++);
ResponseStatus rs = e32ttl100.sendMessage(s);
Serial.print("send \"");
Serial.print(s.c_str());
Serial.print("\" ");
Serial.println(rs.getResponseDescription());
delay(1000);
}
接收代码
#include "Arduino.h"
#include "LoRa_E32.h"
LoRa_E32 e32ttl100(2, 3);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
delay(500);
e32ttl100.begin();
Serial.println("LoRa EByte E32, SX1278 Receiver");
}
void loop() {
if (e32ttl100.available() > 1) {
ResponseContainer rc = e32ttl100.receiveMessage();
if (rc.status.code != 1) {
rc.status.getResponseDescription();
} else {
// Print the data received
Serial.println(rc.data);
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
}
}