Tag 0: Alle Projekte für Ungeduldige (Spoiler Alert)

Das Interesse am IoT-Adventskalender scheint recht groß zu sein. Daher kam öfter die Frage auf, wann die Programme veröffentlicht werden.

Mein eigentlicher Plan war, dass die Programme jeden Dezembertag zusammen mit dem passenden Artikel veröffentlicht werden. Dies wird auch weiter der Fall sein, aber für alle diejenigen, die das Warten nicht mehr ertragen, gibt es hier alle Programme in einem Ordner zum Download:

Download: CalenderIoT

Achtung:

Es gab eine Änderung im Programm vom Tag 10. Der Webservice, den ich in diesem Programm verwendet habe, hat vor wenigen Tagen seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite http://www.openweathermap.com/ bezieht. Der Link zu dem neuen und auch in der neuen Versio des Programms verwendeten Dienst lautet:

www.temp.fkainka.de

Durch anpassen der URL kann die Temperatur einer Stadt abgefragt werden. Als Beispiel für Essen:

www.temp.fkainka.de/?city=essen

 

Bauteileliste:

In dieser Liste finden Sie alle Bauteile des Kalenders. Achtung Spoiler!

– NanoESP

– 1m Verbindungsdraht

– 4 x Male

– Female Steckkabel

– Steckboard (Standard, SYB-46)

– LED (weiß)

– RGB-LED (gemeinsame Kathode)

– 4 Widerstände a 1 kOhm

– 1 Widerstand 47 Ohm

– 10 kOhm Widerstand

– 2 Taster

– 1 Poti (10 kOhm)

– 1 IR-Sende-Dioden

– IR-Empfangs-Modul (36 kHz)

– Batterieclip (9V – Block)

– Fototransitor (10 kOhm)

– Piezoscheibe mit Drähten

– Temperatursensor (NTC 10 kOhm)

[Einklappen]

41 Kommentare

  1. VUROY

    Just started working on day 1 on Macbook with latest El Capitan.
    Unfortunately I’m not able to connect to the serial port. System info does show that the board is connected as the following information shows up: USB2.0-Serial.
    Suggestions would be welcome as I’d like to go through the days.

    Antworten
  2. jz

    Zu Tag 16: alle deselektieren.

    Alle checkboxen deselektieren funktioniert nicht.
    Die zuetzt seletiere(n) bleiben selektiert und „high“.

    Die Korrektur im Code von loop() habe ich vorgenommen.
    Aber das scheint nicht auszureichen. Mit HTML kenne ich mich zu wenig aus.

    Dürfte spannend werden am Tag 16!

    Antworten
    1. jz

      geht doch mit folgender Korrektur:

      void loop()
      {
      if (esp8266.available()) // check if the esp is sending a message
      {
      if (esp8266.find(„+IPD,“))
      {
      debug(„Incomming Request“);
      int connectionId = esp8266.parseInt();
      // String input = esp8266.readString();
      // debug(input);
      PORTD = B00000000; // if (connectionId previousConnId) PORTD = B00000000; // to persist for multiple clients
      if (esp8266.findUntil(„/?“,“\n“))
      {
      // PORTD = B00000000; // for persist for multiple clients
      // debug(„available=“+String(esp8266.available()));
      while (esp8266.findUntil(„ld“, „\n“))
      {
      int ld = esp8266.parseInt();
      PORTD |= (1 << ld);
      }
      // debug("PORTD="+String(PORTD));
      }
      if (sendWebsite(connectionId, createWebsite())) debug("Website send OK"); else debug("Website send Error");
      esp8266.flush();
      }
      }
      }

      Antworten
  3. Teuro2

    Passt nicht zu einem speziellen Tag, aber ich würde gerne wissen, wie ich die LED´s auf dem Board deaktivieren kann, dass ich im dunkeln nur meine angeschlossenen LED´s sehen kann.
    Ausserdem würde ich gerne wissen, wie man diese LED´s ansteuern kann, da die LED „für das WLAN“ (D3 steht daneben) ja über Pin 13 angesprochen wird, aber der Pin 13 auf den anderen Seite von Board ist. Oder verstehe ich da was falsch?

    Antworten
  4. Roland G. Hülsmann

    Zu Tag 3 und folgende:

    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.

    Antworten
  5. Christian

    Ich habe ein Problem mit Tag 13.

    Die Webseite wird angezeigt, Serieller Monitor zeigt:
    Server Aktiv
    Incomming Request
    Send and Close

    Beim Klick auf einen der Buttons ändert sich an der LED nichts.
    Der serielle Monitor zeigt:
    Incomming Request
    ESP SEND ERROR: AT+CIPSEND=0,495
    Website send Error

    Ein zweiter Klick ist nicht mehr möglich, der Browser bringt nach einiger Zeit einen TimeOut.

    Ausprobiert auf:
    Windows 7: Firefox, Chrome
    Windows 10: Edge, Chrome
    Android 6.0: Chrome

    Antworten
  6. Leo

    Hab noch ein wenig probiert. Es geht auch mit www davor, nur darf man das Kommando nicht einfach über die Zwischenablage kopieren, da bekommt man
    AT+CIPSTART=“TCP“,“www.example.com“,80
    Richtig ist
    AT+CIPSTART=“TCP“,“www.example.com“,80

    Der Unterschied ist, dass die Anführungszeichen aus dem PDF in ITALIC sind.
    ein “ ist also kein „.

    Antworten
    1. Leo

      Schade man sieht das in der Nachricht nicht, die Anführungszeichen sind jedesmal oben nur bei Umschalt+2 sind sie gerade, über die Zwischenablage schräggestellt.

      Antworten
  7. Leo

    Tag8 TCP

    Bei mir scheint alles zu initialisieren aber die TCP Verbindung klappt nicht.
    – Google Programm von Tag 1 funktioniert
    – Habe Programm Tag 8 geladen SSID und Passwort eigefügt.

    Der Serielle Monitor meldet:
    WLAN Connected
    My IP is:

    AT+CIFSR

    +CIFSR:STAIP,“192.168.1.64″
    +CIFSR:STAMAC,“18:fe:34:a4:66:8c“

    OK

    Gebe ich dann wie beschrieben den Befehl ein, kommt ein Fehler:

    AT+CIPSTART=“TCP“,“www.example.com“,80

    Link typ ERROR

    ERROR

    Habe das Verhalten sowohl auf Arduino.cc unter OSX und arduino.cc innerhalb einer in Parallels laufenden Windows 10VM.

    Arduino.CC Version 1.6.6

    Antworten
    1. Leo

      Hab es gefunden, das Skript für Tag 9 lief, da konnte man im Code sehen, dass dass www bei der Adresse weggelassen werden muss.

      Der Befehl bei Tag 8 muss somit heißen
      AT+CIPSTART=“TCP“,“example.com“,80

      dann klappt das Connect. Anschließen kommt noch ein Fehler (Bad Request), nehme an die manuellen Enter-Tastendrücke gehen irgendwie nicht sauber durch trotz der Einteilung „Senden NL + CR“ im seriellen Monitor.

      ———-

      AT+CIPSTART=“TCP“,“example.com“,80

      CONNECT

      OK
      AT+CIPSEND=40

      OK
      > GET / HTTP/1.1

      Host:www.example.com
      busy s…

      SEND OK

      +IPD,504:HTTP/1.1 400 Bad Request
      Content-Type: text/html
      Content-Length: 349
      Connection: close
      Date: Sun, 29 Nov 2015 19:11:44 GMT
      Server: ECSF (ewr/158A)

      400 – Bad Request

      400 – Bad Request

      CLOSED

      Antworten
  8. Markus

    Hallo,

    unter Win 7 bekomme ich keine Verbindung zum Board. Treiber installieren funktioniert zwar, aber im Geräte Manager wird mir die Schnittstelle mit gelbem Ausrufezeichen als „Andere Geräte – USB2.0-Serial“ angezeigt. Versuche ich hier die Treibersoftware manuell zu aktualisieren kommt die Fehlermeldung „USB2.0Serial konnte nicht installiert werden“. Unabhängig davon ob ich das Treiberverzeichnis von Arduino 1.6.4, 1.6.5 oder 1.6.6 wähle.

    Versuche ich per Konsole „dpinst-amd64.exe \SH“ auszuführen, dann werden mir 4 mögliche Treiber aufgelistet, aber alle haben den Status „Nicht benötigt (Kein zu aktualisierendes Gerät vorhanden)“.

    Das Gerät ist in diesem Moment angeschlossen. Blaue und rote LED leuchtet und ein offenes WLAN names NanoESP ist sichtbar.

    Hat jemand eine Idee? Wäre sehr dankbar

    Antworten
  9. Dietmar

    Hallo

    um diese unleserlichen Bytes zu ersetzen

    const byte thingPost[] PROGMEM = { 80, 79, 83, 84, 32, 42, 85, 82, 76, 42, };

    kann man auch schreiben:

    const byte postTemplate[] PROGMEM = „GET *URL*?node=*NODE*&pw=*PASS*&*SENSOR*=*VALUE* HTTP/1.1\nHost:“;

    //Dietmar

    Antworten
  10. Günter Krejci

    Ich habe das Programm von Tag 2 hochgeladen und folgendes festgestellt:

    1. SSID und Password sollten nicht in eckigen Klammern eingeschlossen sein, sonst klappt die Verbindung zum Internet nicht.

    2. obwohl die Verbindung klappt (PING ok), kommt trotzdem der Fehler „WLAN Connect OK“. Woran kann das liegen?

    if (esp8266.find(„OK“)) {
    Serial.println(„WLAN Connect OK“);
    }
    else
    {
    Serial.println(„WLAN Connect Error“);
    }

    Danke!

    Antworten
    1. Günter Krejci

      … sorry, natürlich kommmt der Fehler „WLAN Connect Error“ :-)

      Antworten
    2. Leo

      Bei meinem WLAN (Fritz!Box) musste ich unter WLAN – Funkkanal im 2,4 Frequenzband von 802.11n+b+g auf 802.11b+g umstellen, dann ging es.

      Antworten
  11. PPMoritz

    Hi!
    Könntest Du die Teileliste noch etwas vervollständigen? Conrad Atrikelnummern wären toll! Oder gleich welche vom China Shop (Gearbest, Banggood, etc)

    DANKE!

    Antworten
  12. Herbert Betz

    Grundsätzlich finde ich den IOT Kalender gelungen und interessant. Meine Anregungen:
    – im Tag 17 scheint mir die RGB-LED nicht in den Schaltplan eingezeichnet.
    – Tag 15: Widerstand hat dort nicht Platz wegen USB-Stecker -> vertauschen mit Draht darüber
    – bequem wäre, auf gleichen Schaltaufbau hinzuweisen (Tag 10 wie 14 und 23, Tag 15 wie 19 und 21). Das immer neue Zusammenstecken derselben Schaltung wäre vermeidbar …

    Antworten
  13. Stephan

    > gibt es eine Liste mit allen Bauteilen des Kalenders?

    Das würde mich auch interessieren.

    Da ich den Kalender eben bestellen wollte, dies aber nicht geht, da „ausverkauft“ wäre es ganz prima, wenn Ihr die Komplettliste der Einzelteile hier posten könntet ;-)

    Danke.

    Antworten
    1. Stephan

      Sorry, habe die Liste weiter oben gefunden, ist ja alles dabei ;-) Nur den NanoESP finde ich nirgends zu kaufen. Wenn da wer nen Tipp hätte. Danke.

      Antworten
      1. Michael
  14. Dieter

    Wollte gestern (22.11.15)das Board ausprobieren.
    Wird auf 2 Rechnern mit WinXP einmal erkannt und dann nie
    mehr wieder! Rechner 3 mit Win7 erkennt das Board gar nicht! Rechner 4 mit Win8.1 meldet Fehler USB Schnittstelle. Mehr Möglichkeiten habe ich Momentan nicht.

    Antworten
    1. fk (Beitrag Autor)

      Wurde der Treiber, bei den Rechner bei denen das Board erkannt wurde, richtig installiert? Haben Sie bereits eine Schaltung mit dem Board aufgebaut? Und können Sie, wenn das Board mit Strom versorgt ist, ein offenes WLAN mit dem Namen NanoESP sehen?

      Antworten
  15. Ra

    Also Tag3 bis 7 bzw. alle Versuche mit UDP und dem PacketSender bekomme ich nicht direkt zum laufen, da sich einfach nicht der Port 90 einstellen lässt.
    Es stellt sich immer auf den vorgegeben Wert 55005 zurück. Wenn man diesen Wert (bzw 55006) auch in den Sketches einstellt geht es auch meistens. Vielleicht ein OSX Problem!?

    Antworten
    1. leo

      Habe das gleiche Problem unter El Capitan. Habe es mal mit dem Systemtool probiert, sage er soll auf Port 90 hören (listen)
      nc -l 90
      nc: Permission denied

      Daher geht das auch nicht in PacketSender. Wie kann man den UDP Port im Sketch anpassen?

      Antworten
      1. fk (Beitrag Autor)

        Hi,
        man kann die Ports in den Ardunio Programmen in der Funktion configUDP anpassen. Die Zeile

        succes &= sendCom(„AT+CIPSTART=\“UDP\“,\“192.168.4.255\“,90,91″, „OK“);

        Muss dann durch

        succes &= sendCom(„AT+CIPSTART=\“UDP\“,\“192.168.4.255\“,5505,5506″, „OK“);

        ersetzt werden.

        Antworten
        1. Leo

          Danke fk, das hatte ich versucht, klappte nicht. Habe eben neu gestartet und noch einmal probiert. Jetzt funktioniert es, sowohl mit den beschriebenen 5505/5506, als auch mit den Defaultwerten 55005/55006. Habe dabei TCM deaktiviert, da der beim PacketSender per Default unter 55006 läuft.
          Der beschriebene Port 90/91 lässt sich unter OST nur mit root Rechten nutzen.

          Antworten
          1. Leo

            sorry meinte OS X.

        2. Leo

          Noch ein Tip für OS X El Capitan Benutzer. Bei mir waren in Arduino.cc unter Werkzeuge->Port alle Einträge ausgegraut. Ich konnte also nichts auf den Nano hochladen.

          Damit der Port erscheint, muss man dem ME Orion Treiber installieren (ist mit dem Artikel verlinkt (klicke auf Related download: Me Orion Driver). Dann sind einige systemnahe Kommandos ausführen. Ist ein wenig tricky, man muss z.B. in den Recovery-Modus Booten (Nach dem Booten und dem Sound CMD+R drücken) und dort aus dem Menu oben ein terminal öffnen und ein paar Kommandos ausführen. Am Ende wird gebootet und dann erscheint auch der Port
          /dev/cu.wchusbserial1410

          Die Prozedur ist beschrieben unter
          https://www.kiwi-electronics.eu/blog?journal_blog_post_id=7

          Antworten
          1. Ra

            Es gibt auch einen offiziellen Treiber unter den Kommentaren hier unter Treiber!

          2. Leo

            Ra schrieb „Es gibt auch einen offiziellen Treiber unter den Kommentaren hier unter Treiber!“

            Das ist somit noch besser. Habe es eben ausprobiert und es funktioniert. Im Menu oben den Punkt Treiber wählen, in den Kommentaren steht dann, dass ein signierter Treiber hier installiert werden kann
            http://blog.sengotta.net/signierter-mac-os-treiber-fuer-winchiphead-ch340-seriell-wandler/
            Sollte man wie ich bisher einen unlinierten Treiber benutzt haben, sollte man die Kernel extensions wieder anschalten. Dazu wieder in den Recovery Modus gehen, terminal, „csrutil enable“ absetzen, rebooten, und dann im terminal mit csrutil status überprüfen, hier sollte dann kommen System Integrity Protection status: enabled.

  16. Michael

    Speziell würden mich die genauen Typenbezeichnungen folgender Bauteile interessieren:
    IR-Sendediode
    IR-Empfänger
    NTC
    Fototransistor
    RGB-LED

    Danke.

    Antworten
  17. Michael

    Hallo,

    gibt es eine Liste mit allen Bauteilen des Kalenders?
    Danke.

    Antworten
  18. Bitbeißer

    Vielen Dank für die Programme.
    Ich konnte es nicht abwarten und habe bei der Umsetzung der Programme folgende Probleme gehabt, die nicht jeder neu suchen muss.
    Deshalb hier meine Abhilfe:

    Sketch Day10_TCPWeather
    Bricht beim kompilieren ab mit: ‚PASSWORD‘ was not declared in this scope ab!
    Fehlerbehebung: ändert am Anfang die Zeile
    #define PASSWORT „[Your Password]“
    in
    #define PASSWORD „[Your Password]“

    Sketch Day17_IRmodul
    Bricht beim kompilieren ab mit: ‚PASSWORT‘ was not declared in this scope ab!
    ändert in der bemängelten Zeile
    PASSWORT in PASSWORD
    Weiterhin passt das Fritzing Bild nicht zu den Deklarierungen im Quelltext.
    Lasst vom Day16 die RGB Led drin, und steckt dasIR Modul in D9, D8, D7
    dann klappts auch.

    Day22_ThinkSpeakTalkback
    LED an D9 leuchtet nicht
    Fehlerbehebung: ändert am Anfang die Zeile
    #define LED 6
    in
    #define LED 9
    dann leuchtet auch die Led.

    Viel Freude mit der Umsetzung
    Bitbeißer

    Antworten
    1. fk (Beitrag Autor)

      Vielen Dank für die Anmerkungen. Ich habe die betroffenen Programme verändert und eine neue Version zum Download bereitgestellt.

      Antworten
  19. Bernd Löpmeier

    Vielen Dank für die vorzeitige Bereitstellung der Programme.
    Ich bin leider auf ein kleines Problem bei den Programmen in Zusammenhang mit den Browser/Webserver gestossen z.B Tag 11 und Tag 12.
    Die Website kann im Safari-Browser auf eine Mac (OS El Capitan v. 10.11.1) nicht. Das Browserfenster bleibt leer. Die Schaltung der LED jedoch funktioniert, nur der Text wird nicht angezeigt. Ich hab den HTML Text in eine Datei kopiert und lokal geöffnet, das funktioniert. Auf einem Windows PC (IE) funktioniert auch die Anzeige. Wie bekomme ich die Seite auch auf dem Mac ans laufen? Danke und Grüße

    Antworten
    1. fk (Beitrag Autor)

      Ich hab selber kein Mac aber ich vermute einfach mal, dass der Browser eine einfache Textdarstellung nicht akzeptiert. Eine Möglichkeit wäre, den Text in ein gültiges HTML-Format zu bringen (Sprich mindestens am Anfang und am Ende. Ist allerdings bloße Theorie.
      Funktionieren die folgenden Programme?

      Antworten
      1. Bernd Löpmeier

        Die weiteren Programme mit den „ausgelagerten“ Websites funktionieren.

        Antworten
    2. Ra

      Safari braucht noch nen speziellen Header. Damit geht bei mir:
      String webpage = „HTTP/1.1 200 OK\n\nHello World!Open [IP]/LED to Toggle LED on D9“;

      Antworten
      1. Bernd Löpmeier

        Besten Dank, ich werde es probieren.

        Antworten
  20. Ra

    Super, vielen Dank!
    Bei Problemen gibt es so schonmal einige hilfreiche Hände ;)

    Antworten
  21. radbruch

    Danke :)

    Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.