查看: 3073|回复: 5

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

[复制链接]

该用户从未签到

发表于 2021-3-16 15:39 | 显示全部楼层 |阅读模式
本帖最后由 海神 于 2021-12-14 11:09 编辑

简介

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

硬件

WiFiduino
传感器拓展板
声音传感器

代码

代码中,我们将声音传感器采集到的数据实时远程传输在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物联网教程目录
blinker物联网教程——1、物联网及blinker介绍
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、物联网天气时钟
16、空气加湿器
17、远程烟雾报警
18、气象站
blinker物联网教程——19、接入小度智能音箱
20、语音氛围灯
21、远程控制电脑开关机
22、手机控制空调
blinker物联网教程——23、wifi智能小车
blinker物联网教程——24、智能宠物喂食器
25、xxxx
26、xxxxx

该用户从未签到

发表于 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 | 显示全部楼层
请问这个芯片是什么型号呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

blinker物联网教程——11、自动灌溉
blinker物联网教程——11
简介[hr] 农业是用水大户,近年来农业用水量约占经济社会用水总量的62%,部分地区高达
求助,st7735显示图片扭曲
求助,st7735显示图片扭曲
前段时间买了个st7735s驱动的0.96tft屏,这两天研究了一下st7735的驱动,在网上找了些
朱雀 是基于ESP32的开源焊台控制器
朱雀 是基于ESP32的开源焊
朱雀 是基于ESP32的开源焊台控制器 本控制器除了控制普通焊台以外,只需通过稍作修改
16度双足机器人舵机驱动板pca9685连接舵机,舵机没反应
16度双足机器人舵机驱动板
各位同为arduino爱好者的大佬们大家好!想请教一下大家有关舵机驱动板pca9685
Arduino IDE 2.0.0 RC3开发STM32遇到的问题
Arduino IDE 2.0.0 RC3开
问题求助: 安装了Arduino IDE 2.0.0 rc3,下载安装了来自stm32duino的库,截图1。然
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表