一、实现的功能描述App远程监控开发板上的温湿度传感器的值以及开发板周围是否有人体出现,并在开发板上的OLED屏幕上显示温湿度值和人体是否出现的信号。


二、 UI配置描述


本例程中所包含的UI配置代码如下:

1. UI = "[1_Temp_C_-30_100][1_Humi_%_0_100][2_Human]"

复制代码

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



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



onenet物联网平台 温湿度_UI


三、本实验教学目的


掌握基于ShineBlink的:


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

四、本实验涉及的模块

人体感应,温湿度传感器,OLED屏幕在开发板上的位置如下:


onenet物联网平台 温湿度_onenet物联网平台 温湿度_02


五、完整源代码(WiFi版本)

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


复制代码

六、实验现象


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



onenet物联网平台 温湿度_4G_03


onenet物联网平台 温湿度_开发板_04


七、4G版本


4G版本和WiFi版本的代码几乎一样,我们只需做如下两处调整即可实现4G远程:


(1)将4G模块插入开发板上的4G插槽,如下图:



onenet物联网平台 温湿度_onenet物联网平台 温湿度_05


(2)将代码中WIFI初始化改成4G初始化即可,调整如下:


将原来WiFi的:

1. --设置C2开发板自带的WiFi连接云
2. ssid = "abcdef" --修改成您的WiFi路由器账号
3. pswd = "123456" --修改成您的WiFi路由器密码
4. LIB_CloudConfig("S0", "WIFI_C2", 0, "SBK_01", UI, ssid, pswd)

复制代码

调整成4G后的:


    1. --设置外部4G模块连接云
    2. LIB_CloudConfig("S0", "4G_ML302", 0, "SBK_01", UI, "NO_GPS")


    复制代码