关于电路
项目

构建音频探测器

2015年8月9日经过Travis Fagerness

用element麦克风和Ti CC3200 WiFi微控制器检测音频。这个方便的项目将允许您设置一个音频检测设备,该设备可用于抓住室友从冰箱中窃取东西,或者如果房间中的噪音超过一定阈值,则可以向您发送警报。

用element麦克风和Ti CC3200 WiFi微控制器检测音频。

推荐水平

中间的

要求

  • CC3200演示板
    • 更新到最新的固件以获得Energia支持,指示这里
  • 能量- 来自Ti的Arduino IDE克隆
    • 在文章中使用:v。0101E00016
  • 麦克风
    • 在文章中使用:鲍勃-09964
      • *该板需要修改才能与CC3200合作
  • 跳线
  • 能够使用UDP服务器运行Python的设备
    • 在本文中使用:python 2.7的Windows 8 PC

硬件设置

修改麦克风

不幸的是,CC3200在ADC引脚上只能读取高达1.45V的电压。由于我们将从3.3V为麦克风提供动力,因此我们需要修改电路以在不存在声音时输出1.45/2 = 0.725V的电压。示意图中的电阻R2和R3用于设置偏置点的电压分隔器。为了将其更改为0.725V,我们可以根据公共电压分离器方程计算新电阻。这可以将电阻R3更改为2.82K。最接近的1%值为2.8K,最接近的5%值为3K。如果您可以找到一个2.8k的电阻,我建议您使用2.8千电阻。如果您周围没有很多电阻器,则该值并不是非常关键的,如果偏置太低或电压高,您可能会在信号中引入失真。

连接电线

CC3200 PINOUT这里

CC3200 鲍勃-09964
引脚1-3V3电源 VCC
引脚22- GND gnd
引脚23 -ADC_CH0 avd

测试连接

下面的代码实现了麦克风的输入。它计算从麦克风中的RMS值的移动平均值。然后,它将条形图打印到串行端子,指示有多少音频能量。

  1. 下载以下ZIP文件并将其解放到目录。
  2. 在Energia中打开草图。
    1. 文件> open> audio_rms_print.ino
    2. 确保在工具>板>启动板中选择正确的板,w/ cc3200 80MHz。
  3. 编程董事会。
    1. 文件>上传或箭头按钮
  4. 您应该在终端移动中看到条形图,具体取决于音频。*注意:内置终端不处理“/r”以显示图形。我建议使用TERA任期。

audio_rms_print.zip

通过WiFi传输

以下代码为音频检测器添加了WiFi功能。

  1. 下载以下ZIP文件并将其解放到目录。
  2. 在Energia中打开草图。
    1. 文件> open> audio_rms_print.ino
    2. 确保在工具>板>启动板中选择正确的板,w/ cc3200 80MHz。
  3. 修改以下网络常数
  4. 编程董事会。
  5. 文件>上传或箭头按钮。
  6. 现在,每次测量新平均值时,CC3200现在都会超越UDP。
/*网络设置*/ char ssid [] =“ yousssid”;//网络char密码的ssid [] =“ yourpassword”;//无线网络的密码char udp_server_ip [] =“ yousererverpassword”;// UDP服务器的IP地址将数据发送到INT UDP_SERVER_PORT = 9999;

audio_detector.zip

设置Python UDP服务器

以下代码从指定的IP地址和端口启动UDP服务器。它期望每个UDP数据包发送两个字节。它将两个字节转换为INT16数字,并将其转换为控制台上显示的条形图。在CC3200运行上面的代码时执行此脚本时,当音频在麦克风附近播放时,将显示条形图。

导入socketServer导入struct interm interm sys类Myudphandler(socketserver.baserequesthandler):def handle(self):data = self.request [0] .STRIP()socket = self.request = self.request [1] try:move_average = struct.unt.unpack('h H struct.unpack('H',data)[0] bar_chart = mover_average打印“ \ r \ r”,while bar_chart> 0:sys.stdout.write('#')bar_chart = bar_chart = bar_chart- 200 excife decke except:dyfass __name __ ==“ __ main __”:服务器= socketserver.udpserver((主机,端口),myudphandler)server.serve_forever()

房间

添加电子邮件通知

  1. 确保您拥有一个允许“不太安全的应用程序”通信的Gmail帐户。
  2. 将“ email_threshold”调整为您要发送电子邮件的音频能量。
  3. 将您的用户名和密码添加到文件顶部的变量。
  4. 执行脚本。当达到阈值时,您应该看到以下内容。如果您想永远发送电子邮件,请删除变量“已经_sent_once”。
  5. 在收件箱中发送电子邮件:
导入socketServer导入struct inture interm indim indims import smtplib从email.mime.text导入mimeText主机,port =“ yourip”,9999 email_threshold = 600 email_address =“ youremail =“ youremail” password =“ yourpass”):def handle(self):global_sent_once,move_average data = self.request [0] .strip()socket = self.request [1]尝试:move_average = struct.unpack('h h',data)[0] bar_chart= move_averager print“ \ r \ r”,而bar_chart> 0:sys.stdout.write('#')bar_chart = bar_chart = bar_chart- 200例外:通过:if move_average> emaim_threshord> emair_threshold and_sent_threshold and_sent_once == 0:已经_sent_once,高于阈值的音频:“ + str(move_average)msg = mimeText(“音频处于级别:” + str(move_average))msg [objection'] ='音频高于阈值'sg [''''''''''''''''''''''''''''''''''''''''''''''] = email_address msg ['to'] = email_address s = smtplib.smtp('smtp.gmail.com:587')s.ehlo()s.starttls()s.login(email_address,passwork)s.sendmail(email__emage__地址,email_address,msg.as_string())

Room2.Zip

视频

为自己自己尝试一下!得到bom。

4条评论
  • m
    黑手党 2015年8月12日

    您没有音频流演示吗?从PC到CC3200 lainingxl(在Audioboosterpack等)中流音频,感谢您的关注

    喜欢。 回复
  • 你好。我是事物硬件方面的新手。您能解释一下如何将电阻器或电阻添加到电源麦克风中吗?您能遵循任何图片或资源吗?我正在尝试使这个示例启动并运行。任何帮助将不胜感激。谢谢

    喜欢。 回复
  • p
    phuangcn 2016年3月11日

    嗨,特拉维斯,您的图表上似乎没有2.8k电阻。你能仔细检查吗?

    顺便说一下,如果我使用此mems麦克风(https://www.sparkfun.com/products/9868),我是否应该使用2.8k电阻来降低电压?

    喜欢。 回复