Difference between revisions of "BakeBit - Buzzer/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(Created page with "==介绍== Buzzer * 模块BakeBit - Buzzer是一个无源蜂鸣器。它内部不带震荡源,所以如果用直流信号无法令其鸣...")
 
(运行结果)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
[[BakeBit - Buzzer|English]]
 
==介绍==
 
==介绍==
 
[[File:BakeBit - Buzzer.jpg|thumb|Buzzer]]
 
[[File:BakeBit - Buzzer.jpg|thumb|Buzzer]]
* 模块BakeBit - Buzzer是一个无源蜂鸣器。它内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它。
+
* BakeBit - Buzzer是一个无源蜂鸣器模块,无源蜂鸣器内部有音圈和钼片,输入2.7KHz的PWM信号时,PWM信号通过绕在支架上的线包在支架的芯柱上产生一交变的磁通,交变的磁通和磁环恒定磁通进行叠加,使钼片以给定的PWM信号频率振动并配合共振腔发声。
 +
*通过调整输入PWM信号的频率即可使无源蜂鸣器发出频率不同的声音。
 
* 广泛应用于计算机、报警器、电子玩具、汽车电子设备、定时器等电子产品中作发声器件。
 
* 广泛应用于计算机、报警器、电子玩具、汽车电子设备、定时器等电子产品中作发声器件。
  
 
==特性==
 
==特性==
* 使用标准的4 PIN接口
+
* 使用标准的2.0mm 4 Pin BakeBit接口
* 尺寸为 16x24mm
+
* PWM信号输入
* PCB尺寸(mm):16x24
+
* PCB尺寸(mm):20x24
[[File:BakeBit - Buzzerpcb.png|frameless|400px|无源蜂鸣器PCB]]
+
[[File:BakeBit - Buzzerpcb.png|frameless|300px|无源蜂鸣器PCB]]
  
 
* 引脚说明:
 
* 引脚说明:
Line 15: Line 17:
 
|名称 || 描述
 
|名称 || 描述
 
|-
 
|-
|V   || 电源5V
+
|GND   || 电源5V
 
|-
 
|-
|G   || 地
+
|5V   || 地
 
|-  
 
|-  
|S   || 输入,接PWM
+
|NC    || 空
 +
|-
 +
|SIG   || 输入,接PWM
 
|}
 
|}
 +
== 示例程序:Button And Buzzer ==
  
==工作原理==
+
本示例需要配合[[BakeBit - Button]]使用。
无源蜂鸣器没有内部驱动电路,因此无源蜂鸣器工作的理想信号是方波。如果给预直流信号蜂鸣器是不响应的,因为磁路恒定,钼片不能振动发音。所以GPIO驱动无源蜂鸣器需要把GPIO的值拉高以后再拉低来产生振荡,而振荡的频率由GPIO从高拉低之间的时间决定,可以通过改变这个时间使无源蜂鸣器发出频率不同的声音。
+
  
==硬件连接==
+
=== 硬件连接 ===
 +
简单的将 蜂鸣器 模块插入 D3接口,将 按键 插入 D4 接口,如下面这样:
  
===连接NanoPi 2===
+
::{| class="wikitable"
参考下图连接模块:<br>
+
[[File:BakeBit - Buzzer_nanopi_2.jpg|frameless|600px|BakeBit - Buzzer_nanopi_2]]
+
 
+
连接说明:
+
{| class="wikitable"
+
 
|-
 
|-
|Matrix-Buzzer || NanoPi 2
+
|[[File:Button And Buzzer-1.jpg |frameless|300px]]    || [[File:Button And Buzzer-2.jpg |frameless|300px]]
 
|-
 
|-
|G    || Pin6
 
|-
 
|V    || Pin4
 
|-
 
|S    || Pin22
 
 
|}
 
|}
  
 +
=== 示例源代码 ===
 +
 +
<syntaxhighlight lang="python">
 +
import time
 +
from bakebit import *
 +
import math
 +
 +
buzzer_pin = 3 #Port for buzzer
 +
button = 4 #Port for Button
 +
old_button_status = -1
 +
pinMode(buzzer_pin,"OUTPUT") # Assign mode for buzzer as output
 +
pinMode(button,"INPUT") # Assign mode for Button as input
 +
 +
buzzer_on = False
 +
old_buzzer_on = not buzzer_on
 +
button_pressed = False
 +
 +
while True:
 +
try:
 +
while True:
 +
button_status = digitalRead(button) #Read the Button status
 +
# print button_status
 +
if old_button_status < 0:
 +
break
 +
 +
if button_status != old_button_status:
 +
break
 +
 +
time.sleep(0.2)
 +
old_button_status = button_status
 +
 +
if button_status == 0:
 +
button_pressed = True
 +
else:
 +
if button_pressed:
 +
buzzer_on = not buzzer_on
 +
button_pressed = False
 +
 +
if old_buzzer_on != buzzer_on:
 +
old_buzzer_on = buzzer_on
 +
if buzzer_on:
 +
analogWrite(buzzer_pin,127)
 +
print "Buzzing"
 +
else:
 +
analogWrite(buzzer_pin,0)
 +
print "\tOff"
 +
 +
time.sleep(0.2)
 +
except KeyboardInterrupt: # Stop the buzzer before stopping
 +
digitalWrite(buzzer_pin,0)
 +
break
 +
except (IOError,TypeError) as e:
 +
print("Error")
 +
</syntaxhighlight>
 +
 +
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_Button_And_Buzzer.py Github]
 +
 +
=== 运行示例 ===
 +
 +
假设你已经参考[http://wiki.friendlyarm.com/bakebit bakebit教程]安装了BakeBit源代码,<br />
 +
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_Button_And_Buzzer.py:
 +
<syntaxhighlight lang="bash">
 +
cd ~/BakeBit/Software/Python
 +
sudo python bakebit_prj_Button_And_Buzzer.py
 +
</syntaxhighlight>
 +
 +
=== 运行结果 ===
 +
 +
当点击按键时,蜂鸣器会响起,再次点击按键,蜂鸣器停止。
  
 
==相关资料==
 
==相关资料==
 +
*[Schematic]([http://wiki.friendlyarm.com/wiki/images/5/5b/04-SCHEMATIC_Buzzer.pdf BakeBit - Buzzer.pdf])
 +
*[BakeBit Github项目](https://github.com/friendlyarm/BakeBit)
 +
*[BakeBit Starter Kit手册](http://wiki.friendlyarm.com/bakebit/bakebit_starter_kit_manual_cn.pdf)

Latest revision as of 06:02, 17 April 2017

English

1 介绍

Buzzer
  • BakeBit - Buzzer是一个无源蜂鸣器模块,无源蜂鸣器内部有音圈和钼片,输入2.7KHz的PWM信号时,PWM信号通过绕在支架上的线包在支架的芯柱上产生一交变的磁通,交变的磁通和磁环恒定磁通进行叠加,使钼片以给定的PWM信号频率振动并配合共振腔发声。
  • 通过调整输入PWM信号的频率即可使无源蜂鸣器发出频率不同的声音。
  • 广泛应用于计算机、报警器、电子玩具、汽车电子设备、定时器等电子产品中作发声器件。

2 特性

  • 使用标准的2.0mm 4 Pin BakeBit接口
  • PWM信号输入
  • PCB尺寸(mm):20x24

无源蜂鸣器PCB

  • 引脚说明:
名称 描述
GND 电源5V
5V
NC
SIG 输入,接PWM

3 示例程序:Button And Buzzer

本示例需要配合BakeBit - Button使用。

3.1 硬件连接

简单的将 蜂鸣器 模块插入 D3接口,将 按键 插入 D4 接口,如下面这样:

Button And Buzzer-1.jpg Button And Buzzer-2.jpg

3.2 示例源代码

import time
from bakebit import *
import math
 
buzzer_pin = 3		#Port for buzzer
button = 4		#Port for Button
old_button_status = -1
pinMode(buzzer_pin,"OUTPUT")	# Assign mode for buzzer as output
pinMode(button,"INPUT")		# Assign mode for Button as input
 
buzzer_on = False
old_buzzer_on = not buzzer_on
button_pressed = False
 
while True:
	try:
		while True:
			button_status = digitalRead(button)	#Read the Button status
			# print button_status
			if old_button_status < 0: 
				break
 
			if button_status != old_button_status:
				break
 
		time.sleep(0.2)
		old_button_status = button_status
 
		if button_status == 0:
			button_pressed = True
		else:
			if button_pressed:
				buzzer_on = not buzzer_on
			button_pressed = False 
 
		if old_buzzer_on != buzzer_on:
			old_buzzer_on = buzzer_on
			if buzzer_on:
				analogWrite(buzzer_pin,127)
				print "Buzzing"
			else:
				analogWrite(buzzer_pin,0)
				print "\tOff"			
 
		time.sleep(0.2)			
	except KeyboardInterrupt:	# Stop the buzzer before stopping
		digitalWrite(buzzer_pin,0)
		break
	except (IOError,TypeError) as e:
		print("Error")

Github

3.3 运行示例

假设你已经参考bakebit教程安装了BakeBit源代码,
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_Button_And_Buzzer.py:

cd ~/BakeBit/Software/Python
sudo python bakebit_prj_Button_And_Buzzer.py

3.4 运行结果

当点击按键时,蜂鸣器会响起,再次点击按键,蜂鸣器停止。

4 相关资料