目标功能介绍
基于功能强大的 ShineBlink 低代码物联网核心模组和灵活轻巧的 Lua 脚本编程语言实现如下功能。
1、监测和报警
监测圾桶内的烟雾并声光报警
监测圾桶内的酒精等有害气体并声光报警
监测垃圾桶内的温湿度并通过4G模块上报给机智云
通过激光测距模块监测垃圾桶内的剩余空间并通过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
全部0条评论
快来发表一下你的评论吧 !