HTCC-AC02 Arduino Lora 膠囊 採集HDC1080 資料使用 Arduino JSON傳送
話說上篇HTCC-AC02 (Arduino Lora 膠囊) 感測器睡眠模式節電練習,D桃完成間隔10秒傳送一次資料!不過每次傳送就要發送佔用平到約2秒鐘!這樣在一個通訊環境裡只能有5顆感測器,這也太慘了!D桃想到的方法是每10秒收集HDC1080一次。然後每15分鐘發送一次給HITI-WB32閘道器。這樣理論上在同一個環境內可以有450個裝置。
硬體材料
- HTCC-AC02 Arduino LoRa 感測器膠囊 *1
- HTCC-WB32(V2) (WiFi LoRa 32) 開發板 *1
- HTCC-HDC1080 數位濕度感測器 *1
- HTCC-CPC01 Heltec CubeCell 膠囊 開發工具 *1
實驗步驟
第一步 了解硬體
請參考這篇
第二步 分析軟體
由於要每10秒取樣一次,我們可以利用這篇HTCC-AC02 (Arduino Lora 膠囊) 感測器睡眠模式節電練習的程式修改。D桃打算將收集程式採用JSON格式輸出! 找了Arduino JSON來做這項功能!
int packageID=0;//由於Lora會傳送80次相同訊息,packageID 可以讓gateway將收到相同訊息時丟掉
int sensorCounter=0;//CubeCell會讀取多次HDC1080 直到發送sensor Counter 用來分辨是哪次收集到的資料
String deviceID=”HDC1080_1";
String measurementDataString=””;
StaticJsonDocument<1000> doc;
void makeJsonData(){
//建立 分配device ID 與 packageID
doc[“dID”] = deviceID;
doc[“pID”] = packageID;
size_t docSize=serializeJson(doc, Serial);
Serial.println();
Serial.println(docSize);
serializeJson(doc,txpacket,docSize);//將JSON轉為String以便傳送
sensorCounter=0;
}void getHDC1080(HDC1080_MeasurementResolution humidity, HDC1080_MeasurementResolution temperature) {
hdc1080.setResolution(humidity, temperature);
//建立 JSON ARRAY
JsonArray data = doc.createNestedArray( (String)sensorCounter);
data.add(hdc1080.readHumidity());
data.add(hdc1080.readTemperature());
sensorCounter++;
}
第三步 完工測試
D桃做個簡單測試,睡ㄧ秒醒一秒收集三次就傳送。
很快就發現問題了,才收集3次就要資料長度就要99B。原本我們設定傳送的BUFFER 是30。修改成128B 才順利完成測試。下一篇D桃想改用MSGPACK來試試!