工具与材料

1、Arduino uno板一块;

2、LoRa无线串口两块(1W/433MHz/SX1278);

3、USB转TTL底板一块;

4、面包板、接线;

实验目的与内容

1、通过两个LoRa串口模板,实现Arduino与电脑之间通讯,可用于数据采集,物联网等领域;

2、将LoRa板插入到USB转接板上,组成一个PC端的客户端。按引脚接线图示,将另一块LoRa板接入到Arduino板,形成一个数据发送端。编写发送端代码,使发送端每隔2秒发送一个数据包;

接线方式及引脚定义:

Arduion端测试代码:

//常式说明:收发端相互连接后,接收端发送1x命令,返回"Serial is open",发送0x命令,返回"Serial is close"
//发送其它以x结尾的命令,返回随机数据,每隔2秒发送一次,循环10次;
#define MD0 5 //初始化6号埠为输出
#define MD1 6 //初始化6号埠为输出
#define AUX 7 //初始化7号埠为输出
int p; //串口读取的值
long T; //定义温度变数
String teststring = "";

void setup() {
// put your setup code here, to run once:
pinMode(MD0, OUTPUT); //初始化5号埠为输出
pinMode(MD1, OUTPUT); //初始化6号埠为输出
pinMode(AUX, INPUT); //初始化7号埠为输入
Serial.begin(9600); //设置波特率为9600,一般是这个波特率
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(MD0, 0); //初始化MD0值为0
digitalWrite(MD1, 0); //初始化MD1值为0,根据串口模块定义,MD0,MD1引脚值为(0,0)组合时,为透传模式。其它组合模式见模块用户手册

p = Serial.parseInt();
if (Serial.read() == x) { // 收到结束符后开始处理数据。
switch (p) { // 判断数据内容。
case 1:
Serial.println("Serial is open"); // 回传数据。
break;
case 0:
Serial.println("Serial is close"); // 回传数据。
break;
default:
String Str = "Hello Neil! Now show Temperature below ***";
Serial.println(Str);
for (int i = 0; i < 10; i++) { // 循环10次。
String message = "T";
message += i;
message += ": ";
T = random(-10, 50);
message += T;
Serial.println(message);
double result = fmod(i, 12);
if (result == 0 && i > 0) {
String dd = "************";
Serial.println(dd);
}
delay(2000);
}
}
}
}

至此,Arduino+LoRa通讯测试成功!

实验不足:

1、收发端都连接电脑端,没有模拟实际场景进行收发。这里可以将Arduino板插上电池,然后拿到户外进行测试;

2、本实验只是简单验证了两模块的通讯,使通讯距离与可靠性还有待考究;


推荐阅读:
相关文章