Kara 发表于 2024-7-10 11:44:06

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

本帖最后由 Kara 于 2024-7-10 11:49 编辑

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


一、目标功能介绍基于功能强大的 ShineBlink 低代码物联网核心模组和灵活轻巧的 Lua 脚本编程语言实现如下功能:
监测和报警• 监测圾桶内的烟雾并声光报警• 监测圾桶内的酒精等有害气体并声光报警• 监测垃圾桶内的温湿度并通过4G模块上报给机智云• 通过激光测距模块监测垃圾桶内的剩余空间并通过4G模块上报给机智云
感应和控制• 毫米波雷达模块感应人体靠经,并通过舵机控制垃圾桶盖开合
4G上云通信• 4G 通信模组需选择带有机智云 Gagant 固件的 4G 通信模组
二、软件功能框图
三、云和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截图

四、硬件实物图




五、源代码
--机智云平台为每个产品类别分配的唯一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*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*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






页: [1]
查看完整版本: FlexLua低代码零基础开发智能垃圾桶产品原型(接入机智云)