Archiv der Kategorie: Hardware

piCore: Zwischen Einplatinencomputer und Microcontroller

Der RaspberryPi ist ein Einplatinencomputer, der über GPIO Pins mit angeschlossener Elektronik kommunizieren kann. Mikrocontroller (µC) können das auch. Dafür hat der Pi ein ausgewachsenes Betriebssystem (meist Raspbian), ein Dateisystem, ein Netzwerk etc. Andererseits benötigt der µC wenig Strom und man kann ihn ohne Bedenken ausschalten. Der Pi mag das Ausschalten nicht so gerne: er möchte sauber heruntergefahren werden. Und auch sonst muss man sich mehr um ihn „kümmern“ – Software aktuell halten, ggf. das Betriebssystem aktualisieren.

Besonders der Punkt des Herunterfahrens störte mich bei vielen Pi-Projekten, die irgendwann in den Dauerbetrieb gehen sollen. Wenn ich eine LED-Wand damit ansteuere, möchte ich sie ausschalten können, ohne mich zuvor per SSH anmelden zu müssen.

Diese Lücke zwischen ausgewachsenem OS und µC-Firmware adressiert die Distribution piCore – ein auf TinyCoreLinux aufbauendes Linux, das komplett im RAM läuft. Mittlerweile gibt es schon Version 9 und ein aktives Forum mit Nutzern und Entwicklern. Das Basisimage von PiCore ist weniger als 40 MB groß und lässt sich daher schnell installieren. Eine Testinstallation bootete flott in weniger als zehn Sekunden. Weil alle Programme direkt im RAM laufen und es keine langsamen Zugriffe auf die SD-Karte gibt, verhält sich das System äußerst responsiv und flott. Da das OS von SD-Karte bootet und diese anschließend nicht mehr benötigt, kann der Pi ohne schlechtes Gewissen ausgeschaltet werden – alle Daten liegen ja im RAM. Sollen Daten das Ausschalten überleben und auch beim nächsten Bootvorgang erhalten bleiben, gibt es hierfür das Programm filetool.sh, das die Userdaten auf die SD-Karte schreibt.

Fazit: Die Grenzen von piCore liegen klar bei Anwendungen, die viele Daten schreiben – insbesondere, wenn diese Daten nicht mehr in der RAM passen und auch beim nächsten Bootvorgang erhalten bleiben sollen. Wer jedoch die umfangreiche Hardwareausstattung des Pi nutzen möchte und keine Sorgen mit dem Blinden Trennen von der Stromversorgung haben möchte, sollten einen Blick auf piCore werfen.

Gar nicht so schlaue Tradfri-Lampen von IKEA

Die Problemstellung ist eigentlich ganz einfach: In unserer Wohnung gibt es einen Flur ohne Fenster – der demnach immer recht dunkel ist. Wenn man durch den Flur hindurchgehen möchte, macht man das Licht an, geht in den nächsten Raum und mach dann das Licht wieder aus. Wie schön wäre es, wenn man einen Bewegungsmelder hätte, der diese Lampen automatisch ein- und ausschalten würde. Von Ikea gibt es nun eine Reihe Lampen und Zubehör, die sich miteinander über das Protokoll ZigBee verbinden lassen – genannt Tradfri.

Also bin ich losgezogen und habe mir ein solches Lampenset gekauft. Die Installation verlief ohne Probleme: Lampen werden in die Fassung geschraubt, man hält einen kleinen Bewegungsmelder in sehr kurzem Abstand direkt daneben, drückt auf einen Knopf und die beiden Geräte sind miteinander verbunden. Am Bewegungsmelder lässt sich einstellen, wie schnell die Lampen bei einer erkannten Bewegung wieder ausgehen sollen (nach ein, fünf oder zehn Minuten). Zudem kann man einstellen, ob der Bewegungsmelder  bei Tag oder nur bei Dunkelheit arbeiten soll. Das klappt alles ganz gut und auch so, wie ich mir das vorgestellt habe. Bei einem Preis von 15 € pro Lampe (E14-Sockel) und 18 € für den Bewegungsmelder ist der Spaß im Bereich der Smart-Home-Lampen im akzeptablen bis günstigen Bereich.

Als weiteres Feature der Lampen habe ich von der Kompatibilität mit Philips Hue Bridges gehört. Also habe ich das auch einmal mit einer alten Hue Bridge der ersten Generation ausprobiert. Leider klappte das nicht wie gewünscht. Verschiedene Blog-Artikel weisen darauf hin, dass die Lampen erst ab einer gewissen Firmware Versionen mit den Bridges kommunizieren können. Um die Lampen auf eine neue Firmware zu aktualisieren oder gar auszulesen, benötigt man jedoch ein weiteres Gerät von Ikea: ein Tradfri-Gateway. Dieses Gateway ist, zumindest hier im Ruhrgebiet, derzeit überall ausverkauft und mit 30 € auch einigermaßen teuer. Die Verbindung der Lampen mit dem Gateway ist mir daher leider nicht gelungen.

Da die Lampen aber dennoch das tun, was sie sollen – auch ohne eine Kommunikation mit einem zentralen Gateway – werde ich sie behalten und weiter testen. Für die Integration über ein Gateway und damit auch als Schnittstelle mit anderen Geräten würde ich jedoch wieder auf Lampen zurückgreifen, die den Standard besser unterstützen.

Docker auf dem RaspberryPi

Mit HyprioOS gibt es seit einiger Zeit ein Image für den RaspberryPi, das docker container auf den Pi holt. Man muss beachten, dass die docker images für ARM-Architekturen gebaut sind. Davon gibt es aber immer mehr – hypriot selbst stellt bereits einige zur Verfügung. Man kann z.B. mit einem schlanken alpine-Basisimage starten und sich darauf aufbauend mit Hilfe eines Dockerfile den Container für den eigenen Bedarf stricken.

$ docker build -t containername .

Mehrere Container können schließlich zu einem Service zusammengebaut werden. Das macht docker-compose und ein docker-compose-yml-File.

$ docker-compose up

Mehrere Services lassen sich schließlich zu einem Swam zusammenfügen und auf mehrere Pis verteilen. HypriotOS bringt alle wichtigen Tools mit und läuft zuverlässig.

Laptop selbstgebaut

Eigentlich ist es gar nicht so einfach, einen Laptop selbst zusammen zu stellen, da die Einzelkomponenten hochgradig integriert sind. Auf dem 34C3 ist mir jedoch ein Koffer begegnet, der genau diesen Versuch mit einem Rasperry Pi unternommen hat. Neben dem Pi, sind unter dem Plexiglas zwei Powerbanks verbaut, die das Display und den Pi mit Strom versorgen – und das über 16 Stunden lang. Daneben ist noch Platz für ein Steckbrett und kleinere Bauteile. Als mobile Hacking-Stations ist das Gerät also durchaus interessant.

Inspiriert wurde das Projekt von SpyPi, welches den Kofferansatz weitertreibt, mit zusätzlichen Auf- und Anbauten ausstattet ist und Teil einer 2017 fertig gestellten Abschlussarbeit ist. Die Hardware wird unter spypi.ch beschrieben.

USB-Sticks und SD-Karten validieren

Nicht immer funktionieren USB-Sticks und SD-Karten so wie sie sollen. Bei meiner letzten Bestellung aus China hatte ich den Verdacht, dass einige SD-Karten defekt waren – sie funktionierten für einen kurzen Zeitraum und gaben dann den Geist auf. Aus der c’t kannte ich das Programm H2testw, mit dem Flashspeicher geprüft werden kann. Dazu wird das Speichermedium mit Testdaten vollständig beschrieben und die Daten anschließend wieder gelesen. Wenn alles korrekt läuft, stimmen die gelesenen Daten mit den ursprünglich geschriebenen Daten überein. Das kann je nach Größe des Speichermediums durchaus eine Weile dauern.

Für Linux gibt es hierfür das Paket f3, das mit den Programmen f3write und f3read das gleiche tut. Für einen korrekten USB-Stick läuft das Programm wie folgt ab:

$ f3write /media/STICK/
Free space: 196.84 MB
Creating file 1.h2w ... OK! 
Free space: 0.00 Byte
Average writing speed: 6.76 MB/s

Anschließend werden die geschriebenen Daten wieder gelesen.

$ f3read /media/STICK/
                  SECTORS     ok/corrupted/changed/overwritten
Validating file 1.h2w ... 403128/        0/      0/      0

  Data OK: 196.84 MB (403128 sectors)
Data LOST: 0.00 Byte (0 sectors)
          Corrupted: 0.00 Byte (0 sectors)
   Slightly changed: 0.00 Byte (0 sectors)
        Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 7.75 MB/s

 

Blinken-Rocket

Auf dem 34C3 habe ich mir einen Bausatz (12 €) einer blinken rocket gekauft: eine Platine in Raketenform mit einer 8×8-LED-Matrix und zwei Buttons. Eine Anleitung erklärt, wie ich die Bauteile korrekt anlöten kann und ein Editor hilft bei den ersten Schritten, eine Schrift oder einfache Animationen über das Display laufen zu lassen. Das Programm wird über ein Audioschnittstelle übertragen und so kann man mit seinem Handy direkt ein kleines Programm erstellen und loslegen. Betrieben wird die Schaltung mit einer CR2023 Knopfzelle. Die Quellen für das Hardware-Design und auch die Firmware für den auf der Platine verbauten ATiny88 sind bei github verfügbar.

Nach meinen ersten Lötversuchen mit SMD-Bauteilen, konnte ich die Rakete innerhalb kurzer Zeit in Betrieb nehmen. Leider lassen sich die Buttons nicht über das Interface programmieren – sie dienen lediglich zum Durchschalten verschiedener Programme und als Ausschalter. Da die Firmware aber offen ist, kann sie vielleicht einfach erweitert werden, so dass auch komplexe Programme ablaufen können. Mangels internen Zustands ist z.B. auch kein Game of Life möglich.

Update
Ich habe gesehen, dass die Rakete bei einem Shop aus dem Dunstkreis des Metalab in Wien vertrieben wird – dort allerdings für gut investierte 25€.

SHA17 – Empfehlungen

Die SHA2017 ist ein Hackercamp und fand in diesem Jahr im August in den Niederlanden statt. Das Programm enthielt wieder ein paar interessante Vorträge. Foglende Vorträge haben mit besonders gut gefallen:

  • How the NSA Tracks you
    Der ehemalige NSA Direktor Bill Binney berichtet über die Arbeit der NSA.
  • Smart home security with Tor
    Interessante Einführung und ein praktisches Beispiel das zeigt, wie man sein Heimnetz über das Tor Netzwerk als hidden Service zur Verfügung stellt.
  • The Hackeboy handheld game console
    Der Vortrag stellt eine selbst gestaltete mobile Konsole vor. Die Hardware wie auch das Betriebssystem und der selbst erstellte Spieldesigner werden vorgestellt. Die Präsentation selbst ist grafisch äußerst opulent.

 

Raspberry Pi als Thin Client

Ich überlege derzeit, RaspberryPis als ThinClient für die Einrichtung eines Rechnerraumes zu nutzen. Diese sollen sich dann auf einen Linux-Server verbinden und Standard-Anwendungen wie Browser, Office, Python-Umgebung etc. ausführen.

Als Lösung habe ich an x2go für Client und Server gedacht, welches auch mit geringen Bandbreiten auskommt und evt. sogar eine Nutzung von zu Hause möglich machen könnte.

Die Raspi-Distribution RPiTC (für Raspberry Pi Thin Client) sieht vielversprechend aus und funktioniert in ersten Tests solide.

Habt ihr schon Erfahrungen mit einem solchen Setup gemacht oder könnt Quellen angeben, die mir bei den ersten Schritten helfen? Dann schreibt es bitte in den Kommentar oder antwortet mir bei Twitter.

 

Klein aber fein – der MiniGameJam in Dortmund

Am 10.06.2017 fand der erste Game Jam in Dortmund statt – noch ein wenig zaghaft als Mini Game Jam tituliert. An einem sonnigen Samstag fanden sich ca. 20 interessierte Entitäten im Dortmunder Künstlerhaus direkt hinter dem Hauptbahnhof ein, um in nur acht Stunden ein vollständiges Spiel zu programmieren. Nach einer kurzen Kennenlernrunde haben sie Teams gebildet und konnten ein Thema aus den Vorschlägen „Familie“, „Grenzen überwinden“, „old school“ und „Zwei Buttons“ auswählen.

Ich selbst bildete mit Reinhard und Miriam ein Team, das mit keiner konkreten Idee für ein Spiel, aber für dessen Ausgabemedium startete.

Wir wollten ein Oszilloskop als Bildschirm verwenden. Normalerweise werden diese Geräte benutzt, um Wechselspannungen in Kurven zu visualisieren. Wenn man den Elektronenstrahl jedoch geschickt umlenkt und als analoges Signal auf zwei Eingangskanäle sendet, kann im XY-Betrieb faktisch Beliebiges auf dem Geräte dargestellt werden – soweit zumindest die Theorie. Wir haben einen Digtial-Analog-Wandler aus Widerständen erstellt und mit einem RaspberryPi angesteuert. Damit waren wir in der Lage, eine bescheidene Auflösung von 32×64 Bildpunkten auf dem Gerät darzustellen. Bei höheren Auflösungen flackerte das Bild aus Gründen, die wir in der kurzen Zeit nicht ergründen konnten wollten.

Nach ca. drei Stunden konnten wir beliebige Punkte auf dem Gerät positionieren und uns (endlich) um eine Spielidee kümmern. Wenig kreativ und motiviert durch die technischen Einschränkungen entschieden wir uns für eine Abwandlung des bekannten Spiels „flappy bird“, in dem ein Vogel zwischen Röhren hindurch manövriert werden muss. Gesteuert wird der Vogel mit nur einem Taster: beim Drücken fliegt der Vogel hinauf, lässt man den Button wieder los, sinkt er wieder. Diese Steuerung haben wir über eine kleine Platine mit zwei Tastern realisiert – der zweite Taster konnte das Spiel nach einem Game Over neu starten.

Da noch etwas Zeit übrig war, konnten wir uns Gedanken über eine Audioausgabe machen. Diese erfolgte über zwei kleine „Lautsprecher“, die wir ebenfalls über den Raspberry Pi angesteuert haben.

Das Projekt ist inklusive des Quelltextes bei github unter dem Namen osziflap abrufbar.

Am 7.10.2017 geht es (vielleicht?) weiter mit dem nächsten Game Jam – vielleicht nicht mehr Mini, vielleicht wieder in Dortmund, gewiss aber wieder mit mir.

 

Micropython auf einem ESP8266

esp8266

Hinter Micropython verbirgt sich eine Variante von Python, die auf Mikrocontroller zugeschnitten ist. Der ESP8266 ist ein recht günstiger (~4$) Baustein mit WLAN-Funktionen, für den jetzt eine Micropython-Firmware erschienen ist. Über das Development-Kit, das auf dem Bild zu sehen ist, verfügt der Baustein über einen USB-Anschluss, über den man mit dem Chip kommunizieren kann. Die PINs sind herausgeführt und lassen sich in Schaltungen verwenden.

Nun soll die Firmware für Micropython installiert werden. Diese lässt sich von der Webseite herunterladen. Für die Installation gibt es das Tool esptool.py, das sich ebenso einfach installieren lässt.

$ sudo pip2 install esptool

Leider funktioniert esptool derzeit nur mit Python2.

Anschließend kann die vorhandene Firmware auf den ESP8266 zunächst gelöscht und mit dem zweiten Befehl die neue Firmware übertragen werden.

$ esptool.py --port /dev/ttyUSB0 erase_flash
$ esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=8m 0 esp8266-20160825-v1.8.3-49-ga589fa3.bin

Bei mir kam es bei Geschwindigkeiten über 115200 Baud zu Probleme, weshalb ich die Geschwindigkeit reduziert habe. Die Befehle habe ich der Anleitung von mircopython entnommen.

Nun kann mit einem Terminalprogramm auf den Microcontroller zugegriffen werden. Das geht mit Putty, minicom oder auch miniterm.py.

$ miniterm.py /dev/ttyUSB0 115200

Sollte miniterm.py noch nicht installiert sein, so kann es mit „pip install pyserial“ nachinstalliert werden.

Im Anschluss erhält man eine Python-Konsole, die man für eigene Projekte verwenden kann. Beim Start steht der ESP als Access Point zur Verfügung, auf den sich Clients mit dem Standardpasswort ‚micropythoN‘ verbinden können. Für den Dateitransfer kann dann das Kommandozeilentool webrepl_cli.py verwendet werden.

Anlagen