【毕设参考】ESP32 + HaaS Python 打造数据上云声控灯

【毕设参考】ESP32 + HaaS Python 打造数据上云声控灯,第1张

声控灯

   声控灯是通过声音控制开灯的技术,适用于使用声音控制开灯的场景,特别是楼宇、住宅楼的公共场合,例如楼梯间、走廊、大厅等场所,它可减少人工开关电灯的麻烦,解放您的双手,可避免您的双手接触公共开关,降低接触细菌的可能,同时把灯的状态上报至云端,灯的管理者可实时查看灯的状态信息。

简介

   本案例介绍的声控灯是通过声音控制开灯一个解决方案,具备使用简单、开发成本低、节能环保等特点。本案例为了更好玩使用了RGB LED,每次开灯颜色都会变化,并把灯开关的状态上报至云端,云端可以实时查看灯的状态。

背景知识

   声音传感器是充当收音的作用,用来接收声波,使话筒内的驻极体薄膜震动导致电容的变化,产生0-5V的微小电压,经过A/D转换被数据采集器接收。

   RGB LED是红绿蓝三色混光而成,在光的混色上,具备更多元的特性。

准备
  1. ESP32开发板一套
  2. 声音传感器一个
  3. RGB LED一个
  4. 母对母杜邦连接线若干

涉及到的硬件购买链接如下,仅供参考,不负责商家发货的品质保障等问题!

名称数量参考链接
ESP32开发板1套ESP32开发板一套
RGB LED1个RGB LED
声音传感器1个声音传感器一个
母对母杜邦线7根母对母杜邦线 请选用10cm长即可
硬件连线图

   硬件连线图如下图所示:

物联网平台开发 开通公共实例

   对于第一次使用物联网平台的读者,需要开通实例以使用物联网平台的功能。这里可以使用免费的公共实例进行开发。

   在物联网平台中,左上角选择“华东2-上海”,点击“公共实例”,即可开通。

开通物联网平台功能之后,需要完成下面的3个步骤完成云端设备的设定:

  1. 创建云端产品
  2. 创建产品属性(物模型)
  3. 创建云端设备(获取三元组)

创建云端产品

   点击上图中的“公共实例”,即可进入控制台进行产品创建。然后,点击创建产品按钮,如下图所示。

   选择之后,点击“确认”按钮,即可完成产品创建。如下图所示

创建产品属性(物模型)

   点击前往定义物模型后,调整至下面页面,如下图所示。

   点击编辑草稿,导入物模型文件点击下载物模型文件,直接导入后选择发布上线,如下图所示。

创建云端设备(获取三元组)

   在产品列表页面中,点击“管理设备”,就会进到设备管理页面。

   在“设备”页面点击“添加设备”按钮,在“添加设备”页面中设定“deviceName”,这里开发者可以自己填入自己想设定的设备名称,如下图所示。

设备添加完成后,如下图所示。

获取设备三元组

   如下图所示,在设备列表中点击“查看”按钮,就可以看到设备的三元组信息。

   设备三元组是指产品Key(productKey)、设备名称(DeviceName)、设备秘钥(DeviceSecret)。

   三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。设备三元组在后面设备端开发时会用到,请注意保存。

设备端开发 开发环境

   在进行下一步之前请确保ESP32开发环境已经搭建完毕。详情请参考ESP32开发环境的说明。

创建解决方案

   如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“sound_led”)及工作区路径之后,硬件类型选择nodemcu32s,点击立即创建,创建一个Python轻应用的解决方案。

   下载本案例代码并解压将所有文件复制后覆盖“sound_led”工程根目录原有文件,然后进行如下设定完成设备端代码的开发。

Python脚本的详细说明请参考脚本内嵌的文字注释

  1. 修改路由器名称及密码

   修改sound_led工程里main.py中SSID和PWD的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在''符号中间)。

# Wi-Fi SSID和Password设置
SSID='Your-AP-SSID'
PWD='Your-AP-Password'

   修改完成之后connect_wifi函数就会连接读者自己设定的路由器。

  1. 修改设备的三元组信息

   把“获取设备的三元组”章节中获取的三元组信息填入main.py中:

# HaaS设备三元组
productKey = "Your-ProductKey"
deviceName  = "Your-devicename"
deviceSecret  = "Your-deviceSecret"
  1. 修改LED灯颜色

   在sound_led工程里main.py,set_color_reference函数里,修改gLedColor值即可达到修改灯颜色目标。

# RGD灯颜色设置
gLedColor = 0xff0000
  1. 调整开灯的声音阈值

   在sound_led工程里main.py,sound_thread()函数里,修改gDecibelValue值即可达到调整开灯灵敏度,代码里的值是根据工作环境定义的经验值,开发者可根据自身情况定制修改。

  1. 调整开灯的时长

   在sound_led工程里main.py,sound_thread()函数里,修改led_open()函数下面的utime.sleep_ms(6000)来控制每次亮灯时间(1000代表1秒钟)。

# 声音采集线程
# 声音采集线程
def sound_thread():
    global gOpenLed
    print('启动声音采集线程')
    decibelValue = 0
    while True:
        # 采集声音
        decibelValue = get_decibel()
        # 判断分贝
        if decibelValue > gDecibelValue and gOpenLed == False:
            print("声波转换后的值%s"% (decibelValue))
            gOpenLed = True
            # 开灯
            led_open(set_color_reference())
            # 亮灯6秒
            utime.sleep_ms(6000)
            # 关灯
            led_close()
            gOpenLed = False
        # 监听获取声音的频率,间隔不能太长,延迟大会导致不精确
        utime.sleep_ms(10)
运行程序

   推送此脚本到设备之后,串口会周期性的打印日志,设备上通过串口打印的信息如下图所示。

Wi-Fi is connecting...
Wi-Fi is connected
IP: 192.168.3.226
NTP start
NTP done
establish tcp connection with server(host='a1HOXQ1AMTs.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
tcp_connect: can only connect from state CLOSED
success to establish tcp, fd=54
link platform connected
启动声音采集线程
声波转换后的值1540
开灯
属性上报成功
关灯
属性上报成功

云端查看

进入阿里云官网,用阿里云账号登录物联网平台查看状态

到此为止,声控灯案例就已经完成了。如果想学习更多实验,请参考HaaS案例实践详解。

后记

   笔者这里以一个声控灯为例进行介绍,建议读者可以尝试把多个声控灯的状态一起上报,使用IoT Studio制作一个控制面板对所有灯的状态进行展  

来这里探索更多有趣案例

HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。https://haas.iot.aliyun.com/solution

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/715700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存