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:
Durch anpassen der URL kann die Temperatur einer Stadt abgefragt werden. Als Beispiel für Essen:
www.temp.fkainka.de/?city=essen
Bauteileliste:
– 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)
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.
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!
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();
}
}
}
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?
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.
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
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 „.
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.
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
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
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
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
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!
… sorry, natürlich kommmt der Fehler „WLAN Connect Error“ :-)
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.
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!
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 …
> 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.
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.
Gibt’s bei Conrad:
https://www.conrad.de/de/c-control-iot-wifi-board-1387029.html
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.
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?
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!?
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?
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.
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.
sorry meinte OS X.
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
Es gibt auch einen offiziellen Treiber unter den Kommentaren hier unter Treiber!
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.
Speziell würden mich die genauen Typenbezeichnungen folgender Bauteile interessieren:
IR-Sendediode
IR-Empfänger
NTC
Fototransistor
RGB-LED
Danke.
Hallo,
gibt es eine Liste mit allen Bauteilen des Kalenders?
Danke.
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
Vielen Dank für die Anmerkungen. Ich habe die betroffenen Programme verändert und eine neue Version zum Download bereitgestellt.
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
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?
Die weiteren Programme mit den „ausgelagerten“ Websites funktionieren.
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“;
Besten Dank, ich werde es probieren.
Super, vielen Dank!
Bei Problemen gibt es so schonmal einige hilfreiche Hände ;)
Danke :)