ShineBlink 是一款零門檻、零開發(fā)環(huán)境、低代碼的萬能物聯(lián)網(wǎng)智能硬件開發(fā)板
機智云 為開發(fā)者提供傻瓜式硬件上云、接App/小程序的能力
結合 ShineBlink 和 機智云 開發(fā)者即使不懂嵌入式物聯(lián)網(wǎng)開發(fā)、云和App開發(fā),也能很快實現(xiàn)一款包含硬件、云和App的物聯(lián)網(wǎng)智能硬件。
一、本章實現(xiàn)功能介紹
Shinelink開發(fā)板通過采集PM2.5傳感器、紫外線傳感器、風速傳感器、雨滴感應傳感器、SHT溫濕度傳感器、氣壓傳感器采集數(shù)據(jù),數(shù)據(jù)通過ML302(4G通信模塊)將數(shù)據(jù)上傳至機智云,之后我們就可以在遠程通過手機App或者Web網(wǎng)頁端來訪問這個氣象站測量的所有傳感器數(shù)據(jù)。
下圖是接線實物圖和App監(jiān)測頁面:


注意:上面的電路傳感器比較多,要求給 ShineBlink 開發(fā)板提供5V的電源帶載能力至少大于1A。
三、材料清單

四、硬件端完整源代碼
五、機智云接入和App開發(fā)--定義函數(shù):將傳感器輸出電壓(單位:mv)轉換成紫外線指數(shù)indexfunction GetUvIndex(v)if v < 50.0 thenindex = 0elseif v < 227.0 thenindex = 1;elseif v < 318.0 thenindex = 2;elseif v < 408.0 thenindex = 3;elseif v < 503.0 thenindex = 4;elseif v < 606.0 thenindex = 5;elseif v < 696.0 thenindex = 6;elseif v < 795.0 thenindex = 7;elseif v < 881.0 thenindex = 8;elseif v < 976.0 thenindex = 9;elseif v < 1079.0 thenindex = 10;elseindex = 11endreturn indexend--使能USB print輸出打印LIB_UsbConfig("CDC")--機智云平臺為每個產品類別分配的唯一PK和PS,一定要改成您自己的PK和PSPK = "7ebaec64beaf4e389a2957f38711fcda"PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"--初始化4G模塊LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")--配置A0-A3這四個電壓采集通道同時開始工作,當每個通道采集滿50個點時緩存滿,每個點的采集時間間隔為10msLIB_ADConfig(50,10000)--設置PM2.5傳感器占用TX1和RX1引腳LIB_ZPH04Config("UART1")--設置sht3x傳感器占用SCL0和SDA0引腳,并啟動傳感器以每秒出10個數(shù)據(jù)的頻率工作,repeatability="HIGH"時精度最高LIB_Sht3xConfig("IIC0","10","HIGH")--設置BMP280氣壓計傳感器占用SCL1和SDA1引腳,并啟動傳感器以每秒輸出26.32組數(shù)據(jù)的頻率工作LIB_BMP280Config("IIC1")--開始大循環(huán)while(GC(1) == true)doLIB_DelayMs(50)--查詢是否讀到溫濕度數(shù)據(jù)產生sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()if sht3x_flag == 1 then--打印讀到的溫濕度值,保留2位小數(shù)print(string.format("temp: %.2f humi: %.2f", sht3x_temp, sht3x_humi))--向機智云服務器發(fā)送(溫濕度)短整數(shù)型數(shù)值(舍去小數(shù)部分)LIB_SendToGizCloud("Rs1", math.floor(sht3x_temp))LIB_SendToGizCloud("Rs2", math.floor(sht3x_humi))end--查詢氣壓傳感器是否出數(shù)flag, temprature, pressure = LIB_BMP280GetResult()if flag == 1 then --如果傳感器此時有數(shù)據(jù)--溫度值保留兩位小數(shù),氣壓值去掉小數(shù)部分print(string.format("temprature: %.2f pressure: %.0f Pa", temprature, pressure))--向機智云服務器發(fā)送長整數(shù)型氣壓數(shù)值,單位:PaLIB_SendToGizCloud("RL7", math.floor(pressure))end--查詢是否讀到傳感器PM2.5值flag, pm25_val = LIB_ZPH04GetPM25()if flag == 1 then--打印讀到的PM2.5值,保留1位小數(shù),單位:ug/m^3print(string.format("PM2.5:%.1f", pm25_val))--向機智云服務器發(fā)送(PM2.5)浮點型小數(shù)值(范圍應是-1000.0~5000.0)LIB_SendToGizCloud("Rf1", pm25_val)end--查詢是否讀到A0端口的電壓采集值(風速)A0_full_flag, A0_tab = LIB_ADCheckBufFull("A0")--每當A0通道的緩存滿以后,計算緩存內的50個元素的平均值,并換算成電壓值--由LIB_ADConfig(50,10000)可以算出,此處大概是50X10000us=0.5秒執(zhí)行一次if A0_full_flag == 1 thenSUM = 0for i = 1, #A0_tab do --此處#A0_tab的值是50,表示A0_tab表內的元素個數(shù)SUM = SUM + A0_tab[i]endAVER = SUM / #A0_tab --計算平均采樣值--將A0通道的AD值轉換成實際電壓打印出來out_voltage = AVER*3.6/4096.0--打印出傳感器輸出的電壓值,保留小數(shù)點后兩位,單位Vprint(string.format("wind voltage=%.2fV ", out_voltage))--向機智云服務器發(fā)送(風速)浮點型小數(shù)值(范圍應是-1000.0~5000.0)LIB_SendToGizCloud("Rf2", out_voltage)end--查詢是否讀到A1端口的電壓采集值(紫外線)A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1")--每當A1通道的緩存滿以后,計算緩存內的50個元素的平均值,并換算成電壓值--由LIB_ADConfig(50,10000)可以算出,此處大概是50X10000us=0.5秒執(zhí)行一次if A1_full_flag == 1 thenSUM = 0for i = 1, #A1_tab do --此處#A1_tab的值是50,表示A1_tab表內的元素個數(shù)SUM = SUM + A1_tab[i]endAVER = SUM / #A1_tab --計算平均采樣值--將A0通道的AD值轉換成實際電壓打印出來vol_mv = AVER*3600/4096.0--打印出傳感器輸出的電壓值,保留小數(shù)點后兩位,單位mVprint(string.format("ultraviolet voltage=%.2fmV ", vol_mv))uv_index = GetUvIndex(vol_mv)--將電壓轉換成紫外等級指數(shù)--打印紫外線等級,0~11print(string.format("ultraviolet level=%d ", uv_index))--向機智云服務器發(fā)送紫外線等級,短整數(shù)型LIB_SendToGizCloud("Rs3", uv_index)end--查詢是否讀到A2端口的電壓采集值(雨滴感應)A2_full_flag, A2_tab = LIB_ADCheckBufFull("A2")--每當A2通道的緩存滿以后,計算緩存內的50個元素的平均值,并換算成電壓值--由LIB_ADConfig(50,10000)可以算出,此處大概是50X10000us=0.5秒執(zhí)行一次if A2_full_flag == 1 thenSUM = 0for i = 1, #A2_tab do --此處#A2_tab的值是50,表示A2_tab表內的元素個數(shù)SUM = SUM + A2_tab[i]endAVER = SUM / #A2_tab --計算平均采樣值--將A0通道的AD值轉換成實際電壓打印出來vol = AVER*3.6/4096.0--打印雨滴傳感器輸出的電壓值,保留小數(shù)點后兩位,單位Vprint(string.format("rain voltage=%.2fV ", vol))--向機智云服務器發(fā)送(雨滴值)浮點型小數(shù)值(范圍應是-100.00~500.00)LIB_SendToGizCloud("Rf3", vol)endend
無論使用哪種方法實現(xiàn)APP控制,都必須先定義數(shù)據(jù)點。
本例中我們使用了"Rf1","Rf2","Rf3","Rs1","Rs2","Rs3","RL7"這七個數(shù)據(jù)點分別作為PM2.5,風速,雨滴,溫度,濕度,紫外線等級,大氣壓強這七個傳感器值上傳數(shù)據(jù)通道,記得在機智云平臺修改相應的數(shù)據(jù)點的名稱。

方法一:使用機智云測試APP
先在機智云開發(fā)者中心定義好數(shù)據(jù)點
隨后下載機智云測試APP
使用機智云測試APP掃描4G模塊二維碼
即可實現(xiàn)APP控制設備了。
具體過程可參考:
http://www.shineblink.com/html/gizwits/9_3_4GJoin/4GJoin.html
方法二:使用賽博坦工具零代碼定制版App
在機智云開發(fā)者中心定義好數(shù)據(jù)點后,
創(chuàng)建一個移動應用,定義相應的頁面信息
再關聯(lián)相應的智能產品,
即可實現(xiàn)定制版App訪問設備。
開發(fā)好以后的頁面如下:

具體過程可參考:
http://www.shineblink.com/html/gizwits/9_4_4GJoinSaiBoTan/4GJoinSaiBoTan.html
審核編輯:湯梓紅
-
物聯(lián)網(wǎng)
+關注
關注
2945文章
47820瀏覽量
414964 -
開發(fā)板
+關注
關注
26文章
6291瀏覽量
118113 -
氣象站
+關注
關注
1文章
860瀏覽量
17044 -
機智云
+關注
關注
3文章
647瀏覽量
27769
原文標題:實操案例:基于Shineblink和機智云的4G氣象站
文章出處:【微信號:IoTMaker,微信公眾號:機智云開發(fā)者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
野外無人自動氣象站聯(lián)網(wǎng)方案
如何使用miniprog3設置氣象站
采用LabVIEW實現(xiàn)虛擬自動氣象站設計
如何使用樹莓派制作小氣象站
基于機智云gokit4.0(G)和MDM9206的 小型智能氣象站
基于51單片機的氣象站系統(tǒng)功能描述
基于LoPy4的氣象站設計
何為氣象站?氣象站有什么作用?
氣象站的發(fā)展歷程和分類
氣象站的設備有哪些?
4G氣象站的設計與實現(xiàn)
評論