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