1、LoRa模块的配置
模块我是买的正点原子的Lora sx1278
用串口协议实现数据的传输,拿来配置一下就能用啦很方便。
这是附带的上位机软,按照商家给的手册再根据自己的需求分分钟配置好。
注意事项:
(1)发射功率不要太高,会导致信号过于精准,不易于接收。
(2)模块地址、通信信道以及波特率要保持一致。
(3)配置的时候,上面的波特率一定要选115200
,不然会提示连接超时
。
2、Arduino uno代码
#include <SoftwareSerial.h> /软串口头文件
#include <dht11.h> //导入dht11的头文件
#define DhtPIN A0 //dht11控制的端口
SoftwareSerial LoRa_Serial(2, 3); // RX, TX //模拟一个软串口,开发板接受LoRa模块接收的信号
dht11 DHT11; //实体化dht11的类,命名为:DHT11
String comdata = ""; //接收的字符串
char str_chk[] = "chk =";
char str_temp[] = "temp =";
char str_hum[] = "Hum =";
long previousMillis = millis(); //上一次激活时间
long interval = 5000; //间隔
void Receive_Data() {
while (LoRa_Serial.available() > 0) { //有数据过来
comdata += char(LoRa_Serial.read());
delay(2);
}
Serial.print("comdata = ");
Serial.println(comdata); //打印信息
comdata = ""; //接收信息归0
}
void Send_Data() {
float res_temp = 0.0;
float res_hum = 0.0;
DHT11.read(DhtPIN); //读取传感器数据
res_temp = (float)DHT11.temperature;
res_hum = (float)DHT11.humidity;
if (res_temp >= 0 && res_hum > 0) {
LoRa_Serial.print("temp = ");//串口打印结果,便于观察和调试
LoRa_Serial.print(res_temp);//串口打印结果,便于观察和调试
LoRa_Serial.print(",Hum = ");//串口打印结果,便于观察和调试
LoRa_Serial.println(res_hum);//串口打印结果,便于观察和调试
}
}
void setup() {
// put your setup code here, to run once:
pinMode(DhtPIN, OUTPUT); //设置dht11端口模式为输出
Serial.begin(9600);//初始化端口连续通信从波特率9600开始
Serial.println("hardware seriall!");
Serial.begin(9600);
Serial.println("software serial!");
}
void loop() {
// put your main code here, to run repeatedly:
if (LoRa_Serial.available()) {
Receive_Data();
}
if (millis() - previousMillis > interval) {
Send_Data();
previousMillis = millis();
}
}