Projekt Tutobar: Frei belegbare Schalterleiste für Windows 1/3 (Hardware)
Schalttafel mit Arduino: Programme starten, Smarthome steuern und vieles mehr - auch ohne böses Löten ;)
Das wollte ich schon immer haben: Ein Leiste mit echten, physischen Schaltern, um Programme zu starten, Werkzeuge zu wählen, Modi zu ändern und so weiter. Klar, mit Tastaturkürzeln und FN-Tasten der Tastatur geht das auch. Aber wer kann sich das schon merken ... Mit Arduino und ein wenig Bastelei lassen sich eigene frei konfigurierbare Schalttafeln recht einfach realisieren. Ein Anfänger-Maker-Projekt.
Was kann die Tutobar?
Dinge brauchen Namen, also heißt meine Schalttafel Tutobar. Tuto wegen, nun, dürfte klar sein ;) Und bar, weil sie sich wie zum Beispiel Soundbars direkt unter meinem Monitor einnistet. In einer schicken Aluschiene befinden sich 10 Kippschalter und 5 Druckknöpfe.
Derzeit kann die Tutobar zwei Dinge: 15 Programme starten und beenden. Später dann noch Gimp-Funktionen aufrufen, sofern Gimp läuft - ebenso für beliebige Programme oder Spiele. Im Grunde ist Schalterleiste nichts weiter als eine Spezial"tastatur" mit 15 Schaltern. Oder anders ausgedrückt: Ein schlichtes Eingabegerät.
Kurz vor weg für absolute Einsteiger: Arduino ist eine Plattform, die aus offenen Hard- und Softwarespezifikationen, einer Entwicklungsumgebung (IDE) und eigener Hardware besteht. Oft ist mit "ein Arduino" aber ein Arduiono-Board gemeint, also so eine einzelne Platine. Davon gibt es Dutzende verschiedene Varianten, die alle für unterschiedliche Einsatzbereiche gedacht sind. Der hier genutzte Arduino Leonardo wird zum Beispiel als USB-Tastatur/-maus vom PC erkannt. Wir haben auch einen Einstieg in Arduino, wo Ihr ein paar sehr grundlegende Dinge aufbauen könnt - komplett ohne Vorwissen.
Wie funktioniert die Tutobar?
Die Funktionsweise ist im Grunde recht simpel:
- Schalter 1 wird betätigt.
- Arduino gibt Status von Schalter 1 an Windows.
- Autohotkey interpretiert die Eingabe als Hotkey.
- Autohotkey startet die Aktion des Hotkeys.
Arduino und Schalter sind also nur dafür zuständig Autohotkey anzutriggern. Das Schöne daran: Die Konfiguration der eigentlichen Funktionen geschieht ausschließlich mit Autohotkey, der Arduino-Code muss nie wieder angefasst werden. Und so ist der Hardware-/Arduino-Teil auch wunderbar wiederverwendbar für beliebige Schalttafeln.
Autohotkey ist bei mir fast immer erste Wahl, wenn ich etwas unter Windows skripten möchte: Es ist extrem einfach, dennoch ziemlich mächtig und sehr gut dokumentiert. Daher haben wir hier auch ziemlich viele Autohotkey-Artikel.
Die Standardfunktion von Autohotkey ist das Aufrufen von Tastenkürzeln. Und so schien es logisch, einfach jeden einzelnen Schalter eben ein solches Kürzel, sowas wie STRG+ALT+1 etwa, senden zu lassen. Das geht unter anderem mit einem Arduino Leonardo, da dieser von Windows als Maus oder Tastatur erkannt wird und entsprechend normale Tastatureingaben senden kann.
Um mal ganz klar zu machen, wie irre einfach eine Konfiguration Eurer eigenen Tutobar sein kann: Wenn Ihr zum Beispiel eine Schalttafel mit simplen Druckknöpfen haben wollt, die einfach nur Programme starten, dann würde es genügen, die Pfade zu den Programmen in einer simplen Textdatei einzutragen:
schalter_1_on()
{
run, calc.exe // Nur calc.exe muss geändert werden.
return
}
Alles andere könntet Ihr 1:1 von meinem Projekt übernehmen. Wie genau das aussieht, seht Ihr im zweiten Teil des Artikels. Apropos:
Aufbau in drei Schritten
Das Ganze durchaus etwas aufwändiger, daher unterteile ich mal in Teile:
- Hardware bauen - bestenfalls drei, vier Stunden ;)
- Arduino-Skript schreiben - 8 Zeilen pro Schalter, nur 6 verschiedene.
- Autohotkey-Skript schreiben - 6 Zeilen pro Schalter, nur 3 verschiedene.
- Lessons Learned: Tipps für Einsteiger
Alles zur Hardware findet Ihr in diesem ersten Artikel, alles zur Software im zweiten Teil. Im Anschluss folgt noch ein Part mit - hoffentlich - nützlichen Tipps für Einsteiger und eigene Projekte. Ich für meinen Teil habe nämlich Fehler gemacht ;) Ich bin ungeduldig, hatte eine fixe Idee, wollte loslegen ... 30 Kabel umsonst löten? Kann ich Euch ersparen!
Wenn Ihr die Tutobar 1:1 nachbauen wollen würdet, müsstet Ihr mindestens zwei Stunden einrechnen - wenn alles perfekt vorbereitet ist und Ihr mit Bohrern, Metallsägen, kleinen Schräubchen und überhaupt allem perfekt umgehen könnt. Wenn Ihr Neu-Maker seid, ohne jegliche Erfahrung, solltet Ihr besser ein Wochenende einkalkulieren.
Warnung: Elektrotechniker und professionelle Softwareentwickler könnten Schreikrämpfe bekommen - manche Dinge würden sie wohl anders machen ...
Hardware-Liste
Puh, Hardware. Das ist schon was anderes als Software. Bei Software lässt sich immer alles Nötige sofort übers Netz besorgen, Fehler lassen sich jederzeit ohne Aufwand rückgängig machen, man kann nichts wirklich kaputt machen, muss nichts kaufen und stinken tut sie auch nicht. Wenn Ihr nicht so auf Trial-and-Error-Erfahrungen steht, plant voraus! Das gilt auch für Werkzeug und Arbeitsplatz.
Hier erstmal meine Einkaufsliste. Und klar, alles Amazon-Partnerlinks - für Euro, äh, Eure Unterstützung bei der Umverteilung von Vermögen von Amazon zu Tutonaut schon mal vielen Dank! Übrigens: Das sind die Artikel, wie sie jetzt auch verbaut und auf den Bildern zu sehen sind. Bessere Alternativen stehen dahinter in Klammern - meine Varianten sind teils Ungeduld und vorhandenen Elektrorestbeständen geschuldet.
- Aluschiene, 100x2,46x2,4 cm (gekürzt auf 70 cm)
- 10-15 ON-OFF-Kippschalter, vorverdrahtet (M6-Gewinde)
- Steckbrett
- Arduino Leonardo (Oder andere 32u4-basierte Boards)
- mind. 30-40 Männlich-Männlich-Jumper-Kabel, 20 cm (Besser: zusätzlich einige Kabel je 40 cm)
- 17 Männlich-Männlich-Jumper-Kabel, 10 cm
- 15 Klemmverbinder
- 30 Schraubterminals für Steckbrett
- 10 M6-Unterlegscheiben
- 4 M3-Schrauben 4,5 cm
- 4 M3-Muttern
Werkzeug:
- Bohrer: M12, M6, M3 (M12 ist in Standard-Sets meist nicht enthalten.)
- Steckschlüssel: 10 mm
- Spitzzange
- Winzig kleiner Philips-/Kreuzschraubenzieher
- Abisolierzange
- Dremel für die Aluschiene (Besser: Flex)
Kippschalter habe ich vorverdrahtet gefunden, Druckknöpfe leider nicht - also musste ich doch löten. Wenn Ihr kein Bock drauf habt, kauft andere Schalter - die Auswahl ist aber eher gering, zumindest bei den großen Kaufhäusern. Es gibt sicherlich Elektro- oder DIY- oder Arduino-Spezial-Shops, die mehr bieten ... Und falls Ihr doch löten mögt (Spoiler: Spaß!), dann braucht Ihr noch mehr:
- 5 Metall-Pushbuttons
- Billiges Lötkolben-Set mit allem was nötig ist (Besser: Lötstationen)
- Dritte Hand
- Schrumpfschläuche
- Heißluftpistole, Gasbrenner oder Feuerzeug
Wenn Ihr noch nie gelötet habt: Das Arduino-Zeugs ist alles ziemlich klein - es ist friemelig. Gebt der Sache mal ein Dutzend Lötstellen Zeit, dann geht es schon viel einfacher und sauberer von der Hand. Tipps kommen aber natürlich noch.
Und wenn sich jetzt jemand denkt "Mann ist das kostspielig!": Ihr könntet auch ein MIDI-Eingabegerät als Windows-Eingabegerät nutzen - auch mit Autohotkey, super schick und bei 64 Knöpfen für 60 Euro auch deutlich billiger. Wie das geht zeigen wir hier.
Tipp vorweg: Testen!
Ich würde empfehlen, Bauteile vor/nach jedem Verarbeitungsschritt zu testen. Testet die Schalter im Originalzustand, nach dem Anlöten oder Anstecken von Kabeln, nach dem Einbau in den Rahmen, nach dem Verbinden mit dem Steckbrett und nach dem Verbinden mit dem Arduino selbst sowieso. Es ist einfach ärgerlich später Dinge wieder auseinanderbauen zu müssen.
Zum Testen könnt Ihr ganz einfach einen Stromkreis mit Diode bauen, hier im Bild mit einer separaten Stromversorgung für Steckbretter. Einfach Plus an Plus und Minus an Minus - geht auch ohne Widerstand. Dann kommt der Button mitten zwischen Plus-Leitung und Plus-Beinchen der Diode - damit ist der Stromkreis offen, die Diode ist aus. Per Knopfdruck sollte sie dann aufleuchten und der Knopf ist okay.
Alternativ funktioniert natürlich auch ein Spannungsprüfer, hier ein Benning Duspol per Klemmverbinder und Jumper-Kabeln mit dem Steckbrett verbunden.
Aluschiene vorbereiten
Als Träger wollte ich eine schmale Aluschiene haben, die unter die kleine Konsole geschraubt wird, auf der der Monitor steht. Also geht's endlich ans Werkzeug:
Perfekte Maße bekommt man selten, folglich muss das Teil zunächst mal auf Maß gebracht werden - das ging sogar mit einem Dremel samt Standardtrennscheibe, aber nicht wirklich sauber. War mir egal, zumal die erste Schiene einige Tage vorher zu klein war. Wie gesagt, ungeduldig ...
Anschließend wird gebohrt: Die Druckknöpfe benötigen riesige M12-Löcher, die Kippschalter moderate M6-Bohrungen. Und zum Arretieren unter der Monitorkonsole M3-Löcher durch Ober- und Unterseite des Profils. Dann sieht man zwar die Schraube, die unten herauskommt, aber M3 ist klein - und die Mutter im Profil auf eine kurze Schraube zu bekommen ist der Horror, wenn man das Werkstück nicht einfach umdrehen kann ...
Die Schalter ...
Bei den Schaltern ist wichtig, dass es sich für dieses Setup um ON-OFF-Schalter handelt, gleich ob sie gekippt oder gedrückt werden. Bei diesem Schaltertyp heißt es wirklich nur: Stromkreis auf, Stromkreis zu. Die meisten Schalter gibt es auch in ON-ON-Varianten, die zwischen zwei Stromkreisen umschalten - heißt in der Arduino-Welt: Die eine Stellung sendet das Signal HIGH und die andere LOW. Die kann man auch nehmen und nur zwei Terminals verbinden, kommt auf dasselbe hinaus.
Funktional sind die Druckknöpfe und Kippschalter übrigens halbwegs identisch: Sie werden von ON auf OFF und wieder zurück geschaltet - nur, dass das beim Druckknopf automatisch und unmittelbar geschieht, beim Kippschalter ist der Mensch dafür verantwortlich. Zum Starten von Programmen sind Druckknöpfe eigentlich die logischere Wahl. Aber ich mag die Vorstellung, mit Kippschaltern die Möglichkeit zum Togglen zu haben, sprich zum Beispiel die Stummschaltung zu aktivieren und wieder zu deaktivieren. Oder den Zoom-Modus in einem Spiel umzuschalten.
Wenn die Schalter vorverdrahtet sind: Glückwunsch - fast schon fertig. Die angelöteten Kabel sind allerdings recht kurz und die klassische Lüsterklemme ist hier die einfachste Lösung, um die Kabel mit den Jumper-Kabeln zu verlängern. Ich habe eine Variante mit Klemmen statt Schrauben genommen, das spart Zeit und hält ordentlich.
Schalter zum Löten
Hinweis: Hier im Bild seht Ihr das Löten mit einem Motor - die Schalter hatte ich alle schon weggelötet ..., sorry.
Wenn Ihr Kabel anlöten müsst, könnt Ihr einfach die Jumper-Kabel nehmen. Tipp: Versucht erstmal die schwarze Kappe per Hand abzuziehen - wenn der eigentliche Pin am Kabel bleibt lässt es sich damit einfacher löten. Ansonsten isoliert rund 2 cm ab.
Wichtig: Stülpt einen Schrumpfschlauch über das Kabel.
Kabelenden oder übriggebliebene Pins zieht man dann am besten durch die kleinen Öffnungen an den Anschlüssen der Schalter und dreht sie ein wenig fest. Das Ganze muss dann arretiert werden, am besten per Dritter Hand, aber auch Schraubstöcke und -zwingen lassen sich nutzen.
Das Löten: Es ist simpel! Der eigentliche Kniff beim Löten: Die heiße Lötspitze kommt von unten an die Lötstelle und erhitzt Draht und Anschlusspin. Dann hält man das Lötzinn an die betroffene Stelle, wartet kurz bis es beginnt zu schmilzen, drückt ein wenig nach und zieht dann den Lötzinn weg. Die Kupferkabel saugen das Lötzinn regelrecht auf, daher verteilt es sich bestenfalls fast von alleine. In der Praxis muss man dann doch mal mit dem Lötzinn direkt an den Kolben zum Nachhelfen - alles ist wie gesagt sehr sehr klein. Und der Lötkolben war halt billig.
Zu Fotozwecken ist da jetzt etwas wenig Lötzinn drauf, aber selbst das hält schon.
Sobald die Lötstelle abgekühlt ist, dauert keine Minute, kommt der Schrumpfschauch über die Stelle, bis ganz runter zum Schalter. Dann kurz mit dem Feuerzeug erwärmen (nicht schmelzen!), die Schläuche ziehen sich zusammen und schon hat man eine schicke, geschützte Lötstelle.
Schalter einbauen
Nun können die Schalter in ihr Gehäuse und dabei merkt man auch, dass die Schrumpfschläuche eine gute Sache sind: Schon wenig mechanische Belastung genügt, um die fisseligen Drähte aus den Lötstellen zu reissen.
Alle gelieferten Schalter hatten ein Befestigungssystem: Eine Feststellscheibe (mit dem kleinen Ausleger), eine kleine Federscheibe für den Gegendruck, Unterlegscheiben und Mutter(n). Das Festschrauben geht am einfachsten mit einem Innensechskant oben über dem Schalter und einer Spitzzange zum Festhalten des Korpus im Profil.
Da die Bohrlöcher nicht alle so hübsch und die Originalscheiben winzig waren, habe ich noch separate, größere Unterlegscheiben oben aufgesetzt. Tipp: Einfach nochmal von oben durchbohren, das reicht meistens.
Steckbrett und Arduino verbinden
Sobald alle Schalter festsitzen, könnt Ihr sie mit dem Breadboard verbinden. Tipp: Gruppiert die Kabel für mehr Übersicht mit Klemmen oder Kabelbindern. Ich habe hier drei Vierergruppen und eine Dreiergruppe.
Die Verbindung ist ganz trivial: Ein Kabel kommt in die Minus-Leiste (bei Pushbuttons egal welches, bei Kippschaltern das schwarze) und eines irgendwohin auf dem Steckbrett. Nun sind diese Jumper-Stecker nicht gerade stabil, sie werden ständig herausgezogen. Und da helfen die kleinen Schraubterminals: Schraubt die Minus-Jumper-Stecker in ein paar Terminals und steckt sie irgendwo in die Minus-Leiste, Reihenfolge ist egal, aber besser der Reihe nach ...
Die Pluskabel kommen nun ebenfalls in Schraubterminals, nun sollte es aber dringend die korrekte Reihenfolge sein - zwingend ist es aber immer noch nicht.
Nun kommt ein erstes Kabel zum Arduino: Von der Minus-Leiste mit den ganzen Schraubterminals zu einem der GND-Anschlüsse des Arduino.
Im letzten Schritt kommen die kurzen Jumper-Kabel zum Einsatz: Vom Plus-Kabel von Schalter 1 in den Arduino Digital-I/O-Anschluss 1 und so weiter. Und damit ist die Hardware durch, die Schalter schalten jetzt Schaltkreise ein und aus und der Arduiono weiß, welcher Schalter, beziehungsweise welche I/O-PIN-ID, dafür verantwortlich ist.
Im nächsten Schritt kommt dann erst die Arduino-Software als Firmware auf die Platine, um mit dem Windows-Rechner zu sprechen und anschließend das Autohotkey-Skript, um Aktionen auszuführen.
Und zum Schluss noch ein paar Links zu typischen Arduino-Boards und -Sets:
Könnten sie vielleicht einen Schaltplan erstellen weil ich Blicke mit den Verkabeln auf der Platine nicht ganz durch.
Würde es auch mit das funktionieren: KEYESTUDIO Für Leonardo R3 Entwicklungsboard Mikrocontroller Board für Arduino mit USB-KabelKEYESTUDIO Für Leonardo R3 Entwicklungsboard Mikrocontroller Board für Arduino mit USB-Kabel
Ist es egal welches Arduino ich nehme oder anders: würde das hier funktionieren:
https://www.amazon.de/KEYESTUDIO-Mikrocontroller-Entwicklungsboard-Arduino-Leonardo/dp/B0786LJQ8K/ref=sr_1_2_sspa?camp=1638&creative=6742&dchild=1&keywords=Arduino+Leonardo&linkCode=xm2&linkId=b1ceaa75153d6b2de83602f6aa200bf2&qid=1631710172&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyRFVBTzBKV1VSNlpFJmVuY3J5cHRlZElkPUEwMzY0NDEwMUFFUzMwWDRORVVDUCZlbmNyeXB0ZWRBZElkPUEwMjkyNjc4MjVEQ1pBOU04NU01UCZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=
Inklusive der Platine:
https://www.amazon.de/gp/product/B07KKJSFM1/ref=ox_sc_act_title_9?smid=A1X7QLRQH87QA3&psc=1
Welches Breadboard/Steckbrett spielt keine Rolle, die Dinger haben im Grunde keine Funktion, außer, dass sie Kabel miteinander verbinden – das angegebne funktioniert also.
Beim Arduino-Board muss es eines sein, dass Tastaturen unterstützt, was wiederum über den ATMEGA 32u4 geht – das angegebene Board funktioniert also auch.
Für einen Schaltplan fehlt mir gerade etwas die Zeit, im Grunde ist es aber ziemlich simpel:
Plus-Pin eines jeden Schalters wird in einen der nummerierten I/O-Ports gesteckt – über die Nummer des Ports ist er dann in der Software ansprechbar. Das Steckbrett ist dabei nur zwischengeschaltet, man kann die Schalter genauso gut direkt an das Arduino-Board stecken.
Minus-Pins aller Schalter werden mit den Gnd-Ports (Ground/Erde) verbunden – da spielt es keine Rolle, welche Schalter an welchem Gnd-Port liegen. Daher kommen alle Minus-Pins der Schalter in die Minus-Leiste des Steckbretts – und von dieser Minusleiste geht dann ein Kabel an einen beliebigen der drei Gnd-Anschlüsse des Keystudio-Boards. Damit sind dann alle Schalter geerdet. Über das Steckbrett wird hier also einfach gebündelt, da die Minus-Pins für die Ansprache und Steuerung der Schalter absolut keine Bedeutung haben.
Ein tolles Projekt, aber könntest Du mir sagen, von wo am Arduino die Signale wie zum PC gelangen? Bzw. an einen USB Anschluss am PC. Danke! Oli
Die Kommunikation und die Stromversorgung laufen über den USB-Port des Arduino-Boards – einfach an einen beliebigen USB-Anschluss vom PC hängen. Der Arduino aus dem Artikel wird vom PC einfach als „Tastatur“ erkannt und sendet Signale genauso wie eine echte Tastatur an den Rechner.
Gibts das auch für MacOS und z.B. Keyboard Meestro? :)
Arduino gibt’s für MacOS, Keyboard Maestro kann Tastenkürzel – insofern: Yep, das ginge wohl auch am Mac. Wenn es das hier konkret geben sollte, müsstes Du meine beiden apfeligen Kollegen fragen – die werden darauf aber vermuuuuuutlich nicht einsteigen ;)