查看: 73|回复: 0

[原创] 【赚周年币】Fireduino A7.播放网络中的音乐

[复制链接]

17

主题

13

好友

728

积分

举人

Rank: 4

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 39 天

    [LV.5]常住居民I

    爱板会员勋章 活跃会员勋章

    发表于 2016-12-30 22:54:16 |显示全部楼层
    本帖最后由 limale 于 2017-1-17 20:22 编辑

    昨天我们测试了播放TF卡中的MP3文件效果还是不错的,今天尝试一下播放网络中的音乐。根据官方的例程,我们需要搭建一个Http File Server需要使用这款工具: hfs2_3b287.rar (827.24 KB, 下载次数: 0) 解压之后直接运行就可以了。
    然后我们选择本机IP地址。

    QQ截图20161230222807.jpg

    拖放几个测试MP3文件放在这个虚拟文件系统栏目里。
    QQ截图20161230223027.jpg

    然后我们在浏览器地址栏输入:http://192.168.2.105:8080/之后回车,就可以看到列表文件了。
    QQ截图20161230223114.jpg

    同时HFS这边也会显示连接和请求信息。
    QQ截图20161230223329.jpg

    文件服务器就算搭建好了,下来我们开始编写Fireduino的代码。
    因为涉及到操作Audio、WiFi和TF卡,所以我们要包含相应的头文件:

    QQ截图20161230214657.jpg

    如图所示,这里要定义你自己的路由器ssid和密码。
    QQ截图20161230223807.jpg

    这里改成你自己的MP3文件路径。
    QQ截图20161230223826.jpg

    QQ截图20161230224029.jpg

    因为我在loop里边设置的循环播放,所以这里播放一遍完了之后又会重新连接HFS缓存文件到TF卡之中。
    QQ截图20161230224832.jpg
    1. #include <Arduino.h>
    2. #include "Wire.h"
    3. #include "oled.h"
    4. #include "oledfont.h"
    5. #include "TF.h"
    6. #include "Audio.h"
    7. #include <WiFi.h>

    8. //板载led
    9. #define LED_GREEN   13
    10. #define LED_BLUE    3

    11. #define Trigger_T_measuremnet_hold_master         0xe3
    12. #define Trigger_RH_measuremnet_hold_master        0xe5
    13. extern int16_t SHT20_Read_value(uint8_t value);
    14. uint16_t SHT20_val;
    15. float SHT20_val_temp;
    16. float SHT20_val_humi;
    17. char str[15] = {};
    18. char music1[10] = {"love.MP3"};
    19. char music2[10] = {"sara.MP3"};

    20. char ssid[] = {"network ssid"};       //your network SSID(name)
    21. char pwd[]  = {"123456"}; //your network password
    22. int status = WL_IDLE_STATUS;
    23. void printWifiStatus();
    24. void Sys_Init(void)
    25. {
    26.   Serial.begin(115200);
    27.   pinMode(OLED_GND, OUTPUT);
    28.   pinMode(OLED_VCC, OUTPUT);
    29.   pinMode(OLED_CLK, OUTPUT);
    30.   pinMode(OLED_DIN, OUTPUT);
    31.   pinMode(OLED_RES, OUTPUT);
    32.   pinMode(OLED_DC, OUTPUT);
    33.   pinMode(OLED_CS, OUTPUT);
    34.   digitalWrite(OLED_GND,LOW);
    35.   digitalWrite(OLED_VCC,HIGH);
    36.   
    37.   pinMode(LED_GREEN, OUTPUT);
    38.   digitalWrite(LED_GREEN,HIGH);
    39.   Wire.begin();
    40.   OLED_Init();
    41.   OLED_Clear();
    42.   Serial.begin(115200);
    43.   Serial.print("\r\narduino setup ...\r\n");
    44.   
    45.   if(!SD.begin())
    46.   {
    47.     Serial.println("sd init err\r\n");
    48.     while(1);
    49.   }
    50.   // check for the presence of the shield:
    51.   if (WiFi.status() == WL_NO_SHIELD) {
    52.     Serial.println("WiFi shield not present");
    53.     // don't continue:
    54.     while (true);
    55.   }
    56.   String fv = WiFi.firmwareVersion();
    57.   if (fv != "1.1.0") {
    58.     Serial.println("Please upgrade the firmware");
    59.   }
    60.   // attempt to connect to Wifi network:
    61.   while (status != WL_CONNECTED) {
    62.     Serial.print("Attempting to connect to SSID: ");
    63.     Serial.println(ssid);
    64.     // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    65.     status = WiFi.begin(ssid, pwd);
    66.     // wait 10 seconds for connection:
    67.     // delay(10000);
    68.   }
    69.   Serial.println("Connected to wifi");
    70.   printWifiStatus();
    71.   Audio.begin(AUDIO_NET);
    72.   Audio.playNetFile("http://192.168.2.105:8080/%E7%88%B1%E5%BE%88%E7%BE%8E-sara.mp3");
    73. }

    74. void Main(void)
    75. {
    76.   char str1[] = {"eeboard"};
    77.   char str2[] = {"www.eeboard.com"};  
    78.   uint8_t i = 4;
    79.   
    80.   OLED_ShowCHinese(i, 0, 0);
    81.   OLED_ShowCHinese(i+16, 0, 1);
    82.   OLED_ShowString(i+32, 0, str1, 16);
    83.   OLED_ShowCHinese(i+88,0, 2);
    84.   OLED_ShowCHinese(i+104,0, 3);
    85. //  OLED_ShowString(4,2,str2,16);
    86.   while(1)
    87.   {
    88.       SHT20_val = SHT20_Read_value(Trigger_RH_measuremnet_hold_master);
    89.       SHT20_val &= ~0x0003;
    90.       SHT20_val_humi = -6.0 + 125.0 / 65536 * (float)SHT20_val;
    91.       sprintf(str, "= %5.2f RH ", SHT20_val_humi);
    92.       OLED_ShowCHinese(0, 4, 4);
    93.       OLED_ShowCHinese(16, 4, 5);
    94.       OLED_ShowString(32, 4, str, 16);
    95.       
    96.       SHT20_val = SHT20_Read_value(Trigger_T_measuremnet_hold_master);
    97.       SHT20_val &= ~0x0003;
    98.       SHT20_val_temp = -46.85 + 175.72 / 65536 * (float)SHT20_val;
    99.       sprintf(str, "= %5.2f C ", SHT20_val_temp);
    100.       OLED_ShowCHinese(0, 6, 6);
    101.       OLED_ShowCHinese(16, 6, 7);
    102.       OLED_ShowString(32, 6, str, 16);
    103.       Serial.println("loop");
    104.       delay(2000);
    105.       if(Audio.getStatus() == AudioStop)
    106.       {
    107.        Audio.playNetFile("http://192.168.2.105:8080/%E5%88%9D%E9%9F%B3%E6%9C%AA%E6%9D%A5-%E5%88%9D%E9%9F%B3.mp3");
    108.       }   
    109.     }  
    110. }
    111. void printWifiStatus() {
    112.   // print the SSID of the network you're attached to:
    113.   Serial.print("SSID: ");
    114.   Serial.println(WiFi.SSID());
    115.   // print your WiFi shield's IP address:
    116.   IPAddress ip = WiFi.localIP();
    117.   Serial.print("IP Address: ");
    118.   Serial.println(ip);
    119.   // print the received signal strength:
    120.   long rssi = WiFi.RSSI();
    121.   Serial.print("signal strength (RSSI):");
    122.   Serial.print(rssi);
    123.   Serial.println(" dBm");
    124. }
    复制代码
    总的来说比用TF卡方便多了节省了一些繁琐的步骤,不用来回的插拔TF卡。不过因为是测试程序功能还是有些简单,后续再进行进一步的深究。
    程序源码: Audio_net.rar (8.01 KB, 下载次数: 0)
    已有 1 人评分周年币 收起 理由
    loveeeboard + 25

    总评分: 周年币 + 25   查看全部评分

    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /1 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-1-19 04:19 , Processed in 0.111163 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部