#1 2016-03-08 21:27:50

Lic Control
Учасник
Зареєстрований: 2016-01-23
Повідомлень: 124

Управление медиаплеером Dune 303D c Arduino Mega 2560 + W5100 ethernet

Вот примерчик управления медиаплеером Dune 303D по Ethernet сети.

#include <SPI.h>
#include <Ethernet.h>

//******************* ETHERNET ****************************
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE };
EthernetServer server(80);
EthernetClient DUNE_CLIENT;
IPAddress ip(192,168,1,10);        //TEENSY
IPAddress   DUNE_IP(192,168,1,11); //АДРЕС DUNE В СЕТИ
//******************* ETHERNET ****************************

char Buffer[256];
char* IR[] = {"A05FBF00","A15EBF00","BC43BF00","F807BF00","E718BF00","E817BF00","E619BF00"};
enum {        irPOWERON,irPOWEROFF,irPOWER,    irPOPUPMENU,irRIGHT,irLEFT, irSTOP};
char IRCommand[] = "GET /cgi-bin/do?cmd=ir_code&ir_code=";
char PlayCommand[] = "GET /cgi-bin/do?cmd=start_file_playback&media_url=storage_name:";
char PlayListCommand[] = "GET /cgi-bin/do?cmd=start_playlist_playback&media_url=storage_name:";
char C11[2] = {char(0x2F),char(0x2F)};
char LR[2] = {char(0x0D),char(0x0A)};
char PlayList1[] = "HDD01/play1.m3u"; //ПЛЕЙЛИСТ ДЛЯ ВОСПРОИЗВЕДЕНИЯ



void setup() {
  Serial.begin(9600);
  //Перезапуск Ethernet chip
  pinMode(10, OUTPUT);    digitalWrite(10, HIGH);
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.println("Ethernet start");
}

void DuneOFF() {
 if (DUNE_CLIENT.connect(DUNE_IP, 80))    {
       Serial.println("DUNE_CLIENT.connect"); 
       memset(Buffer,0,256);
       memcpy(Buffer,IRCommand,sizeof(IRCommand)-1);
       memcpy(Buffer+sizeof(IRCommand)-1,IR[irPOWEROFF],8);
       Serial.print("Send command = "); Serial.println(Buffer);
       DUNE_CLIENT.println(Buffer);
       DUNE_CLIENT.stop();
    }
}

void DuneON() {
    if (DUNE_CLIENT.connect(DUNE_IP, 80))    {
       Serial.println("DUNE_CLIENT.connect"); 
       memset(Buffer,0,256);
       memcpy(Buffer,IRCommand,sizeof(IRCommand)-1);
       memcpy(Buffer+sizeof(IRCommand)-1,IR[irPOWERON],8);
       Serial.print("Send command = "); Serial.println(Buffer);
       DUNE_CLIENT.println(Buffer);
       DUNE_CLIENT.stop(); 
       double Time1 = millis();
       double dt=0;
       while (dt<20000) {
           delay(200);
           dt=millis()-Time1;
         }  
       } else Serial.println("NOT DUNE connect!!!!"); 
    if (DUNE_CLIENT.connect(DUNE_IP, 80))    {      
       Serial.println("DUNE_CLIENT.connect"); 
       memset(Buffer,0,256);
       memcpy(Buffer,PlayListCommand,sizeof(PlayListCommand));
       memcpy(Buffer+sizeof(PlayListCommand)-1,C11,2);
       memcpy(Buffer+sizeof(PlayListCommand)+1,PlayList1,sizeof(PlayList1)-1);
       Serial.print("Send command = "); Serial.println(Buffer);
       DUNE_CLIENT.println(Buffer);
       DUNE_CLIENT.stop();
     } else Serial.println("NOT DUNE connect!!!!"); 
}  


void loop(void) {
  DuneON();      //ВКЛЮЧАЕМ DUNE И ЗАПУСКАЕМ НА ВОСПРОИЗВЕДЕНИЕ ПЛЕЙЛИСТ HDD01/play1.m3u
  delay(100000); //НЕМНОЖКО СЛУШАЕМ
  DuneOFF();    //ВЫКЛЮЧАЕМ DUNE
  exit(0);
}

Этот код я для простоты понимания извлек из своей программы, в которой Dune запускалась с комнатных выключателей и через мобилный телефон. Усилителем служил Yamaha RX-V673, который тоже управлялся по Ethernet - сети. В результате получился недорогой 2-х зонный Multiroom c отличным звучанием. По этому принципу можно запускать на воспроизведение также и отдельные композиции.
Ссылку на пример управления ресивером Yamaha RX-V673 я уже давал. На всякий случай повторяю:  https://sites.google.com/site/twosoftdo … plications

Неактивний

#2 2016-03-09 10:10:11

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Управление медиаплеером Dune 303D c Arduino Mega 2560 + W5100 ethernet

void loop(void) {
  DuneON();      //ВКЛЮЧАЕМ DUNE И ЗАПУСКАЕМ НА ВОСПРОИЗВЕДЕНИЕ ПЛЕЙЛИСТ HDD01/play1.m3u
  delay(100000); //НЕМНОЖКО СЛУШАЕМ
  DuneOFF();    //ВЫКЛЮЧАЕМ DUNE
  exit(0);
}

  exit(0); ?? я бы предположил что это выход с основного цикла.  тогда ничего не понимаю (

"в которой Dune запускалась с комнатных выключателей", это прикольно, где свет включили там у музыка?
пошли в туалет - перекинуло звук на клозет? на кухню - там звучат любимые композиции? - прикольно )))

Неактивний

#3 2016-03-09 23:03:23

Lic Control
Учасник
Зареєстрований: 2016-01-23
Повідомлень: 124

Re: Управление медиаплеером Dune 303D c Arduino Mega 2560 + W5100 ethernet

NoName пише:

  exit(0); ?? я бы предположил что это выход с основного цикла.  тогда ничего не понимаю (

Для упрощения я выдернул этот пример из программы.
Поэтому даю как пример только один проход и закрываю цикл -   exit(0);
В реальной жизни нужно писать полную программу.

Неактивний

#4 2016-03-10 13:39:44

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Управление медиаплеером Dune 303D c Arduino Mega 2560 + W5100 ethernet

та написал, и только потом дошло что отправляете в сон до события побудки
насчет платы, будет какой заказ и останутся лишние, отпишитесь, договоримся, вроде и не нужна, но защитить малину тоже особо не хочется.
а Вы молодцы.   доводите свои идеи до релиза )

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму