发 帖  
原厂入驻New
[讨论] 【Intel Edison试用体验】(小项目一)防盗报警器
2016-7-31 23:27:00  2635 Intel
分享
本帖最后由 jinyi7016 于 2016-7-31 23:28 编辑

由于一直在调试远程的控制,而不是WebWeb其实是很好实现的。一直有问题,没有调试通过,先将小项目分享一下吧。


利用晚上环境安静的条件,在检测到噪声(孩子的哭声、其他异动)时,发出警报。


使用的模块:
麦克
LCD

利用麦克检测声音,使用蜂鸣器时行声音的报警,使用LED进行光的报警,使用LCD显示检测到的声音的大小。

使用upm库中的文件如下图所示的源文件与头文件。


无标题.png



完整的程序如下:

  1. #include <unistd.h>
  2. #include <iostream>
  3. #include <iomanip>
  4. #include "grove.hpp"
  5. #include <lcm1602.hpp>
  6. #include <jhd1313m1.hpp>
  7. #include "mic.hpp"
  8. #include <signal.h>
  9. #include <stdlib.h>
  10. #include <sys/time.h>
  11. #include "buzzer.hpp"

  12. int is_running = 0;
  13. uint16_t buffer [128];
  14. upm::microphone *sensor = NULL;


  15. int
  16. main(int argc, char **argv)
  17. {
  18.         int thresh;
  19.     thresholdContext ctx;
  20.     ctx.averageReading = 0;
  21.     ctx.runningAverage = 0;
  22.     ctx.averagedOver   = 2;

  23.     upm::GroveTemp* temp = new upm::GroveTemp(0);
  24.     upm::GroveLed* led = new upm::GroveLed(2);
  25.     upm::Buzzer* sound = new upm::Buzzer(3);
  26.     sensor = new upm::Microphone(0);

  27.     std::cout << temp->name() << std::endl;
  28.     char temperature[8];
  29.     upm::Jhd1313m1 *lcd = new upm::Jhd1313m1(0, 0x3E, 0x62);
  30.     lcd->setColor(40,150,150);//浅蓝
  31.     lcd->setCursor(0,0);
  32.     lcd->write("Voice:");
  33.     lcd->setCursor(1,0);
  34.     sound->stopSound();
  35.     int flag;
  36.     for (;;) {
  37.             int len = sensor->getSampledWindow (2, 128, buffer);

  38.         thresh = sensor->findThreshold (&ctx, 30, buffer, len);

  39.         IF((ctx.averageReading>200)&&(flag==0)){
  40.                 sound->playSound(3800, 1000000);
  41.                 led->on();
  42.                 flag=1;
  43.         }
  44.         else if((ctx.averageReading<200)){
  45.                 flag=0;
  46.                 sound->stopSound();
  47.                 led->off();
  48.         }
  49.         //int fahrenheit = (int) (celsius * 9.0/5.0 + 32.0);
  50.         sprintf(temperature,"%d",(int)ctx.averageReading);
  51.         lcd->setCursor(0,7);
  52.         lcd->write(temperature);

  53.         //printf("%d degrees Celsius, or %d degrees Fahrenheit\n",
  54.                 //celsius, fahrenheit);
  55.         sleep(1);
  56.         //sound->stopSound();
  57.         //sound->stopSound();
  58.         //led->off();
  59.         //sleep(1);
  60.     }


  61.     delete temp;
  62.     delete lcd;


  63.     return 0;
  64. }

复制代码

硬件的连接
LED接D2
蜂鸣器接D3
麦克接A0
LCD接一个I2C

20160731_231826.jpg

在声音音量超过200时,点亮LED,鸣响蜂鸣器。
LCD是显示音量有值。

20160731_231915.jpg


实测是非常的灵敏的,打字时键盘的异动也能触发。
2
2016-7-31 23:27:00   评论 分享淘帖
11 个讨论
看标题是防盗,这个防偷小孩么?
2016-8-1 09:41:12 评论

举报

盼盼2333 发表于 2016-8-1 09:41
看标题是防盗,这个防偷小孩么?

不是防盗小孩,,是夜里小孩哭了的话 就可以起来照看,,但是也可以防盗,,估计楼主说的是这个意思
围观一下 我也就会用模电搞定
2016-8-1 20:17:54 评论

举报

哈哈哈哈,你这当了爹,要把孩子奶奶气着了,孩子哭了,声音超过一定值才报警,呵呵哈哈哈
东西不错
2016-8-11 09:26:58 评论

举报

啥关系工程科技航母哈哈
2016-8-11 15:10:06 评论

举报

你这要是打雷怎么办
2016-8-16 10:25:28 评论

举报

不错,很好,很值得大家学习
2016-8-18 19:48:13 评论

举报

用简单的声控报警器就可以了,搞这么复杂,哈哈,奇葩..不过楼主基本功很扎实..赞..
2016-8-18 23:19:21 评论

举报

顶一下
2016-8-22 17:28:37 评论

举报

不错
2016-8-25 14:03:11 评论

举报

只有小组成员才能发言,加入小组>>

967个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表