NodeMcu Lua ESP8266 ESP-12F WIFI

Arduino Clone

Bei Banggood gibt es gerade günstig einen Arduino Nano Clone mit WiFi Modul. Regulär weniger als 8 US Dollar. Vergünstigt jetzt gerade 3,99 US$ (bis 15. November 2017).

Arduino Nano Clone - Entwicklungsboard
NodeMcu Lua ESP8266 ESP-12F WIFI

Funktioniert das auch? Antwort: Ja. Die Boards, die bei mir angekommen sind, funktionieren auch. Man muss nur ein bisschen was vorbereiten, damit man mit den Boards auch arbeiten kann.

Treiber

Der günstige Preis kommt nicht daher, dass die Anbieter so menschenfreundlich sind. Es werden günstige und gut verfügbare Komponenten benutzt. Unter anderem ist für die serielle Kommunikation ein CH340 verbaut. Arduino nutzt meistens Serielle to TTL  Chips von FTDI. Vorteil, es wird besser bereits ab Window 7 unterstützt. Bei Windows 10 muss man für den CH340 keine Treiber installieren. Für ältere Windows Versionen schon. Den Treiber gibt es hier: http://en.doit.am/CH341SER.zip

Arduino IDE

Die Arduino IDE (1.8)  muss auch noch vorbereitet werden. Das ist bei allen Bords so, die nicht direkt von Arduino sind. Starte die Arduino IDE und unter Datei/Voreinstellungen gibt es ein Feld „Zusätzliche Boardverwalter-URLs:“. Dort muss folgedes eingetragen werden

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Sollte bereits ein Link in dem Feld stehen, kann man weitere Links durch ein Komma getrennt anfügen. Oder man klickt auf den kleinen Button rechts von dem Feld. In dem neuen Fenster kann man einzelne Links in eine separate Zeile schreiben.

Die Voreinstellungen werden nun noch mit dem OK Button geschlossen und die Arduino IDE einmal neu gestartet.

Ganz oben in der Liste unter „Werkzeuge/Board:“ gibt es den „Boardverwalter“. Dort bitte einmal drauf klicken. Es öffnet sich ein neues Fenster „Boardverwalter“. In dem Suchfeld „esp8266“ eingeben.  Es sollte dann ein Ergebnis „esp8266 by ESP8266 Community“ angezeigt werden. Dieses Paket muss einmal installiert werden.

Unter Werkzeuge/Board: gibt es nun eine Sektion mit „ESP8266 Modules“. Für mein Board musste ich hier „NodeMCU 1.0  (ESP12-E Module)“ auswählen. Jetzt nur noch den richtigen COM Port auswählen und man kann seine Programme auf das Board laden.

Das elektronische Schaf

Lange ist es her, seit ich mich um das elektronische Schaf gekümmert habe. Mit dem Unterboden war ich nicht wirklich zufrieden. Nun habe ich mich endlich mal an einen neuen Versuch gewagt.

links: neue Version, rechts: alte Version

 

Die Motoren sind nun um 5° nach unten geneigt. Das ergibt ein bisschen mehr Bodenfreiheit und die Drehungen sollten ein bisschen leichter gehen. Eine 10° Neigung müsste ich auch noch mal ausprobieren.

Um 5° geniegte Motoren auf allen Achsen

Da der Raum für den Motor zu eng war, ist beim Eindrücken des Motors das Gehäuse ein bisschen aufgeplatz (links zu sehen). Die Layerhafung ist bei diesem Versuch auch nicht so ganz gut. Gedruckt habe ich mit ABS.

Dafür war die Haftung am Druckbett zu gut.

Am Druckbett haftendes ABS

Obwohl die Maße 170 mm x 128 mm betragen hat sich keine einzige Ecke des  Modells vom Druckbett abgehoben. Leider haftete das Modell auch nach dem Abkühlen noch so stark am Druckbett, dass ich es nur mit Mühe runterbrechen konnte. Vor dem Drucken kippe ich ein wenig Aceton (Achtung gut lüften!) auf das Druckbett und schwenke ein paar mal etwas ABS darin herum. Das ABS löst sich im Aceton etwas auf und klebt dann nach dem Trocknen am Druckbett fest. Die Schicht ist dabei kaum zu sehen, aber es reicht vollkommen aus, um als Haftgrund zu dienen.

Ich werde nachher noch mal einen Druck starten. Mit veränderter Motoraufnahme (etwas weiter), dickeren Wänden (2mm auf 4 mm) und leicht erhöhter Drucktemperatur (234°C auf 237°C). Druckzeit ca. 6 Stunden.

DEFCON 1 – Bitte nicht stören

DEFCON oder auch Verteidigunsbereitschaftszustand spielt nicht nur beim Militär eine Rolle.

Auf der Arbeit ist es völlig normal, dass man immer mal wieder mit seinen Kollegen kommunizieren „muss“. Klar gibt es Firmen, in denen jeder isoliert für sich arbeitet. Dort ist die Kommunikation untereinander auf das nötigste beschränkt. „Nicht optionale gesellschaftliche Konventionen“, wie es Sheldon in The Big Bang Theory nennt.

Der normale Alltag besteht aber eher darin, dass man sich selber immer mal wieder an Kollegen wendet, um Informationen (Feedback, Lösungen, etc.) zu erhalten oder eben Kollegen kommen zu einem selber und haben Fragen.

Soweit kein Problem. Selbst „Tratschen“ fördert die Produktivität. Dabei geht es nicht darum, dass man Gerüchte in die Welt setzt, sondern dass man einfach mal seinen Platz verlässt und sozial mit anderen interagiert. Laut Bildschirmarbeitsverordnung ist eine regelmäßige Abwechslung bei Bildschirmarbeiten sogar vorgesehen. Diese Abwechslung macht den Kopf wieder frei und entspannt. Die Arbeit fällt dann wieder etwas leichter.

Wenn dann aber mal Stress aufkommt oder man sich auf eine komplizierte Aufgabe konzentrieren möchte, sind Störungen eher unwillkommen. Gerade bei komplizierten Aufgaben kostet jede Störung viel Zeit. Nur woher sollen die Kollegen wissen, dass man selber gerade nicht gestört werden möchte? Man kann ein Fähnchen an den Monitor klemmen. Das wäre eine simple und effektive Möglichkeit. Man muss die Fähnchen nur einmal den Kollegen mitteilen.

Mir gefallen technische Spielerein. In Anlehung an das DEFCON der USA habe ich eine 5 farbige Ampel gebaut. Dazu dann noch 3 Taster. Ein Taster, um die Gefahrenstufe zu erhöhen, der zweite, um die Gefahrenstufe zu senken und der dritte Taster schaltet die Ampel in den stromsparmodus (Akkubetrieb oder USB möglich) oder weckt die Ampel eben aus diesem.

DEFCON Ampel
DEFCON Ampel

Das Gehäuse ist nur ein erster Test. Es hat sich gleich herausgestellt, dass die Tasten am besten von oben drückbar sein sollte. So von der Seite gedrückt fällt der 20 cm hohe Turm zu leicht um.

Das Ganze wird über einen kleinen Arduino Mini Pro gesteuert. Hier ist der Sketch:

In dem Sketch sind ein paar Sachen vom SleepMode bewusst auskommentiert. Der auskommentierte Teil gehört zum ATtiny. Dieser funktioniert prinzipiell auch beim normalen Arduino, muss aber ein klein wenig angepasst werden. Die Anpassungen habe ich mir (erst einmal) erspart und die einfache Methode genutzt.

Als nächstes wird der Code ein wenig aufgeräumt. Dann kommt das Feature hinzu, dass sich die Ampel, stündlich seit der letzten Benutzung eine Gefahrenstufe herunter geht. So sieht man dann auch selber, wann eine Stunde um ist und man sich selber mal eine kleine Abwechslung gönnen muss.

You SLS – SLS 3D Drucker zum Nachbauen

Wer Lust und Zeit hat, kann sich seinen eigenen SLS 3D Drucker zusammenbauen.  hat angefangen dazu auf Instructables eine Anleitung zu schreiben.

You-SLS

18-year-old German student Lukas Hoppe has therefore spent the last year or so working on an open-source SLS 3D printer, and through a successful Indiegogo campaign, he now has the funds to complete and share his YOU-SLS machine.

Bei IndieGoGo hat Andreas auch eine Kampagne gestartet, um seine Maschine weiter zu verbessern, Einen 3D Drucker können die Unterstützer hierbei nicht erwerben. Es geht hier rein um Unterstützung bei der Entwicklung.

Insgesamt soll der SLS 3D Drucker an Material um die 2200 Euro kosten.

Hundeblinklicht Version 6

Mit dem Programm für das Blinklicht bin ich soweit zufrieden. Das Gehäuse lässt aber weiterhin Platz für Verbesserungen. Vor allem die Größe soll reduziert werden. Dies ist mir über die verscheidenen Versionen auch schon sehr gut gelaungen. Gerade der Sprung vom Arduino Mino Pro zum ATtiny und verkleinertem Akku hat das Gehäuse sehr schrumpfen lassen.

Hundeblinklicht
Altes Gehäuse mit dem Arduino Mini und großem Akku.

Zuerst hatte ich einen Arduino Mini Pro als Hirn für das Blinklicht benutzt. Der Arduino war überdimensioniert für die einfache Blinkaufgabe und hat auch zu viel Energie verbraucht.

Hundeblinklicht
Hundeblinklicht mit ATtiny und großem Akku.

Ein kleiner ATtiny ist völlig ausreichend und lässt das Gehäuse als auch den Stromverbauch kleiner werden.

Hundeblinklicht
Dies ist die Version, die gerade im Feld getestet wird.

Durch den verkleinerten Stromverbraucht konnte auch der Akku stark verkleinert werden. Ich verwende nun einen 3,7V 110 mAH Lithium Akku. Im Blinkbetrieb hat dieser Akku ca 12 Stunden durchgehalten.

Hundeblinklicht im Größenvergleich
Hundeblinklicht im Größenvergleich

Viel kleiner bekomme ich das Gehäuse nun nicht mehr. Der hintere schmale Teil wird vom Akku ausgefüllt und vorne sitzen der ATiny mit den ganzen Kablen und auch der Taster.

Jetzt muss ich mir immer noch eine gute Möglichkeit einfallen lassen, das Gehäuse bequem am Hundegeschirr zu befestigen. Bisher klebe ich den Blinki einfach mit Tesafilm an oder klette ein Klettband herum.

Für mich hilfreiche Links zum ATtiny

Ich benutze gerne den Arduino in seinen verschiedenen Formen. Alle Anschlüsse sind leicht erreichbar (steckbar) und die Programmierung mit der Arduino IDE ist für gewöhnlich auch ein Kinderspiel. Der Nachteil ist, dass so ein Arduino, auch in den kleinen Varianten, immer noch recht groß ist und auch viel Strom verbraucht. Also musste mal was Neues her. Am besten sollte es auch noch weitest gehend kompatibel mit dem Arduino sein. Da bin ich dann auch den ATtiny gestoßen. Immerhin werden auf dem Arduino auch die Chips von Atmel verbaut. Nur diesmal sollte es eben ein ATtiny statt des ATmega sein.

Den ATtiny gibt es in verschiedenen Ausführungen. Ich habe mir zum Testen einen ATtiny12, ATtiny45 und ATtiny85 besorgt. Jeweils in der Duchsteckversion mit 8 Beinchen. Von Außen sind alle Versionen gleich. Nur im Innern ergeben sich kleine Unterschiede. So hat beispielsweise der ATiny85 drei PWM Ausgänge und der ATtiny 45 nur 2.

Für mein Hundeblinklicht ist es wichtig, dass die Elektronik sparsam mit der Energie umgeht. Zusätzlich habe ich noch nach einer einfachen Möglichkeit gesucht, die Elektronik mit einem einfachen Taster statt eines Schalter abzuschalten. Der ATtiny funktioniert auch ohne Spannungsstabilisierung. 1,8 V bis 5,5 V Betriebsspannung benötigt der kleine Chip. Ideal für einen 3,7 V Lithium-Akku, dessen Spannung von 4,2 V bis ca 3,6 V geht.

Ich fassen einmal kurz meine erreichten Vorteile des ATtiny gegenüber des Arduinos auf.

  • Einsparung des Schalters zum Abschalten der Elektronik
  • Wegfallen des DC-DC Spannungswandlers von 3,7 V auf 5 V
  • ATtiny ist bedeutend kleiner als ein ganzes Arduino Mini Bord
  • ATtiny ist günstiger
  • ATtiny ist stromsparender

 

Unten: Gehäuse mit Arduino Mini, Oben: ATtiny Das aktuelle Gehäuse ist sogar noch einmal etwas kleiner geworden.

Die Größeneinsparung ist schon enorm. Aber auch die Kosteneinsparung ist sehr gut. So ein Arduino Mini (Klon) kostet ca. 8 Euro, vielleicht auch nur 5 Euro. Der ATtiny nur um die 1 Euro. Kostenintensiv ist auch der DC-DC Wandler. Der von mir verwendete Pololu Wandler kostet um die 4 US$. Der eingesparte Schalter kostet nur ein par Cent. Aber man spart auch noch Platz im Gehäuse 🙂

Nun ist der ATtiny da. Wie soll der nun programmiert werden. Ein dafür geeigneten „Flasher“ habe ich mir nicht gekauft. Mit einem Arduino soll das Ganze auch funktionieren. Also mal kurz rumgesucht und folgenden Link (neben anderen) gefunden: http://www.frag-duino.de/index.php/maker-faq/37-atmel-attiny-85-mit-arduino-arduinoisp-flashen-und-programmieren Dort wird beschrieben, was man machen muss, damit man mit Hilfe eines Arduinos den kleinen ATtiny mit Daten füttern kann. Zuerst hatte ich es mit einem Arduino Leonardo versucht, aber damit klappte es nicht. Mit einem Arduino Mega funktionierte es dann.

Danach habe ich nach einer Möglichkeit gesucht, den ATtiny in einen Energiesparmodus zu versetzten. Auch hier gibt es diverse Programmbeispiele. Angefangen habe ich mit diesem hier: http://www.arduino-hausautomation.de/2014/emils-ampel-attiny45-im-tiefschlaf/ Eine kleine Ampel wird per Knopfdruck eingeschaltet. Nach einer bestimmten Zeit wird der ATtiny wieder schlafen geschickt. Den dort abgebildeten Code musste ich noch ein bisshen anpassen, damit der ATtiny per Knopfdruck aufgeweckt und auch wieder schlafen geschickt werden kann.

 

 

Pinbelegung ATTiny
Pinbelegung ATtiny 45 – Seite 2

Mega      Duem
D53       Reset (SS)
D51       D11 (MOSI)
D50       D12 (MISO)
D52       D13 (SCK)
Gnd       Gnd
+5         +5

Auch dieser Link war hilfreich: http://playground.boxtec.ch/doku.php/arduino/attiny Hier werden ein paar der ATtiny Typen verglichen.

 

Um den Code auf den jetzigen Stand zu bringen, musste ich einiges lesen. Auch das anfangs kryptisch wirkende Datenblatt des ATtiny hat sich mir ein wenig geöffnet. Hier ist noch ein Quellcode zu finden, in dem die Verwendung der Register ausführlich beschrieben ist: http://matt16060936.blogspot.de/2012/04/attiny-pwm.html
Zu guter Letzt habe ich mich noch mit den Interrupts auseinander gesetzt. http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html

Meine Methode „lauflicht()“ ist so gestaltet, dass die ohne die Funktion delay auskommt. So war es möglich, schnell auf einen Tastendruck zu reagieren. Bei Verwendung von delay hätte der Taster während des delays nicht reagiert. Mittlerweile müsste ich soweit sein, dass ich den Taster komplett als Interrupt definiere. Dann müsste der ATtiny auch während der Wartephase reagieren. Das probiere ich später noch mal aus.

Hundeblinklicht V5 – Nachtrag

Im letzten Code gab es ein paar Unstimmigkeiten. Beim Testen habe ich festgestellt, dass durch die Schaltung selbst im Power Down Modus immer noch etwas über 1 mA fließt. Der Grund dafür war ganz einfach. Statt in den Power Down Modus zu gehen, wurden einfach nur die LEDs ausgeschaltet. Von Außen macht das keinen Unterschied, aber der Stromverbraucht ist schon enorm unterschiedlich.

Den Code habe ich nun etwas geändert. Leider funktioniert mein Code nun nicht mehr mit dem ATTiny45. Statt dessen habe ich nun den ATTiny85 eingebaut. Der Stromverbrauch im Power Down Modus liegt nun bei 0,1 µA. Diesen Wert zeigt jedenfalls mein Messgerät an.

Die Stromsparfunktion müsste eigentlich auch mit dem ATTiny45 funktionieren. Vielleicht finde ich noch heraus, was da schief läuft.

Hundeblinklicht, Version 5 – es wird Tiny

Der kleine Arduino, den ich bisher in den Hundeblinklichtern verbaut habe, war einfach zu groß und auch zu teuer. Ein kleiner ATTiny45 reicht für das bisschen Blinken völlig aus. Man könnte die Funktion natürlich auch als diskrete Schaltung aufbauen. Nachteil ist nur, dass diese Schaltung mit meinen hier vorhandenen Bauteilen alles andere als stromsparend ist. Der kleine ATTiny hingegen ist im Betrieb schon stromsparend und kann sogar noch in einen Schlafmodus versetzt werden. Somit erspare ich mir einen Schalter, mit dem ich die Stromzufuhr unterbechen muss. Der bereits vorhandene Taster schaltet nun zwischen den verschiedenen Modi durch. 1. Blinkmodus mit sehr hellen Blinkimpulsen. 2. Dauerlicht, das nicht ganz so hell ist, damit es nicht blendet. 3. Aus: der ATTiny wird in den Schlafmodus versetzt. Im Schlafmodus soll der Stromverbrauch so gering sein, so dass der verwendete Akku sehr lange hält. Laut dieser Seite http://www.mikrocontroller.net/articles/Sleep_Mode#Power_Down_Mode fließen nur um die 0,3 µA. Mein Messgerät zeigt in diesem Modus allerdings immer noch 1 mA an. Leider bin ich mir auch nicht so ganz sicher, ob ich den ATTiny richtig programmiert habe. Die Funktion für den Schlafmodus (Methode goToSleep)habe ich aus dieser Seite entnommen: http://www.arduino-hausautomation.de/2014/emils-ampel-attiny45-im-tiefschlaf
Vielleicht mache ich da was falsch. Viel Ahnung habe ich noch nicht.

Blinklicht für Hunde
Links Version 4, Rechts Version 5

 

 

Blinklicht für Hunde
Links Version 4, Rechts Version 5

Ich bin aber schon mal froh, dass der Schalter nun weg ist. Dieser war schwierig vor Wasser zu schützen.

Blinklicht für Hunde
Dank des neuen Innenlebens ist die neue Version um einiges kleiner geworden

Der Tester liegt im Innern des Gehäuses und kann duch Eindrücken des Gehäusedeckels (0,4 mm dickes Nylon) betätigt werden.

Blinklicht für Hunde
Hundeblinklicht, vorne: neue Version

Die seitlichen Arme habe ich nun auch wieder durch einen fertigen Schlauch ersetzt. Viel stabiler und transparenter. Es sind noch Pins am ATTiny frei. Da könnte ich noch eine Akkuanzeige einbauen. Wenn die Spannung des Akkus auf einen bestimmten Wert absinkt, fängt eine rote LED an zu blinken.

Mehr ist besser – die Elektronik ist nun auf 24 V umgestellt

Da ich nun die RAPPS128 Schrittmotortreiber bei mir eingebaut habe und diese Treiber keine (einfache) separate Spannungsverorgung für die Schrittmotoren haben, habe ich endlich mal meine gesamte Elektronik für den 3D Drucker von 12 V auf 24 V umgestellt. Einfach so mehr Spannung anlegen darf mannatürlich nicht. Als erstes wäre da der Arduino DUE, der über die Eingangsspannung des RADDS mit Strom versorgt wird. 24 V ist für den Arduino DUE zuviel. Laut Datenblatt soll man im Dauerbetrieb nicht über 12 V gehen. Der Entwickler des RADDS schlägt vor, die Diode D1, über die der DUE die Spannung bekommt, durch 3 Zenerdioden mit jeweils 4 V zu ersetzen. Ja, kann man machen, aber wirklich schön ist das nicht. Ich habe die Diode D1 nun einfach durch einen Schaltregler ersetzt. Dieser wandelt die 24 V des RADDS in 9 V für den DUE um. Das funktioniert wunderbar und es ist sogar weniger Lötarbeit als 3 Zenerdioden einzulöten.

RADDS 1.1 mit Schaltregler-Erweiterung
RADDS 1.1 mit Schaltregler-Erweiterung (auf dem Bild sind die RAPS128 noch nicht zu sehen)

Zum Einsatz kommt hier ein kleiner Schaltregler von Traco Power. Diese sind nicht ganz billig. Jedoch hatte ich den noch von meinem Microslicer übrig.

Als nächstes machen die Lüfter dann noch Probleme. Meine Lüfter sind für 12 V ausgelegt. Zum Glück sind die Lüfter recht robust und könnten sogar eine Zeit lang an 24 V betrieben werden. Nur leidet dann die Lebensdauer der Lüfter extrem (Verschleiß der Lager und Überhitzung der Elektronik). Mein Hotend-Lüfter wird mit einer PWM-Steuerung angesprochen. In der Firmware (Repetier Firmware) kann man einstellen, wie hoch die maximale Einschaltdauer des PWM-Signals sein soll. Ich habe den Wert von 255 (Maximum) auf 120 runtergesetzt. Eigentlich wäre ein Wert um die 70 richtiger gewesen, denn bei verdoppelter (Gleich-)Spannung (12 V auf 24 V), verdoppelt sich auch der Strom durch einen (ohmschen) Verbraucher und sich somit die Leitung quadratisch erhöht. P = U x I;  I = U / R => P = U² / R. Statt 255 durch 2 zu teilen, müsste man durch 4 (2²) teilen, um auf die gleiche mittlere Leistung des PWM-Signals zu kommen. Der Lüfter fängt bei max PWM 60 nur an zu pfeifen, bei 120 ist der Lüfter immer noch schön ruhig.

Als Letztes ist da noch mein Hotend selber, bzw dessen Heizelement. Dieses ist für 12 V ausgelegt. Da dieses Heizelement nur ein einfacher Widerstand ist, ist diesem erst einmal die Spannung egal, die an ihm anliegt. An 12 V hat das Heizelement eine Leistung von ca 60 W. Der Widerstand beträgt somit grob 0,5 Ohm. Wird die Spannung nun verdoppelt, hat das Heizelement eine Leistung von ca 244 Watt. Das ist mehr, als mein großes Heizbett an 24 V hat. Das kleine Heizelement am Hotend wird mit dieser Leitung sehr schnell, sehr heiß. Versehentlich hatte ich das PWM-Siganl nicht gedrosselt. Das Heizelement war innerhalb weniger Sekunden auf über 380°C aufgeheizt. Ist ja super, nur 1 oder 2 Sekunden warten, bis das Hotend die benötigte Drucktemperatur erreicht hat 🙂 Nur leider schafft es die Regelung nicht, diese große Leistung zu bändigen. Also muss auch hier der maximale PWM Wert gesenkt werden. Nach einigem Rumtesten habe ich den Wert dann von 255 auf 40 gesenkt. Bei diesem Wert ist die Temepraturregelung nun stabil genug, um wieder drucken zu können.

Info: Ab RADDS Version 1.2 ist schon ein Schaltregler verbaut und man kann den DUE ohne eigenen Schaltregler über das RADDS mit 24 V versorgen.