ShineBlink 是一款零門檻、零開發(fā)環(huán)境、低代碼的萬(wàn)能物聯(lián)網(wǎng)智能硬件開發(fā)板
機(jī)智云 為開發(fā)者提供傻瓜式硬件上云、接App/小程序的能力
結(jié)合 ShineBlink 和 機(jī)智云 開發(fā)者即使不懂嵌入式物聯(lián)網(wǎng)開發(fā)、云和App開發(fā),也能很快實(shí)現(xiàn)一款包含硬件、云和App的物聯(lián)網(wǎng)智能硬件。
一、本章實(shí)現(xiàn)功能介紹
Shinelink開發(fā)板通過采集PM2.5傳感器、紫外線傳感器、風(fēng)速傳感器、雨滴感應(yīng)傳感器、SHT溫濕度傳感器、氣壓傳感器采集數(shù)據(jù),數(shù)據(jù)通過ML302(4G通信模塊)將數(shù)據(jù)上傳至機(jī)智云,之后我們就可以在遠(yuǎn)程通過手機(jī)App或者Web網(wǎng)頁(yè)端來訪問這個(gè)氣象站測(cè)量的所有傳感器數(shù)據(jù)。
下圖是接線實(shí)物圖和App監(jiān)測(cè)頁(yè)面:
注意:上面的電路傳感器比較多,要求給 ShineBlink 開發(fā)板提供5V的電源帶載能力至少大于1A。
三、材料清單
四、硬件端完整源代碼
五、機(jī)智云接入和App開發(fā)--定義函數(shù):將傳感器輸出電壓(單位:mv)轉(zhuǎn)換成紫外線指數(shù)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")
--機(jī)智云平臺(tái)為每個(gè)產(chǎn)品類別分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "7ebaec64beaf4e389a2957f38711fcda"
PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"
--初始化4G模塊
LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")
--配置A0-A3這四個(gè)電壓采集通道同時(shí)開始工作,當(dāng)每個(gè)通道采集滿50個(gè)點(diǎn)時(shí)緩存滿,每個(gè)點(diǎn)的采集時(shí)間間隔為10ms
LIB_ADConfig(50,10000)
--設(shè)置PM2.5傳感器占用TX1和RX1引腳
LIB_ZPH04Config("UART1")
--設(shè)置sht3x傳感器占用SCL0和SDA0引腳,并啟動(dòng)傳感器以每秒出10個(gè)數(shù)據(jù)的頻率工作,repeatability="HIGH"時(shí)精度最高
LIB_Sht3xConfig("IIC0","10","HIGH")
--設(shè)置BMP280氣壓計(jì)傳感器占用SCL1和SDA1引腳,并啟動(dòng)傳感器以每秒輸出26.32組數(shù)據(jù)的頻率工作
LIB_BMP280Config("IIC1")
--開始大循環(huán)
while(GC(1) == true)
do
LIB_DelayMs(50)
--查詢是否讀到溫濕度數(shù)據(jù)產(chǎn)生
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))
--向機(jī)智云服務(wù)器發(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í)有數(shù)據(jù)
--溫度值保留兩位小數(shù),氣壓值去掉小數(shù)部分
print(string.format("temprature: %.2f pressure: %.0f Pa", temprature, pressure))
--向機(jī)智云服務(wù)器發(fā)送長(zhǎng)整數(shù)型氣壓數(shù)值,單位:Pa
LIB_SendToGizCloud("RL7", math.floor(pressure))
end
--查詢是否讀到傳感器PM2.5值
flag, pm25_val = LIB_ZPH04GetPM25()
if flag == 1 then
--打印讀到的PM2.5值,保留1位小數(shù),單位:ug/m^3
print(string.format("PM2.5:%.1f", pm25_val))
--向機(jī)智云服務(wù)器發(fā)送(PM2.5)浮點(diǎn)型小數(shù)值(范圍應(yīng)是-1000.0~5000.0)
LIB_SendToGizCloud("Rf1", pm25_val)
end
--查詢是否讀到A0端口的電壓采集值(風(fēng)速)
A0_full_flag, A0_tab = LIB_ADCheckBufFull("A0")
--每當(dāng)A0通道的緩存滿以后,計(jì)算緩存內(nèi)的50個(gè)元素的平均值,并換算成電壓值
--由LIB_ADConfig(50,10000)可以算出,此處大概是50X10000us=0.5秒執(zhí)行一次
if A0_full_flag == 1 then
SUM = 0
for i = 1, #A0_tab do --此處#A0_tab的值是50,表示A0_tab表內(nèi)的元素個(gè)數(shù)
SUM = SUM + A0_tab[i]
end
AVER = SUM / #A0_tab --計(jì)算平均采樣值
--將A0通道的AD值轉(zhuǎn)換成實(shí)際電壓打印出來
out_voltage = AVER*3.6/4096.0
--打印出傳感器輸出的電壓值,保留小數(shù)點(diǎn)后兩位,單位V
print(string.format("wind voltage=%.2fV ", out_voltage))
--向機(jī)智云服務(wù)器發(fā)送(風(fēng)速)浮點(diǎn)型小數(shù)值(范圍應(yīng)是-1000.0~5000.0)
LIB_SendToGizCloud("Rf2", out_voltage)
end
--查詢是否讀到A1端口的電壓采集值(紫外線)
A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1")
--每當(dāng)A1通道的緩存滿以后,計(jì)算緩存內(nèi)的50個(gè)元素的平均值,并換算成電壓值
--由LIB_ADConfig(50,10000)可以算出,此處大概是50X10000us=0.5秒執(zhí)行一次
if A1_full_flag == 1 then
SUM = 0
for i = 1, #A1_tab do --此處#A1_tab的值是50,表示A1_tab表內(nèi)的元素個(gè)數(shù)
SUM = SUM + A1_tab[i]
end
AVER = SUM / #A1_tab --計(jì)算平均采樣值
--將A0通道的AD值轉(zhuǎn)換成實(shí)際電壓打印出來
vol_mv = AVER*3600/4096.0
--打印出傳感器輸出的電壓值,保留小數(shù)點(diǎn)后兩位,單位mV
print(string.format("ultraviolet voltage=%.2fmV ", vol_mv))
uv_index = GetUvIndex(vol_mv)--將電壓轉(zhuǎn)換成紫外等級(jí)指數(shù)
--打印紫外線等級(jí),0~11
print(string.format("ultraviolet level=%d ", uv_index))
--向機(jī)智云服務(wù)器發(fā)送紫外線等級(jí),短整數(shù)型
LIB_SendToGizCloud("Rs3", uv_index)
end
--查詢是否讀到A2端口的電壓采集值(雨滴感應(yīng))
A2_full_flag, A2_tab = LIB_ADCheckBufFull("A2")
--每當(dāng)A2通道的緩存滿以后,計(jì)算緩存內(nèi)的50個(gè)元素的平均值,并換算成電壓值
--由LIB_ADConfig(50,10000)可以算出,此處大概是50X10000us=0.5秒執(zhí)行一次
if A2_full_flag == 1 then
SUM = 0
for i = 1, #A2_tab do --此處#A2_tab的值是50,表示A2_tab表內(nèi)的元素個(gè)數(shù)
SUM = SUM + A2_tab[i]
end
AVER = SUM / #A2_tab --計(jì)算平均采樣值
--將A0通道的AD值轉(zhuǎn)換成實(shí)際電壓打印出來
vol = AVER*3.6/4096.0
--打印雨滴傳感器輸出的電壓值,保留小數(shù)點(diǎn)后兩位,單位V
print(string.format("rain voltage=%.2fV ", vol))
--向機(jī)智云服務(wù)器發(fā)送(雨滴值)浮點(diǎn)型小數(shù)值(范圍應(yīng)是-100.00~500.00)
LIB_SendToGizCloud("Rf3", vol)
end
end
無(wú)論使用哪種方法實(shí)現(xiàn)APP控制,都必須先定義數(shù)據(jù)點(diǎn)。
本例中我們使用了"Rf1","Rf2","Rf3","Rs1","Rs2","Rs3","RL7"這七個(gè)數(shù)據(jù)點(diǎn)分別作為PM2.5,風(fēng)速,雨滴,溫度,濕度,紫外線等級(jí),大氣壓強(qiáng)這七個(gè)傳感器值上傳數(shù)據(jù)通道,記得在機(jī)智云平臺(tái)修改相應(yīng)的數(shù)據(jù)點(diǎn)的名稱。
方法一:使用機(jī)智云測(cè)試APP
先在機(jī)智云開發(fā)者中心定義好數(shù)據(jù)點(diǎn)
隨后下載機(jī)智云測(cè)試APP
使用機(jī)智云測(cè)試APP掃描4G模塊二維碼
即可實(shí)現(xiàn)APP控制設(shè)備了。
具體過程可參考:
http://www.shineblink.com/html/gizwits/9_3_4GJoin/4GJoin.html
方法二:使用賽博坦工具零代碼定制版App
在機(jī)智云開發(fā)者中心定義好數(shù)據(jù)點(diǎn)后,
創(chuàng)建一個(gè)移動(dòng)應(yīng)用,定義相應(yīng)的頁(yè)面信息
再關(guān)聯(lián)相應(yīng)的智能產(chǎn)品,
即可實(shí)現(xiàn)定制版App訪問設(shè)備。
開發(fā)好以后的頁(yè)面如下:
具體過程可參考:
http://www.shineblink.com/html/gizwits/9_4_4GJoinSaiBoTan/4GJoinSaiBoTan.html
審核編輯:湯梓紅
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2921文章
45629瀏覽量
384436 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5370瀏覽量
100538 -
氣象站
+關(guān)注
關(guān)注
1文章
766瀏覽量
15985 -
機(jī)智云
+關(guān)注
關(guān)注
2文章
601瀏覽量
26658
原文標(biāo)題:實(shí)操案例:基于Shineblink和機(jī)智云的4G氣象站
文章出處:【微信號(hào):IoTMaker,微信公眾號(hào):機(jī)智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
野外無(wú)人自動(dòng)氣象站聯(lián)網(wǎng)方案
如何使用miniprog3設(shè)置氣象站
采用LabVIEW實(shí)現(xiàn)虛擬自動(dòng)氣象站設(shè)計(jì)
如何使用樹莓派制作小氣象站
基于機(jī)智云gokit4.0(G)和MDM9206的 小型智能氣象站
基于51單片機(jī)的氣象站系統(tǒng)功能描述
Wemos Mini Di繼電器和氣象站
何為氣象站?氣象站有什么作用?
氣象站的發(fā)展歷程和分類
氣象站的設(shè)備有哪些?

評(píng)論