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

二、硬件端接線圖

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

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

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

-
物聯網
+關注
關注
2945文章
47820瀏覽量
415083
發布評論請先 登錄
便攜式氣象站:移動場景下的氣象“感知官”
超聲波氣象站:精準監測的技術新選擇
小型自動氣象站:精細化氣象監測的技術革新與應用拓展
超聲波自動氣象站技術方案
光伏自動氣象站技術架構與發電效率保障應用
北斗自動氣象站: 護航無網區的 “氣象信使”
數字傳感器,如何通過小型氣象站賦能農耕、生態與防災?
防爆工業氣象站:工業場景的 “氣象監測中樞”
智慧農業氣象站技術方案
光伏實驗氣象站的技術架構與應用實踐
解密交通氣象站:數據驅動的交通氣象服務革新
實操案例:基于Shineblink和機智云的4G氣象站
評論