2022年10月31日 星期一

使用thingspeak紀錄電壓

 


thingspeak是一個物聯資料的網站,很多人玩物聯,雖然電子積木取得方便,但是匯聚資料、呈現資料,讓資料能顯示意義、說故事,卻很麻煩,必須學會架站,然後還要有語法去收資料,收了資料後,還要前台呈現,真的很麻煩,所以就有thingspeak這樣的網站出現。

網路上有一堆抄來抄去的文章,都是寫DHT11,量測溫濕度,並丟到thingspeak上面跑。

去年我曾經有做一個,後來還增加光敏值,一個wemos d1就可以一次丟3個值,然後家裡面多放幾個,基本上家裡面就變成大數據的一部份。

問題來了,溫濕度和光敏的值有什麼意義?

首先DHT11量到的溫濕度有誤差,同一個地方放兩顆,值都跑來跑去,光敏電阻也是,使用不同的電阻,便會在analog類比訊號這邊收到不同的值,換句話說,溫濕度和光敏丟在物聯thingspeak上,基本上,就是自己看很爽,但是沒有意義。



網路上有人去改,讓thingspeak可以串連LINE或MQTT,這個是蠻好玩,也是真正能賦予意義的方式之一。

下次有機會再來研究。

前陣子,因為想測變壓器、電池的供電是否穩定,於是買電壓量測模組來量測。


量測方式也很簡單,網路隨便找個一篇教學,給他接上arduino,S這邊訊號要接analog0,類比訊號,電壓接3V或5V都可以,網路上資訊很多,但是基本上都來源於一篇錯誤範例,稍微修改一下,可以量測到電壓。

問題來了,原始文件有一段很妙的敘述,原本不在意,但是當我要從arduino轉到wemos d1的時候,這裡的內容卻大有文章,甚至可以說是一個坑,我覺得這也是網路資料較少的原因。


在arduino上面沒問題,但是在wemos d1上面卻量測異常,同樣也是analog0,但是就是跑不出來。




另外,題外話,在arduino接兩個電壓量測模組也有問題,可能是共gnd的原因,除非5V是外接電源,否則接兩個,然後吃類比訊號,都會有共GND類的問題,也就是說analog0到6,基本上只能使用一個,想多量測,就要多片。

然後是wemos d1移植的問題,明明arduino跑得都正常,但是在wemos d1上面就異常,後來查了一下wemos d1的規格。


似乎找到原因了,首先wemos d1也有共地問題,一片的analog只能吃一個電壓量測模組,再來,他的analog和arduino有先天差異,他只能吃3.2V,也就是上面電壓模組講的,只能最高量到16V左右的電壓,其實也很夠了,一般能到12V,很棒了。

再來,原始值在不接任何東西狀態下,竟然有100,然後公式比例也要調,所以只好拿著電表,量測電池真實電壓,在反推公式。

最後得到公式如下:

temp=(val11 - 100 )/605.26

先減去100,然後除605.26,得到的電壓和電表量到差不多一樣了,然後換電壓也能得到數字,所以wemos d1的3.2V電壓量測公式就出來。




再來是註冊thingspeak的部分,因為我本來就有,就直接跳過,甚至不用開新的表單,直接清空舊表單,然後修改一下,就可以丟值。

thingspeak的代碼很簡單,就是丟一個https的GET指令,然後後面加上使用者的API金鑰,在後面給予值,這樣就寫入。

// 請更換成 Thing Speak WRITE API KEY

const char* apiKey = "thingspeak的apiKEY代碼";

const char* resource = "/update?api_key=";


// Thing Speak API server 

const char* server = "api.thingspeak.com";


  client.print(String("GET ") + resource + apiKey + "&field1=" + temp +

                  " HTTP/1.1\r\n" +

                  "Host: " + server + "\r\n" + 

                  "Connection: close\r\n\r\n");

然後就可以看到thingspeak開始跑數據。



量了一個晚上,每10秒丟一次電壓,這兩顆3號電池的電壓都是不足,等於接近用完了,然後,可以看到第一個大概介於1.35到1.24,第2顆電池是1.32到1.19,電壓輸出都穩定,然後第2顆電壓略低,後面我想開始量測變壓器。

目前先更新到這邊。

沒有留言:

張貼留言