westerholt.me

Category: Hardware

Seit kurzem gibt es den als Nachfolger des ESP8266 verkauften Chip ESP32. Dieser bietet Unterstützung für WLAN (nichts neues) und außerdem Bluetooth. Das ist gerade für Anwendungen interessant, die man direkt vom Smartphone steuern möchte ohne vorher sein WLAN umzukonfigurieren. Außerdem dürfte Bluetooth LE Stromsparender sein als einen WLAN Server zu betreiben.

Leider ist der Chip noch nicht überall verfügbar. Und gerade wenn man in Fernost bestellt, muss man aufpassen ob die schon liefern können (und ob es Original ist 🙂 ) wkwjsog. Ich werde mir das auf jeden Fall einmal genauer anschauen.

Weitere Informationen gibt es auf der Homepage des Herstellers Espressif

ESP-01 und DeepSleep

Bei einer meiner Basteleien habe ich mich mit dem Strombedarf des ESP8266 in der Bauform ESP-01 beschäftigt. Im normalen Betrieb verbraucht dieser etwa 150 mA mit Spitzen bis 210 mA. Für den Betrieb am Kabel ist das sparsam genug. Ich wollte jedoch lieber einen Sensor „off the grid“ (also mit Batterie) betreiben, und da ist das leider irre viel. Zum Vergleich: Eine normale 9V Batterie hat nur etwa 500 mAh. Dann wäre nach wenigen Stunden bereits die Batterie leer.

Bei einem Sensor, der nur alle 15 Minuten einen Wert misst und über WLAN überträgt, würde der Chip die meiste Zeit gar nichts zu tun haben. In dieser Zeit könnte er also problemlos schlafen und Strom sparen. Das lässt sich in der Theorie auch leicht bewerkstelligen, denn der ESP8266 unterstützt verschiedene Sleep Modes. Der für mich interessante war der DeepSleep. Dabei wird wirklich alles abgeschaltet, das heißt dann aber auch, dass nach dem Aufwachen erst wieder eine WLAN Verbindung hergestellt werden muss, was eine gewisse Zeit in Anspruch nimmt und daher auch wieder Energie kostet. Bei sehr kurzen Schlafzyklen würde sich das irgendwann nicht mehr lohnen.

Den Deep Sleep kann man einfach über ESP.deepSleep(sleepTime * 1000000) aktivieren. sleepTime sind hier die Sekunden. Das ganze geht auch über das AT Command AT+GSLP=x Millisekunden.

Nach Ablauf der Zeit wird über den GPIO16 der Trigger zum Aufwachen gesendet. Und da liegt das Problem. Beim ESP-01 ist dieser PIN nicht verbunden. Dieser müsste mit dem Reset (RST) PIN verbunden sein, damit der ESP-01 nach dem Ablauf der Sleep Time resettet wird. Das ganze kann man zum Glück fixen. Dazu muss vom ESP8266 Modul der GPIO16 mit dem RST Pin Verbunden werden:

Fix für den ESP8266 Deep Sleep

Fix für den ESP8266 Deep Sleep

Das ganze ist etwas fummelig, aber machbar. Für etwas komplexere Projekte würde ich (seit dem ich das nun weiß :) ) jedoch lieber zum ESP-12 greifen. Der hat auch den Vorteil, dass dort mehr GPIOs nutzbar sind. Und GPIO16 ist dort auch schon herausgeführt, sodass man sich diesen Hack sparen kann. Allerdings ist der ESP-12 auch ein klein wenig teurer. Es ist also letztlich immer eine Abwägungssache.

 

WLAN für Bastelprojekte mit dem ESP8266

Ich habe vor einiger Zeit bereits über den fantastischen Funkchip nRF24L01 geschrieben, mit dem auf einfache (und sehr günstige) Art und Weise die eigenen Hobbyprojekte über Funk vernetzt werden können. Daran hat sich auch nichts geändert, allerdings gab es für mich zwei Gründe nun doch einen anderen Chip zu verwenden.

Auch wenn es sich meistens nicht um besonders sensible Daten handelt, hätte ich dennoch gerne eine verschlüsselte Funkübertragung für manche Sachen. Das wäre mit dem nRF24L01+ nicht so einfach zu lösen und außerdem gibt es ja bereits auch verschlüsselte Funkstandards. Der andere Punkt ist, dass ich mit dem nRF24L01 immer auch einen Empfänger irgendwo anstöpseln muss, damit die Daten von einem leistungsfähigeren Server verarbeitet werden können.

Beide Probleme löste für mich das WLAN Modul ESP8266. Es unterstützt das normale WLAN Protokoll, kommuniziert also direkt mit meinem WPA2 verschlüsselten WLAN Netz und braucht daher auch keinen gesonderten Empfänger, da es über den ohnehin vorhandenen WLAN Router direkt z.B. eine REST API im Internet oder Heimnetz aufrufen kann.

Das ESP8266 Modul gibt es als fertigen Chip für etwa 2 € aus dem fernen Osten. Die Chips haben eigene Bezeichnungen. So ist der ESP-01 in der gleichen „Bauform“ wie der nRF24L01 aufgebaut. ESP-12 ist ein Chip, der mehr GPIO des Moduls über PINs nach außen führt und daher eine breitere Einsatzmöglichkeit bietet.

Nach einer kurzen Eingewöhnung kann ich behaupten, der ESP8266 ist mein neuer Lieblings-Hobby-Funkchip :)

Ich schreibe Neo-Layout

Als ich mit dem Studium angefangen habe, erfuhr nach kurzer Zeit von dem Neo-Layout. Ich dachte mir damals, das es die Gelegenheit ist endlich ein richtiges Zehnfingersystem zu lernen und dazu noch auf ein ergonomisches Tastaturlayout umzusteigen. Nachdem ich mir die ganzen Pro’s und Con’s durchgelesen habe und auch Dvorak schließlich ausgeschlossen hatte, hab ich es getan. :)

Die ersten Wochen waren furchtbar. Ich fühlte mich wieder wie ein kleines Kind, weil ich jedes verdammte Zeichen suchen musste. Aber im Nachhinein betrachtet muss ich sagen, es hat sich gelohnt!

Der Vorteil von Neo ist, dass die am meisten benutzten Zeichen im Zentrum der Tastatur auf der mittleren Reihe liegen. Dadurch muss man die Finger viel weniger bewegen und das spart letztlich Zeit. Was ich als Programmierer noch ziemlich cool finde: Es gibt verschiedene Ebenen (Caps-Lock hat einen Nutzen, Yay!!) und so kann man auch ziemlich komfortabel die ganzen Sonderzeichen erreichen, die man so beim coden braucht. Ziemlich Cool!

Die Heatmap zeigt die Verteilung eines Textes auf Neo-Layout.

Heatmap Neo-Layout

Keyboard heatmap for German NEO“ von PudelgedudelEigenes Werk. Lizenziert unter CC BY-SA 3.0 über Wikimedia Commons.

 

Wenn ich jetzt die Neugier geweckt habe, schaut euch einfach mal auf der offiziellen Seite um: http://neo-layout.org

Ach und noch ein Tipp: Nutzt eure QWERTY Tastatur weiter, die Beschriftung braucht man für das 10 Fingersystem nicht und auf Arbeit oder an Laptops hat man auch niiieee eine Neo Beschriftung.

Hack on! :)

nRF24L01+ Modul

Für wenige Euros bekommt man das nRF24L01+ Modul von Nordic Semiconductor. Dieses eignet sich hervorragend für einfache Funkübertragungen in Bastelprojekten. Für die Verwendung sind zwei Dinge zu beachten, ansonsten kann das ziemlich nervig und Zeitraubend werden.

1. Richtig Verkabeln :)
Für den Preis war es wohl nicht möglich die Pinbelegung mit auf die Platine zu drucken. Einzig den GND Pin kann man so erkennen. Der Rest wird angeschlossen wie im folgenden Foto gekennzeichnet.

Grafik zur Verdeutlichung der Pinbelegung

2. 10µF Elko verwenden
Wenn der nRF24L01+ mit einem Arduino verwendet wird, reicht der Strom nicht für die Spitzen beim Senden. Die Folge ist eine äußerst geringe Reichweite oder gar keine Reichweite. Zwischen VCC und GND des nRF24L01+ muss ein Kondensator parallel geschaltet werden um die Stromspitzen auszugleichen. 10µF funktionierten bei mir immer sehr gut.

Vielleicht ersparen die Hinweise dem ein oder anderen etwas Zeit und Nerven :)

P.S.: Den nRF24L01+ nur an 3.3V betreiben, nicht 5V!

Copyright © 2021 westerholt.me

Up ↑