树莓派控制有源蜂鸣器

作者 Gavin 日期 2015-09-06
树莓派控制有源蜂鸣器

前几天淘的温湿度传感器和有源蜂鸣器今天终于到了,今晚10点半左右就整起来了.
大学里学的电路图早已忘的一干二净,听起来实现起来有点难度的样子.

5V有源蜂鸣器 电磁式(SOT塑封管 长声 )属性:

名称 属性
电压 3.5—5.5V
电流 <25mA
频率 2300±500

关于有源蜂鸣器和无源蜂鸣器的区别:

无源蜂鸣器:

  1. 无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它.

  2. 声音频率可控,可以做出“多来米发索拉西”的效果.

  3. 在一些特例中,可以和LED复用一个控制口.

有源蜂鸣器:

  1. 有源蜂鸣器内部带震荡源,所以只要一通电就会叫.

  2. 程序控制方便,单片机一个高低电平就可以让其发出声音,而无源蜂鸣器却做不到.

  • 首先找来了树莓派的接口图(我的小派是二代的):

树莓派接口图

  • 找来淘宝的蜂鸣器图片介绍:

有源蜂鸣器结构图

有源蜂鸣器结构图

标有 + 的就是蜂鸣器的正极,所以当把正极接到5V接口上,并把另一个接口接到随便一个IO口上时,有源蜂鸣器便正常工作了,如下图所示,黑线接的是正极,接到2口上,白线接到9口GPIO4上:

有源蜂鸣器长响,正常工作图

  • 证明蜂鸣器没有问题后,接下来就考虑怎么用python控制蜂鸣器了

步骤和网上的差不多,我改了下程序:

1
root@raspberrypi:/data/python/chuanganqi# vim libbeep.py

插入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
import RPi.GPIO as GPIO
import time
PIN_NO = 12
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_NO, GPIO.OUT)
def beep(seconds):
GPIO.output(PIN_NO, GPIO.HIGH)
time.sleep(seconds)
GPIO.output(PIN_NO, GPIO.LOW)
def beepAction(secs, sleepsecs, times):
for i in range(times):
beep(secs)
time.sleep(sleepsecs)
1
root@raspberrypi:/data/python/chuanganqi# vim alarm.py

插入如下代码:

1
2
3
4
5
6
7
import RPi.GPIO as GPIO
import time
import libbeep
while True:
print "continued"
libbeep.beepAction (0.05,0.05,2)
time.sleep(3)

然后执行 alarm.py

1
root@raspberrypi:/data/python/chuanganqi# python alarm.py

libbeep.pyPIN_NO = 12代表的是channel,针脚值

杜邦线插入的位置如下:

有源蜂鸣器python引脚图

这样每隔三秒,蜂鸣器会报两次,听着爽爽的~



环境准备:

  1. 二代树莓派一个

  2. 有源蜂鸣器一个

  3. 杜邦线两根 我买的一沓,40根

观月堂的小π还可以,配件就算了,相对别家来说有点贵,所以选了telesky



参考资料:

  1. 树莓派用蜂鸣器实现整点报时

  2. 硬件篇(一)DIY一个树莓派扩展板