毕设参考ESP32 + HaaS Python 打造数据上云声控灯
Posted HaaS技术社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了毕设参考ESP32 + HaaS Python 打造数据上云声控灯相关的知识,希望对你有一定的参考价值。
声控灯
声控灯是通过声音控制开灯的技术,适用于使用声音控制开灯的场景,特别是楼宇、住宅楼的公共场合,例如楼梯间、走廊、大厅等场所,它可减少人工开关电灯的麻烦,解放您的双手,可避免您的双手接触公共开关,降低接触细菌的可能,同时把灯的状态上报至云端,灯的管理者可实时查看灯的状态信息。
简介
本案例介绍的声控灯是通过声音控制开灯一个解决方案,具备使用简单、开发成本低、节能环保等特点。本案例为了更好玩使用了RGB LED,每次开灯颜色都会变化,并把灯开关的状态上报至云端,云端可以实时查看灯的状态。
背景知识
声音传感器是充当收音的作用,用来接收声波,使话筒内的驻极体薄膜震动导致电容的变化,产生0-5V的微小电压,经过A/D转换被数据采集器接收。
RGB LED是红绿蓝三色混光而成,在光的混色上,具备更多元的特性。
准备
- ESP32开发板一套
- 声音传感器一个
- RGB LED一个
- 母对母杜邦连接线若干
涉及到的硬件购买链接如下,仅供参考,不负责商家发货的品质保障等问题!
名称 | 数量 | 参考链接 |
ESP32开发板 | 1套 | ESP32开发板一套 |
RGB LED | 1个 | RGB LED |
声音传感器 | 1个 | 声音传感器一个 |
母对母杜邦线 | 7根 | 母对母杜邦线 请选用10cm长即可 |
硬件连线图
硬件连线图如下图所示:
物联网平台开发
开通公共实例
对于第一次使用物联网平台的读者,需要开通实例以使用物联网平台的功能。这里可以使用免费的公共实例进行开发。
在物联网平台中,左上角选择“华东2-上海”,点击“公共实例”,即可开通。
开通物联网平台功能之后,需要完成下面的3个步骤完成云端设备的设定:
- 创建云端产品
- 创建产品属性(物模型)
- 创建云端设备(获取三元组)
创建云端产品
点击上图中的“公共实例”,即可进入控制台进行产品创建。然后,点击创建产品按钮,如下图所示。
选择之后,点击“确认”按钮,即可完成产品创建。如下图所示
创建产品属性(物模型)
点击前往定义物模型后,调整至下面页面,如下图所示。
点击编辑草稿,导入物模型文件点击下载物模型文件,直接导入后选择发布上线,如下图所示。
创建云端设备(获取三元组)
在产品列表页面中,点击“管理设备”,就会进到设备管理页面。
在“设备”页面点击“添加设备”按钮,在“添加设备”页面中设定“deviceName”,这里开发者可以自己填入自己想设定的设备名称,如下图所示。
设备添加完成后,如下图所示。
获取设备三元组
如下图所示,在设备列表中点击“查看”按钮,就可以看到设备的三元组信息。
设备三元组是指产品Key(productKey)、设备名称(DeviceName)、设备秘钥(DeviceSecret)。
三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。设备三元组在后面设备端开发时会用到,请注意保存。
设备端开发
开发环境
在进行下一步之前请确保ESP32开发环境已经搭建完毕。详情请参考ESP32开发环境的说明。
创建解决方案
如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称(“sound_led”)及工作区路径之后,硬件类型选择nodemcu32s,点击立即创建,创建一个Python轻应用的解决方案。
下载本案例代码并解压将所有文件复制后覆盖“sound_led”工程根目录原有文件,然后进行如下设定完成设备端代码的开发。
Python脚本的详细说明请参考脚本内嵌的文字注释
- 修改路由器名称及密码
修改sound_led工程里main.py中SSID和PWD的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在''符号中间)。
# Wi-Fi SSID和Password设置 SSID='Your-AP-SSID' PWD='Your-AP-Password'
修改完成之后connect_wifi函数就会连接读者自己设定的路由器。
- 修改设备的三元组信息
把“获取设备的三元组”章节中获取的三元组信息填入main.py中:
# HaaS设备三元组 productKey = "Your-ProductKey" deviceName = "Your-devicename" deviceSecret = "Your-deviceSecret"
- 修改LED灯颜色
在sound_led工程里main.py,set_color_reference函数里,修改gLedColor值即可达到修改灯颜色目标。
# RGD灯颜色设置 gLedColor = 0xff0000
- 调整开灯的声音阈值
在sound_led工程里main.py,sound_thread()函数里,修改gDecibelValue值即可达到调整开灯灵敏度,代码里的值是根据工作环境定义的经验值,开发者可根据自身情况定制修改。
- 调整开灯的时长
在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
以上是关于毕设参考ESP32 + HaaS Python 打造数据上云声控灯的主要内容,如果未能解决你的问题,请参考以下文章
毕设参考ESP32 + HaaS Python 打造在线空气质量检测器
毕设参考“摸鱼”神器,用 ESP32 + HaaS Python DIY一款全功能鱼缸 控温过滤换水一键执行
毕设参考ESP32 + HaaS Python 打造数据上云声控灯
毕设参考ESP32 + HaaS Python 打造的噪音检测系统,远离喧嚣,安享静谧