Hallo,
Ich habe gehört das sich in Merseburg am Fußgängerüberweg am Döner im Zentrum leider hin und wieder Asylbewerber vor Autos werfen, um bewusst angefahren zu werden. Ich habe absolut nichts gegen Asylbewerber aber die Sachverhalte sind dort polizeilich bekannt. Nun möchte ich mir eine Dashcam in mein Auto hängen. So eine Dashcam kann ja auch in anderen Situationen gut sein wenn ein Unfall ist und der schuldige seine Schuld abstreitet. Ich weis nur nicht so richte ob das Sinn macht, weil man ja nicht einfach öffentliche Bereiche Videoüberwachen darf. Da gibt es ja dieses komische Datenschutzgesetz. Es wäre ja sinnlos wenn ich mir eine Dashcam in das Auto hänge und das Video vom Richter zum Beispiel nicht erkannt wird. Was sagt ihr dazu ? Was sind eure Erfahrungen ? Werden Dashcam Videos von der Polizei und vom Richter anerkannt ?
Problem:
Wenn man einen Barcode-Scanner besitzt, der eine Tastaureingabe emuliert und man zusätzlich aber auch ein oder mehrere Eingabefelder für andere Daten haben will, so ist es schwierig die Eingabe von Barcode-Scanner nur in dem dafür vorgesehenen Eingabefeld einzutragen. Normalerweise wird der Barcode einfach als Tastatureingabe gesendet und landet somit in dem Eingabefeld, das gerade den Eingabefokus besitzt.
Lösung:
Es gibt eine Möglichkeit, die Eingabe vom Barcode-Scanner zu erkennen. Dafür muss man das InputDevice registrieren (der DeviceName dient dabei der Unterscheidung).
Mein Script habe ich ausführlich kommentiert, sodass hoffentlich verständlich wird, wie man sein eigenes Script anpassen muss, um diese Lösung verwenden zu können.
Bei AutoIt-Spritpreis handelt es sich um ein Programm, dass die aktuellen Spritpreise (E5, E10 und Diesel) einer, vom Benutzer ausgewählten, Tankstelle anzeigt.
Die Preise werden alle 10 Minuten von "www.tankerkoenig.de" abgefragt und im Programmfenster angezeigt.
Die gewünschte Tankstelle kann in einer Umkreissuche ermittelt werden:
Eingegeben wird der Ort (evtl. plus Straße) und der Suchradius und dann wird mit Hilfe von OpenStreetMap Längen-/Breitengrad ermittelt. Mit diesen Daten wird dann bei "www.tankerkoenig.de" eine Umkreissuche durchgeführt. So kann man die gewünschte Tankstelle auswählen.
So ein NeoPixel-Ring mit 60 LEDs (WS2812) eignet sich ja sehr gut zum basteln einer Uhr. Das wurde ja auch schon diverse Male gemacht. Ich wollte aber nichts nachbauen, sondern sie komplett neu bauen.
Meine NeoPixelClock besteht aus dem NeoPixel-Ring, einer 8fach 7-Segment-Anzeige (mit MAX7219) zur Anzeige des Datums (dd.mm.jjjj), einem Luxmeter (BH1750) zum regeln der Helligkeit, sowie einem Wemos D1 mini als zentralen Microcontroller.
Eingebaut habe ich das Ganze in ein Uhrengehäuse, bei dem ich die Zeiger und das Uhrwerk ausgebaut habe.
Der Durchmesser des Gehäuses von 25cm und das große Ziffernblatt passt ziemlich gut zu dem NeoPixel-Ring und dort, wo vorher das Uhrwerk drin war, kann man gut den Wemos D1 mini unterbringen.
Hier mal zwei Bilder von der fertigen Uhr:
In echt sieht die Uhr cooler aus. Das kann man auf dem Foto nicht so gut einfangen. Ich musste ziemlich abblenden, damit die LEDs das nicht überstrahlen und da macht mein Smartphone keine so guten Bilder.
Die Stunden werden mit drei LEDs dargestellt, die vormittags (0-11 Uhr) in Blau und nachmittags (12-23 Uhr) in Lila leuchten. Die Minuten leuchten in Grün und die Sekunden in Rot. Außerdem gibt es noch Stundenmarkierungen, die in Weiß leuchten (dunkler als die anderen LEDs).
In der Mitte befindet sich die 8fach 7-Segment-Anzeige mit dem Datum (in Rot) und darunter kann man den BH1750 erkennen, der die Helligkeit ermittelt und so die Helligkeit der Anzeigen entsprechend regelt.
Der Wemos kann per WPS-Button ins WLAN befördert werden und holt sich dann per NTP das aktuelle Datum und die aktuelle Uhrzeit, sodass die Uhr immer sekundengenau geht.
Außerdem läuft noch ein kleiner HTTP-Server, der eine Infoseite ausliefert und mit dem man den Sylvester-Countdown als Test starten kann.
Der Sylvester-Countdown zeigt am 31.12. umd 23:59 die letzten 60 Sekunden als rote LEDs an und zählt dann rückwärts. Das sieht ganz cool aus.
Und ich habe auch die OTA-Updatefunktion eingebaut, damit ich die Uhr per WLAN updaten kann.
Schaltplan:
Den Sketch gibt es im ZIP-Archiv (Anhang).
Nochwas zum Stromverbrauch. Der liegt zwischen 160mA und 360mA (je nachdem, wie weit die LEDs "aufgedreht" werden). Also nichts für Batteriebetrieb.
Ich benutze hier ein 5V / 1A USB-Steckernetzteil (hatte ich noch rumliegen).
Ich habe hier eine Funktion geschrieben, mit der man einen String auf eine GDI+ Graphic zeichnen lassen kann.
Das Besondere daran ist, dass man den String um 90, 180 oder 270 Grad gedreht zeichnen lassen kann. Außerdem kann man Fontname, Schriftgröße, Schriftstil und die Ausrichtung (links, zentriert, rechts) angeben.
Auch mehrzeilige Strings sind möglich.
Im Beispiel habe ich außerdem einen Backbuffer mit eingebaut, um zu zeigen, wie man mit GDI+ auf andere Fenster (überlagernd) reagieren muss.
Edit: Neue Version! Man kann jetzt auch die Schriftfarbe angeben.
LED-Tester
Da mir das Testen von LEDs mit dem Multimeter zu blöd war, vor allem, weil sie dabei nicht leuchten und man die Helligkeit beurteilen kann, habe ich mir einen LED-Tester gebaut.
Aufgebaut auf einer, selbst erstellten, doppelseitigen Platine. Mit zehn LM317 (die im TO92-Gehäuse) als Konstantstromquelle (5 verschiedene Ströme mal jeweils 2 Steckplätze).
Damit stehen folgende Ströme zum testen zur Verfügung: 2mA, 5mA, 10mA, 15mA und 20mA.
Durch die unterschiedlichen Ströme kann man beim entwickeln durchtesten, bei welchem Strom die gewünschte Helligkeit erreicht wird. Und dadurch, dass jeweils zwei Steckplätze vorhanden sind, kann man testen, ob zwei LEDs auch gleich hell leuchten. Das ist ganz hilfreich, wenn die LEDs aus der "Grabbelkiste" sind und man die genauen Daten nicht kennt.
Für den Stromanschluss habe ich eine Mikro-USB-Buchse vorgesehen. Es gibt so fertige Breakout-Platinen, wo die USB-Buchse auf eine 5polige Stiftleiste geführt wird. Meine Platine habe ich passend dazu angepasst, sodass ich die dort einlöten kann.
Hier mal ein Bild von der Platine:
Und vom fertigen Aufbau:
Wer sich auch so eine Platine anfertigen lassen will, darf gern die Gerberdateien benutzen (ZIP-Archiv, Anhang).
Mein Programm bietet nun die Möglichkeit, die Minuten (0 bis 99) und die Sekunden (0 bis 59) mit Hilfe des Drehencoders einzugeben. Die Klickfunktion des Encoders wird benutzt, um zwischen der Eingabe der Minuten und der Sekunden hin- und herzuschalten.
Mit dem Taster (S1 im Schaltplan) kann man den Countdown starten/stoppen.
Das Relaismodul ist dazu da, dass man damit ein Gerät (z.B. eine Lampe) für diese Zeit einschalten kann und auf dem LCD wird die Restzeit (Minuten/Sekunden) fortlaufend angezeigt.
Das Programm befindet sich im ZIP-Archiv (Anhang).
Um einen "Wemos D1 mini" (oder einen anderen ESP8266) mit dem WLAN zu verbinden, muss man nicht unbedingt SSID und PSK im Programm mitgeben.
Das würde den Betrieb ja auch auf das eine WLAN beschränken.
Es gibt auch die Möglichkeit, einen Taster (einfach von D3 bzw. GPIO 0 nach GND) als WPS-Pushbutton zu benutzen:
Die Funktion "WiFi.beginWPSConfig()" in der "ESP8266WiFi.h"-Library übernimmt dann den Datenaustausch mit dem Router.
Ich habe ein Programm geschrieben, das folgendes ermöglicht:
1. Man startet die WPS-Pushbutton-Methode auf dem WLAN-Router.
2. Man hält die WPS-Taste am Wemos min. 2 Sekuden gedrückt, bis die WLAN-LED schnell blinkt.
3. Dann lässt man die Taste los und wartet etwas (maximal dauert das 2 Minuten).
4. Der Wemos verbindet sich mit dem WLAN.
Wenn die Verbindung erfolgreich war, dann leuchtet die WLAN-LED nun dauerhaft. Wenn nicht, dann blitzt die LED einmal pro Sekunde kurz auf und man muss die Prozedur wiederholen.
Bei erfolgreicher WLAN-Verbindung holt sich das Programm dann das aktuelle Datum/Uhrzeit von einem NTP-Server aus dem Internet.
Außerdem habe ich noch die Möglichkeit eines "OverTheAir"-Updates (OTA) eingebaut. So kann man weitere Firmware-Updates über das WLAN durchführen.
Das Programm befindet sich im ZIP-Archiv (Anhang).
Hier ist mal eine kleine Lauflicht-Schaltung.
Es werden 8 Low-Current-LEDs (2 mA pro LED) sowie 8 Widerstände mit 1.5 kOhm verwendet.
Als Mikroprozessor kommt ein Arduino Nano (oder Clone) zum Einsatz.
Hier mal der Fritzing-Schaltplan:
Das Programm für den Nano (siehe Anhang) bietet 10 verschiedene Lauflicht-Programme, die man über eine Eingabe auf der seriellen Schnittstelle ändern kann.
Außerdem kann man die Laufrichtung (Links <-> Rechts) ändern.
Das Ganze läuft blockierungsfrei (ohne Delays) und (wer will) kann die Programme noch anpassen (Standard: bis zu 30 Schritte je Programm).
Man kann natürlich auch noch die maximale Anzahl der Schritte erhöhen. So lange, wie der Speicher des Nano noch ausreicht...