工具與材料

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、本實驗只是簡單驗證了兩模塊的通訊,使通訊距離與可靠性還有待考究;


推薦閱讀:
相关文章