工具与材料:
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、本实验只是简单验证了两模块的通讯,使通讯距离与可靠性还有待考究;