MicroPython动手做(24)——掌控板之拓展掌控宝

2020-05-062.2万
AI 快速预览详细 收起
掌控拓展板(parrot)是掌控板衍生的一款体积小巧、易于携带的拓展板,支持电机驱动、语音播放、语音合成等功能。该板扩展了12路IO接口和2路I2C接口,内置330mAH锂电池,支持循环充电。适用于STEM教育场景,帮助孩子轻松实现语音合成和电机控制。

掌控拓展板(parrot)是掌控板衍生的一款体积小巧、易于携带的拓展板。支持电机驱动、语音播放、语音合成等功能的IO引脚扩展板,可扩展12路IO接口和2路I2C接口。




MicroPython动手做(24)——掌控板之拓展掌控宝图1




技术参数

该板具有以下特性:

两路DC马达驱动,单路电流150mA

支持音频功放和喇叭输出(掌控板P8,P9引脚)

支持文字转语音(Text To Speech)的语音合成

扩展12路IO接口、2路I2C接口

体积小巧、便携,易于携带

支持锂电池供电和外接USB电源供电两种方式

内置330mAH锂电池,支持锂电池循环充电

工作电压:3.3V

最大输出电流: 1A@3.3V

充电电流: 最大170mA



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(28)
青出于蓝
青出于蓝
请问一下,掌控拓展版的语音播放功能在不用拓展版的情况下能用吗,求教。
青出于蓝
青出于蓝回复驴友花雕
好的,谢谢。
驴友花雕
驴友花雕
作者
回复青出于蓝
我刚才查了下硬件,好像没有输出接口
共6条回复,已加载2条,点击查看更多共6条回复,已加载全部
驴友花雕
驴友花雕
作者

驴友花雕
驴友花雕
作者
mPython X 图形编程

驴友花雕
驴友花雕
作者

(2)播放本地文件:播放本地mp3文件与播放网络mp3的方法是一样的,只需把网络mp3地址改为本地文件名即可。
#MicroPython动手做(24)——掌控板之拓展掌控宝
#播放本地声音文件
[mw_shl_code=python,false]#MicroPython动手做(24)——掌控板之拓展掌控宝
#播放本地声音文件
from mpython import *
import time
import audio
def on_button_a_down(_):
time.sleep_ms(10)
if button_a.value() == 1: return
oled.fill(0)
oled.DispChar("播放本地音乐......", 16, 16, 1)
oled.show()
audio.player_init()
audio.set_volume(66)
audio.play("music_1.mp3")
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)[/mw_shl_code]
驴友花雕
驴友花雕
作者
刷入完成后,在“板载文件管理”窗口可见相应文件:

驴友花雕
驴友花雕
作者
6、播放本地声音文件
掌控板支持播放的文件类型比较多,如mp3、WAV等。由于掌控板存放文件的空间不大,一般采用mp3格式的本地文件会更加合适。为了有效利用存储空间,掌控板接受上传的文件也不能太大,目前版本限制100KB,也不适宜存放整首音乐,用于存放音效文件还是比较适宜的。
(1)将mp3文件上传至掌控板
点击mPythonX工具栏的“文件管理”,在文件管理对话框点击“上传到板”。在打开文件对话框选择文件类型为“所有文件”,选择所需的mp3文件,点击“打开”。最后按提示选择确定上传即可完成上传。(刷入文件的时间较长,几十KB的文件可能也需1-2分钟,请耐心等待)

驴友花雕
驴友花雕
作者

驴友花雕
驴友花雕
作者
mPython 图形编程

驴友花雕
驴友花雕
作者
5、按键控制小车前进、后退与旋转
#MicroPython动手做(24)——掌控板之拓展掌控宝
#按键控制小车前进、后退与旋转
[mw_shl_code=python,false]#MicroPython动手做(24)——掌控板之拓展掌控宝
#按键控制小车前进、后退与旋转
import parrot
from mpython import *
def forward():
parrot.set_speed(parrot.MOTOR_1, 80)
parrot.set_speed(parrot.MOTOR_2, 80)
oled.fill(0)
oled.blit(image_picture.load('face/Information/Forward.pbm', 0), 32, 0)
oled.show()
def retreat():
parrot.set_speed(parrot.MOTOR_1, -80)
parrot.set_speed(parrot.MOTOR_2, -80)
oled.fill(0)
oled.blit(image_picture.load('face/Information/Backward.pbm', 0), 32, 0)
oled.show()
def right():
parrot.set_speed(parrot.MOTOR_1, 80)
parrot.set_speed(parrot.MOTOR_2, -80)
oled.fill(0)
oled.blit(image_picture.load('face/Information/Right.pbm', 0), 32, 0)
oled.show()
import time
def on_button_a_down(_):
global aaa
time.sleep_ms(10)
if button_a.value() == 1: return
rgb.fill((int(0), int(102), int(0)))
rgb.write()
time.sleep_ms(1)
forward()
time.sleep(2)
Left()
time.sleep(1)
retreat()
time.sleep(2)
right()
time.sleep(1)
oled.fill(0)
parrot.set_speed(parrot.MOTOR_1, 0)
parrot.set_speed(parrot.MOTOR_2, 0)
rgb.fill( (0, 0, 0) )
rgb.write()
time.sleep_ms(1)
oled.show()
def Left():
parrot.set_speed(parrot.MOTOR_1, -80)
parrot.set_speed(parrot.MOTOR_2, 80)
oled.fill(0)
oled.blit(image_picture.load('face/Information/Left.pbm', 0), 32, 0)
oled.show()
image_picture = Image()
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)[/mw_shl_code]
驴友花雕
驴友花雕
作者

驴友花雕
驴友花雕
作者
mPython 图形编程

驴友花雕
驴友花雕
作者
#MicroPython动手做(24)——掌控板之拓展掌控宝
#按键控制TT电机
[mw_shl_code=python,false]#MicroPython动手做(24)——掌控板之拓展掌控宝
#按键控制TT电机
from mpython import *
import time
import parrot
def on_button_a_down(_):
global aaa
time.sleep_ms(10)
if button_a.value() == 1: return
parrot.set_speed(parrot.MOTOR_1, 80)
time.sleep(1)
parrot.set_speed(parrot.MOTOR_1, 0)
parrot.set_speed(parrot.MOTOR_2, 0)
time.sleep(1)
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
[/mw_shl_code]
驴友花雕
驴友花雕
作者
4、掌控拓展板-按键控制TT电机
作为动作输出,接受高电平时可以通过连续旋转来给应用提供动力,可正反向,速度可调。这里使用单轴TT直流减速电机做实验。
技术参数
工作电压:VCC 3.3-5V
XH2.54间距端子线
单轴TT直流减速电机
模块30x70mm


驴友花雕
驴友花雕
作者
3、拓展掌控宝驱动电机函数
拓展板支持2路的PWM电机驱动,可以使用直流电机马达,如TT马达、N20等。
(1)首先导入parrot模块:
import parrot
(2)M1、M2,正转速度设为80:
import parrot # 导入parrot 模块
parrot.set_speed(parrot.MOTOR_1,80) # 设置M1正转,速度为80
parrot.set_speed(parrot.MOTOR_2,80) # 设置M2正转,速度为80
(3)反转:
parrot.set_speed(parrot.MOTOR_1,-80) # 设置M1反转,速度为80
parrot.set_speed(parrot.MOTOR_2,-80) # 设置M2反转,速度为80
(4)停止:
parrot.set_speed(parrot.MOTOR_1,0) # 停止
parrot.set_speed(parrot.MOTOR_2,0) # 停止
控制电机速度使用到函数 set_speed(motor_no, speed) 。motor_no 参数为电机编号,可选编号常量有 MOTOR_1 、MOTOR_2 。 speed 参数为速度,范围-100~100,正值表示正转,负值时表示负转。 当某些时候需要知道当前设置的速度值时,你可以用 get_speed(motor_no) 返回当前电机速度。
teu
teu
在哪买的,求链接。
驴友花雕
驴友花雕
作者
回复teu
淘宝上能搜到的
驴友花雕
驴友花雕
作者
2、拓展掌控宝的元件布局



驴友花雕
驴友花雕
作者

驴友花雕
驴友花雕
作者
mPython X 图形编程

驴友花雕
驴友花雕
作者
回复AndyLove
可以播放音频的
AndyLove
AndyLove回复驴友花雕
奇怪,为什么我的放不出声音呢
驴友花雕
驴友花雕
作者
1、通过音频模块播放网络歌曲
#MicroPython动手做(24)——掌控板之拓展掌控宝
#通过音频模块播放网络歌曲(掌控宝内置喇叭)
[mw_shl_code=applescript,false]#MicroPython动手做(24)——掌控板之拓展掌控宝
#通过音频模块播放网络歌曲(掌控宝内置喇叭)
from mpython import *
import network
import audio
import time
my_wifi = wifi()
my_wifi.connectWiFi("zh", "zy1567")
audio.player_init()
audio.set_volume(70)
audio.play("http://wiki.labplus.cn/images/4/4e/Music_test.mp3")
while True:
oled.fill(0)
oled.DispChar("播放网络歌曲", 30, 16, 1)
oled.DispChar("春天在哪里", 35, 32, 1)
oled.show()
rgb[1] = (int(0), int(51), int(0))
rgb.write()
time.sleep_ms(1)[/mw_shl_code]
播放网络音频
要播放网络上mp3音频文件,需要知道音频的URL地址。目前,大部分的音乐网受版权保护,并不直接提供音乐的URL,你可以通过一些插件爬取音频的URL地址。
注解
掌控板需要确保连接网络通畅。URL必须是完整的网络地址,否则无法解析。音频解码功能使用到 audio 模块的 audio.play(url) 函数, url 参数可以为音源的本地文件系统的路径或网络URL地址。
驴友花雕
驴友花雕
作者
[p=24, null, left][font=微软雅黑]掌控宝功能说明[/font][/p][p=24, null, left][font=微软雅黑]
[/font][/p][p=24, null, left][font=微软雅黑]电机驱动[/font][/p][p=24, null, left][font=微软雅黑]掌控拓展板支持2路的PWM电机驱动(掌控拓展板背面标记M1和M2),你可以接入直流电机马达(如TT马达、N20)和LED灯(满天星灯带)[/font][/p][p=24, null, left][font=微软雅黑]
[/font][/p][p=24, null, left][font=微软雅黑]I/O[/font][/p][p=24, null, left][font=微软雅黑]掌控拓展板左右两侧扩展出12路I/O接口、2路I2C接口。可以通过这些接口接入经典的传感器输入模块,输出模块。例如:按键、人体红外、超声波、LED、马达、蜂鸣器、数码管...... 拓展板扩展引脚有P0、P1、P2、P3、P5、P6、P7、P11、P13、P14、P15、P16、P19(SCL)、P20(SDA)[/font][/p][p=24, null, left][font=微软雅黑]重要[/font][/p][p=24, null, left][font=微软雅黑]由于P5、P11是掌控板的按键A、B的IO引脚,为避免冲突,限定拓展板的P5、P11引脚只能用于数字电平输入,且拓展板会对输入电平进行翻转。在使用时,须重点注意![/font][/p][p=24, null, left][font=微软雅黑]
[/font][/p][p=24, null, left][font=微软雅黑]喇叭—音频播放[/font][/p][p=24, null, left][font=微软雅黑]掌控拓展板内置喇叭,支持音频播放。[/font][/p][p=24, null, left][font=微软雅黑]
[/font][/p][p=24, null, left][font=微软雅黑]语音合成(TTS)[/font][/p][p=24, null, left][font=微软雅黑]将文本转化为文字,让机器能够说话。这样就可以给掌控板添上“嘴巴”。比如在程序内输入你想要说话的内容,让它说给你听。[/font][/p][p=24, null, left][font=微软雅黑]
[/font][/p][p=24, null, left][font=微软雅黑]Python库[/font][/p][p=24, null, left][font=微软雅黑]parrot 模块 : 用于电机驱动功能[/font][/p][p=24, null, left][font=微软雅黑]audio 模块 : 用于音频播放功能[/font][/p]