目標功能介紹
基于功能強大的 ShineBlink 低代碼物聯網核心模組和靈活輕巧的 Lua 腳本編程語言實現如下功能。
1、監測和報警
監測圾桶內的煙霧并聲光報警
監測圾桶內的酒精等有害氣體并聲光報警
通過激光測距模塊監測垃圾桶內的剩余空間并通過4G模塊上報給機智云
2、感應和控制
毫米波雷達模塊感應人體靠經,并通過舵機控制垃圾桶蓋開合。
3、4G上云通信
4G通信模組需選擇帶有機智云 Gagant 固件的 4G 通信模組。
軟件功能框圖
云和App
(1)操作流程
采用零基礎上手開發的機智云,即可快速將設備上云,并可以使用機智云自動生成的 App(安卓&iOS)實現手機遠程訪問設備的目的。機智云的開發流程比較簡單,下面僅介紹大致的步驟,具體操作開發者可自行注冊機智云開發平臺,按如下步驟操作一遍即可上手。
1、注冊登錄機智云開發者中心
① 創建產品(類目選擇“其他” + “其他”)
② 記錄創建產品的 PK 和 PS,后面會用到
③ 通信模組選擇“移動網絡”
導入 shineblink.xlsx 數據點文件(Excel 文件),并將需要用到的數據點的名稱改成你想設置的名稱(注意:只改名稱其他別改)。
在產品的“控制頁面”中“功能”里你會看到剛剛導入的所有數據點項目,在這里關閉掉沒用的數據點,并根據你的喜好調整你用到的數據點的圖標和大小。
2、創建應用
①(選擇移動應用,勾選 "Andorid")
② 在創建的應用中關聯剛剛創建的產品
在創建的應用中的“構建應用”中開始編譯生成 App,一天只有兩次機會請慎重使用,編譯成功后掃碼即可下載 App 安裝包。
手機安裝好 App 后,掃碼設備的二維碼即可使用了(設備二維碼生成在后面會講)。
(2)二維碼生成
① 在機智云官網下載 Gagant_Debuger.exe 軟件安裝在電腦上。
② 在軟件的“工具”欄目中找到“設備二維碼”。
在Product Key中填入PK,在 MAC/IMEI 中填入機智云4G模組外殼上面的IMEI號。
選擇國內服務器,最后點擊即可生成設備二維碼。
(3)App截圖
硬件實物圖
源代碼
--機智云平臺為每個產品類別分配的唯一PK和PS,一定要改成您自己的PK和PS PK = "03634fa8920e4b5ab1c5f3ffdffefce3" PS = "46253f7e305c4d3e80605263f49f9df4" -----------全局變量定義------------- WaitPeriodCntMs = 0 FireVoltage = 0.00 --火焰傳感器電壓值,火焰越強,傳感器輸出的電壓值越低 AchVoltage = 0.00 --酒精傳感器電壓值,酒精濃度越高,傳感器輸出的電壓值越大
--定義10毫秒定時器的回調函數,函數名字必須是LIB_10msTimerCallback function LIB_10msTimerCallback() WaitPeriodCntMs = WaitPeriodCntMs + 10
end
--開始聲光報警 function AlarmStart() LIB_LedStartWork("LED2") --LED2開始閃爍 LIB_GpioWrite("D7",1) --蜂鳴器開始響 end
--停止聲光報警 function AlarmStop() LIB_LedStopWork("LED2") --LED2停止閃爍 LIB_GpioWrite("D7",0) --蜂鳴器停止響 end
function Init() --配置D8端口控制開發板上的LED1燈,用來指示4G模塊是否連上機智云 LIB_GpioOutputConfig("D8","STANDARD") --配置D7端口控制蜂鳴器,用來作為報警聲音指示功能 LIB_GpioOutputConfig("D7","STANDARD") --設置"LED2"(占用D9端口)以0.1秒頻率閃爍,用來作為報警燈閃爍指示功能 LIB_LedConfig("LED2","D9","L",100,100) --停止報警 AlarmStop() --配置D4口為普通輸入,連接紅外人體感應傳感器的OUT引腳 LIB_GpioInputConfig("D4","NOPULL") --配置D0為舵機PWM端口,PWM周期20ms,高電平為有效極性 LIB_PwmConfig1(20000,1) LIB_PwmUpdate1(500) --舵機轉到0度關閉垃圾桶蓋 --配置AD電壓采集功能,用來采集煙霧傳感器MQ-2(A3)和MQ-3酒精傳感器(A0)的電壓值,測量范圍0-3.60v LIB_ADConfig(1,300000) --初始化4G模塊 LIB_Giz4GConfig(PK,PS,6000,120,"UART0","D5","HIGH","D6","HIGH") --初始化SHT30溫濕度傳感器占用IIC1接口的SCL1和SDA1引腳 LIB_Sht3xConfig("IIC1","10","HIGH") --配置VL53L0X激光傳感器占用IIC0接口的SCL0和SDA0引腳,測垃圾桶空間 --高精度模式下,精度在3%以內,測量范圍在1.2米以內 LIB_VL53L0XConfig("IIC0", "HighAccuracy") --使能系統10毫秒定時器開始工作 LIB_10msTimerConfig("ENABLE") end
--初始化硬件 Init() --開始大循環 while(GC(1) == true) do--讀取人體紅外感應,感應到人體后自動控制舵機打開垃圾桶 gpio_value = LIB_GpioRead("D4") if gpio_value == 1 then --感應到人體 LIB_PwmUpdate1(1500) --舵機轉到90度打開垃圾桶蓋 else LIB_PwmUpdate1(500) --舵機轉到0度關閉垃圾桶蓋 end
--查詢SHT30溫濕度傳感器是否出數 sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult() --如果傳感器有新的溫濕度數據產生 if sht3x_flag == 1 then--TF卡LOG.TXT和PC串口終端打印 print(string.format("Temp: %.1f\r\nHumi: %.1f", sht3x_temp, sht3x_humi)) --4G發送溫度和濕度 LIB_SendToGizCloud("Rf1", sht3x_temp) LIB_SendToGizCloud("Rf2", sht3x_humi) end
--測量酒精傳感器MQ-3輸出的電壓值 A0_full_flag, A0_buf = LIB_ADCheckBufFull("A0") if A0_full_flag == 1 then voltage = A0_buf[1]*3.6/4096.0 AchVoltage = voltage --打印輸出A0通道的AD采樣電壓值 print(string.format("Voltage=%.2fv", voltage)) --4G發送酒精傳感器電壓值(酒精濃度越高,傳感器輸出的電壓值越大) LIB_SendToGizCloud("Rf3", voltage) end
--測量煙霧傳感器MQ-2輸出的電壓值 A3_full_flag, A3_buf = LIB_ADCheckBufFull("A3") if A3_full_flag == 1 then voltage = A3_buf[1]*3.6/4096.0 FireVoltage = voltage --打印輸出A0通道的AD采樣電壓值 print(string.format("Voltage=%.2fv", voltage)) --4G發送煙霧傳感器電壓值(煙霧越強,傳感器輸出的電壓值越大) LIB_SendToGizCloud("Rf4", voltage) end
--查詢激光測距傳感器是否出數 flag, distance = LIB_VL53L0XGetDistance() if flag == 1 then--打印測量距離(mm) print(string.format("distance:%dmm", distance)) --4G發送距離值(垃圾桶空間) LIB_SendToGizCloud("RL8", distance) end
--報警判斷 --酒精傳感器電壓高于 1.02v 或者煙霧傳感器電壓高于 1.5v,聲光報警 if AchVoltage > 1.02 or FireVoltage > 1.5 then AlarmStart() else AlarmStop() end
--讀取機智云4G模組狀態,LED1燈亮表示連上機智云 State = LIB_GetGizWifiState() if State == 6 then LIB_GpioWrite("D8",0)--LED1燈亮 else LIB_GpioWrite("D8",1)--LED1燈滅 endend
-
物聯網
+關注
關注
2903文章
44269瀏覽量
371232 -
代碼
+關注
關注
30文章
4747瀏覽量
68349 -
機智云
+關注
關注
2文章
581瀏覽量
26368 -
智能垃圾桶
+關注
關注
2文章
52瀏覽量
10633
發布評論請先 登錄
相關推薦
評論