ShineBlink 是一款零門檻、零開發環境、低代碼的萬能物聯網智能硬件開發板
結合 ShineBlink 和 機智云 開發者即使不懂嵌入式物聯網開發、云和App開發,也能很快實現一款包含硬件、云和App的物聯網智能硬件。
一、本章實現功能介紹
Shinelink開發板通過采集PM2.5傳感器、紫外線傳感器、風速傳感器、雨滴感應傳感器、SHT溫濕度傳感器、氣壓傳感器采集數據,數據通過ML302(4G通信模塊)將數據上傳至機智云,之后我們就可以在遠程通過手機App或者Web網頁端來訪問這個氣象站測量的所有傳感器數據。
下圖是接線實物圖和App監測頁面:
二、硬件端接線圖
注意:上面的電路傳感器比較多,要求給 ShineBlink 開發板提供5V的電源帶載能力至少大于1A。
三、材料清單
四、硬件端完整源代碼
--定義函數:將傳感器輸出電壓(單位:mv)轉換成紫外線指數index
function 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 index
end
--使能USB print輸出打印
LIB_UsbConfig("CDC")
--機智云平臺為每個產品類別分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "7ebaec64beaf4e389a2957f38711fcda"
PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"
--初始化4G模塊
LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")
--配置A0-A3這四個電壓采集通道同時開始工作,當每個通道采集滿50個點時緩存滿,每個點的采集時間間隔為10ms
LIB_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)
end
end
五、機智云接入和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訪問設備。
開發好以后的頁面如下:
-
物聯網
+關注
關注
2909文章
44578瀏覽量
372866
發布評論請先 登錄
相關推薦
評論