TPTBUB8h 发表于 2020-3-19 15:43:46

掌控板之在线音乐播放

创客教育-掌控板流媒体

## 掌控板之在线音乐播放
## 认识掌控板
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官方文档
](https://mpython.readthedocs.io/zh/master/board/introduction.html)
## 支持
目前固件支持的有python语言或C++语言
### 软件
python编译软件、
官方编程软件mPython或mPython X、
Dfrobot编程软件Mind+
(https://mpython.readthedocs.io/zh/master/board/introduction.html)

## 音乐地址
本次以在线音乐播放为例,使用酷狗网页,供大家参考

浏览器插件/扩展:DownloadHelper或Audio等流媒体识别插件
本次以DownloadHelper为例,插件安装与使用可以百度等
或者你也可以查看网页代码或审查网页元素来获取音乐地址,类似爬虫的部分,还有其他方法,不累述
## 正文-方法与代码
### 获取音乐地址
在酷狗在线平台上随便播放几首音乐获取音乐地址
![酷狗在线音乐地址](https://img-blog.csdnimg.cn/20200319115746538.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrYWkzMTI=,size_55,color_FFFFFF,t_70,_center)
[蓝莲花.mp3-酷狗音乐](https://webfs.yun.kugou.com/202003191155/6221255db10d038a4fc1210d5666c9c6/G008/M08/07/04/SA0DAFT7mn6AVDw6AEIXhTXgYbw529.mp3)
注:(只用于本次经验分享,无非法用途)
### 代码
#### 库:python-Audio
```python
//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库](https://wiki.python.org/moin/Audio/)
传输不一定要安全
家里的有些网盘也可以(这个我不是很了解)
掌控板要有外放或可以连接到其他设备播放

==改酷狗《蓝莲花》连接的协议为"http"==
   ^网易云等平台大家也可以试试,我下面给了一个网易云中一曲音乐的链接^
   附录:(https://baike.baidu.com/item/http/243074?fr=aladdin) 与 (https://baike.baidu.com/item/https/285356?fr=aladdin)
最终的播放地址为:
>http://webfs.yun.kugou.com/202003191155/6221255db10d038a4fc1210d5666c9c6/G008/M08/07/04/SA0DAFT7mn6AVDw6AEIXhTXgYbw529.mp3

```python
audio.play("http://webfs.yun.kugou.com/202003191155/6221255db10d038a4fc1210d5666c9c6/G008/M08/07/04/SA0DAFT7mn6AVDw6AEIXhTXgYbw529.mp3")
```
## 应用结果
![掌控板准备工作-固件烧写](https://img-blog.csdnimg.cn/20200319133010910.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrYWkzMTI=,size_10,color_FFFFFF,t_70)
![掌控板准备工作-代码刷入与运行](https://img-blog.csdnimg.cn/20200319133129153.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrYWkzMTI=,size_10,color_FFFFFF,t_70)
![掌控板音乐获取与播放结果](https://img-blog.csdnimg.cn/20200319141447844.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrYWkzMTI=,size_16,color_FFFFFF,t_70)
### 效果视频


(title-掌控板在线音频流播放)如果视频不能直接播放,请[点击链接](https://player.youku.com/embed/XNDU5NDUyNDI0MA==)

## 扩展
还可以播放视频等媒体,我在一些视频网站有看到成功的案例。
支持本地媒体。
掌控板不仅有掌控功能,重在于人机交互,创造乐趣,我的掌控宝(掌控板加扩展板)还是借的。

可用变量与函数做一个网络音乐播放器等
```python
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, 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
```
![音乐播放器_掌控板](https://img-blog.csdnimg.cn/20200319144744922.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrYWkzMTI=,size_16,color_FFFFFF,t_70)
时间有限,先编了个结构(此程序运行效果不佳)。建议使用多线程与列表等

### 一些音乐地址
>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

() 还在编写中
[掌控板与物联网]() 计划编写中
                              **若有错误(除代码)还请指出**
页: [1]
查看完整版本: 掌控板之在线音乐播放