查看: 1123|回复: 3

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

[复制链接]

该用户从未签到

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

简介

城市里少不了公园,而很多公园周围人口密集,所以如果不加以管制,公园嘈杂声会永不停歇,如成都的人民公园。为了给市民还原一个安静的休闲环境,园方在公园人流量较大的区域分别安装了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物联网教程目录

该用户从未签到

发表于 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,引脚的电平也变化了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

esp32s2 在Arduino IDE调试USB CDC
esp32s2 在Arduino IDE调
各位大佬好,最近尝试弄清如何使用esp32s2的usb功能。然后在Github上找的代码,放到自
一直想做个飞行器,但是出了电小问题
一直想做个飞行器,但是出
这是主函数的源码 extern uint8_t PWM_PIN[8]; void initOutput();//初始化函数 void
Arduino mega2560 usb串口01被modbus master库占用,无法下载程序
Arduino mega2560 usb串口
Arduino mega2560 用来测试modbus master通信,因未发现串口可选择,直接下载了串口(
DIY炫彩灯带,竟如此简单,更有硬件开发工具免费领!
DIY炫彩灯带,竟如此简单
什么是涂鸦Arduino SDK? Arduino 是全球最流行的开源硬件平台,涂鸦官方推出的 Ardui
.h .cpp源代码转.ino草图
.h .cpp源代码转.ino草图
在Github上下载了源码,是.h 和.cpp文件,请问一下,如何才可以转成可以在arduinoIDE
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表