Home.

Technik-Blog

Willkommen auf meinem
Notiz - Blog
Blog

Kmoser's Tech-Blog

1-3 von 4
Samstag
29
Juli 2017
Klaus Moser
Klaus Moser

MySensors Gateway

MySensors ist eine offene Platform für Hard- und Software zur DIY-Heimautomatisierung. Dabei richtet sich das Augenmerk von MySensors hauptsächlich auf die Hardware sowie die entsprechende Firmware auf den Devices.

Zur Darstellung und Verwaltung der Sensoren und Aktoren wird weitere Software benötigt. Dabei ist man aber nicht an ein Produkt gebunden sondern kann es in viele Lösungen integrieren. Ich z.B. werde die Sensoren hier in Fhem einbinden.

Damit Fhem mit den MySensors Geräten kommunizieren kann benötigt man ein Gateway. Auf der Website von MySensors sind einige Varianten beschrieben. Die Verbindung kann via USB, Ethernet oder WiFi erfolgen. Auch eine Möglichkeit das Funkmodul direkt an die GPIO Pins des Rasperry zu hängen gibt es.

Die Ethernet-Variante bietet sich an wenn man den Standort des Gateways so wählen muss dass er nicht in der Nähe des Rechner mit der Hausautomationssoftware steht, also z.B. wenn der Rechner im Keller steht und man den Gateway z.B. im Erdgeschoss aufstellen möchte um auch noch die höheren Stockwerke erreichen zu können. Bei der WiFi Variante ist es ähnlich nur dass man kein Ethernet Kabel benötigt.

Ich habe mich für die USB-Variante entschieden, da diese keine zusätzliche Stromversorgung benötigt und mein Rechner mit Fhem ziemlich zentral steht. Der Aufbau des Gateways ist extrem simpel und besteht eingentlich nur aus zwei Komponenten, dem Arduino Nano und dem nRF24L01+ Funk-Modul.

Warum noch eine Anleitung

Es gibt bereits etliche Anleitungen im Netz wie man einen solchen Gateway zusammenbaut aber viele davon sehen irgendwie "geschustert" aus. Ich muss gestehen ich bin kein so großer Freund von Heißkleber oder Klebern im Allgemeinen zur Befestigung von Bauteilen in meinen Projekten. Daher möchte ich euch hier meinen Versuch vorstellen der ganz ohne Kleber auskommt.

Materialliste

Typ Menge Notizen Link Einzelpreis Gesamtpreis
Arduino 1 Mit 3.3V Regler, Pinleisten nicht verlötet(!!) AliExpress 2,14 € 2,14 €
nRF24L01+ 1 Mit externer Antenne AliExpress 1,79 € 1,79 €
10µF Elko 1 AliExpress 1,89 € 0,02 €
100nF Kondensator 1 Conrad 0,10 € 0,10 €
Buchsenleiste 1 einreihig, 2x15 Pin AliExpress 1,08 € 0,08 €
Buchsenleiste 1 zweireihig, 8 Pin AliExpress 0,94 € 0,04 €
Platine 1 60mm x 40mm AliExpress 0,55 € 0,55 €
Alu Profil-Gehäuse 1 60 x 45 x 25 Conrad 15,99 € 15,99 €

Gesamtpreis 20,71 €.

Vor- und Nachteile des Systems

Wie alles im Leben hat auch dieses System seine Vor- und Nachteile.

Vorteile

In erster Linie sind die Sensoren günstig und einfach zu bauen. Außerdem sind die Sensoren mit nRF24L01 Funkchip gegenüber Sensoren die zur Datenübertragung WLan verwenden, wie z.B. Sensoren auf ESP8266 Basis, sehr energiesparend. Die Boards mit aufgedruckter Antenne benötigen laut Datenblatt nur maximal 13.5mA wenn sie "wach" sind, 900nA im Power-Down Mode und 26µA im Sleep-Mode. Daher eignen sich diese Sensoren auch gut für Batteriebetrieb. Die Boards mit externer Antenne und integriertem Verstärker benötigen mehr. Diese benötigen bis zu 115mA beim Senden.

Nachteile

Der größte Nachteil von MySensors ist dass die Kommunikation nicht verschlüsselt ist, daher sollte man dieses System nur für nicht kritische Anwendungen verwenden. Also nicht die Heizung oder den Türöffner darüber steuern. Es gibt aber immerhin eine Möglichkeit die Authentizität und Integrität von Kommandos zu verifizieren. Dies benötigt aber noch ein zusätzliches Bauteil. Das ist leider noch mit der Post unterwegs zu mir und wird daher zu einem späteren Zeitpunkt behandelt.

Vorbereitung

Da der nRF24L01 mit externer Antenne mehr Strom am 3.3V Pin benötigt kann als der normale  Arduino Nano liefern kann benötigt man einen separaten 3.3V Spannungsregler. Ich habe zufällig bei AliExpress einen alternativen Nano von RoboDyn gefunden der bereits einen 3.3V Regler auf dem Board hat und bis zu 500mA liefern kann. Und er kostet teilweise sogar weniger als ein normaler Arduino.

Eine weitere schöne Sache an dem Nano ist, dass er ohne verlötete Stiftleisten daherkommt. Man spart etwas Platz wenn man die Stiftleisten "verkehrt" herum einlötet. Damit zeigt der USB-Port nach unten und nimmt keinen zusätzlichen Platz weg. Und Platz ist echt knapp in dem von mir gewählten Gehäuse. Die Pfostenleiste wird also gegenüber dem normalen Nano auf der Oberseite anstatt auf der Unterseite eingelötet.

Ein weiteres Problem was das Thema Platz betrifft sind die Steckerleisten am Funkmodul. Diese sind auch "falsch" herum eingelötet. Die Höhe des Moduls ist die Summer aus Antennenstecker, Platine und Steckerleiste, was natürlich Platzverschwendung ist.

Die Steckerleiste muss also raus und von der anderen Seite wieder rein. Um die Leiste zu entfernen habe ich zuerst die Pins mit einem Seitenschneider so nah wie möglich am Plastik abgeknipst und dann vorsichtig den Kunststoff entfernt. Anschließend habe ich die noch verbliebenen Pin-Reste mit dem Lötkolben einzeln herausgelötet. Zum Schluss noch eine neue doppelreihige, 8 Pin Stiftleiste eingelötet und das Modul war nur noch halb so hoch :-)

Testaufbau

Die ersten Gehversuche auf dem Steckbrett haben gut funktioniert. Hier kann man testen ob alles so funktioniert wie erwartet und ggf. noch Anpassungen am Aufbau machen.

Sketch

Der Sketch für den seriellen Gateway gibt es direkt auf www.mysensors.org.

Bevor man den Sketch allerdings kompilieren kann muss man die MySensors Library installieren. Dazu in der Arduio IDE im Dropdown Menü

Sketch > Bibliothek einbinden > Bibliotheken verwalten

auswählen und über die Suche nach "mysensors" suchen. Die Bibliothek jetzt über den Button "Installieren" auf dem Computer installieren.

Platine

Auf der Platine sitzen der Nano und das nRF24L01 Funkmodul nebeneinander. Auf diese Weise passen sie gerade so in das Gehäuse ein. Ist etwas fummlig beide in das Gehäuse zu bekommen und man muss ggf. ein bisschen an den Rändern der Experimentierplatine schleifen bis es passt, aber irgendwann passt es :-) Wichtig ist die Platine genau so zuzuschneiden wie es im Bild der Fall ist. Es gibt eine Standardgröße von Lochrasterplatinen die genau in das Gehäuse passen. Mit diesen wird es nicht funktionieren. Mit der so zuschnittenen Platine passt alles gerade so in das Gehäuse. Ggf. auf ein größeres Gehäuse ausweichen.

Ich habe mal versucht die Verkabelung mit Fritzing zu veranschaulichen. Richtig deutlich wird es vermutlich erst mit den Fotos der Platine von oben und unten weiter unten.

Die folgenden vier Bilder zeigen die fertig verlötete Platine. An einem Ground-Pin habe ich einen Abzweig mit einem runden Kabelschuh angelötet (Bild 3) um eine leitende Verbindung mit dem Gehäuse herstellen zu können. Ohne diese ist Verbindung wäre sonst die Schirmung die das Gehäuse bieten würde hinfällig.

Anschließend den Nano und das Funkmodul aufstecken und auf Funktion prüfen. Von den Versuchen auf dem Steckbrett hatte ich noch einen MySensors Sensor mit einem DHT22 rumliegen. So etwas eignet sich hervorragend zum Testen.

Prinzipiell sieht man aber auch bei der Initialisierung des Gateways in der seriellen Konsole ob die Verbindung zum Funkmodul erfolgreich war. Ob der Gateway aber wirklich empfängt lässt sich natürlich nur mit einem zweiten Device wie einem Sensor ermitteln.

Gehäuse

Um die leitende Verbindung zwischen Ground-Abzweig mit dem Kabelschuh und dem Gehäuse herzustellen musste ein bisschen was von dem Teil weggefräst werden in dem später eine der beiden Schraube sitzt, hier links im Bild. Mit einem Dremel und einem für Alu geeigneten Fräser (z.B. Wolfram-Karbid) ist das schnell erledigt.

Die Unterseite der Platine sitzt ja ziemlich fest durch den Einschub in die Nut des Aluprofils und es besteht eher nicht wie Wahrscheinlichkeit dass die Lötpunkte hier das Gehäuse berühren. Auf der Oberseite bin ich mir da nicht ganz so sicher. Deshalb habe ich eine kleine Isolierung in Form von zwei Papierstreifen eingefügt bevor ich das Modul in das Gehäuse geschoben habe. Mag sein dass das überflüssig ist, lässt mich aber ruhiger schlafen :-)

Der Kabelschuh musste noch ein bisschen bearbeitet werden, damit dieser in die gefräste Aussparung passt.

Rahmen drauf und noch ein Loch in den Deckel gebohrt, dann alles verschrauben und ferig ist die Vorderseite.

Von vorne kann sich das Gateway damit schon mal sehen lassen :-)

Den Ausschnitt für den USB Port habe ich mit einem kleinen Fräser auf einem Kreuztisch von Proxon gemacht. Könnte man aber auch problemlos mit einem kleinen Bohrer und einer Feile machen. Wollte den Tisch aber mal ausprobieren ;-)

Schön in anders aber dafür dass ich mit der Metallverarbeitung gerade erst anfange ganz ok. Es erfüllt auf jeden Fall erst mal seinen Zweck :-)

Der Abstand des USB Port vom Arduino und dem Gehäusedeckel ist fast ein bisschen viel. Der Micro-USB Stecker passt zwar und hält auch aber da ist auch noch Potenzial für Optimierung.

Einbindung in Fhem

Der Gateway kann selber ja noch nicht viel. Um mit dem Gateway Daten auszutauschen muss dieser in eine Hausautomationssoftware, in diesem Beispiel Fhem, eingebunden werden.

Wenn man, wie ich, mehrere Gateways auf Arduinos Basis verwedet die einen CH340 USB nach Seriell Adapter verwenden (die meißten China-Clones tun das), dann muss man das serielle Device, wie hier im Beispiel, mit by-path angeben. Es muss aber darauf geachtet werden, dass die Gateways immer in den selben USB-Ports eingesteckt werden.

Hat man einen Arduino mit einem FT232RL USB nach Seriell Adapter, dann kann/sollte man stattdessendie Variante mit by-id verwenden.

Um also das Device für das neue Gateway zu ermitteln vor und nach dem Einstecken des Gateways folgenden Befehl ausführen:

ll /dev/serial/by-path/

Das Device das beim Einstecken hinzugekommen ist, muss im dem define von Fhem verwendet werden.

define MySensorsGw01 MYSENSORS /dev/serial/by-path/pci-0000:00:1d.1-usb-0:1:1.0-port0@115200
attr MySensorsGw01 autocreate 1
attr MySensorsGw01 first-sensorid 10
attr MySensorsGw01 requestAck 1
attr MySensorsGw01 room 2.5 MySensors

Wenn man jetzt noch einen fertigen Sensor vom Zusammebau hat und diesen mit Strom versorgt, sollte der Sensor automatisch in Fhem als neues Device angelegt werden.

Donnerstag
23
Februar 2017
Klaus Moser
Klaus Moser

Halter für Messleitungen

Wer sich mit Elektronik beschäftigt hat früher oder später das Problem dass ein Ordnungssystem für die ganzen Messleitungen und sonstigen häufig benutzten Anschlusskabel her muss. So auch bei mir. Bisher hingen die Strippen einfach über einem Flügel einer alten Tafel die in meinem Büro hängt. Hat man versucht dort eine Leitung herauszuziehen sind meißtens ein paar andere heruntergefallen. Eine sehr unbefriedigende Lösung.

Bei Conrad gab es zwar ein Profilblech für diese Zwecke, aber das war mir zu klein und zu unflexibel. Habe beim Conrad gerade ein ähnliches System zu einem ziemlich krassen Preis endeckt, wie das, das ich mir ausgedacht habe und euch hier vorstellen möchte.

Wichtigster Aspekt bei meinen Überlegungen war, dass der vorgesehene Platz für die Leitungen optimal ausgefüllt wird. Zum Zweiten sollten alle Kabel aufgehängt werden können egal wie dick das Kabel oder der Stecker war. Die Aufhänung sollte also variabel in Länge und Abstand sein.

Lösungsansatz

Habe mir damals meinen 3D Drucker mit Alu-Profilschinen mit T-Nuten gebaut und dabei auch eine schöne kleine Schiene mit 20mm x 10mm bei Motedis entdeckt die auch noch ziemlich günstig ist. Die T-Nuten haben den Vorteil dass man darin mittels Nutensteinen etwas an einer beliebigen Stelle befestigen kann.

Die Nutensteine haben leider das Problem dass sie in der Regel recht teuer sind. Glücklicherweise gibt es auf Thingiverse Nutensteine zum selber drucken in die man einfach eine M3 Mutter eindrückt.

Eine Packung M3x6 Senkkopf-Schrauben in schwarz hatte ich auch noch rumliegen, die sich für die Verschraubung der schwarzen Halter auf der Leiste super eigneten.

Prizipiell fehlen jetzt nur noch ein paar Halter für die Leitungen die von vorne auf die Leiste aufgeschraubt werden können und eine Halterung mit der die Leiste an der Wand befestigt werden kann.

Der Halter für die Messleitungen war schnell konstruiert und kann auf Thingiverse heruntergeladen werden. Habe wie immer die OpenSCAD Dateien beigelegt falls man sich die Halter anpassen möchte.

Materialliste

Typ Menge Notizen Link Einzelpreis
Alu-Profilschine 20x10 1 Länge beliebig Motedis 3,80 €/m +(5,00 €)
Flachstange Aluminium 20x2mm 1 2x 35mm Hornbach 2,75 €
M3 Muttern 58/m eBay 1,00 € (+3,85 &euro)
M3 Senkkopf-Schrauben M3x8 58/m eBay 4,99 € (+1,50 &euro)
M3 Senkkopf-Schrauben M3x6 4 eBay 2,95 € (+1,50 €)

Wandhalter

Die Befestigung an der Wand ist auf verschiene Arten denkbar. Ich habe einfach auf beiden Seiten der Schine ein kleines Stück eines Alu-Flachprofils angebracht durch das dann eine Schraube in die Wand geht. Die flachen Profilstücke sind mit je zwei Schrauben M3x6 auf der Rückseite der Nutschiene angeschraubt.

Für die Form und die Bohrungen habe ich mir einen Schablone am PC erstellt, ausgedruckt und auf die Alu-Teile geklebt. Dann habe ich die Teile erst zurechtgeschnitten, dann grob in Form gefräst und zum Schluss noch etwas gefeilt.

Dann die Aluplättchen mittels Anschlag auf die Leiste gelegt, die Position der Löcher markiert und die Schraubenlöcher Löcher gebohrt. Bei M3 braucht man einen 2.5mm Bohrer. Am besten mal an einem Reststück eine Probebohrung machen. Einer meiner 2.5mm Bohrer hat direkt mal 3mm Löcher gemacht. Da sitzt keine Schraube mehr... Ist direkt in den Müll gewandert.

Ist nicht so schön geworden, was Metall angeht übe ich noch ;-)

In die Löcher des Aluprofils noch ein M3 Gewinde schneiden und mit einem Senker die Schraubenlöcher an dem Aluplättchen vertiefen

Zusammenbau

Auf 50 cm des Halters passen etwa 29 Halter. Also entsprechend der Länge diese Anzahl an Haltern und Nutensteinen ausdrucken sowie M3 Muttern und Schrauben besorgen.

Dann einfach je eine M3 Mutter in die Nutensteine eindrücken, diese in die Profilschine einfädeln, vorne den Halter draufsetzen und mit einer Schraube leicht fixieren so dass sich der Halter noch bewegen lässt.

Dann zwei Löcher in die Wand, den Halter aufhängen und die Leitungen, die man aufhängen möchte, nach und nach einhängen und die Halter festschrauben.

Donnerstag
19
Januar 2017
Klaus Moser
Klaus Moser

Login Pad mit Arduino Pro Micro

Das Login Pad ist aus einer Not heraus entstanden. Da ich beruflich viel mit zugriffsgeschützten Webseiten zu tun habe ich mich das ständige neu Anmelden genervt hat, hatte ich die nicht sicherheitskritischen Anmeldedaten auf die G-Tasten meiner Logitech Tastatur gelegt um mich mit einem Knopfdruck an einer Website anmelden zu können. Auch Snippets die man beim Programmieren häufiger braucht habe ich auf diesen Tasten abgelegt. Das spart beim Entwickeln einiges an Zeit.

Leider ist die Unstertützung der Logitech G-Tastaturen unter Linux nicht gerade die Beste und mit Ubuntu 16.04 lief dann der Daemon für die Tastatur nicht mehr. Der Schritt zurück zu KeePass und manueller Eingabe war für mich kein Zustand der auf Dauer bleiben konnte.

Habe mir anfangs mit xbindkey und xmacroplay beholfen, aber da ich keine Sets mehr umschalten konnte war ich nun auf die physisch vorhandenen 12 bzw. 18 Tasten beschränkt.

Ich erinnerte mich, dass ich irgendwann einmal einen Arduino Leonardo bestellt hatte, da dieser sich als USB-HID Device wie z.B. eine Maus oder Tastatur verwenden lassen könnte. Mangels Projektidee fristete er sein Dasein bisher allerdings in einer Schublade. Warum also nicht einfach ein paar Buttons dran hängen und deren Ausgabe dann frei programmieren. Erste Experimente mit einem einzelnen Button waren vielversprechend.

Bei AliExpress habe ich noch ein Keypad gefunden welches über 10 numerische Tasten für die Login-Informationen, 4 Tasten mit Buchstaben mit denen ich die Sets umschalten kann sowie noch zwei Sondertasten die man mit speziellen Funktionen belegen könnte. Damit wären 4 Sets  á 10 Tasten, also 40 Tasten belegbar. Das sollte für den Anfang reichen ;-)

Erste Versuche waren erfolgreich und die Software war auch nicht sonderlich kompliziert. Nicht zuletzt deshalb weil es ja für fast alles schon fertige Libraries gibt.

Eine Sache die sich als echt praktisch herausgestellt hat ist die Tatsache, dass der Arduino für das Betriebssystem eine ganz normale Tastatur ist. Damit funktioniert die Ausgabe der Tastendrücke auch wenn man sich gerade innerhalb einer VirtualBox befindet. Das ging mit meinen G-Tasten der Logitech-Tastatur nicht.

Der Leonardo den ich zum Testen verwendet habe, sollte später durch den Pro Micro ersetzt werden, da dieser auch den ATmega32u8 verwendet und klein genug ist auf die Rückseite des Keypads zu passen.

Die Projektidee war geboren...

Materialliste

Typ Menge Notizen Link Einzelpreis Gesamtpreis
4x4 Keypad 1 AliExpress 2,40 € 2,40 €
Arduino Pro Micro 1 ATmega32u4 5V/16MHz AliExpress 4,38 € 4,38 €
LEDs 4 AliExpress 4,76 € 0,20 €
Vorwiderstände 4 z.B. 470 Ohm je nach Intensität AliExpress 0,41 € 0,02 €
Pin Header female 90° 1 8 Pins AliExpress 4,38 $ 0,10 €
Pin Header male 90° 1 8, 3, 4 Pins AliExpress 1,54 € 0,06 €
Micro B USB Kabel 90° links 1 z.B. OTG Kabel EBay 3,14 € 3,14 €
Micro B Breakout Board 1 AliExpress 5,70 € 0,57 €
Blechschrauben 2 M 2,2 X 6,5 eBay 2,50 &euro 0,10 €
Schrauben für Kunststoffe 2 Ø3mm x 8mm eBay 3,99 € 0,16 €
Schrauben für Kunststoffe 2 Ø3mm x 10mm eBay 3,99 € 0,16 €

Die Kosten belaufen sich also etwa auf 11,29 €. Dazu kommt noch das Filament welches für den Druck des Gehäuses benötigt wird.

Software

Die Software für das Projekt habe ich auf GitHub gestellt.

Zum kompilieren des Sketches muss zuerst die Datei ext_def.h angelegt werden. Dazu am besten die Datei ext_def-example.h im Sketch Verzeichnis kopieren und als ext_def.h einfügen.

Der PIN mit dem einer Login Pad entsperrt werden kann wird mit folgender Zeile definiert:

#define PIN "123456"

Die Zeichensequenzen für die Tastendrücke müssen als Hexcode in die char arrays values0_0 bis values3_9 eingetragen werden. Das Set A verwendet values0_*, das Set B values1_*, usw. Die Sache mit den Hexcodes habe ich gemacht um auch Sonder- und Steuerzeichen senden zu können. Ein Tab ist z.B. 0xB3, ein Enter 0xB0. Die Zuweisung:

const PROGMEM char values0_1[] = {0x54,0x65,0x73,0x74,0x00};

Würde bei einem Tastendruck der Taste 1 bei aktiviertem Set A die Zeichenkette "Test" gefolgt von einem Enter ausgeben.

Etwas problematisch ist dass die Arduino Tastatur einen englischen Zeichensatz verwendet und ich noch keine Möglichkeit gefunden habe das zu ändern. Daher ist im Sketch eine Art "Konvertierung" von Zeichen eingebaut um den Hex Code von Tasten mit einem deutschen Tastaturlayout in die englische Entsprechung umzusetzen so dass im Endeffekt die richtige Taste gedrückt wird. Dieser Part hat im Sketch noch keine große Beachtung gefunden da ich mit dem Status Quo gut auskomme. Solltet ihr Zeichen benötigen die dem Pad einfach nicht zu entlocken sind schreibt einfach ein Kommentar auf der Seite oder nutzt das Kontaktformular.

Funktionsweise

Wenn das Pad fertig aufgebaut und mit dem Sketch gefüttert ist, funktioniert das Login Pad so:

Alle 4 LEDs leuchten. Das bedeutet das Pad ist neu gestartet und wartet auf die Eingabe des Pin Codes. Sobald man eine Taste drückt und sich im String-Puffer für die Passwort Eingabe Zeichen befinden leuchten die LEDs 2 und 4.

Hat man sich vertippt kann man mit der * Taste die Eingabe löschen und von vorne beginnen. Ist die Eingabe gelöscht leuchten die LEDs 3 und 4.

Hat man seinen Pin eingegeben bestätigt man diesen mit der Raute (#) Taste. Ist der Pin falsch, dann leuchten alle 4 LED 3x kurz nacheinander auf und man kommt wieder zur PIN Eingabe. Ist der Pin richtig leuchten alle vier LEDs gleichzeitig auf und das Set 1 wird aktiviert. Das Login Pad ist bereit.

Drückt man nun eine der Numerntasten werden die hinterlegten Tastensequenzen ausgegeben. Muss man seinen Arbeitsplatz verlassen kann man die * Taste drücken um das Pad wieder zu sperren. Dann ist eine erneute Eingabe des Pins nötig um das Pad wieder zu aktivieren.

Aufbau

Die Verdrahtung des Pad ist ziemlich simpel und im folgenden Bild zu sehen:

Für den Zusammenbau kommen in 8 Pins der 10 Pins des 4x4 Keypad eine gewinkelte, männliche Stiftleiste und zwar so dass rechts und links jeweils ein Pin leer bleibt. Diese werden nicht benötigt.

Achtung: Es gibt unterschiedliche Pinleisten!! Der Unterschied besteht in der Positionierung des Abstandshalters aus Kunststoff. Bei manchen ist er auf der kurzen, bei manchen auf der lagen Seite. Je nachdem welche man hat muss man am Arduino die Leisten ggf. anders einlöten.

In den Arduino wird in Pin 2 bis 9 die weibliche 8-Pin Buchsenleiste eingelötet und zwar so dass man den Arduino später bündig hinten auf das Keypad aufschieben kann. Unbedingt vor dem Löten testen ob die Leiste oben oder unten am Arduino eingelötet werden muss.

An die Pins 10,14,15,16 sowie an GND kommt je eine Stiftleiste. Dabei wieder vor dem Einlöten testen wie es am besten passt. VCC und RST braucht man eigentlich nicht, hatte sie aber mal herausgeführt damit die Pin-Leiste etwas stablier sitzt und, falls ich mal den Sketch mit den falschen Board Einstellungen flashen sollte, den Bootloader via ISP wieder neu schreiben kann. War eine weise Voraussicht, ist mir inzwischen schon einmal passiert :-)

Gehäuse

Als Gehäuse schwebte mir etwas vor das ähnlich wie eine richtige Tastatur eine gewissen Steigung nach hinten hat. Die LEDs sollten neben den Tasten A-D platziert werden um den Status des aktiven Sets anzuzeigen. Außerdem soll eine Micro-USB Buchse nach hinten geführt werden. Herausgekommen ist dabei das:

Das Gehäuse kann man sich auf Thingiverse herunterladen. Ich habe auch die OpenSCAD Dateien beigelegt, damit man das Gehäuse ggf. noch anpassen kann.

LEDs

Jetzt kann man die LEDs für die Anzeige des gewählten Sets sowie den Fehler- bzw. Erfolgsmeldungen bei der PIN Eingabe einbauen.

Bei mir haben die LEDs genau gepasst so dass sie noch einen leichten Widerstand beim hineindrücken hatten und so ohne Kleber halten. Sollten die LEDs nicht halten, entweder etwas Kleber dran oder den Durchmesser der LEDs um 0.1 mm kleiner machen, dann sollten sie wieder halten.

Die Anschlusspins der Kathode an der LED sind ausreichend lang so dass man sie umbiegen kann und sie bis zur nächsten LED reichen. Dort lötet man sie einfach an die Kathode der nächsten LED.

An die Anoden kommt später ein Draht der zu der Platine mit den Vorwiderständen geht. Mit den Drähten warten wir aber noch bis wir das Modul mit den Vorwiderständen fertig haben. Dann lassen sich die Drähte etwas besser ablängen. Die Drähte sind nachher zwischen 6 und 7 cm lang.

Modul mit Vorwiderständen

Das Modul mit den Vorwiderständen ist einfach nur ein Stück Lochrasterplatine mit je einer 4poligen Stift- und Buchstenleiste und enthält je einen Vorwiderstand für jeder unserer LEDs.

Mit den Widerstandswerten muss man ein bisschen herumprobieren bis man eine Helligkeit gefunden hat die einem zusagt. Die gängigen LEDs kann man mit einem 180Ω Widerstand an 5V betreiben, was die LEDs aber viel zu hell macht. Die blauen LEDs die ich verwendet habe, habe ich über je einen 470Ω Widerstand angeschlossen und die Helligkeit finde ich so ganz angenehm.

Hier kommt jetzt übrigens das Thema mit den Abstandshaltern an den gebogenen Stiftleisten, was ich eingangs erwähnt habe, zum tragen. Je nachdem welche Stiftleisten man hat bekommt man jetzt Probleme wenn man normale 1/4 Watt Widerstände verwenden will. Bei meinem zweiten Pad, welches ich gebaut habe, habe ich die Stiftleisten erwischt, die meinen Arduino weiter nach oben verschoben haben und damit die Platine mit den Anschlußpins nicht mehr in das Gehäuse gepasst haben. Deshalb bin ich bei diesem Pad dann auf die SMD Widerstände ausgewichen. Damit konnte ich ein Streifenraster einsparen und es hat wieder alles ins Gehäuse gepasst.

Hier mal beide Varianten zum Vergleich. Links die Variante mit den normalen 1/4W Widerständen und rechts die Variante bei der der Arduino zu weit nach oben kommt und damit die SMD Widerstände nötig wurden:

Auf den Bilder sieht man auch dass man je nach Art der Stiftleiste die Buchsenleisten am Arduino anders einlöten muss.

Jetzt kann man die Kabel von den LEDs zu den Vorwiderständen anbringen. Dazu 6-7cm lange Kabelstücke auf der einen Seite mit der Anode der LED verlöten und mit einem Schrumpfschlauch vor Kurzschlüssen sichern. Auf der anderen Seite einen weiblichen Dupont Steckverbinder aufcrimpen. Die vier Steckverbinden kann, wenn man hat, in einen 4fach Steckschuh stecken, dann kann man die LEDs ohne viel Gefummel mit den Vorwiderständen verbinden.

Die gemeinsamen Kathoden der LEDs verbindet man mit einem GND Pin am Arduino.

Bodenplatte

Als letztes kommt die Bodenplatte mit der Verlängerung und Durchführung des USB-Ports des Arduinos. Damit das Gehäuse möglichst klein bleibt benutzt man ein USB Kabel mit  einem 90° nach links abgewinkelten USB Stecker.

Das günstigste Kabel das ich gefunden habe war ein OTG Kabel, welches normalerweise dazu verwendet wird USB-Geräte an Tablets und Handys anzuschließen. An diesen einfach die Kupplung abschneiden und das Kabel und die Drähte abisolieren. Das Kabel ist leider etwas sehr kurz was zu etwas Zug am Kabel beim Zusammenschrauben führt. Bislang macht es keine Probleme aber wenn das Kabel eine etwas größere "Schlaufe" machen würde wäre es sicher besser.

Es werden die vier Anschlüsse VCC, GND, D+ und D- benötigt. Den ID-Pin braucht man nicht und kann entweder abgeschnitten oder einfach nach hinten weggebogen und später hinter dem Schrupfschlauch versteckt werden.

Bei dem USB Port habe ich die mitgelieferte, gerade Stiftleiste gegen eine um 90° abgewinkelte ausgetauscht.

Der USB Port wird anschließend mit zwei kleinen Schrauben an der Bodenplatte verschraubt. Habe dafür Blechschrauben genommen, da ich keine so kleinen Schrauben für Kunststoff gefunden habe. Hält auch...

Innerhalb des Gehäuses wird das USB-Kabel wie auf den beiden folgenden Bildern angeschlossen.

Alles verschrauben

Wenn nach einem Test alles funktioniert, kann man alles verschrauben.

Das Keypad wird mit zwei kleinen Schrauben im Deckel befestigt. Dazu einfach das Keypad in den Deckel eindrücken und mit einem 1.5 mm Bohrer vier kleine Löcher in die Innenseite des Deckels bohren. Darauf achten nicht durch zu bohren. Dann das Keypad mit 4 Schrauben und ggf. jeweils einer Unterlegscheibe am Deckel befestigen.

Wenn noch nicht geschehen den USB-Port auf der Bodenplatte verschrauben und ggf. die LEDs mit etwas Heißkleber vor verrutschen sichern.

Beide Gehäuseteile aufeinanderlegen und diese mit den vier Schrauben miteinander verschrauben.

Beim Eindrehen der Schrauben in das Gehäuse drauf achten dass man nicht zu fest schraubt um das Gehäuse nicht zu beschädigen.

Schlussendlich sollte es dann etwa so aussehen:

Da bei mir keine zwei Webseiten das gleiche Passwort haben ist das ein echt hilfreiches kleines Helferlein das ich nicht mehr missen möchte.

Arduino "de-bricken"

Wenn man es einmal geschafft hat, versehentlich den falschen Board-Typ auszuwählen und eine so kompilierte Firmware flased, kann es passieren dass der Pro Micro nicht mehr ansprechbar ist.

So ist es mir passiert. Habe zuvor ein MySensors-Sensors auf Nano Basis geflasht, schnell ein neues Passwort in den Loginpad Sketch eingetragen, den Port ausgewählt und ohne den Board-Typ umzustellen den Sketch geflashed. Damit war der Arduino vorübergehend hinüber.

Um den Arduino wieder zum laufen zu bekommen muss wieder der richtige Bootloader gebrannt werden. Wie man das macht wird auf der Arduino Seite erklärt. Man kann mit einem zweiten Arduino den Bootloader über SPI auf den zweiten Arduino übertragen.

Dazu wird ein Sketch auf den Arduino übertragen den man als ISP verwenden möchte und dann jeweils die Pins für MISO,MOSI und SCK miteinander verbunden sowie der Reset-Pin des zu flashenden Arduinos mit einem IO-Pin des ISP Arduinos. Außerdem versorgt man den zu flasheden Arduino über die 5V/GND Pins des ISP Arduinos. Dann wählt man in der IDE den Board-Typ des Arduinos aus den man debricken möchte, in diesem Fall Arduino / Genuino Micro und führt unter Werkzeuge > Bootloader brennen aus.

Danach kann man den LoginPad-Sketch wieder flashen.

Blog

Kmoser's Tech-Blog