1017|6

32

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第3期】任务6:综合实践之环境监测及应用 [复制链接]

  本帖最后由 鲜de芒果 于 2023-11-19 21:09 编辑

任务介绍

基于【得捷电子Follow me第3期】的硬件平台,在我自己的智能家居平台上补充环境监测功能。从而实现卧室环境感知,通过与平台上其它设备连通实现智能联动。例如:温度高时可以打开风扇,空调。光线较暗或较亮时自动开灯关灯等。

 

硬件准备

该任务也需要搭配扩展板来实现,扩展板为 Seeed Studio Expansion Board Base for XIAO

另外,需要搭配温湿度传感器模块 Grove - AHT20 I2C Industrial Grade Temperature and Humidity Sensor 和 光传感器模块 Grove - Light Sensor v1.2 来完成相应功能。

如下图所示,将温湿度传感器模块 Grove - AHT20 I2C Industrial Grade Temperature and Humidity Sensor 连接至扩展板的 I2C 接口。将 光传感器模块 Grove - Light Sensor v1.2 连接至扩展板的 A0-D0 接口

 

智能家居平台对接

与智能家居平台对接使用MQTT协议,Seeed Studio XIAO ESP32C3 连接到WIFI后,通过 MQTT 将传感器数据上报至智能家居平台。

想要实现任务介绍中的功能,首先需要在智能家居平台建立相应的设备,并建立接收环境数据相应的 MQTT 主题和与之相对应的环境数据上报的JSON数据格式即可实现对接。这里我定义的数据结构为:

{
    "temperature": "16.75", // 温度
    "lux": "12.05",         // 光照
    "lux_adc": 141,         // 光照传感器ADC采样值
    "wifi_rssi": "-41.00",  // WIFI信号强度
    "humidity": "69.82"     // 湿度
}

 

环境数据上报

前面已经定义好了向智能家居平台上报环境数据的JSON格式,代码的实现就相对容易了很多,只需要根据前面的任务实现,将采集到的数据组装成所需的格式,通过 MQTT 向指定 主题 上报传感器数据即可完成对接。代码实现如下:

import time
import task2
import task3
import task4
import task5
import asyncio
import machine
import ubinascii

from button import Button
from umqtt.simple import MQTTClient

report_interval = 10 # 上报传感器数据间隔时间(单位:秒)

'''
MQTT 连接
'''
client = None
CLIENT_ID = ubinascii.hexlify(machine.unique_id())
MQTT_SERVER = '192.168.2.120'
async def mqtt_client():
    # 连接wifi
    task4.connect_wifi()
    print("connected wifi")
    global client
    client = MQTTClient(client_id=CLIENT_ID, server=MQTT_SERVER,user="xiao_esp32c3",password="123456")
    client.connect()
    print("mqtt client connected")
    while True:
        # client.wait_msg()
        await asyncio.sleep_ms(100)
        

# 上报传感器数据至智能家居平台
async def report_sensor_data():
    print("report_sensor_data()")
    while True:
        await asyncio.sleep(report_interval) # 间隔段时间才开始上报
        # 更新数据
        task5.get_temperature_humidity_data()
        task5.get_light_data()
        task5.get_wifi_rssi()
        
        # 上报传感器数据
        data = task5.get_sensor_data()
        print("publish: ", data)
        client.publish(b"sensor/xiao_esp32c3/state", data)


async def main():
    tasks = []
    
    # MQTT任务
    mqtt_task = asyncio.create_task(
        mqtt_client()
    )
    tasks.append(mqtt_task)
    
    # 传感器数据上报任务
    report_task = asyncio.create_task(
        report_sensor_data()
    )
    tasks.append(report_task)
    
    # 提交任务执行
    await asyncio.gather(i for i in tasks)


if __name__ == "__main__":
    print("run in main")
    # 异步执行任务
    asyncio.run(main())

 

与其它智能设备联动

这里使用【得捷电子Follow me第2期】制作的氛围灯,来实现与这次的制作来实现联动。仅需要在氛围灯监控的主题上增加一个判断环境光照度的逻辑判断即可实现联动。

 

而传感器监控的数据只需要按之前定义好的JSON格式定时上报即可,这里为了避免过于频繁,我设置了上报的间隔周期为每10秒上次一次采集到的传感器数据。

 

效果展示

智能家居平台展示

 

智能家居平台环境数据监控展示

温度历史
 
湿度历史
 
亮度历史

 

与氛围灯联动效果

光暗灯亮

这里只需简单的用一个盖子盖住环境光照传感器,等到数据更新时,即可控制氛围灯点亮。

 
光亮灯灭

 

 

演示视频


 

最新回复

很不错,感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来!!!  详情 回复 发表于 2024-6-2 06:39
点赞 关注
 
 

回复
举报

6887

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

光传感器模块控制氛围灯点亮创意不错,可以整个GRB多色调光

点评

RGB多色调光考虑过,只是没想好根据啥来调。目前传感器只能获取到亮度数据  详情 回复 发表于 2023-11-20 16:33
 
 
 

回复

6680

帖子

9

TA的资源

版主

板凳
 

准备先用第二期的板子好好学一学编辑语言,感觉这几期都是互通的

点评

ESP32的开发模式很多,根据自己的需要选择,非常的自由  详情 回复 发表于 2023-11-20 16:31
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

32

帖子

4

TA的资源

一粒金砂(中级)

4
 
秦天qintian0303 发表于 2023-11-20 15:08 准备先用第二期的板子好好学一学编辑语言,感觉这几期都是互通的

ESP32的开发模式很多,根据自己的需要选择,非常的自由

 
 
 

回复

32

帖子

4

TA的资源

一粒金砂(中级)

5
 
Jacktang 发表于 2023-11-19 22:37 光传感器模块控制氛围灯点亮创意不错,可以整个GRB多色调光

RGB多色调光考虑过,只是没想好根据啥来调。目前传感器只能获取到亮度数据

 
 
 

回复

756

帖子

4

TA的资源

纯净的硅(高级)

6
 

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来

 
 
 

回复

419

帖子

0

TA的资源

纯净的硅(中级)

7
 
很不错,感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来!!!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表