查看: 5228|回复: 6

blinker物联网教程——13、公园噪音监测

[复制链接]

该用户从未签到

发表于 2021-3-16 15:39 | 显示全部楼层 |阅读模式
本帖最后由 海神 于 2022-5-17 16:06 编辑

简介

城市里少不了公园,而很多公园周围人口密集,所以如果不加以管制,公园嘈杂声会永不停歇,如成都的人民公园。为了给市民还原一个安静的休闲环境,园方在公园人流量较大的区域分别安装了6个噪声监测器,如今,收到显著成效,“世界最吵公园”终于安静了下来。
我们本节实验就来制作物联网在线噪音检测器。
gyzy.jpg
所谓噪音检测器,实则内部是一个专门用来测音量大小的麦克风,由麦克风检测到的音量大小会转化成电压,我们经过一系列的电子电路将这个电压信号放大,这个就可以得出一个检测到的音量值。
声音传感器
本节我们采用一个声音传感器,声音传感器内部集成了放大电路,直接反馈的是0-5V的电压值,我们可以通过这个电压值来得出一个模拟的音量大小。
gyzy22.png
在程序中,我们使用函数 analogRead();便可以读到传感器的模拟数值。主板使用wifiduino,这个模拟数值的范围是0-1023。他们对应传感器输出的0-5V的数值。
同时加上wifiduino的物联网功能,将音量值实时的远程显示在手机屏幕中。如果超出我们规定的最大音量范围,那给手机发出警报消息。如果与城管部门进行联通,我们还可以实时通知城管部门对公园环境进行管制。还大家一个安静的公共环境。

硬件

声音传感器*1

代码

代码中,我们将声音传感器采集到的数据实时远程传输在blinker中,同时添加图表控件,用来显示噪音曲线。
  1. #define BLINKER_WIFI
  2. #include <Blinker.h>

  3. volatile int sound;

  4. char auth[] = "daexxxxx38";
  5. char ssid[] = "moxxxxn";
  6. char pswd[] = "cdxxxxxxx51";
  7. BlinkerNumber Number1("num-abc");
  8. void dataStorage(){
  9.    Blinker.dataStorage("num-abc", sound);
  10. }

  11. void setup(){
  12.   Blinker.begin(auth,ssid,pswd);
  13.   sound = 0;
  14.   Blinker.attachDataStorage(dataStorage);
  15. }

  16. void loop(){
  17.   sound = analogRead(A0);
  18.   delay(100);
  19.   Number1.print(sound);
  20.   Blinker.run();

  21. }
复制代码



Blinker界面定制


分别添加一个数据控件和图表控件,用来展示模拟音量值的大小,确认键名与程序中对应。
zyjc.png zyjc2.png
硬件连接

将声音传感器通过连接线,接在传感器扩展板的A0接口上
zyjc8.png


进阶

在检测噪音的同时,我们还可以设置警报。同时设置一个阈值,当音量超出阈值时,让blinker中提示超出设定音值,同时让手机发出震动,进行提示。

代码

  1. #define BLINKER_WIFI
  2. #include <Blinker.h>

  3. volatile int sound;
  4. char auth[] = "dae8eaxxxx";
  5. char ssid[] = "moxxxxun";
  6. char pswd[] = "cdxxxxx51";
  7. BlinkerNumber Number1("num-abc");
  8. void dataStorage(){
  9.    Blinker.dataStorage("num-abc", sound);
  10. }
  11. BlinkerText Text1("TextKey");

  12. void setup(){
  13.   Blinker.begin(auth,ssid,pswd);
  14.   sound = 0;
  15.   Blinker.attachDataStorage(dataStorage);
  16. }

  17. void loop(){
  18.   sound = analogRead(A0);
  19.   delay(100);
  20.   Number1.print(sound);
  21.   if (sound > 50) {
  22.     Blinker.vibrate(1000);
  23.     Text1.print("warning");
  24.     Blinker.delay(1000);
  25.     Text1.print("监测中");

  26.   }
  27.   Blinker.run();

  28. }
复制代码

blinker界面定制

再添加一个文本控件,用来指示检测噪音的状态,工作中一直显示“监测中”,如果超出设定阈值,让文本显示“warning”
zyjc3.png zyjc4.png

观察现象


我们可以对着声音传感器发出噪音测试,当音量值低于程序里设定的50时,app中一直显示“监测中”,当噪音太高,blinker中显示发声变化,同时反馈震动,进行提示。
zyjc5.png zyjc6.png


视频展示



blinker物联网教程——2、搭建编程环境
blinker物联网教程——3、主控硬件wifiduino
blinker物联网教程——4、控制开关灯
blinker物联网教程——5、认识传感器
blinker物联网教程——6、wifi智能插座
blinker物联网教程——7、室内温湿度计
blinker物联网教程——8、定时任务-定时震动器
blinker物联网教程——9、blinker语音识别-芝麻开门
blinker物联网教程——10、日照时间分析
blinker物联网教程——11、自动灌溉
blinker物联网教程——12、调色盘
blinker物联网教程——13、公园噪音监测
blinker物联网教程——14、智能停车场
blinker物联网教程——15、智能家居
blinker物联网教程——16、遥控机械臂
blinker物联网教程——17、防疫隔离门磁
blinker物联网教程——18、手机控制空调
blinker物联网教程——19、接入小度智能音箱
blinker物联网教程——20、语音氛围灯
blinker物联网教程——23、wifi智能小车
blinker物联网教程——24、智能宠物喂食器

该用户从未签到

发表于 2021-3-24 15:07 | 显示全部楼层
请问这个帖子中的接线图是用什么软件画的,里面的元件库能否分享下,谢谢。

点评

用的AI画的,我们正在做fritzing,后面一起分享出来  详情 回复 发表于 2021-3-24 15:41

该用户从未签到

 楼主| 发表于 2021-3-24 15:41 | 显示全部楼层
lizjuee 发表于 2021-3-24 15:07
请问这个帖子中的接线图是用什么软件画的,里面的元件库能否分享下,谢谢。 ...

用的AI画的,我们正在做fritzing,后面一起分享出来

该用户从未签到

发表于 2021-5-29 19:32 | 显示全部楼层
请问什么我不包含blinker这个库 analogRead这个函数才有值
否者analogread的值为0,引脚的电平也变化了

该用户从未签到

发表于 2021-7-2 16:31 | 显示全部楼层
能否用GPRS接,不用wifi

该用户从未签到

发表于 2021-11-23 17:45 | 显示全部楼层
请问这个芯片是什么型号呢?

该用户从未签到

发表于 2022-3-29 23:42 | 显示全部楼层
哥,为什么我的blinker不显示声音的数据呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

求助VSCode+PlatformIO Arduino怎么把文件包含到工程中
求助VSCode+PlatformIO Ar
请教一下论坛大佬 PlatformIO对文件进行编译过程中报错“undefined reference to xxx
一款基于Arduino平台的零代码就可驱动的串口彩屏分享
一款基于Arduino平台的零
多年前在论坛上看到一个帖子: 引起了我的共鸣:能不能有一种彩屏,可以像Arduino I
自制麦轮小车robomasterV4详细教程
自制麦轮小车robomasterV4
一 介绍 这个帖子中,我将介绍用arduino制作一台PID调制的麦轮小车底盘部分的方法 资
MS39233 无刷直流马达—完美替代 ST SPIN233
MS39233 无刷直流马达—完
MS39233 是一款低压三个半桥驱动器。完美替代ST SPIN233。它可应用于低电压及电池供电
用arduino nano 连接esp8266,代码写不进esp8266里面,有偿求解决
用arduino nano 连接esp82
哪位大佬能帮我解决下,发二十元红包请喝杯奶茶。+V:lcmazjq 接线图和错误信息在附件
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表