知识点:什么是掌控板?
掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。
掌控板硬件特性:
ESP-32主控
处理器:Tensilica LX6双核处理器(一核处理高速连接;一核独立应用开发)
主频:高达240MHz的时钟频率
SRAM:520KB
Flash:8MB
Wi-Fi标准:FCC/CE/TELEC/KCC
Wi-Fi协议:802.11 b/g/n/d/e/i/k/r (802.11n,速度高达150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防护间隔
频率范围:2.4~2.5 GHz
蓝牙协议:符合蓝牙v4.2 BR/EDR和BLE标准
蓝牙音频:CVSD和SBC音频低功耗:10uA
供电方式:Micro USB供电
工作电压:3.3V
最大工作电流:200mA
最大负载电流:1000mA
掌控板载
三轴加速度计MSA300,测量范围:±2/4/8/16G
地磁传感器MMC5983MA,测量范围:±8 Gauss;精度0.4mGz,电子罗盘误差±0.5°
光线传感器
麦克风
3 颗全彩ws2812灯珠
1.3英寸OLED显示屏,支持16*16字符显示,分辨率128x64
无源蜂鸣器
支持2个物理按键(A/B)、6个触摸按键
支持1路鳄鱼夹接口,可方便接入各种阻性传感器
拓展接口
20通道数字I/O, (其中支持12路PWM,6路触摸输入)
5通道12bit模拟输入ADC,P0~P4
1路的外部输入鳄鱼夹接口:EXT/GND
支持I2C、UART、SPI通讯协议
掌控板板载无源蜂鸣器
其声音主要是通过高低不同的脉冲信号来控制而产生。声音频率可控,频率不同,发出的音调就不一样,从而可以发出不同的声音,还可以做出“Do、Re、Mi、Fa、So、La、Si”的效果。
1、蜂鸣器
是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。
电压式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出100500HZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
2、有源蜂鸣器和无源蜂鸣器
有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。有源蜂鸣器与无源蜂鸣器的区别:这里的“源”不是指电源,而是指震荡源。
也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。有源蜂鸣器的优点是:程序控制方便。
而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它。无源蜂鸣器的优点是:
- 便宜
- 声音频率可控,可以做出“多来米发索拉西”的效果
- 在一些特例中,可以和LED复用一个控制口
3、最简单的警报器
#MicroPython动手做(19)——掌控板之蜂鸣器与音乐
#最简单的警报器
from mpython import *
import music
import time
while True:
music.pitch(784, 500)
time.sleep_ms(100)
mPython 图形编程
4、光电火灾报警器
#MicroPython动手做(19)——掌控板之蜂鸣器与音乐
#光电火灾报警器
from mpython import *
import time
import music
while True:
if light.read() > 3000:
rgb.fill((int(255), int(0), int(0)))
rgb.write()
time.sleep_ms(1)
oled.fill(0)
oled.DispChar('火警! 火警!', 35, 22, 1)
oled.show()
music.pitch(698, 500)
music.pitch(988, 500)
else:
rgb.fill((int(0), int(153), int(0)))
rgb.write()
time.sleep_ms(1)
oled.fill(0)
oled.DispChar('小心火烛!', 38, 22, 1)
oled.show()
music.stop()
mPython 图形编程
5、持续变调警笛声(磁感应触发)
#MicroPython动手做(19)——掌控板之蜂鸣器与音乐
#持续变调警笛声(磁感应触发)
from mpython import *
import time
import music
while True:
oled.fill(0)
oled.DispChar('磁力报警', 0, 0, 1)
oled.DispChar((str(magnetic.get_field_strength())), 0, 16, 1)
oled.show()
magnetic.peeling()
if magnetic.get_field_strength() > 3:
rgb.fill((int(255), int(0), int(0)))
rgb.write()
time.sleep_ms(1)
for freq in range(880, 1760, 16):
music.pitch(freq, 50)
for freq in range(1760, 880, 16):
music.pitch(freq, 50)
else:
rgb.fill( (0, 0, 0) )
rgb.write()
time.sleep_ms(1)
rgb[1] = (int(0), int(153), int(0))
rgb.write()
time.sleep_ms(1)
music.stop()
可以通过频率设置来制作一些非音符的音调。 例如,创建警笛效果。使用 music.pitch 方法,它需要一个频率。 其中range函数用于生成数值范围。这些数字用于定义音调的高低。 range函数有三个参数,分别是起始值,结束值和步长。因此,range的第一次使用是“以16的步长创建880到1760之间的数字范围”; 第二个次是“以-16”的步长创建1760到880之间的一系列值,持续频率为50毫秒。因此获得像警报器一样在频率上升和下降的频率范围而制作出警笛效果。
mPython 图形编程