×

WIZwiki W7500 WebRadio播放器开源

消耗积分:2 | 格式:zip | 大小:0.81 MB | 2022-12-23

张桂英

分享资料个

描述

编程语言: C++

集成开发环境:  mbed

目标单片机: WIZwiki-W7500板

额外使用的硬件: VS1053 MP3解码器

 
poYBAGOkE_GATt8NAACTanRaCX0946.jpg
WIZwiki-W7500 Cortex-M0平台板
 

 

介绍

2015 年 8 月 31 日,我得到了新的 WIZnet 平台板,WIZwiki-W7500基于 48MHz 的 Cortex-M0 cpu,具有 128 kBytes 闪存和 48 kBytes RAM,与硬连线 TCP/IP 内核共享。TCP/IP 内核使用的 RAM 数量最多可达 32 kBytes,其余 16 kBytes 留给用户使用(32 + 16 = 48 kBytes RAM)。W7500 是一个 3.3V 设备,但根据 WIZnet板的 I/O 引脚是5V容忍。此外,该板与 Arduino UNO 具有相同的引出线。将此板与 VS1053 mp3 解码器板结合使用,您可以构建一个非常好的 Icecast 互联网流播放器(WebRadio 播放器),它可以播放高达 320 kbits/秒(320 kbps)的互联网音频流。当然,W7500 接收器端有限的 RAM(16 kBytes)不足以覆盖您的互联网连接网关(您的ADSL 路由器)和 Icecast 服务器之间的大数据延迟。  

威廉希尔官方网站

威廉希尔官方网站 非常简单,只组合了两块威廉希尔官方网站 板。WIZwiki-W7500(简称W7500)和VS1053 mp3解码模块。W7500 开发板连接到 Icecast 服务器,请求音频数据流并将接收到的数据发送到 VS1053 模块进行解码。VS1053模块,接收来自W7500的数据流,自动识别音频数据格式。它识别数据流是midi还是 wav还是mp3还是aac文件格式并对其进行解码。用户可以通过连接耳机的 VS1053 音频插孔收听音乐流。该威廉希尔官方网站 由 W7500 板的 USB 端口的 5V DC 供电。W7500 以太网连接器连接到 ADSL 路由器或任何可以提供互联网连接的以太网设备(路由器、集线器、交换机)。连接图基于真实的威廉希尔官方网站 板照片,任何想要构建威廉希尔官方网站 但没有任何电子威廉希尔官方网站 原理图经验的人都可以识别。只需按照图 1连接图连接每条彩色线的两个端点 。

 

为了简化硬件,该威廉希尔官方网站 不包含任何 LCD 屏幕。WebRadio 电台信息不是打印在 LCD 上,而是打印在提供 W7500 板的 USB_Serial 端口上。只需将 W7500 USB 端口连接到您的计算机,安装驱动程序并打开您最喜欢的串行终端。在我的例子中,我使用了设置为 115200 bps的Termite v3.1 。

 
pYYBAGOkE_yAWVjJAADFQxqdlns586.jpg
屏幕截图 1:来自 Icecast 服务器的 WebRadio Station 信息。
 
 
poYBAGOkFACAbnAqAADlYdsD_MA219.jpg
截图2
 
 
pYYBAGOkFAOAaMCvAADmi-oHn48822.jpg
截图 3
 

 

源代码

源代码是用mbed在线编译器编写的,使用的编程语言是C++。源码上有很多注释,可以帮助你理解几乎每一行源码的意思。

mbed 有一个 VS1053 库,由Kaoru Onoe 编写并由我 (Vassilis Serasidis) 修改以支持 W7500 板并为某些 LC-Technology VS1053 板添加补丁 [ modeSwitch()函数],其中一些芯片引脚已断开连接. 没有那个补丁,这些 VS1053 模块就没有声音。

以太网库 (WIZnetInterface) 由 WIZnet 提供,可以在 mbed 库中找到。对于该库,您必须更改每个套接字的 8 个套接字、2 kBytes 发送器和 2 kBytes 接收器缓冲区的默认设置。我们想要的设置是: 只有一个套接字具有 16 kBytes 发送器和 16 kBytes 接收器缓冲区。可以通过编辑文件来更改这些设置:

 

WIZnetInterface/arch/int/W7500x_toe.cpp

 

	/*
	 * 设置 RXTX 缓冲区大小
	 *  (   =  ;  < MAX_SOCK_NUM;  ++) {
	 * sreg , Sn_RXBUF_SIZE,  );
	 * sreg , Sn_TXBUF_SIZE,  );
	 * }
	 * 

 

	
	 
	 
	 sreg<  8_t>(  , Sn_RXBUF_SIZE,  ); 
	 sreg<  8_t>(  , Sn_TXBUF_SIZE,  ); 
 

 

由 Vassilis Serasidis 于 2015 年 9 月 17 日创建和发布

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'WIZwiki W7500 WebRadio播放器开源',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);