Mikrocontroller & Elektronik CheatSheet

danielWie war nochmal die Pinbelegung des Festspannungsreglers?
Wie stark darf ich die Pins des Mikrocontrollers belasten?
Wie viel Volt fallen an dieser LED ab?

Häufig sind es diese kleine Fragen, die gerade Anfänger den Einstieg in die Welt Elektronik oder Mikrocontroller erschwert.

Um diesen etwas zu erleichtern und auch den erfahrenen Bastlern einen Spickzettel zur Verfügung zu stellen, habe ich folgendes CheatSheet zusammengestellt:

Download: Mikrocontroller CheatSheet

Anmerkungen, Hinweise zu Fehlern oder Ergänzungen nehme ich gerne auf. Bitte kontaktiert mich dazu einfach per Mail oder

cron Jobs für Sonnenauf- & untergang

Nicht selten kommt es mal vor, dass sich ein Rechner nach astronomischen Zyklen orientiert. Die zur Berechnung der Osterfeiertage häufig verwendete Gaußsche Osterformel basiert so z.T. auf der Mondgleichung.

Unser Problem stellte sich etwas anders dar: Die LED-Flurbeleuchtung in unserem Flur wird durch den Router geregelt und lief bisher in der Regel 24/7. Mit dem hier vorgestellten Programm haben wir es nun geschafft die Laufzeit auf die Nachstunden zu begrenzen, indem wir die von unserer geografischen Position abhängige Sonnenuntergangszeit nutzen um die Lampen erst bei Dämmerung einzuschalten.

UPDATE: Ich habe nochmal etwas Arbeit in das Tool investiert und es in ein eigenes Projekt ausgelagert. Das neue Tool liefert wesentliche genauere Ergebnisse und mehr Funktionen. Zu finden ist es hier: calcelestial.

Das neue Tool besitzt eine Reihe weiterer nützlicher Funktionen:

usage: sun mode [options]
  mode is one of: rise, set, noon, daytime, nighttime
 
  following OPTIONS are available
	-t, --twilight	use special twilight (nautic|civil|astro)
	-d, --date	calculcate for specified date (eg. 2011-12-25)
	-f, --format	output format (eg. %H:%M:%S)
	-a, --lat	geographical latitude (-90° to 90°)
	-o, --lon	geographical longitude (-180° to 180°)
	-q, --query	query geonames.org for geographical position
	-z, --zone	use timezone for output
	-h, --help	show this help
	-v, --version	show version
 
A combination of --lat, --lon or --query is required!

Beispiele

Die einfachste Variante nutzt das Unix Tool at:

echo ~/bin/enable-lightning | at $(sun set -q Frankfurt -t civil)

Mit folgenden Cronjobs, lässt sich dieses Prinzip auch leicht auf andere Anwendungen übertragen:

/libfn/blob/master/debian/libfn.cron.d
0 0 * * * echo 'fnctl stop && fnctl fade -c 000000' | at $(sun rise -q Aachen)
0 0 * * * echo 'fnctl start' | at $(sun set -q Frankfurt)

Mit dem Tool nvram-wakeup, lässt sich so bsp. der Rechner jeden Tag 10 Minuten for Sonnenaufgang automatisch starten ^^:

nvram-wakeup -s $(date -d "-10min $(sun rise -q Berlin)" +%s)

Oder möchtest du deinen Rechner nach Sonnenuntergang automatisch herrunterfahren?

shutdown $(date -d +10min $(src/sun set --lat=50.55 --lon=-6.2) +%H:%M)

HIDeKey

Als Abschlussprojekt und Vorbereitung auf meine Betreuertätigkeit für die Mikrocontroller-AG des MMI’s habe ich mich näher mit dem USB-Bus und dem darauf aufbauenden HID-Protokoll befasst.

HIDeKey ist ein kleiner USB-Stick, der als HID-Tastatur vom Rechner erkannt wird und beliebge Zeichenketten und Tastenkombinationen an den Host-Rechner senden kann.

Mein Ziel war es ein kleinen Hardware-Dongle zu entwickeln welcher Passwörter, TANs und Onetime-Tokens direkt an jeden beliebigen Rechner senden kann. Meine Passwörter sind im verschlüsselt EEPROM des Mikrocontrollers gespeichert. Beim Drücken, des Tasters auf dem Stick, wird das Passwort eingegeben.

Als Hardware nutze ich die zuvor vorgestellten USBasp Programmieradapter aus China, deren Firmware ich durch eine eigene ersetzt habe. Mit einem zusätzlichen Taster lässt sich so über ein kleines Menü zwischen 10 User-Passwort-Kombination wählen.

Neue Passwörter können mit einem kleinen Konsolen-Programm direkt über den Rechner einprogrammiert werden.

HIDeKey soll auch zur Generierung von One Time Passwords (OTP) genutzt werden können. Da er sich wie ein gewöhnliche USB-Tastatur verhält, kann er auch unterwegs am Schlüsselbund in Internet-Cafes und Rechner-Pools genutzt werden.

Sourcecode & Schaltpläne etc. gibt es wieder per git. In meinem Wiki ist auch noch etwas Dokumentation gesammelt.

HIDeKey ist wie die meisten meiner Prrojekte als OpenSource veröffentlicht. Ich freue mich über jede Verbesserung, Erweiterung oder andere Beiträge zu diesem Projekt 🙂

Das 3€ ATmega Developement Board

Für gerade mal 2,95€ bieten chinesische Händler einen Klon des In-System-Programmers USBasp von Thomas Fischl auf eBay an. Das Board wurde ursprünglich zum Programmieren von AVR Mikrocontrollern entwickelt und basiert selbst auf einem ATmega8 Controller. Das Board bietet folgende Features, die auch für andere Zwecke genutzt werden können:

  • Software USB mit V-USB
  • Stromversorgung über Rechner
  • wahlweise 5V oder 3.3V
  • 2 LEDs
  • 1. Jumper
  • 6 IO-Pins (inkl. UART)

Dieses Angebot ist preislich unschlagbar. Es gibt kein anderes megaAVR Board, das inkl. Versandkosten für unter 3 € zu haben ist. Auch ein Selbstbau mit den günstigsten Bauteilen ist bei kleineren Stückzahlen (< 50) weit teurer. Fertige Leerplatinen sind aber auch über eBay verfügbar.

Der günstige Preis hat aber auch einen Nachteil: Mitunter muss man einen Monat warten, bis der Stick im eigenen Briefkasten liegt. Dafür gibt es i.d.R. keine Probleme beim Zoll 😉

Das 3€ ATmega Developement Board weiterlesen

RWTH uC Tetris

Neben der Informatik Vorlesung besuchte ich dieses Semester die Mikrocontroller AG. In dieser freiwilligen Veranstaltung lernten wir den aus der Vorlesung bekannten Mikrocontroller, ATMega zu benutzen.

Zusammen mit meinen Gruppenmitgliedern Annika, Maiwand & Christian bauten wir ein 8×16 LED-Dot Matrix Display auf dem wir Tetris spielen konnten:

RWTH uC Tetris weiterlesen