Vor knapp 4 Jahren hatte ich mir einen eigenen USB Power Logger gebaut, welcher Spannung und Strom eines USB-Gerätes aufzeichnen, auf einem Display anzeigen und per Seriell an einen PC übertragen konnte. Praktische Sache, doch mit WLAN wäre das Ganze doch gleich viel portabler, oder? Also: Designen wir das damalige Projekt nochmal neu. Mit ESP32 für WLAN und einem INA219 statt dem damaligen ACS712 für die Strommessung.
Vor einiger Zeit hatte ich eine Platinen-Lötübung in Eulenform gebaut. Ein Ähnliches Lötkit mit freier Lizenz gab es vor einigen Jahren auf der bulgarischen Linux-Konferenz “TuxCon“: Das TuxCon Kitty. Besonders interessant: Diese Badge besitzt einen Mikrocontroller, welcher sich per USB programmieren lässt. Und das, obwohl der verwendete Controller eigentlich gar kein USB kann. Also ran an den Lötkolben – das will ich sehen.
Mittels PWM, bei Arduino erreichbar als “analogWrite”, lassen sich viele Aufgaben erledigen: LEDs dimmen, Motoren steuern oder analoge Spannungen ausgeben. Aber was hat das mit Frequenz, Tastverhältnis und Timern zu tun? In diesem Video schauen wir uns PWM von der einfachsten Anwendung bis hin zu den Timer-Registern eines ATMega328P mit Preloading an und wie man darüber eigene Anforderungen abdecken kann.
Inhalt
00:00 Intro
01:04 PWM mit delay() und digitalWrite()
02:07 Frequenz, Pulsweite und Durchschnittspannung
08:07 PWM mit analogWrite()
11:14 Wie funktioniert analogWrite()? Timer, Compare-Units und Prescaler.
Wenn man neue Firmware auf einen ESP8266 oder ESP32 bringen möchte ist das Prozedere ja eigentlich klar: USB ran, Upload klicken, warten. Wenn der ESP aber irgendwo eingebaut ist, dann kann USB schnell unpraktisch sein. Mit ArduinoOTA kann man alternativ direkt über WLAN eine neue Software installieren.
Um ESPs zu programmieren benötigt man einen USB-UART-Adapter und muss einige Pins beim Einschalten passend gegen VCC und/oder GND verbinden. Um das für ESP01-Module zu vereinfachen hatte ich mir vor einiger Zeit einen “ESP Programmer” gekauft, auf welchen man das Modul einfach Einstecken kann. Nur leider nicht Programmieren, denn für das korrekte halten der Pins gibt es keine Ansteuerelektronik – man muss die Pins selbst mit Pinzette o.Ä. richtig ziehen. Das geht auch besser, also ergänzen wir mal eine automatische Programmierfunktion.
Achso, hm, Gießen soll man die Pflanzen? Und dann auch noch selbst dran denken? Das gibt doch keinen. Also muss wohl irgendetwas her, dass mich daran erinnert den grünen Balkonbewohnern ab und an auch etwas frisches Nass zu beschaffen. Mit einem Bodefeuchtesensor sollte das Problem schnell erledigt sein.
Kameras frei in der Hand zu halten führt meist zu Wackeln. Eine Möglichkeit das in den Griff zu bekommen sind so genannte “Kamera-Gimbals”. Über Sensoren wird die Bewegung gemessen und mit Motoren versucht diese auszugleichen. Ein solches Gimbal flog für einen günstigen Preis auf dem Gebrauchtmarkt herum, also schauen wir mal, was das Gerät kann und am Ende wie man so etwas selbst bauen kann.
Um Zahlenwerte eingeben zu können ist eine Tastaturmatrix fast immer eine gute Wahl, jedoch stehen im Netz viele unterschiedliche Modelle zur Auswahl. Mechanische Tasten, Folie oder Touch? Multiplexed, Digital oder gar analog? Alle Typen und Techniken haben Ihre vor und Nachteile. Schauen wir mal, welche das sind.
Vor einiger Zeit hatte ich bei meiner Soundbox eine kleine Transistorschaltung gebastelt, welche dem genutzten ESP8266 nur dann Strom zuführt, wenn ein Taster gedrückt wurde. Im Anschluss kann der ESP seine Aufgaben erledigen und am Ende sich selbst den Strom wieder abschalten. Da so der Stromverbrauch deutlich geringer ist verbessert sich die Batterielaufzeit massiv. Diese Schaltung habe ich nun in eine Platine gegossen und erweitert. Mit einer RTC ist es nun zusätzlich zum manuellen Wecken auch möglich sich nach einer definierten Zeit wecken zu lassen um so z.B. auch ohne manuellen Trigger alle paar Stunden Präsenz und Akkuzustand übermitteln zu können. Der Verbrauch liegt mit ~10µA (0,01mA) deutlich unter den 1,3mA, welche ein unmodifizierter NodeMCU im Deep-Sleep erreicht.
Aktuell bin ich auf der Suche nach einem neuen Soundmodul für Arduino & Co. Mein in der Vergangenheit verwendetes JQ8400 ist zwar praktisch, aber durch den kleinen Speicher nur für kleinere Projekte zu gebrauchen. Das WTV020 verspricht hier Abhilfe: Dank Micro-SD-Slot können deutlich mehr Daten gespeichert werden. Leider aber mit einigen Eigenheiten, die für mich das Modul eher weniger nutzbar erscheinen lassen.