4×4 Simple Keypad

Es war so um das Jahr 2017 rum als ich feststellte, dass diese kleinen 4×4 Matrix Tastaturen, die man überall auf Ebay oder anderen Chinesisch Quellen nachgeworfen bekommt, wunderbar mit der der Pinbelegung des Arduino Pro Micro passt.

Gleich mal eine Hand voll von beiden bestellt.
Ja die Tastaturen kommen leider mit Pinheadern, falsch herum, aber die kann man ja auch wieder entfernen.

Da die Tastatur nur auf einer Seite Lötbar ist, also zuerst die Pinheader auf der Rückseite wieder einlöten. So dass sie vorne nicht herausschauen. Dann die 8 Pins in die Kontakte 2 bis 9 des pro Micro stecken und mit etwas abstand verlöten.
Den Abstand habe ich so gewählt, dass der Micro USB Port des Arduino auf gleichem Level ist, wie die Platine der Tastatur.

Dazu habe ich aus 3mm Acryl das Gehäuse mit dem CNC Laser geschnitten. 4 Lagen zusammengeklebt und fertig ist der Gewinner von „Nicht schön aber ungeheuer praktisch“.

50 x 77 x 12mm ohne Nippel.

Gut, wir haben dem Kleinen noch nicht gesagt was er tun soll und dafür gibt es sehr viele Anwendungsmöglichkeiten.
Dafür habe ich aber auch gleich mehrere gebaut.

Bsp.:

  • Tastenmacros von aufwändiger Software wie Photoshop
  • Cheatcodes für Spiele
  • 800 Mausklicks in einer Minute, hier ein Tastendruck
  • ein Passwortgenerator
  • häufig genutzte Telefonnummern und Adressen
  • usw.

Für die Umsetzung habe ich die Librarys Keypad.h, Keyboard.h und für die Mausklicks die Mouse.h verwendet. Mehr also den Beispielcode habe ich auch kaum benötigt.

Gibt es Haken? Klar, irgendwas ist ja immer.
Die emulierte Tastatur ist Englisch. Also auch das Layout. Ganz nervig. Z zu Y und so weiter, siehe das Beispiel.

if (customKey == '6') { Keyboard.println("04129 Leipyig"); }

Sollte man Modifiertasten verwenden wollen, ist man auf OSX, Win oder Linux festgelegt für die die Tastatur den Moment vorgesehen ist, sonnst geht sowas hier nicht:

if (customKey == 'D') { Keyboard.press(KEY_LEFT_GUI);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press('v');
Keyboard.releaseAll(); }

Also ein paar Beschränkungen die man im Hinterkopf behalten sollte, dann geht alles klar.

Anbei ein kleines Demoskript um die Fähigkeiten des verbauten Arduino zu zeigen.
http://www.hjhac.com/wp-content/uploads/2022/12/MatrixTastatur4x4Demo.ino_.zip

GRBL Limitboard V1

Es hat mich dann doch gewurm und ich habe mich hingesetzt und das Design der Platine zweiseitig gemach.
Noch einen 2. parallel geschalteten Anschluss für Probe auf der Seite wo auch der USB Anschluss des Arduino sitz.
So ist der Anschluss von außen zugänglich.

Und ab zu JLCPCB in China mit den Gerber Daten.
Bei den günstigen Preisen natürlich gleich eine Hand voll mehr in schwarz bestellt.
Im Zweifel sind es gute Eiskratzer.

Und was soll ich sagen? Es funktioniert. Wie schon bei der selbst gefrästen Platine.

Der parallel geschaltete Anschluss für Probe war so gedacht, dass man sich aussuchen kann, an welchen man die Probe anschließt, Intern oder Extern.
Es hat sich jedoch gezeigt, dass auch 2 angeschloßene Proben kein Problem darstellen.

Project search light: WS2811 DMX Teensy3.1

2014-10-31

Hier einige anscheinend nützliche Links die ich bei meiner Informationssuche für mein nächstes Projekt gefunden habe.
Wie an den Themen unschwer zu erkennen ist, will ich WS2811/12b LED Streifen über einen Teensy per DMX steuern.

Teensy/Arduino:
OctoWS2811 LED Library OctoWS2811
Vixen Lights steuert Arduino blog.huntgang.com
Arduino WS2811 Strobe Pixels twinkleclaus.com
FastSPI LED Library fastled.io

WS2811/12b LED, von Adafruit auch unter dem Namen Neopixel unters Volk gebracht:
Einige ganz gute Preise wenn man auf eine Lieferung aus China warten kann und eventuell noch zum Zoll muss. aliexpress.com
LED-Cubes aus WS2811 Pixeln kickstarter.com
Einige interessante Einzelheiten zur Ansteuerung WS281X-signal-quality

DMX:
Arduino als PC-DMX Interface arduino-dmx
DMX Library DMX Library
DmxSimple
Ein midi zu dmx arduino control shield sonicrobots.com

Komfortable RTC Programmierung

RTC1307
Der italienische Blog Lucadentella stellt hier eine komfortable Möglichkeit vorgestellt, diese kleinen weit verbreiteten RTC-Module mit DS1307 Chip und Knopfzelle mit Hilfe eines Arduinos am PC einzustellen.

RTC steht in diesem Fall für Echtzeituhr (englisch real-time clock)
Diese hier verwendeten RTC-Module verwaltet selbstständig die aktuelle Uhrzeit und stellt sie auf Anfrage über ein I2C Bus einem angeschlossenen Mikrocontroller (z.B. Arduino oder Pi) zu Verfügung.
Damit können dann beispielsweise Messwerte mit einem Zeitstempel versehen werden.
Um die RTC beim einschalten eines Gerätes nicht erneut stellen zu müssen sind die Module mit einer Knopfzelle gepuffert.

Sehr nützlich, gibt es in der Bucht oft für unter 5€.

Temperatursensor TMP123

Der  Temperatursensor TMP123 von Texas Instruments kommt in SMD Gehäuse mit Anschlüssen nach SOT23-6, also arschklein aber noch gerade so mit einer feinen Spitze lötbar.

Specs:
Die Komunikation mit dem TMP123 erfolgt über SPI
12 bit Auflösung
-40 bis 125 °C Messbereich, mit einer Genauigkeit von +- 1,5°C im mittleren Bereich
Verträgt 3,3V und 5V
Soweit ich es sehen kann unterscheidet sich sein Bruder der TMP121 nur in der Pinbelegung.

 

Ich habe mich mal daran gemacht 2 von den kleinen Kerlen Breadboard tauglich zu machen.

Sowas hätte früher im Staubsaugerrohr nicht mal geklappert.

 

Der TMP123 wird vor dem Löten von einer Krokoklemme auf der Adapterplatine festgehalten.

 

Noch die Stiftleiste dran und das war schon das Wesentliche.
Mit abgewinkelten Stiftleisten spart man übrigens einiges an Platz auf dem Breadboard.

 

Hinten habe ich noch die Pinbelegung aufgeklebt.

 

Beispielcode für den Arduino

TMP121_123.pde.zip

 

Flexible RGB LED Leisten

Ich will hier mal über LED Lichtleisten schreiben, diese Art der Beleuchtung findet inzwischen immer mehr Verbreitung und die Preise befinden sich gerade im freien Fall.
LED Strips kommten gebräuchlicherweise auf Rollen zu je 5 Meter daher, diese bestehen aus flexiblen ca. 10mm breiten Platinen aus Polyimidfolie auf die die Kupfer Leiterbahnen aufgedampft wurden.
Darauf befinden sich je nach Hersteller 30-120 LEDs pro Meter, einige Widerstände und Treiber ICs. Diese LEDs können einfarbig sein oder RGB LEDs sein d.h. in einer RGB LED sind Leuchtdioden in den Farben (r)ot, (g)rün und (b)lau gemeinsam vergossen und können somit unterschiedlich angesteuert zusammen so gut wie alle Farben des sichtbaren Lichts erzeugen.

LED Strips mit Einfarbige LEDs  gibt es in allen möglichen Farben, wobei ich dort nur noch die weißen und warm weißen guten Gewissens empfehlen kann.
Wenn Farbe ins Spiel kommt sollte man gleich zur RGB Variante greifen, da man dort deutlich flexibler ist wenn das Ergebnis nicht den Wünschen entspricht und die Farbe seinen Wünschen viel genauer anpasst werden kann. Bei dieser Art wird am Controller Helligkeit und eine Farbe für die gesamte Länge eingestellt.

Kommen wir jetzt zu den richtig coolen Zeug, RGB LED Strips mit adressierbaren LEDs.

Bei denen kann man dann mit einen Computer oder Microcontroller Board wie dem Arduino jede LED einzeln ansteuern. Erreicht wird dies durch speziele ICs auf der Lichtleiste, wo ein IC für je eine bzw. zwei RGB LEDs zuständig ist.
Diese Bus angesteuerten Treiber ICs gibt es inzwischen in vielen Variationen und sind unterschiedlich anzusteuern.

HL1606
Der HL1606 ist einer der älteren Treiber und noch ziemlich dumm, dafür aber weit verbreitet. Er wird mit 4 Datenleitungen als SPI Bus angeschlossen und stellt kein PWM zur Verfügung, so dass die Farben softwarseitig moduliert werden müssen.
Es existiert eine Library für diese LED Strips HL1606 Arduino library.

LPD8806
Der LPD8806 wird über 2 Datenleitungen angesteuert und kann jede Farbe 7 bitig PWM Dimmen was rund 2 Millionen Farben ergibt.
(ältere Version LPD6803 nur 5 Bit PWM)
LPD8806s besitzen 6 Ausgänge und können  2 RGB LEDs gleichzeitig ansteuern.
Die Leute bei Adafruit habe den Chip reverse engineered und eine Anleitung incl. einer Arduino Library für diese LED Strips geschrieben, welche sie natürlich auch verkaufen.

WS2801
Der WS2801 kann pro Farbe 8 Bit PWM ausgeben was demnach 16,7 Millionen Mischfarben ergibt. Da für jede RGB LED ein IC zuständig ist, kann somit auch zwischen jeder LED zugeschnitten werden. Sparkfun verkauf diese WS2801 getriebenen LED Leisten und bietet gleich auch Beispielcode für den Arduino und Datasheets zum WS2801 an. Als Library kann man die unten genante Fastpsi verwenden.

Es gibt noch unzählig viele andere Treiber ICs für adressierbare  RGB LED Strips, die oben genannten sind die gebräuchlichsten.

Es existiert mit Fastspi noch eine Arduino Library die eine größere Menge von Treibern unterstützt,

  • 595 style shift registers
  • hl1606 based led strips
  • lpd6803 based led pixels
  • tm1809 based led strips
  • tm1804 based pixels
  • ws2801 based led strips and pixels
  • lpd8806 based led strips
  • ucs1903 based led strips
  • sm16716 chipset
  • support for the ws2811 chipset

Zu bedenken ist übrigens, dass das ansteuern von LEDs einiges an RAM braucht. So soll ein Arduino Uno/Nano mit seinen 2KB Ram maximal 160 RGB LEDs ansteuern können. Ein Mega hat übrigens 8KB Ram. Ein raspberry pi ist angesichts dieser Limitation für größere Projekte wie eine Matrix aus mehreren LED Strips eher in Betracht zu ziehen.

Des weiteren sollte man beachten, dass so ein Meter LED Leiste einen haufen Strom braucht den der 5V Ausgang eines Arduinos nicht liefern kann.
Es ist also ein ausreichend dimensioniertes zusätzliches 5V Netzteil nötig.
Für die mit WS2801 gibt der Hersteller einen maximalen Verbrauch von 1.8A pro Meter an wenn alle einzelnen Farben aufgedreht sind.
Bei allen anderen sollte mit ähnlichen Werten zu rechnen sein.

Günstig kaufen kann man solche LED Strips an viel Orten, z.B. bietet bestlightingbuy.com die 5 Meter Rolle für 99-120 $ an.

ref.: nut-bolt.nl

Links zum Arduino

Einige grundsätzliche Links zum Arduino

Der Arduino ist eine nette kleine Microprozessorplatform die es auf Grund seiner offenen Quellen inzwischen sehr vielen Variationen gibt.

Andreas Kriwanek hat auf http://www.kriwanek.de/arduino/boards.html einige der vielen Bords mit ihren Unterschieden aufgeführt und (sehr nützlich) Zeichnungen der Pinbelegung beigepackt.

Der Blog arduino-praxis.ch erklärt den alltäglichen Umgang mit dem Arduino und bringt gerne auch ungewöhnliche Shields im Test von denen man sonnst noch nie was gehört hat. Oder so was, behinduino.

In der Arduino Abteilung bei instructables.com kann man sich von den Arduinoprojekten anderer Inspirieren lassen und bekommt gleich noch eine Anleitung zum Nachbauen.

So, jetzt wisst ihr was ihr bauen wollt aber fragt euch was da eigentlich für Widerstände da an die LED dran kommen, da hilft der LED-Rechner von Spaceflakes.de und hier wird gezeigt welchen Farbcode der Widerstand dann haben muss.
Ein anderer LED-Rechner.

Video Tutorials zum Arduino bekommt man bei Element14.com.

Erste Anlaufstelle ist natürlich arduino.cc die im Playground die Grundlagen im Umgang und Programmierung auch gleich in Deutsch anbieten.

 

AtTiny45 mit Arduino programmieren

Auf der ArduinoSpielwiese erklären sie dir, wie du mit deinem Arduino einen blanken AtTiny45 programmieren kannst.