Arduino Forum

Forum 2005-2010 (read only) => International => Deutsch => Topic started by: bytzmaster on Jan 22, 2011, 08:02 pm

Title: Probleme mit UDP
Post by: bytzmaster on Jan 22, 2011, 08:02 pm
Guten Abend,

ich wollte gerade mal das Bsp-Sketch "udpntpclient" laden...
Normalerweise sollte doch im serialmonitor die zeit angezeigt werden oder?

Bei mir kommt nix...
Habe andere Sketche probiert, die auch im Serialmonitor schreiben, da gehts.

Meine baudrate is 9600
Habe Arduino 0022 aufm PC.
Mein Borad ist ein Mega 2560.
Muss man noch was beachten oder wo liegt hier der Hund begraben?

Danke für eure Hilfe.


Hier der Code aus dem BspSketch
Code: [Select]
/*

Udp NTP Client

Get the time from a Network Time Protocol (NTP) time server
Demonstrates use of UDP sendPacket and ReceivePacket
For more on NTP time servers and the messages needed to communicate with them,
see http://en.wikipedia.org/wiki/Network_Time_Protocol

created 4 Sep 2010
by Michael Margolis
modified 17 Sep 2010
by Tom Igoe

This code is in the public domain.

*/

#include <SPI.h>        
#include <Ethernet.h>
#include <Udp.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 };
byte ip[] = {
 192,168,1,177 };


unsigned int localPort = 8888;      // local port to listen for UDP packets

byte timeServer[] = {
 192, 43, 244, 18}; // time.nist.gov NTP server

const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message

byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets

void setup()
{
 // start Ethernet and UDP
 Ethernet.begin(mac,ip);
 Udp.begin(localPort);

 Serial.begin(9600);
}

void loop()
{
 sendNTPpacket(timeServer); // send an NTP packet to a time server

   // wait to see if a reply is available
 delay(1000);  
 if ( Udp.available() ) {  
   Udp.readPacket(packetBuffer,NTP_PACKET_SIZE);  // read the packet into the buffer

   //the timestamp starts at byte 40 of the received packet and is four bytes,
   // or two words, long. First, esxtract the two words:

   unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
   unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);  
   // combine the four bytes (two words) into a long integer
   // this is NTP time (seconds since Jan 1 1900):
   unsigned long secsSince1900 = highWord << 16 | lowWord;  
   Serial.print("Seconds since Jan 1 1900 = " );
   Serial.println(secsSince1900);              

   // now convert NTP time into everyday time:
   Serial.print("Unix time = ");
   // Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
   const unsigned long seventyYears = 2208988800UL;    
   // subtract seventy years:
   unsigned long epoch = secsSince1900 - seventyYears;  
   // print Unix time:
   Serial.println(epoch);                              


   // print the hour, minute and second:
   Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT)
   Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day)
   Serial.print(':');  
   Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute)
   Serial.print(':');
   Serial.println(epoch %60); // print the second
 }
 // wait ten seconds before asking for the time again
 delay(10000);
}

// send an NTP request to the time server at the given address
unsigned long sendNTPpacket(byte *address)
{
 // set all bytes in the buffer to 0
 memset(packetBuffer, 0, NTP_PACKET_SIZE);
 // Initialize values needed to form NTP request
 // (see URL above for details on the packets)
 packetBuffer[0] = 0b11100011;   // LI, Version, Mode
 packetBuffer[1] = 0;     // Stratum, or type of clock
 packetBuffer[2] = 6;     // Polling Interval
 packetBuffer[3] = 0xEC;  // Peer Clock Precision
 // 8 bytes of zero for Root Delay & Root Dispersion
 packetBuffer[12]  = 49;
 packetBuffer[13]  = 0x4E;
 packetBuffer[14]  = 49;
 packetBuffer[15]  = 52;

 // all NTP fields have been given values, now
 // you can send a packet requesting a timestamp:               
 Udp.sendPacket( packetBuffer,NTP_PACKET_SIZE,  address, 123); //NTP requests are to port 123
}


Title: Re: Probleme mit UDP
Post by: webmeister on Jan 22, 2011, 08:12 pm
Ich gehe davon aus, dass:
Das Ethernet Shield auf das Board gesteckt und Netzwerk-Zugang hat.

Bekommst du eine Fehlermeldung oder sonst einen Anhaltspunkt der weiterhelfen kann?
Title: Re: Probleme mit UDP
Post by: stundenblume on Jan 22, 2011, 08:27 pm
Hi,

ist das Ethernetshield für den Gebrauch am Mega geeignet?


Gruß

Sebastian
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 22, 2011, 08:32 pm
Hi,


Also ja das Netzwerkkabel steckt drinne.
Hatte auch schon den Sketchwebserver drauf und konnte so den sattus der pins im browser sehen. Dies und die Aufschrift auf dem Ethernet Shield "MEGA compatible" sagt mir das es für den MEGA geeignet ist.

Ne fehlermeldung kommt beim Hochladen nicht.

Ich nehm den code so wie er oben ist und lade ihn hoch und es kommt keine fehlermeldung aber auch keien reaktion im serialmonitor...
hab auch schon geguckt ob der COM-Port stimmt...und der stimmt auch.
Title: Re: Probleme mit UDP
Post by: webmeister on Jan 22, 2011, 08:34 pm
Quote
ist das Ethernetshield für den Gebrauch am Mega geeignet?

Ja, die aktuelle Version ist Mega kompatibel. Steht sogar auf dem Board  ;)
Title: Re: Probleme mit UDP
Post by: webmeister on Jan 22, 2011, 08:36 pm
Hat das Board auch Zugang zum Internet?
Sonst ist der Timeserver nicht erreichbar.
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 22, 2011, 08:44 pm
Hab grad ma ein paar ausgaben gemacht:

Code: [Select]
void loop()
{
 Serial.print("1 ");   //Ausgabe um zu schauen ob überhaupt was geht
 sendNTPpacket(timeServer); // send an NTP packet to a time server


Bis dahin gehts. Bei der Funktion
Code: [Select]
sendNTPpacket(timeServer);
gehts net weiter.
Allerdings läuft die loop weiter so dass mir der Serialmonitor etwas später wieder ne 1 auspuckt.
Allerdings wenn ich weiter unten im code weitere"Prüfzahlen" ausgeben lassen will kommt da nix
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 22, 2011, 08:48 pm
Hm also ich bin jedenfalls im Internet und das board ist im selben netz wie ich. allerdings weis ich nicht ob das jetzt im netz ist. kann auch keine ports an der firewall freischalten, da ich grad auf arbeit bin... das teste ich dann ma daheim. ich melde michd ann wieder(morgen)
Title: Re: Probleme mit UDP
Post by: webmeister on Jan 22, 2011, 08:52 pm
Die "1" wird bei jedem Loop ausgegeben.

Aber die nachfolgende serielle Ausgabe erfolgen nur falls Udp.available = True

Code: [Select]
 if ( Udp.available() ) {

Title: Re: Probleme mit UDP
Post by: webmeister on Jan 22, 2011, 08:54 pm
Quote
da ich grad auf arbeit bin

Was ist das für ein Job wo man am Samstag um 21 Uhr arbeitet und dabei mit dem Arduino basteln kann?  ;)
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 22, 2011, 08:57 pm
Also so weit ich jetzt weis, muss man dem timeserver was senden.
Ich denke ma die Funktion
Code: [Select]
sendNTPpacket(); macht dies.
Allerdings kann ich nirgend erkennen was die senden soll nicht in der.h und niocht in der .cpp
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 22, 2011, 08:58 pm
Quote
Was ist das für ein Job wo man am Samstag um 21 Uhr arbeitet und dabei mit dem Arduino basteln kann?  Wink


ich arbeite in nen Internetcafe ;D
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 23, 2011, 12:24 pm
Guten Tag,
also ich habs jetzt ma zuhause probiert...auch da kommt nix.
hab den arduino angepingt...das geht.
muss man denn irgendwas beachten, wenn man sich die zeit aus dem internet holen will?
bin grad echt am verzweifeln...
Title: Re: Probleme mit UDP
Post by: webmeister on Jan 23, 2011, 01:10 pm
Ich habe dein Sketch auf meinen Arduino geladen, Ethernet Shield aufgesetzt und ans interne Netzwerk angeschlossen.

Nach Start Serial Monitor öffen und schon wird die Zeit angezeigt.

(http://img337.imageshack.us/img337/8284/arduinoserialmonitorutc.jpg) (http://img337.imageshack.us/i/arduinoserialmonitorutc.jpg/)
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 23, 2011, 01:31 pm
Kanns du mir sagen ob du irgend was an den ports gemacht hast? Hast du einen router? Ich hab zb ne fritzbox 7230.
Welche arduinoversion nutzt du, und welches board/shield nutzt du?
Kan das evtl daran liegen das die fritzbox NAT hat(ka was das ist
Danke fuer deine muehe
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 23, 2011, 01:40 pm
also, ich hab grad ma dynDNS eingerichtet und den port 80 auf den arduino weitergeleitet. hab dann das sketch von poldi genommen, wo man seine pins schalten kann. und das geht.
vielleicht hilft das bei der analyse
Title: Re: Probleme mit UDP
Post by: webmeister on Jan 23, 2011, 01:45 pm
Quote
Kanns du mir sagen ob du irgend was an den ports gemacht hast?

Nein, keine Ports angepasst.
Quote
Hast du einen router? Ich hab zb ne fritzbox 7230.

Ja, AirPort Extreme.
Die IP habe ich wie im Beispiel fix verwendet, kein DHCP.
Quote
Welche arduinoversion nutzt du, und welches board/shield nutzt du?

Arduino Uno und Original Ethernet Shield.
Quote
Kan das evtl daran liegen das die fritzbox NAT

Ich glaube das spielt keine Rolle. Solange du aus deinem Netz Adressen im Internet aufrufen kannst.

Ich vermute, dass dein Arduino keine Verbindung zum Internet bekommt. Prüfe dies mal mit dem WebClient-Sketch aus der Ethernet Library. Dort wird eine externe Adresse, google.com, aufgerufen.

Möglicherweise musst du bei Ethernet.Begin() noch die Gateway-Adresse eingeben, also:
Code: [Select]
Ethernet.begin(mac, ip, gateway);
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 23, 2011, 01:53 pm
habe dein bsp ma aufgerufen.
hier das bild:

(http://apload.de/thumb/94932/bild06EH3.jpg) (http://apload.de/bild/94932/bild06EH3.jpg)
Title: Re: Probleme mit UDP
Post by: bytzmaster on Jan 23, 2011, 01:58 pm
also ich ´habs grad mit dem udp noch ma getestet und die gateway eingetragen...und siehe da es geht...
gestern hatte ich das auch schon probiert...allerdings im internetcafe und grade eben sagte mir mein chef, das er selber grad mit sowas rumexperimentiert und den den exclusive auf sein board geleitet hat -.-

ich danke dir vielmals...hast mir das wochenende gerettet!!!!
Title: Re: Probleme mit UDP
Post by: webmeister on Jan 23, 2011, 02:24 pm
Quote
ich danke dir vielmals...hast mir das wochenende gerettet!!!!

Habe ich doch gerne gemacht. :)