二、发送节点(定向传输)
1、LoRa模块的配置
步骤同我上篇基本一致。
- 注意 :该节点Lora模块我配置为了
定向传输
。
2、Arduino Uno 代码
#include <SoftwareSerial.h>
#include <dht11.h> //导入dht11的头文件
#define DhtPIN A0 //dht11控制的端口
SoftwareSerial LoRa_Serial(2, 3); // RX, TX //模拟一个软串口
dht11 DHT11; //实体化dht11的类,命名为:DHT11
unsigned char a[6]={0XFF,0XFF,0X17,0X49,0X44,0X3A }; //前3个为中心节点地址及信道,后3个是3个字符 "ID:"
String comdata = ""; //接收的字符串
char str_chk[] = "chk =";
char str_ID[] = "2 "; //节点地址
char str_temp[] = "temp = ";
char str_hum[] = ",Hum = ";
long previousMillis = millis(); //上一次激活时间
long interval = 2000; //间隔
void Receive_Data() {
while (LoRa_Serial.available() > 0) {
comdata += char(LoRa_Serial.read());
delay(2);
}
Serial.print("comdata = ");
Serial.println(comdata);
comdata = "";
}
void Send_Data() {
float res_temp = 0;
float res_hum = 0;
DHT11.read(DhtPIN);//读取传感器数据
res_temp = (float)DHT11.temperature;
res_hum = (float)DHT11.humidity;
if (res_temp >= 0 && res_hum > 0) {
LoRa_Serial.write(a,6);
LoRa_Serial.write(str_ID);
LoRa_Serial.write(str_temp);
LoRa_Serial.print(res_temp);
LoRa_Serial.write(str_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!");
LoRa_Serial.begin(9600);
LoRa_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();
}
}