FlexLua低代码零基础开发智能垃圾桶产品原型(接入机智云)

本文介绍了如何使用Lua脚本和ShineBlink模组构建一个物联网垃圾桶系统,包括烟雾、酒精监测报警、人体感应控制、4G通信与机智云集成、以及App远程操控的功能。详细描述了操作流程、硬件配置和源代码示例。
摘要由CSDN通过智能技术生成

作者:杨文杰,四川宜宾 ,本作品已被收录至 FlexLua 官网。

一、目标功能介绍

基于功能强大的 ShineBlink 低代码物联网核心模组和灵活轻巧的 Lua 脚本编程语言实现如下功能:

监测和报警

  • 监测圾桶内的烟雾并声光报警
  • 监测圾桶内的酒精等有害气体并声光报警
  • 监测垃圾桶内的温湿度并通过4G模块上报给机智云
  • 通过激光测距模块监测垃圾桶内的剩余空间并通过4G模块上报给机智云

感应和控制

  • 毫米波雷达模块感应人体靠经,并通过舵机控制垃圾桶盖开合

4G上云通信

  • 4G 通信模组需选择带有机智云 Gagant 固件的 4G 通信模组

二、软件功能框图

46ea395c74f9e0ee8102437e8ef6061d.jpeg

三、云和App

(1)操作流程

采用零基础上手开发的机智云,即可快速将设备上云,并可以使用机智云自动生成的 App(安卓&iOS)实现手机远程访问设备的目的。机智云的开发流程比较简单,下面仅介绍大致的步骤,具体操作开发者可自行注册机智云开发平台,按如下步骤操作一遍即可上手:

  • 注册登录机智云开发者中心
  • 创建产品(类目选择“其他” + “其他”)
    • 记录创建产品的 PK 和 PS,后面会用到
    • 通信模组选择“移动网络”
    • 导入 shineblink.xlsx 数据点文件(Excel 文件),并将需要用到的数据点的名称改成你想设置的名称(注意:只改名称其他别改)
    • 在产品的“控制页面”中“功能”里你会看到刚刚导入的所有数据点项目,在这里关闭掉没用的数据点,并根据你的喜好调整你用到的数据点的图标和大小
  • 创建应用(选择移动应用,勾选 "Andorid")
  • 在创建的应用中关联刚刚创建的产品
  • 在创建的应用中的“构建应用”中开始编译生成 App,一天只有两次机会请慎重使用,编译成功后扫码即可下载 App 安装包
  • 手机安装好 App 后,扫码设备的二维码即可使用了(设备二维码生成在后面会讲)

(2)二维码生成

  • 在机智云官网下载 Gagant_Debuger.exe 软件安装在电脑上
  • 在软件的“工具”栏目中找到“设备二维码”
  • 在Product Key中填入 PK,在 MAC/IMEI 中填入机智云 4G 模组外壳上面的 IMEI 号
  • 选择国内服务器,最后点击即可生成设备二维码

(3)App截图

08c3f67f0da347a6b7d5e7f99ef40402.jpeg

四、硬件实物图

c450f755817a44a2e9d3acc81de4d865.jpeg

五、源代码

--机智云平台为每个产品类别分配的唯一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灯灭
end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值