Arduino SVDRPClient

Tutto sull'Arduino e la sua grande famiglia... Atmel AVR, Microchip PIC, ecc...

Moderatori: ragno, tapino, alez, zulu, davidea

Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Arduino SVDRPClient

Messaggio da alez »

Come accennato con qualcuno di voi al VDR DAY, un'altra idea dalla mia mente malata:

telecomando per VDR via ethernet con Arduino.
L'idea di usarlo come telecomando in se è abbastanza inutile, ma nell'ottica di un'integrazione domotica invece secondo me ha senso (es. pulsanti per regolare il volume incassati vicino all'interruttore per accendere la luce quando si usa VDR come fonte audio per la diffusione sonora in tutta la casa)

hardware necessario:
- Arduino 2009
- ethernet shield per Arduino

software:
- vdr con svdrphost.conf che lasci accedere dall'IP impostato per il client realizzato con arduino

Per ora ho fatto solo un test molto semplice, giusto per testare il funzionamento del protocollo:
- mi connetto a VDR tramite SVDRP
- invio il comando per fare scrivere il messaggio CIAO con l'OSD sulla TV
- mi disconnetto da VDR

Come base ho utilizzato lo sketch per il telnet client, così modificato:

Codice: Seleziona tutto

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 97); // IP di Arduino
IPAddress gateway(192, 168, 1, 1);

// Enter the IP address of the server you're connecting to:
IPAddress server(192, 168, 1, 98); // IP della VDR BOX 

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 23 is default for telnet;
// if you're using Processing's ChatServer, use  port 10002):
EthernetClient client;

void setup() {
  // start the Ethernet connection:
  Ethernet.begin(mac, ip, gateway);
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  // porta 2001: SVDRP  
if (client.connect(server, 2001)) {
    Serial.println("connected");
    client.println("MESG CIAO");
    client.println("QUIT");
  } 
  else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // as long as there are bytes in the serial queue,
  // read them and send them out the socket if it's open:
  while (Serial.available() > 0) {
    char inChar = Serial.read();
    if (client.connected()) {
      client.print(inChar); 
    }
  }


  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    // do nothing:
    while(true);
  }
}
Il risultato sulla consolle di debug seriale della IDE di Arduino:

Codice: Seleziona tutto

connecting...
connected
220 mediacenter SVDRP VideoDiskRecorder 1.7.22; Mon Oct 15 15:00:59 2012; UTF-8
250 Message queued
221 mediacenter closing connection

disconnecting.




Alle prossime evoluzioni ;)
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino SVDRPClient

Messaggio da ragno »

Molto interessante :ok:

Occorre precisare che gli shield ethernet sono di 2 tipi: quello piu' costoso (ed ufficiale) con il w5100 che implementa lo stack tcp/ip in hardware e quello piu' barbone basato sull'ENC28J60 con stack tcp/ip implementato via software. Quindi il codice per l'28j60 e' piu' complesso ed usa un'altra libreria.

A proposito di hardware, su segnalazione di Zulu che al vdrday m'ha dato delle info su arduino ho comprato questi moduli radio che se funzionano fanno al caso di qualunque smanettone arduino: a me le onde radio non piacciono, pero'... http://www.ebay.it/itm/170819066537?ssP ... K:MEWNX:IT


ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: Arduino SVDRPClient

Messaggio da zulu »

:ok:

... io ho anche comperato questi: http://www.ebay.it/itm/130732506374?ssP ... 2005wt_908

sto aspettando che arrivino

saluti
zulu
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Arduino SVDRPClient

Messaggio da alez »

Hai ragione Ragno, ho omesso che le prove le ho fatte usando 2 shield ethernet, entrambi basati su w5100 (che reputo molto valido, appunto per il fatto che scarica la CPU di Arduino gestendo lui lo stack TCP/IP)

- originale made in Italy
- cinese di buona qualità

funziona su entrambi, il cinese da quel che vedo non ha la possibilità di montare il modulo POE, per cui c'è da valutare bene se serva o meno nel progetto, dell'originale ho già provato tempo fa lo slot per micro SD mentre devo ancora testare il cinese.

Poco + di 7 euro spedito: http://www.ebay.it/itm/270955738702

In ogni caso, mi pare giusto averne almeno uno made in Italy per sostenere il progetto Arduino.


P.s.: abituati a CPU e sistemi operativi complessi, è disarmante la velocità con cui si avviano questi dispositivi, premendo il tasto di reset, dopo meno di 3 secondi il messaggio viene visualizzato sull'OSD, che figata :P
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Arduino SVDRPClient

Messaggio da alez »

@zulu

Ti sono arrivati? Quali sono i migliori?

Ma 5x significa che sono 5 coppie di RX + TX? (quindi 2 applicazioni full duplex e 1 half duplex)

I primi segnalati invece sono 4 transceiver, per cui mi sembra già full duplex, quindi 2 applicazioni che utilizzano il full duplex.

A vedere questi prezzi mi ricordo quando ero studente e sbavavo sui moduli Aurel seriali da 40 e passa mila lire che non potevo permettermi
Ciao alez
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: Arduino SVDRPClient

Messaggio da zulu »

Non sono ancora arrivati
saluti
zulu
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino SVDRPClient

Messaggio da ragno »

@alez: sono rimasto affascinato da questo: http://www.youtube.com/watch?v=GaUysPZ8W4k

Per me il must sarebbe una DS con un arduino che fa da master e altri come slave. A quel punto non ci sono nemmeno problemi di cablare tutta casa.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino SVDRPClient

Messaggio da ragno »

alez ha scritto:Hai ragione Ragno, ho omesso che le prove le ho fatte usando 2 shield ethernet, entrambi basati su w5100 (che reputo molto valido, appunto per il fatto che scarica la CPU di Arduino gestendo lui lo stack TCP/IP)

- originale made in Italy
- cinese di buona qualità

funziona su entrambi, il cinese da quel che vedo non ha la possibilità di montare il modulo POE, per cui c'è da valutare bene se serva o meno nel progetto, dell'originale ho già provato tempo fa lo slot per micro SD mentre devo ancora testare il cinese.

Poco + di 7 euro spedito: http://www.ebay.it/itm/270955738702

In ogni caso, mi pare giusto averne almeno uno made in Italy per sostenere il progetto Arduino.
Allora la logica dello sketch va bene solo per il w5100. Non e' questione di rimaneggiare il codice o utilizzare una libreria differente: l'enc28j60 e' potenzialmente piu' potente (ci fanno girare lo stack tcp/ip uIP di Adam Dunkel), ma non ho ancora trovato nulla che consenta di aprire una sessione telnet come client. Lo scorso anno ho fatto "naufragare" un progettino perche mi sono arenato proprio per il motivo sopracitato.

Comunque visto il costo (7 euro) prendero' senz'altro un w5100 per proseguire le sperimentazioni,ho notato che il cinese ha anche il lettore di sd card. :)

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Arduino SVDRPClient

Messaggio da alez »

ragno ha scritto:
alez ha scritto:Hai ragione Ragno, ho omesso che le prove le ho fatte usando 2 shield ethernet, entrambi basati su w5100 (che reputo molto valido, appunto per il fatto che scarica la CPU di Arduino gestendo lui lo stack TCP/IP)

- originale made in Italy
- cinese di buona qualità

funziona su entrambi, il cinese da quel che vedo non ha la possibilità di montare il modulo POE, per cui c'è da valutare bene se serva o meno nel progetto, dell'originale ho già provato tempo fa lo slot per micro SD mentre devo ancora testare il cinese.

Poco + di 7 euro spedito: http://www.ebay.it/itm/270955738702

In ogni caso, mi pare giusto averne almeno uno made in Italy per sostenere il progetto Arduino.

Comunque visto il costo (7 euro) prendero' senz'altro un w5100 per proseguire le sperimentazioni,ho notato che il cinese ha anche il lettore di sd card. :)

ciao
Eccoli affiancati (cina, ita, papà ita):

Immagine

e da solo

Immagine

Comunque a parte l'assenza dei connettori POE, secondo me ha diversi aspetti positivi rispetto alla versione originale:

- pulsante reset messo in un posto furbo, se sopra monti un shield senza pulsante di reset rimane comunque raggiungibile
- led di segnalazione (100, collision, link, ...) tutte allineate e non sparse per il PCB
- buffer TTL 74LCV14AD (che non so bene a cosa sia collegato, potrebbe essere allo slot per la micro SD

Avere sia SD che ethernet sullo stesso shield può essere comodo, ho trovato in giro delle breakout board SD a 5 euro, quindi secondo me ne vale la pena.





P.s.: peccato che gli shield ethernet wifi abbiano delle cifre spropositate (60 euro).
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Arduino SVDRPClient

Messaggio da alez »

ragno ha scritto:@alez: sono rimasto affascinato da questo: http://www.youtube.com/watch?v=GaUysPZ8W4k

Per me il must sarebbe una DS con un arduino che fa da master e altri come slave. A quel punto non ci sono nemmeno problemi di cablare tutta casa.

ciao
Veramente impressionante, probabilmente in quelle librerie c'è già una sorta di controllo di errore CRC, lo vedo veramente bello stabile quel servo, quindi mi vien da dire che se ci sono interferenze viene rimandato il comando di posizione!!!
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino SVDRPClient

Messaggio da ragno »

alez ha scritto: P.s.: peccato che gli shield ethernet wifi abbiano delle cifre spropositate (60 euro).
A mio avviso, quei ragnetti che ha ordinato zulu o quelli che ho preso io dovrebbero andare bene per comunicare fra arduini.
Io ero rimasto ai moduli zigbee che pero' costano un botto, questi sono piuttosto barboni invece.
Sono comunque moduli da testare per verificare la robustezza del protocollo, portata, etc. Da quello che ho capito vengono visti come dispositivo seriale di i/o.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
zulu
Messaggi: 605
Iscritto il: 27 ott 2007, 09:48

Re: Arduino SVDRPClient

Messaggio da zulu »

Questa è la libreria da usare:
http://www.pjrc.com/teensy/td_libs_VirtualWire.html

Ovviamente come dice il tizio del link: "you get what you pay for"

zigbee sono ben altra cosa nella resa, ma sono molto costosi.

Non ci resta che aspettare e sperimentare :-) ...

saluti
zulu
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Arduino SVDRPClient

Messaggio da alez »

Se dice così il tipo allora probabilmente gli zigbee hanno il CRC in hardware...
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: Arduino SVDRPClient

Messaggio da alez »

Per solidarietà comprati anche io entrambi :D
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: Arduino SVDRPClient

Messaggio da ragno »

Golosone!!!

:lol: :lol: :lol:
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Rispondi