OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2440|回复: 0

【物联网开发】机智云App远程监控温湿度+人体感应

[复制链接]

308

主题

317

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
1211
金钱
1211
注册时间
2020-2-25
在线时间
115 小时
发表于 2022-11-2 15:24:07 | 显示全部楼层 |阅读模式
1金钱
一、实现的功能描述App远程监控开发板上的温湿度传感器的值以及开发板周围是否有人体出现,并在开发板上的OLED屏幕上显示温湿度值和人体是否出现的信号。


二、 UI配置描述
本例程中所包含的UI配置代码如下:
  • UI = "[1_Temp_C_-30_100][1_Humi_%_0_100][2_Human]"

[color=rgb(0, 0, 0) !important]复制代码

例程中用了两个类型为 “1” 的控件用来上传温度值(范围-30~100度)和湿度值(范围0%~100%)。用了一个类型为 “2” 的控件来上传人体检测布尔值(0:未发现人体,1:发现人体)。关于这些类型控件的具体描述可以参看官网中关于ShineBlink云的教程。

基于以上UI配置,当设备上电后,我们在小程序中可以看到系统为我们自动生成的小程序页如下:


三、本实验教学目的
掌握基于ShineBlink的:
  • 基于WiFi或4G接入ShineBlink免开发云,也支持连接机智云物联网平台,并自动生成微信小程序
  • GPIO信号输入(D7引脚读取人体红外传感器输出的电平信号)
  • SHT3X温湿度传感器的使用(传感器占用SDA0和SCL0引脚)
  • OLED屏幕显示(OLED屏幕用SDA1和SCL1引脚)


四、本实验涉及的模块
人体感应,温湿度传感器,OLED屏幕在开发板上的位置如下:

五、完整源代码(WiFi版本)
  • --配置红外人体感应的GPIO为输入(D7)
  • LIB_GpioInputConfig("D7","NOPULL")
  • --设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以10Hz频率工作,"HIGH"精度最高
  • LIB_Sht3xConfig("IIC0","10","HIGH")
  • --设置0.96寸oled模块占用SCL1和SDA1引脚
  • LIB_0_96_OledConfig("IIC1")
  • --设置UI配置,该配置决定了小程序页面显示的控件具体有哪些什么,名字是什么
  • UI = "[1_Temp_C_-30_100][1_Humi_%_0_100][2_Human]"
  • --设置C2开发板自带的WiFi连接云
  • ssid = "MyWiFiName" --修改成您的WiFi路由器账号
  • pswd = "abc123" --修改成您的WiFi路由器密码
  • LIB_CloudConfig("S0", "WIFI_C2", 0, "SBK_01", UI, ssid, pswd)
  • timer_cnt = 0
  • --定义10毫秒定时器的回调函数,函数名字必须是LIB_10msTimerCallback
  • function LIB_10msTimerCallback()
  •     timer_cnt = timer_cnt + 10
  • end
  • --使能系统10毫秒定时器开始工作
  • LIB_10msTimerConfig("ENABLE")
  • hu = 0
  • t = 0.0
  • h = 0.0
  • while(GC(1) == true)
  • do
  •     --实时获取人体红外感应结果
  •     hu = LIB_GpioRead("D7")
  •     --在oled的第三行分别显示人体是否出现(0:未出现,1:出现)
  •     LIB_0_96_OledPuts("3","1",string.format("human: %d", hu))
  •     --实时获取温湿度结果
  •     flag,tt,hh = LIB_Sht3xGetResult()
  •     if flag == 1 then
  •         t = tt
  •         h = hh
  •         --在oled的第一行和第二行分别显示温度(摄氏度)和湿度(百分比)
  •         LIB_0_96_OledPuts("1","1",string.format("temprature: %.2f", t))
  •         LIB_0_96_OledPuts("2","1",string.format("humidity: %.2f", h))
  •     end
  •     --每隔3秒向云端发送温湿度值和人体感应结果
  •     if timer_cnt >= 3000 then
  •         timer_cnt = 0
  •         Send_Str = string.format("{\"Temp\":%.2f, \"Humi\":%.2f, \"Human\":%d}",t,h,hu)
  •         LIB_CloudSend(Send_Str)
  •     end
  • end

[color=rgb(0, 0, 0) !important]复制代码

六、实验现象
将上面代码中的ssid和pswd改成您的路由器账号和密码,然后将代码复制到开发板中并运行十几秒之后,我们用微信扫描开发板背后的二维码,在弹出的微信小程序中我们就可以远程监控开发板上的温湿度传感器值和人体感应传感器的输出值了。


七、4G版本
4G版本和WiFi版本的代码几乎一样,我们只需做如下两处调整即可实现4G远程:
(1)将4G模块插入开发板上的4G插槽,如下图:

(2)将代码中WIFI初始化改成4G初始化即可,调整如下:
将原来WiFi的:
  • --设置C2开发板自带的WiFi连接云
  • ssid = "abcdef" --修改成您的WiFi路由器账号
  • pswd = "123456" --修改成您的WiFi路由器密码
  • LIB_CloudConfig("S0", "WIFI_C2", 0, "SBK_01", UI, ssid, pswd)

[color=rgb(0, 0, 0) !important]复制代码

调整成4G后的:
  • --设置外部4G模块连接云
  • LIB_CloudConfig("S0", "4G_ML302", 0, "SBK_01", UI, "NO_GPS")

[color=rgb(0, 0, 0) !important]复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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