收藏官网首页
查看: 91|回复: 0

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

632

主题

688

帖子

3万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
34462
 楼主| 发表于 2024-7-10 11:44:06 | 显示全部楼层 |阅读模式
校园创客福利
本帖最后由 Kara 于 2024-7-10 11:49 编辑

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


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

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

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

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

二、软件功能框图
1电路板.png

三、云和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截图

机智云App截图.jpg

四、硬件实物图

硬件实物图.png


五、源代码

  1. --机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
  2. PK = "03634fa8920e4b5ab1c5f3ffdffefce3"  
  3. PS = "46253f7e305c4d3e80605263f49f9df4"
  4. -----------全局变量定义-------------
  5. WaitPeriodCntMs = 0
  6. FireVoltage = 0.00 --火焰传感器电压值,火焰越强,传感器输出的电压值越低
  7. AchVoltage = 0.00 --酒精传感器电压值,酒精浓度越高,传感器输出的电压值越大

  8. --定义10毫秒定时器的回调函数,函数名字必须是LIB_10msTimerCallback
  9. function LIB_10msTimerCallback()
  10.         WaitPeriodCntMs = WaitPeriodCntMs + 10
  11.          
  12. end

  13. --开始声光报警
  14. function AlarmStart()
  15.         LIB_LedStartWork("LED2") --LED2开始闪烁
  16.         LIB_GpioWrite("D7",1) --蜂鸣器开始响
  17. end

  18. --停止声光报警
  19. function AlarmStop()
  20.         LIB_LedStopWork("LED2") --LED2停止闪烁
  21.         LIB_GpioWrite("D7",0) --蜂鸣器停止响
  22. end

  23. function Init()
  24.         --配置D8端口控制开发板上的LED1灯,用来指示4G模块是否连上机智云
  25.         LIB_GpioOutputConfig("D8","STANDARD")
  26.         --配置D7端口控制蜂鸣器,用来作为报警声音指示功能
  27.         LIB_GpioOutputConfig("D7","STANDARD")
  28.         --设置"LED2"(占用D9端口)以0.1秒频率闪烁,用来作为报警灯闪烁指示功能
  29.         LIB_LedConfig("LED2","D9","L",100,100)
  30.         --停止报警
  31.         AlarmStop()
  32.         --配置D4口为普通输入,连接红外人体感应传感器的OUT引脚
  33.         LIB_GpioInputConfig("D4","NOPULL")
  34.         --配置D0为舵机PWM端口,PWM周期20ms,高电平为有效极性
  35.         LIB_PwmConfig1(20000,1)
  36.         LIB_PwmUpdate1(500) --舵机转到0度关闭垃圾桶盖
  37.         --配置AD电压采集功能,用来采集烟雾传感器MQ-2(A3)和MQ-3酒精传感器(A0)的电压值,测量范围0-3.60v
  38.         LIB_ADConfig(1,300000)
  39.         --初始化4G模块
  40.         LIB_Giz4GConfig(PK,PS,6000,120,"UART0","D5","HIGH","D6","HIGH")
  41.         --初始化SHT30温湿度传感器占用IIC1接口的SCL1和SDA1引脚
  42.     LIB_Sht3xConfig("IIC1","10","HIGH")
  43.         --配置VL53L0X激光传感器占用IIC0接口的SCL0和SDA0引脚,测垃圾桶空间
  44.         --高精度模式下,精度在3%以内,测量范围在1.2米以内
  45.         LIB_VL53L0XConfig("IIC0", "HighAccuracy")
  46.         --使能系统10毫秒定时器开始工作
  47.         LIB_10msTimerConfig("ENABLE")
  48. end

  49. --初始化硬件
  50. Init()
  51. --开始大循环
  52. while(GC(1) == true)
  53. do
  54.         --读取人体红外感应,感应到人体后自动控制舵机打开垃圾桶
  55.         gpio_value = LIB_GpioRead("D4")
  56.         if gpio_value == 1 then --感应到人体
  57.                 LIB_PwmUpdate1(1500) --舵机转到90度打开垃圾桶盖
  58.         else
  59.                 LIB_PwmUpdate1(500) --舵机转到0度关闭垃圾桶盖
  60.         end
  61.          
  62.         --查询SHT30温湿度传感器是否出数
  63.         sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()
  64.         --如果传感器有新的温湿度数据产生
  65.         if sht3x_flag == 1 then
  66.                 --TF卡LOG.TXT和PC串口终端打印
  67.                 print(string.format("Temp: %.1f\r\nHumi: %.1f", sht3x_temp, sht3x_humi))
  68.                 --4G发送温度和湿度
  69.                 LIB_SendToGizCloud("Rf1", sht3x_temp)
  70.                 LIB_SendToGizCloud("Rf2", sht3x_humi)
  71.         end
  72.          
  73.         --测量酒精传感器MQ-3输出的电压值
  74.         A0_full_flag, A0_buf = LIB_ADCheckBufFull("A0")
  75.         if A0_full_flag == 1 then
  76.                 voltage = A0_buf[1]*3.6/4096.0
  77.                 AchVoltage = voltage
  78.                 --打印输出A0通道的AD采样电压值
  79.                 print(string.format("Voltage=%.2fv", voltage))
  80.                 --4G发送酒精传感器电压值(酒精浓度越高,传感器输出的电压值越大)
  81.                 LIB_SendToGizCloud("Rf3", voltage)
  82.         end
  83.          
  84.         --测量烟雾传感器MQ-2输出的电压值
  85.         A3_full_flag, A3_buf = LIB_ADCheckBufFull("A3")
  86.         if A3_full_flag == 1 then
  87.                 voltage = A3_buf[1]*3.6/4096.0
  88.                 FireVoltage = voltage
  89.                 --打印输出A0通道的AD采样电压值
  90.                 print(string.format("Voltage=%.2fv", voltage))
  91.                 --4G发送烟雾传感器电压值(烟雾越强,传感器输出的电压值越大)
  92.                 LIB_SendToGizCloud("Rf4", voltage)
  93.         end
  94.          
  95.         --查询激光测距传感器是否出数
  96.         flag, distance = LIB_VL53L0XGetDistance()
  97.         if flag == 1 then
  98.                 --打印测量距离(mm)
  99.                 print(string.format("distance:%dmm", distance))
  100.                 --4G发送距离值(垃圾桶空间)
  101.                 LIB_SendToGizCloud("RL8", distance)
  102.         end
  103.          
  104.         --报警判断
  105.         --酒精传感器电压高于 1.02v 或者烟雾传感器电压高于 1.5v,声光报警
  106.         if AchVoltage > 1.02 or FireVoltage > 1.5 then
  107.                 AlarmStart()
  108.         else
  109.                 AlarmStop()
  110.         end
  111.          
  112.         --读取机智云4G模组状态,LED1灯亮表示连上机智云
  113.         State = LIB_GetGizWifiState()
  114.         if State == 6 then  
  115.                 LIB_GpioWrite("D8",0)--LED1灯亮
  116.         else  
  117.                 LIB_GpioWrite("D8",1)--LED1灯灭
  118.         end
  119. end
复制代码






您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表