Day 3: UDP-Send

In today’s project, data are exchanged between the board and the PC through the WLAN for the first time. The prerequisite for this is that your computer has a WLAN adapter. The UDP (User Datagram Protocol) is used. Another program on the PC-side ensures successful receipt of the messages.

Behind the third door of the calendar, you can find an insulated cable that you will need to build circuits. To prepare for later experiments, you can place the supply lines ground and VCC on the outer tracks.

Die Versorgungsleitungen auf den äußeren Bahnen

VCC and GND for easy acces

The program: Day3_UPDBasics

When you load the program onto the controller, the controller is configured as an access point and you should see an open network called NanoESP. Before connecting to the network, first download another program from the Internet. In my experiments, I used the programme Packet Sender by Dan Nagle which you can download from the following link:

https://packetsender.com/

After loading and installing the program, you can connect your PC to the open network of the NanoESP. Ensure that the firewall recognises the network as a home network, to avoid blocking data. Your computer should now have the IP 192.168.4.2. You can check this by sending the command

AT+CWLIF

to the module via the serial monitor. This command shows all computers connected to the access point with IP and MAC addresses.
Start the program Packet Sender; set the UDP server port to 90 in Settings->Network and click the check box "Enable UDP Server". Usually, the lower left should say UDP:90. If it does not, you need to restart the software once.

Einstellungen im Packet Sender

The right settings

! Attention: Some MAC-Users reportet a bug in the PacketSender-Software. This bug doesn’t allow you to change the ports. If you have problems with this bug you can change the ports in the Arduino program. All you have to do for todays project is to change the line 55 from
succes &= sendCom("AT+CIPSTART=\"UDP\",\"192.168.4.2\",90″, "OK"); //UDP-Server
to
succes &= sendCom("AT+CIPSTART=\"UDP\",\"192.168.4.2\",5505″, "OK"); //UDP-Server

The program on the computer is now used as UDP server, while the controller is set as UDP client. The differentiation between client and server is not clear in the UDP protocol, but in this case it means that you will send data from your controller to the computer.

To send data, use the command:

AT+CIPSEND=7

Verwendung des CIPSEND-Befehls

Use the CIPSEND command

The 7 means the number of characters to be sent. The character > is returned. This means that you can now send your message. Enter Hello and confirm with Enter again. The module returns SEND OK, although you have only entered five characters. This is because after your input Carriage Return and New Line are sent as well, i.e. two characters more that you need to include in your message length calculation.

Die Nachricht wurde vom Packet Sender Programm empfangen

The programm recieved the message

When you switch back to the Packet Sender and look at Log Traffic there, you can see the receipt of the message. In the ASCII view, you will even see the two enclosed characters, represented by \r and \n. Therefore the first communication between board and PC via the WLAN has been successful.

109 Comments

  1. David

    ACHTUNG:
    Packet Sender v5.8.6 auf Mac
    Ich hatte alles korrekt eingestellt (Port 90 wurde unten rechts angezeigt), konnte aber trotz "Send OK" Rückmeldung keine Nachrichten sehen.

    LÖSUNG
    Ich habe wieder die Defaulteinstellung 0 in Packet Sender gewählt (zufällige Portnummer) und dann die entsehende Portnummer (z.B.55626) in den Arduino-Sketch übernommen, neu hochgeladen und siehe da, es funktioniert nun.
    Es wird also in der aktuellen Packet Sender Version nur die eingestellte Portnummer angezeigt, aber im Backend nicht tatsächlich verwendet!

    Reply
  2. Ralf

    Ich habe wahrscheinlich einen Denkfehler, ich komme nicht weiter.
    Also mein Nano ist mit dem Programm Tag 3 geladen. Das WLAN steht und ein Laptop (nicht mein Rechner) ist mit dem Nano verbunden, der Packetsender installiert und konfiguriert (Port 90).
    Jetzt habe ich auf dem Seriellen Monitor die Ok-Meldungen für AP und UDP und sende einen Befehl wie AT+CWLIF. Jetzt erwarte ich die Meldung der IP des verbundenen WLAN-Rechners. (IP-192.168.4.2.)

    Ich bekomme keine Rückmeldung vom Nano. Was habe ich falsch gemacht?

    Kommt die Rückmeldung vom Nano oder vom Packetsender des WLAN-Rechners?

    Reply
    1. fk (Post author)

      Hi, die at-befehle können nur über den serielle Monitor gesendet und empfangen werden. Benutzt du bewusst die Beispiele aus dem letzten Jahr?

      Reply
  3. Michael

    Hallo,

    woher kommt der Port 14299 bei "From Port" im Screenshot des PacketSenders http://iot.fkainka.de/wp-content/uploads/2015/09/Day3-5.jpeg oben hier auf dieser Seite? Im Quellcode wird dieser Port nirgends eingestellt?

    Reply
    1. Klaus

      Jedes Datenpaket bei TCP besitzt eine Quell-IP, eine Ziel-IP, einen Quell-Port und einen Ziel-Port. Als Quell-IP wird die eigene IP eingesetzt, als Ziel-IP die IP des Empfängers. Als Ziel-Port wird der Port des Dienstes beim Empfänger eingesetzt. Beim Quell-Port gibt es 2 verschiedene Möglichkeiten. Entweder es wird ein fester Port eingetragen (dieser darf aber von keiner anderen Anwendung bereits belegt sein) oder es wird einfach per Zufallsgenerator ein Port gewählt. Bei der nächsten Verbindung kann dann ein völlig anderer Port gewählt werden.
      Genau das ist hier passiert. Der ESP hat sich einfach per Zufallsgenerator einen Port gewählt, von dem aus das Paket gesendet wurde. An exakt diesen Port muss nun die Antwort zurück gesendet werden. Wenn Du also einen Server programmierst, musst Du den Quellport der ankommenden Anfrage ermitteln und die Antwort an diesen Port zurück senden.

      ich hoffe, dass ich damit die Zusamenhänge etwas klarer machen konnte. Das Thema IP-Kommunikation ist recht komplex.

      Reply
  4. Ed

    Hallo! Ich weiß es ist etwas spät aber als ich nicht mehr weiterwusste hab ich den Kalender erstmal ruhen gelassen. Der cipsend-Befehl funktioniert nicht… ("Link is not valid") ich hoffe auf baldige Antwort und frohe Weihnachten an alle.

    Reply
  5. Dubst3pg4m3r

    Bei mir kommt leider kein Hallo im PacetSender an, und der Port im Programm lässt sich auch nicht umstellen, er springt immer auf 55005 zurück. Ausserdem muss der NanoESP doch immer über usb verbunden sein oder?!
    Kann man den Seriellen Monitor auch über das WLAN verwenden?! Bitte um Hilfe!
    LG

    Reply
  6. Tom

    Ich kam die letzten Tage nicht zum Basteln und muss nun aufholen ;)

    Ich kann sagen, das Rumtüfteln macht wirklich Spass und man lernt noch was.

    Habs jetzt geschafft, am Laptop (WLAN) den UDP Text zu empfangen, den ich vom PC (via USB) versandt habe :)

    Reply
  7. RICI

    Nach den Laden werden 2 ICMP Nachrichten ausgetauscht das sieht ok aus. (type 8 Echo(ping request) antwort ping reply
    Dann per Monitor Hallo via UDP auch ok.

    Wenn man denn den ESP weiter laufen lässt. gibt es ständig ICMP Error MSGs
    Es werden von 192.168.4.2 nach 192.168.4.1 weiter ICMP geschickt (bzw von 192.168.4.1 nach 192.168.4.2
    mit dem Ergebnis "Destination unreachable (port Unreachable)"
    Gibt es für diese permaneten Error MSGs eine Erlärung ?

    Ich kann weiter ohne Problem noch mal "Hallo" per UDP send. Es funktinoniert also alles. wie am Day3 geplant.

    Reply
  8. Doc

    Eigentlich hat alles funktioniert. Doch jetzt geht gar nixhts mehr. Wenn ich di Ports umstellen möchte kommt die Meldung:
    Arduino: 1.6.5 (Mac OS X), Platine: "Arduino Nano, ATmega328"

    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: too many decimal points in number
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics:55: error: stray '\' in program
    Day3_UPDBasics.ino: In function 'boolean configUDP()':
    Day3_UPDBasics:55: error: 'u201eAT' was not declared in this scope
    Day3_UPDBasics:55: error: 'CIPSTART' was not declared in this scope
    Day3_UPDBasics:55: error: 'u201cUDP' was not declared in this scope
    Day3_UPDBasics:55: error: 'u201c192' was not declared in this scope
    Day3_UPDBasics:55: error: expected ')' before 'u2033'
    Day3_UPDBasics:55: error: 'u201eOK' was not declared in this scope
    stray '\' in program

    Dieser Report hätte mehr Informationen mit
    "Ausführliche Ausgabe während der Kompilierung"
    aktiviert in Datei > Einstellungen

    Reply
  9. Patrick

    Ich bin bereits am Tag 3 gescheitert. Kann an Packetsender nichts senden. Kommt nichts an. Verwende Linux Ubuntu. Schade das wars dann wohl.

    Reply
    1. Martin

      Hi Patrick,

      hab das gleiche Problem. Ich bekomme den Packetsender unter Linux Lubuntu auch nicht zum laufen. Der Bug, dass der Port nicht umgestellt werden kann, ist auch in der Linux-Version. Aber selbst die Umstellung im Code auf Port 55005 hat bei mir nichts bewirkt.

      Ich hab mir den Packetsender auf meinen Windows-Rechner installiert und arbeite jetzt mit zwei Rechnern. Unter Linux läuft die Arduino IDE und auf meinem Windows Rechner der PacketSender.

      Ich hab mir auf mein Android-Handy die App UDP Sender geladen. Mit der kann man zumindest senden. Funktioniert auch gut.

      Bin an Tag 3 auch ziemlich verzweifelt aber als es dann mal lief gings bis Tag 5 schnell durch.

      Reply
    2. General Overnight

      Wenn du Ubuntu (oder ein anderes Linux bzw. Unix, z.B. Mac OS X) nutzt, brauchst du den Packetsender gar nicht. Ich empfehle dir folgende Vorgehensweise:

      1. Mach ein Terminalfenster auf in dem du als root eingeloggt bist (Ich gehe mal davon aus, du weißt wie, ansonsten nochmal fragen)

      2. gib den Befehl ifconfig ein. Er sollte dir im Standardfall drei mehrzeilige Einträge zurückliefern:

      eth0: dein kabelgebundenes Netzwerk-Interface, das dich mit dem Internet verbindet.

      lo: das Loopback-Interface, ein Pseudo-Interface, über das du mit deinem eigenen Rechner Kommunizieren kannst.

      wlan0: Dein WLAN-Interface. Wenn du hier die IP-Adresse 192.168.4.2 siehst, hat die Verbindung mit dem nanoESP schon funktioniert.

      3. Rufe das Kommando iptables -L auf. Wenn es dir mehr als die folgenden 8 Zeilen zurückliefert, ist eine Firewall aktiv und blockt evtl. die UDP-Pakete.

      —8<————————————————–
      # iptables -L
      Chain INPUT (policy ACCEPT)
      target prot opt source destination

      Chain FORWARD (policy ACCEPT)
      target prot opt source destination

      Chain OUTPUT (policy ACCEPT)
      target prot opt source destination
      —8<————————————————–

      4. a) starte das programm netcat mit dem Kommando

      # nc -lup 90

      Das ist dein Empfänger für die UDP-Pakete

      b) mach ein zweites Root-Terminalfenster auf und starte dort das Kommando

      # tcpdump -lXi wlan0

      Das Programm tcpdump schneidet den gesamten Traffic mit, der (in diesem Fall) über dein WLAN-Interface geht, also auch solche Pakete, für die sich dein Rechner nicht zuständig hält, z.B. weil sie die falsche Empfänger-IP-Adresse haben.

      Jetzt kannst du vom nanoESP senden.

      Reply
  10. Kai

    Hilfe! Es will einfach nicht :-( Ich bekomme beim Befehl AT immer ERROR zurück. …bei allen AT+…-Befehlen.

    Ich bin Anfänger und google schon eine Ewigkeit herum.

    Beim kompilieren kommen folgende Meldungen (Programmcode ist 100% original und ich habe nichts verändert):

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino: In function 'void setup()':

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:17:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    if (sendCom("AT+RST", "ready")) {

    ^

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino: In function 'boolean configAP()':

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:43:41: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    succes &= (sendCom("AT+CWMODE=2", "OK"));

    ^

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:44:59: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    succes &= (sendCom("AT+CWSAP=\"NanoESP\",\"\",5,0″, "OK"));

    ^

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino: In function 'boolean configUDP()':

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:53:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    succes &= (sendCom("AT+CIPMODE=0", "OK"));

    ^

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:54:41: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    succes &= (sendCom("AT+CIPMUX=0", "OK"));

    ^

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:55:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    succes &= sendCom("AT+CIPSTART=\"UDP\",\"192.168.4.2\",90″, "OK"); //UDP-Server

    ^

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino: In function 'boolean sendCom(String, char*)':

    C:\Users\KFD\Documents\Arduino\Day3_UPDBasics\Day3_UPDBasics.ino:64:41: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

    if (esp8266.findUntil(respond, "ERROR"))

    ^

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\SoftwareSerial.cpp:375:6: warning: always_inline function might not be inlinable [-Wattributes]

    void SoftwareSerial::setRxIntMsk(bool enable)

    ^

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\SoftwareSerial.cpp:121:6: warning: always_inline function might not be inlinable [-Wattributes]

    void SoftwareSerial::recv()

    ^

    Der Sketch verwendet 6.810 Bytes (22%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes.
    Globale Variablen verwenden 481 Bytes (23%) des dynamischen Speichers, 1.567 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.

    Reply
    1. fk (Post author)

      Hi,
      welche Arduino Version benutzt du? Und unter welchem Betriebssystem?

      Das Programm lässt sich aber richtig hochladen aber die Befehle, die du über den Seriellen Monitor sendest geben jedesmal ein Error zurück?

      Reply
      1. Kai

        Moin,
        ich benutze Arduino 1.6.6 (gerade hierfür erst heruntergeladen und installiert) auf Windows 10.

        Mittlerweile konnte ich herausfinden, dass wenn ich den Seriellen Monitor auf "Sowohl NL als auch CR" umstelle, es dann zu gehen scheint. So konnte ich auch Tag 5 erfolgreich aufbauen.

        Mich wundern zwar die ganzen Warnungen, aber es funktioniert! Jippie!!

        Reply
  11. Stefanie

    Ein ganz einfacher Schritt das Einstellen der UDP Ports auf 90 will nicht angenommen werden, sobald ich nach "Ok"-Klicken auf Settings geh, um zu schauen, ob es übernommen wurde, steht dort wieder UDP Port 55005? Woran kann das liegen.

    Reply
    1. Sascha

      Danke Steffi, ich hab das gleiche Problem ^^ Hast du es gelöst bekommen? Bekomme auf den folgenden Befehl auch einen Error ^^

      Reply
      1. Stefanie

        Hallo Sascha, bis wohin funktionierts bei dir? Es sollte nachdem du bei Settings auf Port 90 gestellt hast, dann unten links Port 90 stehen habs eingeringerlt (Wenn nicht Packet Sender nochmal neustarten). Dann sollte es eigentlich gehen? Funktioniert nur nicht das Port-Einstellen?
        Du solltest die AT Befehle im Serial Monitor wie am Bild sehen können und auch mit dem Nano verbunden sein? Wo genau steckts bzw. wie siehts bei dir aus?

        Reply
    2. Sascha

      Sohabs hinbekommen, was in den Settings steht ist egal, funktioniert trotzdem :D

      Reply
  12. Rainer

    Hallo zusammen,

    mir macht die Bastelei viel Spaß.

    Ein kleiner Tipp für alle, die wie ich unter Linux arbeiten und das Programm Packetsender nicht installieren können/wollen:

    Ich habe 2 ganz kleine Python-Programme gefunden, die sowohl als UDP-Server als auch UDP-Client fungieren können, und zwar hier:
    https://wiki.python.org/moin/UdpCommunication

    Ich würde empfehlen (ähnlich wie bei dem Mac Problem weiter oben) die Ports für die Kommunikation höher zu wählen (ich habe z. B. jetzt die 5500 gewählt), ansonsten müssen die Programme als root ausgeführt werden, was aber nicht wirklich nötig ist.

    Euch allen viel Spaß beim Basteln.

    Gruß Rainer

    Reply
  13. Roman

    Wenn ich den Befehl AT+CWLIF eingebe kommt gleich ERROR
    Kann mir wer helfen ich kenne mich bei diesen UPD Programm Nüsse aus

    Reply
    1. Ed

      Du musst dich vorher mit dem nanoESP per WLAN verbinden (cwmode=2) dann hat es zumindest bei mir geklappt.

      Reply
  14. Lisa

    Ich bin leider nicht nur ein Arduino-Einsteiger, sondern auch kein passionierter Bastler (also eher gar kein Bastler …). Könnte mir jemand erklären, was ich tun muss, um "die Versorgungsleitungen Masse und VCC auf die äußeren Bahnen zu legen"? Das Bild ist nicht wirklich aussagekräftig, wenn man noch nie einen Mikrocontroller in der Hand hatte.

    Reply
    1. Nikdro

      Wenn du dir das Bild oben genauer anschaust, sind die oberste(X) und unterste(Y) Bahn in der horizontale leitend.
      Die restlichen in der vertikalen (A-E und (F-J).

      Eigentlich gibt es für diese Board schon fertig geschnittene Drahtbrücken.(http://www.ebay.de/itm/Steckbruecken-Set-140-tlg-Drahtbruecken-fuer-Breadboard-Steckplatine-Steckbruecke-/281720518416) Im Adventskalender müssen diese selbst gebaut werden. Dafür einfach den Draht auf die Passende Länge abscheiden, die Enden ab-isolieren und wie auf dem Foto zu sehen einstecken.

      Der Masse-Pin ist mit "GND" beschriftet. Der VCC mit "5V"

      Sollte noch etwas unklar sein, immer her mit den Fragen :)

      Reply
      1. Lisa

        Danke! Eigentlich müsste ich’s damit hinbekommen. Ich versuch’s morgen mal – dann weiß ich ob ich auf Dein Angebot zurückkommen muss.

        Reply
    2. General Overnight

      Nikdro hat die Grundlagen ja schon beschrieben, ein paar zusätzliche Details sind gerade für Anfänger doch noch interressant:

      1. Ein Bild … ;-) Die interne Verdrahtung des Breadboards sieht etwa so aus:

      ———————–X

      |||||||||||||||||||||||
      |||||||||||||||||||||||
      |||||||||||||||||||||||
      |||||||||||||||||||||||
      |||||||||||||||||||||||

      |||||||||||||||||||||||
      |||||||||||||||||||||||
      |||||||||||||||||||||||
      |||||||||||||||||||||||
      |||||||||||||||||||||||

      ———————–Y

      2. Draht schneiden
      ==================

      Zum Abschneiden nutzt man vorzugsweise einen feinen Seitenschneider, da gibt es zwei Varianten

      a) nur für weiche Drähte und Plastikteile beim Modellbau geeignet, aber sehr scharf und scheidet besonders sauber: Z.B. Artikelnr. 314462 bei Völkner für 4,40 € (bei Conrad 8,99)

      b) robustere Seitenschneider sieht aus wie eine Nagelzange zum Schneiden der Fußnägel. Billige Modelle gibts aktuell auch bereits ab knapp 4 €, da bin ich mir aber nicht sicher, ob die stabilere Schneiden haben. Ein gutes Stichwort für die Suche ist Pianodraht.

      Wenn dir die Investition zu viel ist, kannst du aber z.B. auch einen Nagelknipser benutzen.

      Ein Vorteil dieser Werkzeugen gegenüber einer Schere ist, dass du den Draht schräg abschneiden kannst und er dann leichter ins Steckbrett geht.

      3. Abisolieren:
      ===============

      Der Draht sollte ungefähr einen halben Zentimeter abisoliert werden, so weit, dass die Isolierung nicht mehr beim Einstecken stört, aber auch nur so weit, dass der Draht oberhalb des Boards noch isoliert ist. Das ist in einem Bereich von etwa 3-8 mm der Fall.

      Mögliche Vorgehensweisen zum Abisolieren:

      a) Am besten nutzt du eine Abisolierzange. Die stellt (bei richtiger Anwendung) sicher, dass nur die Isolierung durchgeschnitten wird und der Draht unverletzt bleibt – ist aber natürlich auch eine Investition und es gibt zahlreiche unterschiedliche Arten, da ist die Auswahl nicht einfach.

      b) das Abisolieren mit den Zähnen ist zwar sehr schonend für den Draht aber trotzdem nicht zu empfehlen ;-)

      c) Mit Seitenschneider oder Schere, die Isolierung vorsichtig einschneiden, aber nur so weit, dass der Draht unbeschädigt bleibt. Wenn die Isolierung eingeschnitten ist kann man das Schneidwerkzeug noch ein paar mal um jeweils ca. 90° nach rechts und links um den Draht drehen. Dadurch wird die Isolierung ringsum eingeschnitten. Wenn das gelungen ist, lässt sich die Isolierung einfach mit den Fingern abziehen.

      Für das Breadboard brauchst du nur relativ kurze Drahtstücke, da kannst du dir die Hälfte der Abisolierarbeit sparen, wenn du zuerst ein doppelt langes Stück abisolierst, dann den Draht auf der richtigen Länge abschneidest und schließlich die Isolierung auf die Mitte des Drahtstücks schiebst.
      Das geht u.U. leichter, wenn du zuerst die Isolierung festhältst und den Draht darin etwas drehst, sodass er sich löst.

      Reply
      1. General Overnight

        PS.: der wesentliche Vorteil von Seitenschneidern gegenüber Scheren ist beim Abisolieren, dass die Schneiden mehr oder weniger parallel gegenüber liegen. Dadurch rutscht der Draht nicht so leicht weg wie bei einer Schere.

        Reply
  15. jens

    sorry, aber dieser adventskalender ist für anfänger unausgereift und wahrscheinlich nur mangelhaft getestet. einen adventskalender schenke ich den kids, die bis weihnachten jeden tag ein WENIG zeit damit verbringen möchten und auch nur können. Wenn das nicht klappt ist das ein riesiges frustpotential. ich hoffe es kommt mehr support.

    Reply
    1. Nikdro

      Ich bin absolut deiner Meinung. An vielen Stellen könnte die Formulierung genauer sein, sodass diese auch für Neulinge verständlich ist.
      Ich musste meinem Bekannten (angehender Mechatroniker) auch schon mehrfach unter die Arme greifen. Besonders bei der Inbetriebnahme bestand hier großer Nachholbedarf.

      Der Autor dieses Blogs hat aber auch schon auf die vielen Kommentare reagiert:
      http://iot.fkainka.de/tag-1-hinweis-fuer-arduino-neulinge

      Reply
      1. Hartmut

        Tut mir leid, aber ich kann euch beiden nicht zu 100% zustimmen.
        Klar, der Adventskalender ist nicht für "Anfänger" geeignet. Man sollte schon wissen, was ein WLAN ist, wie ich mich damit verbinde usw. Ich war aber nicht überrascht, dass auch Kenntnisse der IP Kommunikation notwendig sind, die über "was ist eine IP Adresse" hinausgehen.

        Nicht zustimmen kann ich aber der Aussage, dass der Kalender unausgereift und mangelhaft getestet ist. Bei mir hat alles auf Anhieb so wie beschrieben funktioniert.

        Zugeben muss ich aber, dass einige Informationen an falscher Stelle stehen. Beisielsweise war mir von Anfang an klar, dass die USB Schnittstelle einen Treiber braucht (und natürlich ein Kabel). Den Treiber habe ich also schon vorher auf dieser Webseite (unter Wifi-Board) gefunden und vor dem Öffnen des ersten Türchens schon installiert. Daher habe ich erst durch die vielen Fragen hier gemerkt, dass diese Information auf Anleitungsheft fehlte.

        Insgesamt bin ich aber hellauf begeistert und muss mich zwingen, dass Teil wieder vom Rechner abzuklemmen.

        Reply
        1. General Overnight

          Zum Teil stimme ich sowohl dir als auch den ersten beiden Kommentaren zu. Bei einem Adventskalender für ca. 40 Euro kann man nicht unbedingt etwas für Kinder erwarten und das hier benötigte USB-Kabel z.B. ist ja inzwischen bei praktisch jedem Mobilgerät etc. dabei, wobei es allerdings auch reine Ladekabel gibt, die hier unbrauchbar sind.

          Das mit dem Treiber ist aber schon eher Insiderwissen, wobei der Treiber bei meinem Debian zum Standard gehört und automatisch beim Einstecken des Boards geladen wird. Ich hatte allerdings trotz soliden IT-Kenntnissen diverse Startprobleme, speziell waren die Informationen zum Umgang mit der Arduino Software sehr knapp. Aber vor allem war ichetwas enttäuscht, dass auch hier im Blog nur sehr wenig Informationen zur Ersteeinrichtung vorhanden waren. Aber das ist ja inzwischen nachgeholt.

          Reply
          1. Skayo

            Ich bin 14 Jahre und habe das Arduino Starterkit durchgemacht. Dadurch verstehe ich eigentlich alles und es funktioniert auch alles. Ohne jene helfenden Eltern. Wenn man vor hat diesen Kalender jemanden zu schenken, sollte man wissen ob derjenige sich mit dem Thema auch etwas auskennt. Da kann Conrad nichts dafür! Wenn derjenige noch nie was mit Mircocontrollern gemacht hat, sollte man ihm erst das Arduino Starter Kit besorgen und nicht gleich mal ein Wlan Modul.
            Jegentlich das „Keine Vorkenntnisse benötigt“ sollte man weglassen. Das stimmt. Aber auch wenn das dort steht, sollte man sich darüber informieren.
            mfg

          2. Stefanie

            @Saiko, wo gibts denn so ein Arduino Starterkit? Hättest du da einen Link? LG

          3. Nikdro

            @Stefanie
            Einfach mal bei Amazon schauen :)

          4. Skayo

            @Stefanie
            Ja, einfach auf Amazon schauen.

  16. Jannes

    Ich kam leider erst heute dazu das Programm vom ersten Tag auszuprobieren. Es kommt jedoch eine Fehlermeldung!! :(
    Was heisst das hier??:
    Der Sketch verwendet 3.764 Bytes (11%) des Programmspeicherplatzes. Das Maximum sind 32.256 Bytes.
    Globale Variablen verwenden 317 Bytes (15%) des dynamischen Speichers, 1.731 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.
    avrdude: ser_open(): can’t open device "\\.\COM1": Das System kann die angegebene Datei nicht finden.

    Reply
    1. Roland G. Hülsmann

      Vermutlich hast Du den Treiber für das Board nicht installiert. Das Board liegt ziemlich sicher nicht an COM1. (Bei mir ist es COM3.)
      Schaue mal hier: http://iot.fkainka.de/driver
      Einen Einstieg in das Board findest Du hier: http://iot.fkainka.de/tag-1-hinweis-fuer-arduino-neulinge

      Reply
    2. Lisa

      Der serielle Port stimmt nicht, es ist mit Sicherheit nicht COM 1. Das kann man unter Tools/ Werkzeuge umstellen.

      Reply
    3. Jannes

      Dank für eure Tipps hab Port auf com3 gestellt. Jetzt kommt leider nur noch das hier avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
      avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
      avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
      avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
      avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
      avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
      avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0
      avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
      avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0
      avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0

      Reply
      1. General Overnight

        Das Problem hatte ich auch. Es lag daran, dass im Menü als Board "Arduino Uno" iengestellt war und verschwand als ich auf "Arduino Nano" umgestellt habe. Ausserdem musste ich den Prozessor richtig einstellen, auf Atmega328.

        Reply
  17. Max

    Ich habe echt keinen Plan was ich falsch mache:

    Ich hab meinen PC über WLAN mit den NanoESP verbunden
    Packetsender läuft im UDP auf Port 90
    Ich bekomme die "SEND OK" Nachricht im Seriellen Monitor

    Nur im PacketSender kommt nix an :/

    Kann mir jemand helfen ?

    Reply
    1. Nikdro

      Bitte kontrolliere zunächst, ob der richtige Port unten rechts angezeigt wird. Sollte aussehen wie hier: http://blog.ndroste.de/wp-content/uploads/2015/12/packet-sender.jpg

      Kommen dann immer noch keine Pakete an, kann die Konnektivität mit dem seriellen Befehl AT+CWLIF geprüft werden. Hier muss die IP und Mac Adresse deines PCs ausgegeben werden. Ist dies nicht der Fall, bitte erneut mit dem Netzwerk des Arduinos verbinden.

      Unter Umständen blockt auch deine Firewall auf dem Rechner die Pakete ab. Um dies auszuschließen, kannst du diese ja vorübergehend deaktivieren.

      Versuch' doch mal und berichte uns hier :) Gemeinsam finden wir schon eine Lösung

      Reply
      1. Max

        So ich hab das Problem gefunden.

        Bei meinem vorherigen Versuch war zwar alles korrekt eingestellt, aber ich hab vermutlich eine verbuggte Version von Packetsender ;).

        D.h. ich kann den Port nicht umstellen (offenbar gibt es den Bug nicht nur bei Mac-Nutzern, sondern auch unter Win10)

        Also Arduino-Codezeile abgeändert und dann ging’s so wies sollte.

        Danke für deine Hilfe :)

        Reply
  18. Jens

    FRUST. leider kein erfolg mit packet sender unter ubuntu. in packet sender rechts unten steht der button dauerhaft auf "UDP server disabled". keinerlei kommunikation möglich.

    Reply
    1. Benedikt

      Ich habe netcat verwendet:
      sudo nc -l -p 90 -u

      Reply
  19. Bernhard

    Weiterhin frustriert…..

    Was fange ich mit dieser Meldung an:

    C:\Programme\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\SoftwareSerial.cpp:375:6: warning: always_inline function might not be inlinable [-Wattributes]

    void SoftwareSerial::setRxIntMsk(bool enable)

    ^

    C:\Programme\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\SoftwareSerial.cpp:121:6: warning: always_inline function might not be inlinable [-Wattributes]

    void SoftwareSerial::recv()

    ^

    collect2.exe: fatal error: cannot find 'ld'

    compilation terminated.

    exit status 1
    Fehler beim Kompilieren.

    Reply
    1. Nikdro

      Ist der Code unverändert der aus dem Download?

      Ist die Libary auf dem neusten Stand?
      Lässt sich ganz einfach prüfen: (Sketch->Bibliothek einbinden->Bibliotheken verwalten->Typ:"aktualisierbar")

      Falls nicht, kannst du diese auch direkt dort updaten und anschließend den Sketch erneut Hochladen.

      Reply
  20. Santiago

    Hallo Leute,
    Voller Freude öffnete ich das heutige Kalendertürchen…und fand ein Stück Kabel drin! Steckbrücken hätten es doch schon sein können.Immerhin hat der Kalender 50 Euro gekostet, da datf man schon was erwarten. Naja.
    Aber zum heutigen Versuch:
    Bei mir hat alles prima funktioniert. Kleiner Tipp: Lieber die Portable – Version von PacketSender downloaden – die muss nicht installiert werden und ist – wie der Name schon sagt – portabel. Ich finde das sehr praktisch, wäre schon hilfreich, sowas in die Anleitung zu schreiben. Ich persönlich mag es nicht, wenn ich so viele Programme installieren muss.
    Bis jetzt hatte ich keine Probleme mit den Experimenten. Ich finde, für Leute mit Arduino – Vorkenntnissen (wie mich) ist die Anleitung ausreichend ausführlich gestaltet, Neueinsteiger könnten aber Probleme damit haben.
    Bin trotzdem froh, dass ich mich für diesen Kalender entschieden habe.
    LG
    Santiago

    Reply
  21. XandI

    Hallo!
    Ich habe das Problem, dass bei hinaufladen jedesmal eine Fehlermeldung bezüglich einer Zeile im Programm kommt. Habe ich was falsch gemacht? Das Programm von Tag 1 funktioniert, doch bei Tag 2 und Tag 3 kommt immer eine Fehlermeldung. Ich würde mich auf Antworten freuen.
    LG

    Reply
    1. fk (Post author)

      Hi,
      welche Zeile wird genau beanstandet?
      Es kann sein, dass sich dort aus versehen ein Zeichen eingeschlichen hat.

      Reply
  22. TB

    Wenn ich AT+CWLIF schreibe dan kommt als antwort nur OK :( was soll ich tun??

    Reply
    1. Nikdro

      Das Problem hatte ich anfangs auch.
      Bei mir lag es einfach daran, dass der PC nicht korrekt mit dem WLAN verbunden war. Ein erneutes Verbinden hat das Problem bei mir behoben. Check doch mal deine Verbindung am Computer und versuch es mit einer erneuten Verbindung.

      Anschließend sollte AT+CWLIF deine IP und MAC zurück liefern.

      Reply
  23. Fabian

    Hey,
    ich kann die Nachricht („Hello“) abschicken bekomme auch ein SEND OK aber im Packet Sender sehe ich nix. Port ist eingestellt.

    Reply
    1. Nikdro

      Wird der Korrekte Port 90 unten rechts im Packet Sender angezeigt? Eventuell musst du das Programm auch nochmal neu starten.

      Bist du auch sicher via WLAN mit dem Arduino verbunden? Check das doch einfach mal mit dem Befehl AT+CWLIF im Seriellen Monitor und teil uns das Ergebnis mit:)

      Reply
      1. Fabian

        Hey schande über mein Haupt. Hatte die Firewall noch an :-). Jetzt läuft alles. Danke
        Andere Frage: Würde das ganze auch gerne über mein Tablett nutzen. Ist ein Windows Tab. erkennt leider das Board nicht, trotz Treiber :-(

        Reply
        1. Nikdro

          Welche Windows-Version hast du auf dem Tablet?

          Schau doch einfach mal in den Geräte-Manager und such den Arduino. Als was wird dieser angezeigt? :)

          Reply
  24. Eric

    Wenn ich alles so mache wie es beschrieben ist, passiert wenn ich da auf senden gehe im PacketSender nichts. habe alles richtig eingestellt und die Windows Firewall ausgestellt. Andere Firewalls gibt es nicht…

    Hat jemand ideen, wie man das beheben kann?

    Reply
  25. Skyflori14

    Bei mir kommt immer dieser scheiss fehler

    AT+CIPSEND=7

    link is not valid

    ERROR

    Bitte um Hilfe

    Reply
    1. Raabinator

      Ich kanns zwar hier gerade nicht ausprobieren, aber 'link is not valid' lässt darauf schliessen, dass das Modul keine Verbindung zu einem Netzwerk/Client hat. Je nach dem, welche Version du verwendest, Accesspoint oder Client, solltest du mal nachschauen ob die Verbinderei überhaupt klappt.
      Ist in den Posts oben beschrieben.

      Reply
    2. Christoph

      hab das gleiche Problem.. Die IP und MAC Adresse wird zurückgegeben aber mit AT+CIPSEND=7 kommt link is not valid Error

      Reply
    3. Joerg_B

      Ich hatte das gleiche Problem unter Windows 8.1.
      Die Lösung war das Netzwerk NanoESP in die Heimnetzgruppe aufzunehmen und den Zugriff darauf zuzulassen.
      Google bietet gute Infomationen dazu, wenn man die folgenden Suchbegriffe nutzt: "windows 8.1 heimnetzgruppe beitreten"

      Reply
  26. Kristof
    1. fk (Post author)

      Hi,
      the connection you try to establish with the cipstart command hasn’t been succesfull. Therefore the cipsend commands don’T work the the controller says the reason: No Link.

      It seems, that the IP of your board is 192.168.4.2 so you can’t connect to the same IP. You must try to connect to the IP of your PC.

      Reply
  27. Claus

    Gibt es eine Möglichkeit abzufragen welche IP das Board vom DHCP bekommen hat und die IP über die serielle Schnittstelle auszugeben?

    Reply
    1. SmenTrick

      Klar:

      AT+CIPSTA?

      incl. Dem Fragezeichen!

      Für den kompletten Befehlssatz:
      https://cdn.sparkfun.com/assets/learn_tutorials/4/0/3/4A-ESP8266__AT_Instruction_Set__EN_v0.30.pdf

      Reply
      1. Klaus

        Wobei zu bedenken ist, dass diese Doku bereits den Befehlssatz 0.30 beinhaltet (wusste gar nicht, dass es diesen schon gibt). Das Board beinhaltet den Befehlssatz 0.30 (http://4tronix.co.uk/files/ESP8266_AT_Instruction_Set_v0_22.pdf)

        Reply
  28. jz

    #include SoftwareSerial.h …wurde abgeschnitten Pfeilklammern?

    Reply
  29. jz

    Super Board, macht Spass, Experimente lehrreich und interessant.
    Anleitung etwas knapp, Ergänzung für Einstieg ist hilfreich.

    Hinweis:
    Mein NanoEsp ist in meinem Gäste-WLAN; musste – natürlich – "guest isolation" ausschalten!
    (Verbindung zum lokalen Netz zulassen).
    Zum Testen mit Tablet/Smartphone habe ich die App "TCP/UDP Terminal" gefunden.

    Abhilfe zu Compiler-Warnings:

    #include

    class SoftwareSerialFix : public SoftwareSerial
    {
    public:
    SoftwareSerialFix(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false) : SoftwareSerial

    (receivePin, transmitPin, inverse_logic){};
    bool find(const char *target) {return SoftwareSerial::find((char*) target);};
    bool findUntil(const char *target, const char *terminator) {return SoftwareSerial::findUntil((char*) target,

    (char*) terminator);};
    };

    SoftwareSerialFix esp8266(11, 12); // RX, TX

    … weiter unten:

    boolean sendCom(String command, const char respond[])

    … die Stream-Klasse von Arduino sollte angepasst werden!

    Reply
  30. Jonathan

    Hat geklappt, nicht gleich denn im Heft waren die erforderlichen Einstellungen im PaketSender Prg. nicht so offensichtlich. Im Online Dokument Tag 3 sind aber die Einstellungen zu sehen. Mehr muß im PaketSender nicht eingegeben werden. OK

    Reply
  31. Klaus

    Klar, Du brauchst nur ein Programm, welches als UDP-Server arbeitet. Das Betriebssystem ist dabei völlig irrelevant. Jedes System, welches TCP/IP beherrscht (können alle geräte die ins Internet kommen) kann verwendet werden.

    Reply
  32. Sören

    Bei mir kommt eine Fehler-meldung Arduino: 1.6.6 (Mac OS X), Board: "Arduino Nano, ATmega328"

    /var/folders/m4/ll4cbfr14w14g3mq_jy28tp80000gn/T/untitled608067822.tmp/sketch_dec03a/Day3_UPDBasics.ino: In function 'void setup()':
    Day3_UPDBasics:12: error: redefinition of 'void setup()'
    void setup() {
    ^
    sketch_dec03a:1: error: 'void setup()' previously defined here
    void setup() {
    ^
    /var/folders/m4/ll4cbfr14w14g3mq_jy28tp80000gn/T/untitled608067822.tmp/sketch_dec03a/Day3_UPDBasics.ino: In function 'void loop()':
    Day3_UPDBasics:29: error: redefinition of 'void loop()'
    void loop() {
    ^
    sketch_dec03a:6: error: 'void loop()' previously defined here
    void loop() {
    ^
    exit status 1
    redefinition of 'void setup()'

    Was kann/ muss ich machen ?

    Reply
    1. Sören

      Nach neustart des Programmes geht alles

      Reply
  33. MartinW

    Packetsender runtergeladen (auf Windows10) aber wenn man die Installations-exe startet passiert nix… ? Geht es jemandem ähnlich? Ideen ?

    Reply
    1. Tim

      Da das Programm sicherlich für eine ältere Version von Windows geschrieben ist, könnte man Rechtsklick -> "Behandeln von Kompatiblitätsproblemen" versuchen. Ich habe gerade die Setup Datei gedownloadet um das zu testen, bei mir funktioniert es aber auf Anhieb.

      Ich verwende die portable Version – die funktioniert auch.

      Reply
    2. MartinW

      Mit etwas Zeit habe ich den Fehler gefunden: Ich hatte Packetsender auf meinem NAS (QNAP TS-212P) und nicht lokal gespeichert. Sowohl die ZIP Variante als auch den Installer. Aus irgendeinem komischen Grund, der wohl nichts mit Packetsender zu tun hat, kann das Programm von dort nicht gestartet werden, sondern nur wenn es lokal auf dem Laptop/PC liegt. Da funzt alles wie beschrieben. Warum der NAS gerade spinnt (denn das ging zuvor) weiss ich zwar nicht, aber wenigestens geht’s jetzt mit dem Adventskalender weiter :-)

      Reply
  34. Ralf

    Für Linux/BSD-Nutzer: Statt PacketSender kann man auch socat nehmen (als root oder mit sudo).

    socat UDP-LISTEN:90 STDIO

    Netcat/nc geht auch. "nc -lup 90" oder "nc -lu 90", je nach Variante.

    Reply
    1. M

      netcat ist auf allen Unix-Systemen verfügbar, also auch bei Mac OS X. Dort kann man nc als Standardutility im Terminal aufrufen

      > nc -l -u -p 90

      -l: "listen" also am Port horchen, nicht senden
      -u: UDP (statt TCP)
      -p NUM: Port NUM verwenden

      Reply
  35. Turnfin

    Ne Frage nochmal ,
    ist es möglich packetsender fürs iPad /iPhone zu haben , Trau mich nicht irgendwelche packet Apps zu installieren
    Mag nicht an Pc ;-)
    Vielen Dank
    Gruß Turnfin

    Reply
    1. MC

      Im App Store habe ich eine ganz einfache App für iOS gefunden: "UDPTest"
      Diese habe ich installiert, unter den Einstellungen (aufzurufen durch Herunterstreichen im oberen, grauen Bereich) bei "port number" 90 eingegeben, und funktioniert.
      iPhone geht auch noch.

      Reply
    2. Klaus

      Ich kann da TCP/IP (mit chinesischen Zeichen) empfehlen. Das Programm ist nicht chinesisch und kann auch TCP, was für spätere Tage mit Sicherheit zu gebrauchen ist. So braucht man nicht später wieder ein anderes Tool.

      Reply
  36. Turnfin

    IHR SEID KLASSE,
    hab nen 3D Dricker mit arduino mega, hab auch hier länger nen arduino mega mit wifishild rumliegen, geht das bei dem auch?
    Bzw wo gibt es ne At Command Liste , hab schon gesucht aber irgendwie funktionieren die Befehle nicht die ich gefunden hab :-(
    Vielen Dank
    Gruß Turnfin

    Reply
    1. Klaus

      Nein, Du brauchst ein Board, welches das WLAN-Modul entweder bereits integriert hat, oder Du musst ein ESP8266-Modul anschließen (Vorsicht! Atmel hat gerne 5V, das Modul verträgt nur 3,3V und wird mit 5V zerstört).
      Module bekommst Du z.B. hier:
      http://www.ebay.de/itm/ESP8266-Serial-WIFI-Wireless-Transceiver-Module-Send-Receive-LWIP-ESP-01-Neu-/111583174943?hash=item19fae0211f:g:XcgAAOSwmrlUwh9x

      Reply
    2. fk (Post author)

      Hi,
      eine kurze AT-Liste findest du z.B. unter http://iot.fkainka.de/at-befehlsliste

      Reply
    3. Max
  37. Robin

    Ich habe hier eine Version erstellt die auch im lokalen Netzwerk funktioniert.
    Wie gestern muss natürlich die SSID und Passwort entsprechend verändert werden, zusätzlich muss man unter REMOTEHOST die IP Adresse des Rechners angeben auf dem der UDP Server läuft.

    https://dl.dropboxusercontent.com/u/4491727/Day3_UPDBasicsWithoutAP.zip

    Reply
    1. tobrav

      Vielen Dank, damit klappt es wirklich gut

      Reply
  38. Roland G. Hülsmann

    Also bei mir geht gar nichts. Welche IP-Adresse bekomme ich woher und muss ich wo eintragen. Im Artikel und den Bildern tauchen drei verschiedene IP-Adressen auf.
    Die mit 4.2 am Ende ist die des Nanoboards.
    Was hat es mit der in den Packet-Sender-Logs erwähnten 4.1 auf sich? Und woher kommt die 178.255, die im Packet-Sender wohl einzugeben ist?
    Sorry, ich scheine hier noch Wissenslücken zu haben.

    Reply
    1. Tommy

      Wenn das Tag3-Programm auf das Nano hochgeladen ist, funktioniert es als WLAN-Accesspoint und hat die 192.168.4.1 als IP-Adresse. Wenn man dann seinen PC mit dem WLAN des Nanoboards namens NanoESP verbindet und die Netzwerkeinstellungen auf DHCP setzt, bekommt der PC die IP-Adresse 192.168.4.2.
      Das Packetsender-Prog auf dem PC funzt dann in dem Fall als Empfänger. SDie Daten die man im Serial Monitor eingibt, werden vom Board zum PC gesendet.
      Die Adresse mit der 178.255 am Ende spielt hier keine Rolle. Da muss nix eingegeben werden. Wichtig ist nur, Port 90 in den Settings (im Menü File des Packetsender) für UDP einzustellen.

      Reply
      1. Klaus

        Hallo Tommy,

        vergiss den Screenshot oben. Da stehen völlig unterschiedliche Adressen drin, die von dem Szenario hier abweichen.

        Reply
      2. Roland G. Hülsmann

        DANKE für die Erklärung. Jetzt habe auch ich es kapiert. (Es war gestern Nacht doch wohl etwas zu spät …)

        Reply
      3. MartinW

        Genau SO eine Info hätte ich in der Anleitung mindestens erwartet…
        Auch hätten mehr Kommentare in den Beispielprogrammen wirklich nicht geschadet (z.B. hinter den AT-Befehlen, die sich nicht von selbst erschließen eine kurzer Hinweis was der Befehl bewirkt).
        Der Autor konnte sich wohl nicht wirklich in jemanden hineinversetzen, der zum ersten Mal mit Arduinos arbeitet. Aber hallo – davon war doch bei einem Adventskalender auszugehen? Vielleicht können die noch ausstehenden Programme hier ein wenig nachgebessert werden – Danke!

        Ein riesengroßer Dank auf jeden Fall an die Leute, die hier ihre Lösungen und Zusatzinfos im Board posten – ohne euch könnten vermutlich 3/4 der Leute den Kalender 'abhaken'. Große Klasse!

        Reply
    2. Fabian Eser

      Hey,
      ich kann die Nachricht ("Hello") abschicken bekomme auch ein SEND OK aber im Packet Sender sehe ich nix. Port ist eingestellt.

      Reply
      1. Dr Hok

        Das liegt vermutlich an der Windows-Firewall. Ich musste sie (unter Windows 10) komplett abschalten, damit etwas durchkommt. Ich hatte zuerst versucht, nur den Port 90 UDP zu öffnen, aber das hat nicht funktioniert.

        Reply
        1. Rainer

          Ich bin heute erst zu Tag 3 gekommen, gestern Abend war wohl der Server zum Herunterladen einige Zeit nicht on-line.

          Heute ging zunächst alles gut, SEND OK kam auch aber auf dem PC kam nichts an.
          Nach Lesen dieser Kommentare habe ich den W10 Firewall abgeschaltet und alles war gut.

          Nun meine Kritik :

          mit dem ESP wird ein offenes, ungesichertes Netzwerk eingerichtet, wenn nun der Firewall abgeschaltet werden muss, ist auch der PC ungesichert. Hoffentlich vergisst niemand, den Firewall wieder zu schliessen !

          Mein Vorschlag :

          Die Zeile zum konfigurieren des AP abändern :

          boolean configAP()
          {
          boolean succes = true;

          succes &= (sendCom("AT+CWMODE=2", "OK"));
          // succes &= (sendCom("AT+CWSAP=\"NanoESP\",\"\",5,0″, "OK"));
          succes &= (sendCom("AT+CWSAP=\"NanoESP\",\"MyPassword\",5,3″, "OK"));

          return succes;
          }

          von "AT+CWSAP=\"NanoESP\",\"\",5,0″, "OK"));
          auf "AT+CWSAP=\"NanoESP\",\"MyPassword\",5,3″, "OK"));

          das ergibt eine WPA2_PSK ( dafür die 3 ) gesichertes Netzwerk, bei MyPassword ein entsprechendes Passwort eingeben !

          Beim Verbinden des PCs muss dann diese Passwort eingegeben werden, danach klappt bei mir unter W10 alles auch bei geschlossenem Firewall !

          Grosses Lob an alle, die hier zurm Lösen von Problemen beitragen !

          Weiter so,

          Rainer

          Reply
          1. Andreas

            Es ist nicht notwendig, die Windows-Firewall komplett zu deaktivieren. So geht es auch:

            1. Systemsteuerung, dann Windows-Firewall öffnen
            2. Auf der linken Seite "Eine App oder ein Feature durch die Windows-Firewall zulassen" wählen
            3. "Einstellungen ändern" auswählen
            4. In der Liste nach dem Programm "packetsender.exe" suchen (kann evtl. auch zweimal vorkommen)
            5. Häkchen beim Namen und bei "Privat" setzen (ggf. auch bei "Öffentlich", wenn’s anders immer noch nicht geht)
            6. Mit "Ok" schließen

            Anschließend sollten die Pakete auch beim Packetsender ankommen.

      2. MartinW

        Ein Dank hier an Andreas (Freitag, der 4. Dezember 2015 um 21:45), der die aus meiner Sicht perfekte Lösung angeboten hat!

        Reply
  39. Tommy

    Proggy funzt! Prima.

    Noch ne Frage zum Kabel: Muss ich die Enden der Kabelbrücken abisolieren oder hat das Steckboard eine
    Art Schneidklemmtechnik ähnlich einem LSA-Verteiler?

    Reply
    1. fk (Post author)

      Hi,
      die Enden müssen vorher abisoliert werden. So fortschrittlich ist das Steckboard leider nicht :)

      Reply
  40. Roland G. Hülsmann

    Mein PC ist über LAN im Netz. Offensichtlich benötige ich aber für die folgenden Tage einen WLAN-Adapter, wenn ich die Experimente durchführen möchte. Zwei Fragen:

    1. Für wieviele Tage benötige ich einen WLAN-Adapter (den ich mir wohl dann kaufen müsste).

    2. Wie verbinde ich über diesen Adapter meinen PC mit dem Board, ohne die Verbindung zu Internet, Drucker, externe Festplatte, etc. aufzugeben. (Also LAN-Verbindung zum Heimnetz und WLAN-Verbindung zum Board gleichzeitig.) Die Anleitung schweigt sich darüber aus.

    Reply
    1. fk (Post author)

      Hi,
      wenn dein PC über LAN mit dem Router verbunden ist, und das Board über WLAN gibt es keine Probleme, denn beide Geräte sind dennoch im gleichen Netzwerk.

      Reply
      1. Roland G. Hülsmann

        Aber dann funktioniert doch das Programm für den dritten Tag nicht, da ich dann ja nicht den PC mit dem WLAN des Boards verbinden kann. Das ist doch eben ein anderes Netzwerk. Wo liegt mein Denkfehler?

        Reply
    2. SmenTrick

      Also solange du irgendwo im Netzwerk ein "Stück" WLAN hast, ist das alles auch so machbar. So kann man bei Day3 auch einfach den Part, im Code, mit dem AP gegen die Einwahl aus Day2 austauschen.
      Oder, alternativ, gibt es da noch das Smartphone. So habe ich, um herauszufinden ob mein Problem die Firewall oder mein Python-UDP-Server ist, einfach nen UDP-Server als Android-App am Phone installiert.

      Reply
      1. Roland G. Hülsmann

        Mit welcher APP genau soll das gehen? Ich habe zwei ausprobiert, bin aber nicht über die Konfiguration hinausgekommen. Und angekommen ist dort erst recht kein "Hello".

        Und wie ich genau das Programm umschreiben soll, damit es auch so geht, erschließt sich mir leider trotz C++-Kenntnissen auch nicht. Welche AP-Befehle müssen genau durch welch ersetzt werden?

        Reply
        1. Juergen

          Habe folgendes in der Config ESP8266 angepasst.

          //—————————————–Config ESP8266————————————

          boolean configAP()
          {
          boolean succes = true;

          succes &= (sendCom("AT+CWMODE=1", "OK"));
          esp8266.setTimeout(20000); // Timeout muss laenger sein für WLAN Verbindung
          succes &= (sendCom("AT+CWJAP=\"**SSID**\",\"**PASSWD**\"", "OK")); //"**SSID** uund **PASSWD** aus TAG2 nutzen"
          esp8266.setTimeout(1000); // Timeout zuruecksetzen
          return succes;
          }

          boolean configUDP()
          {
          boolean succes = true;

          succes &= (sendCom("AT+CIPMODE=0", "OK"));
          succes &= (sendCom("AT+CIPMUX=0", "OK"));

          succes &= sendCom("AT+CIPSTART=\"UDP\",\"**MY-IP**\",90″, "OK"); //UDP-Server // **MY-IP** Des PCs

          return succes;
          }

          Reply
          1. Roland G. Hülsmann

            Herzlichen Dank! So funktioniert es!

            Was bei mir fehlte, aber eigentlich logisch ist, war das Einsetzen der Netzwerk-IP meines PC in configUDP().
            Ja, so funktioniert es perfekt, auch ohne das Board als Accesspoint zu aktivieren!

        2. SmenTrick

          Bezüglich der APP:

          In dem Fall habe ich einfach das Day3 so gelassen, wie es ist und mich mit Dem Smartphone (Android) am ESP angemeldet. Dann (den erst besten Treffer im Play-Store) "UDP Sender / Receiver" genommen. Hässliche Oberfläche, aber für den Test taugts:

          Mode: Receive Only
          Local Port: 90
          Message Type; ASCII
          [Start Listening]

          Bezüglich der "ESP im bestehenden WLAN":
          Hierfür musst du den Part "Config ESP8266", wie von Juergen beschrieben, ändern. Zusätzlich aber auch die zwei "#define" Zeilen für SSID und PASSWD noch oben rein copieren.
          Ich glaub Robin hat, weiter unten, schon mal was vorbereitet ;)

          Reply
          1. Roland G. Hülsmann

            Wenn ich "Start Listening" anklicke, bekomme ich eine Warnung "There was a problem while trying to send/receive. Check to ensure the local port is not in use and the remote ip/port is valid". Danach wird das receive sofort beendet.

          2. Roland G. Hülsmann

            Mit Port 50000 hat es dann funktioniert!

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.