2020-3-19 15:43:46 [显示全部楼层]
2814浏览
查看: 2814|回复: 0

[入门教程] 掌控板之在线音乐播放

[复制链接]

创客教育-掌控板流媒体

掌控板之在线音乐播放

认识掌控板

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:

掌控板之在线音乐播放图1

mpython:

掌控板之在线音乐播放图2

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+如何运用本文方法]() 还在编写中
[掌控板与物联网]() 计划编写中
若有错误(除代码)还请指出

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主

楼主的其它帖子

上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail