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

简介: 【毕设参考】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

————————————————

版权声明:本文为CSDN博主「HaaS技术社区」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/HaaSTech/article/details/124228671

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
28天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
90 0
|
17天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
9 1
|
2天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
3天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
27天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
44 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
27天前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
41 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
28天前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
60 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
15天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
34 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
24天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
42 2