lunedì 21 maggio 2012

UDP tra Arduino e PC

Questo test e' per verificare lo scambio dati tra Arduino Ethernet e PC mediante pacchetti UDP (Arduino invia e PC riceve)


Da notare che l'Arduino funziona bene anche con una normale pila a 9V ricaricabile ed un cavo cross


Il Pc e' impostato come 192.168.1.120 ed ascolta su porta 5005
L'Arduino e' impostata come 192.168.1.2

Script Python per ricevere i dati
--------------------------------------------------------------------
import socket
UDP_IP="192.168.1.120"
UDP_PORT=5005

sock = socket.socket( socket.AF_INET, # Internet
                      socket.SOCK_DGRAM ) # UDP
sock.bind( (UDP_IP,UDP_PORT) )

while True:
    data, addr = sock.recvfrom( 1024 ) # buffer size is 1024 bytes
    print "Ricevuto: ", data

--------------------------------------------------------------------

Sketch Arduino per inviare i dati
--------------------------------------------------------------------
#include <SPI.h>        
#include <Ethernet.h>
#include <Udp.h>        

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {192,168,1,2};

byte remote_ip[] = {192,168,1,120};  
unsigned int remote_port = 5005;   

char sendBuffer [] = "Luca\0";
unsigned int sent=0;
int contatore = 0;

void setup() {
  Ethernet.begin(mac,ip);
  Udp.begin(8008);
}

void loop() {
  contatore = contatore + 1;
  dtostrf(contatore,4,0,sendBuffer);
  sent=Udp.sendPacket(sendBuffer, remote_ip, remote_port);
  delay(500);
}


--------------------------------------------------------------------
ATTENZIONE:
con le ultime due versioni del software Arduino (0.23 e 1.0) esiste un bug nella gestione di UDP che genera dei pacchetti pieni di spazzatura.
Per risolvere il problema si deve individuare il file w5100.h che si trova in /libraries/Ethernet/Utility e modificarlo secondo quanto riportato da questo post (vedi al termine del post)
Il problema dovrebbe risultare risolto nella versione 1.0.1 di prossima uscita




Nessun commento:

Posta un commento

Physics informed neural network Fukuzono

Visto che puro ML non funziona per le serie tempo di cui mi sto occupando ed le regressioni basate su formule analitiche mostrano dei limiti...