创客教育-掌控板流媒体
掌控板之在线音乐播放
认识掌控板
MicroPython是Python 3编程语言的精简高效实现 ,包括Python标准库的一小部分,并且经过优化,可在微控制器和受限环境中运行。
mPython掌控是一块MicroPython微控制器板。专为物联网设计,板载ESP-WROOM-32双核芯片,支持WiFi和蓝牙双模通信。 板上集成1.3英寸OLED显示屏、加速度计、地磁传感器、声、光传感器、蜂鸣器、2个物理按键、5个触摸按键。除此外,还有一个阻性输入接口,方便接入各种阻性传感器。 丰富多样的传感器和小体积的尺寸、结合蓝牙和WiFi双无线通讯,可现实不同的物联网应用场景。
MicroPython包含许多高级功能,如交互式提示,任意精度整数,闭包,列表理解,生成器,异常处理等。然而它非常紧凑,可以在仅256k的代码空间和16k的RAM内运行。
MicroPython旨在尽可能与普通Python兼容,以便您轻松地将代码从桌面传输到微控制器或嵌入式系统。--2020/3/12
MicroPython官方文档
支持
目前固件支持的有python语言或C++语言
软件
python编译软件、
官方编程软件mPython或mPython X、
Dfrobot编程软件Mind+
mPython 帮助文档
音乐地址
本次以在线音乐播放为例,使用酷狗网页,供大家参考
浏览器插件/扩展:DownloadHelper或Audio等流媒体识别插件
本次以DownloadHelper为例,插件安装与使用可以百度等
或者你也可以查看网页代码或审查网页元素来获取音乐地址,类似爬虫的部分,还有其他方法,不累述
正文-方法与代码
获取音乐地址
在酷狗在线平台上随便播放几首音乐获取音乐地址
蓝莲花.mp3-酷狗音乐
注:(只用于本次经验分享,无非法用途)
代码
库:python-Audio
//from mpython import*
import network #用于掌控板连接WiFi
import audio #流
my_wifi = wifi()
my_wifi.connectWiFi("名称","密码")
audio.player_init()
audio.set_volume(100)
audio.play("你的音乐地址")
图形编程:
(图形未经过透明化,白色背景具有较好的阅读效果)
mpython X:
mpython:
Mind+:
^支持Mind+编程的博友见文末^
应用要求
个人实验经验:
1.有墙的会有播放失败的情况;
2.网络不好的体验会很差;
3.固件没刷好的体验会很差;
4.有些格式不支持
具体查看Audio库
传输不一定要安全
家里的有些网盘也可以(这个我不是很了解)
掌控板要有外放或可以连接到其他设备播放
==改酷狗《蓝莲花》连接的协议为"http"==
^网易云等平台大家也可以试试,我下面给了一个网易云中一曲音乐的链接^
附录: http协议 与 https协议
最终的播放地址为:
http://webfs.yun.kugou.com/202003191155/6221255db10d038a4fc1210d5666c9c6/G008/M08/07/04/SA0DAFT7mn6AVDw6AEIXhTXgYbw529.mp3
audio.play("http://webfs.yun.kugou.com/202003191155/6221255db10d038a4fc1210d5666c9c6/G008/M08/07/04/SA0DAFT7mn6AVDw6AEIXhTXgYbw529.mp3")
应用结果
效果视频
[video(video-hVke2RVu-1584598739419)(type-youku)(url-https://player.youku.com/embed/XNDU5NDUyNDI0MA==)(image-https://vthumb.ykimg.com/054106015E7307090000015A4C01DCE1)]
(title-掌控板在线音频流播放)如果视频不能直接播放,请点击链接
扩展
还可以播放视频等媒体,我在一些视频网站有看到成功的案例。
支持本地媒体。
掌控板不仅有掌控功能,重在于人机交互,创造乐趣,我的掌控宝(掌控板加扩展板)还是借的。
可用变量与函数做一个网络音乐播放器等
from mpython import *
import network
import audio
import time
my_wifi = wifi()
my_wifi.connectWiFi("WiFi_ID", "")
def playmusic():
global musicad, musicnum, soundlevel, state
audio.play(musicad)
def changemusic():
global musicad, musicnum, soundlevel, state
if musicnum == 1:
musicad = "http://webfs.yun.kugou.com/202003191421/e30aca9d266e77c5fde5a190422c17af/G008/M08/07/04/SA0DAFT7mn6AVDw6AEIXhTXgYbw529.mp3"
if musicnum == 2:
musicad = "http://webfs.yun.kugou.com/202003191421/a5732d30e3f4cfd706a7dc6d4d54d563/part/0/969028/G010/M08/1B/09/Sg0DAFUPiReAWPR4AEM1F2ggi3I447.mp3"
if musicnum == 3:
musicad = "http://webfs.yun.kugou.com/202003191422/ca44fbc5046ae7dbfa626287abd7f6fe/G167/M0A/1F/09/h5QEAF0oXUKAX7sxACfaM822ad8218.mp3"
def display():
global musicad, musicnum, soundlevel, state
oled.fill(0)
if state == 0:
oled.fill(0)
oled.DispChar(" 下一首 播放中", 0, 0, 1)
oled.show()
else:
oled.fill(0)
oled.DispChar("下一首 暂停中", 0, 0, 1)
oled.show()
if musicnum == 1:
oled.fill(0)
oled.DispChar("蓝莲花", 0, 16, 1)
oled.show()
if musicnum == 2:
oled.fill(0)
oled.DispChar("贵妃醉酒", 0, 16, 1)
oled.show()
if musicnum == 3:
oled.fill(0)
oled.DispChar("哪吒", 0, 16, 1)
oled.show()
oled.DispChar(str("WiFi:") + str(my_wifi.sta.ifconfig()[0]), 0, 32, 1)
oled.DispChar("音量加 音量减", 0, 48, 1)
oled.show()
def on_button_a_down(_):
global musicad, musicnum, soundlevel, state
time.sleep_ms(10)
if button_a.value() == 1: return
musicnum = musicnum + 1
def on_button_b_down(_):
global musicad, musicnum, soundlevel, state
time.sleep_ms(10)
if button_b.value() == 1: return
if state == 0:
audio.pause()
state = state + 1
else:
audio.resume()
state = state + -1
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)
musicnum = 1
soundlevel = 50
state = 0
if my_wifi.sta.isconnected():
try:
audio.player_init()
audio.set_volume(soundlevel)
changemusic()
playmusic()
display()
except:
oled.fill(0)
oled.DispChar("error", 0, 0, 1)
oled.show()
if touchPad_P.read() < 400:
soundlevel = soundlevel + 1
if touchPad_T.read() < 400:
soundlevel = soundlevel + -1
时间有限,先编了个结构(此程序运行效果不佳)。建议使用多线程与列表等
一些音乐地址
http://m10.music.126.net/20200319141537/58c16a4e3a2066213481c509803a05ed/ymusic/4d6d/1e6c/9049/783e9bcd32c491f7cb3a6e644b854307.mp3
外面的世界很精彩.mp3(来源网易云音乐)
https://webfs.yun.kugou.com/202003191319/32c193915ca61c5909fed77bf23b0a0d/G075/M04/0C/1B/K5QEAFe2OVeAA4szAC7THJYTfEU269.mp3
长生诀.mp3(来源酷狗音乐 使用时更改链接协议)
http://wiki.labplus.cn/images/4/4e/Music_test.mp3
某儿歌
==注明:以上音乐地址及获取方法只用于交流经验,请勿有不当用途==
最后
本文章只用于交流学习无不当内容与用途,本文章由本人修改分享
原文:https://blog.csdn.net/lkai312/article/details/104934158
[Mind+如何运用本文方法]() 还在编写中
[掌控板与物联网]() 计划编写中
若有错误(除代码)还请指出