Sonntag, 2. Oktober 2016

Faces of Maker Faire Berlin 2016

Warum geht man auf eine Maker Faire? Jaja - 3D Drucker, Arduino, Elektronik, Laser, Drohnen, Funk, Computer, Raspberry PI, Lasercutter, Fablabs, Hackerspaces, etc. Vor allem aber wegen der insteressanten Leute, die man dort trifft. Und auch auf diesem event ware wieder viele spannende Personen anzutreffen. Interessant wegen der Dinge, die sie gebaut haben, wegen der Vorträge, die sie halten, oder einfach wegen ihres verwegenen Outfits. In diesem Post nun also ein paar Bilder der anwesenden Maker.
















Hatte ich schon erwähnt, dass das Bad in der Menge der Maker viel Spaß gemacht hat?

Samstag, 1. Oktober 2016

Maker Faire Berlin 2016

Hallo Welt! Ich bin gerade in Berlin - auf der Maker Faire Berlin 2016. Nachdem ich die Make Munich toll fand, musste ich mal über den Tellerrand schauen und mir andere Veranstaltungen anschauen und Berlin ist eh immer eine Reise wert. Allein heute habe ich eine gefühlte Million Fotos gemacht, d.h. das kann ich nicht alles in einem Post abfackeln, daher werde ich wohl mehrere daraus machen.

Das Flair war gattungstypisch - die Standards wie Clubmate ...
... Drohnen ...
... und 3D-Drucker ...


... durften natürlich nicht fehlen.

Ansonsten erstmal ein paar Appetizer mit ersten visuellen Impressionen, wie dieser  Persistance of Vision Installation, die mir gut gefallen hat:



Und hier noch ein weiterer Augenschmaus, auch wenn ich nicht kapiert habe, was das ist:



Fahrzeuge
Ansonsten gab es noch diverse schräge Fahrzeuge zu bewundern:









Mad Max lässt grüßen ;-)




Soviel für jetzt - Fortsetzung folgt.

Dienstag, 19. Juli 2016

HP Microserver: OS Installation

Irgendwie bin ich nie dazu gekommen, den letzten Teil der Server-Serie zu posten. Das soll nun nachgeholt werden:

Heute installieren wir das Betriebssystem: Debian natürlich – die aktuelle stabile Version AKA Jessie AKA Debian 8.

Ein CD Laufwerk hat mein Server nicht, denn im ODD Slot ist ja die SSD eingezogen. Also gibt es im Wesentlichen folgende Optionen für das Installationsmedium:
  1. CD/DVD von externem Laufwerk
  2. Vom USB-Stick
  3. Via debootstrap
  4. Via iLO Virtual Media Image
Außerdem ist zu entscheiden, ob man Tastatur und Monitor anschließen, oder über die Remote Konsole installieren möchte.

Variante 1 ist doof, denn dann muss ich erst eine CD brennen und mit dem externen Laufwerk rumhantieren. Und CDs sind soooo 90er....

Variante 2 ist meine normalerweise favorisierte Option und extrem einfach zu machen: Debian installation image runterladen (ich nehm immer netinst) und dann einfach roh auf den Stick bügeln:

$ dd if=foo/debian-netinst.iso of=/dev/sdX

Dann den Stick einfach einstecken, Server starten, los geht's.

Variante 3 ist etwas aufwändiger und eher was für embedded Systeme wie Raspberry Pi. debootstrap ist im Wesentlichen ein System, mit dem man aus einer anderen Debian Installation heraus eine Neuinstallation auf einem gemounteten Laufwerk machen kann. So hab ich mein Debian z.B. auf eine SD-Karte installiert, um den RPi zum Laufen zu bekommen. Für einen Server nicht uninterressant, denn man kommt so ohne  Keyboard und Monitor aus, aber dafür gibt es auch andere Möglichkeiten.

Variante 4 ähnelt denen in 1 und 2, nur dass das installations image nicht auf ein physikalisches Medium kopiert, sondern auf einem Webserver zur Verfügung gestellt wird und dann von dort gebootet werden kann.

Vorbereitung

Aber erstmal müssen wir ein paar grundlegende Probleme lösen:

Der Server hat zwei SATA Controller. Die SSD hängt am zweiten, der erste bedient die 4 drive bays an der Front. Leider gibt es für Debian keinen Treiber für den RAID-Controller, also Software RAID. Auch gut.

Im allwissenden Netz fand ich eine Installationsanleitung, die empfiehlt, den Controller in den AHCI Modus zu schalten (BIOS). Leider kann man dann immer noch nicht direkt von der SSD booten, da das BIOS keine Konfiguration der Boot-Präferenz bezüglich der beiden Controller bietet. Die vorgeschlagene Lösung dafür lautet, grub auf einen USB Stick, oder eine SD-Karte zu installieren, die man dann in die entsprechenden Slots auf dem Motherboard steckt. Dann bootet das System von SD-Karte, der dortige Bootloader startet das System dann von der SSD. Nicht sehr elegant. Und auch nicht unproblematisch, denn die grub Konfiguration ist eine Wissenschaft für sich...

Nach etwas Rumprobieren fand ich dann heraus, dass man die Bootreihenfolge der beiden Controller aber sehr wohl konfigurieren kann, wenn man statt AHCI den SATA Legacy Mode verwendet. Sehr gut - so machen wir das!

Also erstmal ins BIOS booten (F9 oder via iLO: Boot to System RBSU). Dort dann den Modus einstellen:
System Options 
  -> SATA Controller Options 
    -> Embedded SATA Configuration 
      -> Enable SATA Legacy Support

Als nächstes müssen wir die Bootreihenfolge festlegen:

Boot Controller Order
  -> Ctlr:2 
    -> Controller Order 1

Und

Standard Boot Order (IPL) 
  -> IPL:1  Hard Drive C:

OS Installation

Als erstes brauchen wir einen Webserver. Auf diesem stellen wir das Installations-Image per http bereit. Die URL wird dann im iLO als virtuelles Medium eingetragen:

Virtual Media
  -> Scripted Media URL 
    -> http://192.168.0.99/debian-8.5.0-amd64-netinst.iso
  -> Boot on Next Reset -> check
  -> Insert Media


Nun können wir den Server starten/rebooten. Das geht auch aus dem iLO heraus (Server Reset) - sehr cooles Gefühl ;-).

An dieser Stelle trennen sich die Wege: Wenn wir mit Tastatur und Monitor, oder der graphischen iLO remote Konsole (Java oder .NET) installieren, können wir ganz normal arbeiten. Wer's etwas nerdiger mag, der schaltet sich nun per ssh auf das iLO und startet die remote console mit dem Befehl TEXTCONS. Das funktioniert aber nicht out of the box, weil der Debian Installer gerne den VGA Modus verstellt und den Framebuffer aktiviert, womit die virtuelle serielle Konsole nicht klarkommt. Deshalb muss man beim Booten der CD sofort Esc drücken, sobald sich der Isolinux Boot prompt zeigt. Auf diese Weise gelangt man in ein Kommandozeilen-Interface in dem man die Boot-Optionen von Hand eingeben kann. Und genau das tun wir:

    install vga=normal fb=false

Diesen Tip habe ich übrigens im Debian Wiki gefunden.

Die eigentliche Installation ist dann eher unspektakulär – alles wie bei jedem anderen Computer auch. Ein Tipp allerdings: Ich installiere zunächst komplett auf der SSD, als gäbe es die großen Disks nicht. Der Installer unterstützt das komplexe Szenario nicht nach meinem Geschmack und ich richte /home inklusive RAID lieber von Hand ein.

Als nächstes bearbeite ich gewöhnlich /etc/network/interfaces und konfiguriere dort eine statische IP-Adresse. Das ist für Server erheblich angemessener, als DHCP:

iface eth0 inet static
            address 192.168.0.10
            netmask 255.255.255.0
            gateway 192.168.0.1


Nun nur noch die gewünschte Software installieren und es kann losgehen. Apropos Software – mindestens die folgenden Tools sollten an dieser Stelle installiert werden, damit man vernünftig konfigurieren kann:
  • sudo
  • vim
  • hdparm
  • mdadm
Und der verwendete non-root user sollte in /etc/sudoers angelegt werden. Von root logins rate ich grundsätzlich ab – auch unter ssh.

Software RAID einrichten

Als Erstes müssen wir mal herausbekommen, wie unsere diversen Platten heißen:

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   3.7T  0 disk  

sdb           8:16   0   3.7T  0 disk 
sdc           8:32   0 117.4G  0 disk 
|-sdc1        8:33   0 112.6G  0 part  /
|-sdc2        8:34   0     1K  0 part 
`-sdc5        8:37   0   4.8G  0 part  [SWAP]


OK - also sda und sdb sind unsere RAID-Platten. Diese partitionieren wir nun:

$ sudo fdisk /dev/sda

'g':  create a new empty GPT partition table (for disks >2TB)
'n':  create new partition (accept all defaults)
't':   change partition type to 'LINUX RAID' (21)
'w':  write changes to disk and exit:w

Und analog auch für sdb.

Bei einem RAID Server ist es ratsam, den write-cache der Platten nicht zu verwenden. Also erstmal Status checken:

$ sudo hdparm -W /dev/sda
    /dev/sda:
     write-caching =  0 (off)


Sehr gut – ist aus. Wenn nicht hilft dies:

$ sudo hdparm -W0 /dev/sda

Und natürlich analog für sdb.

Nun legen wir das RAID-System an. In meinem Fall RAID1:

$ sudo mdadm --create /dev/md0 --level=1 \
    --raid-devices=2 /dev/sda1 /dev/sdb1

Das geht recht schnell, aber die eigentliche Musik spielt im Hintergrund, denn vom User unbemerkt wird das RAID synchronisiert.  Den Fortschritt kann man so prüfen:

$ cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sdb1[1] sda1[0]
          3906887488 blocks super 1.2 [2/2] [UU]
          [>....................]  resync =  0.3% (15118784/3906887488) finish=1872.7min speed=34633K/sec
          bitmap: 30/30 pages [120KB], 65536KB chunk

    unused devices: <none>


Das dauert ewig (bei mir >30 Stunden), aber man muss nicht warten bis es fertig ist.

Nun haben wir ein RAID1, aber dieses ist das Äquivalent einer rohen Platte – d.h. wir müssen noch (mindestens) eine Partition anlegen:

$ sudo fdisk /dev/md0

Und ein Filesystem kann auch nicht schaden:

$ sudo mkfs.ext4 -m 0.1 /dev/md0p1

Die Option -m legt fest, welcher Prozentsatz für root reserviert wird. Default sind 5%, was bei einer 4TB Platte einfach viel zu viel ist.

Als nächstes müssen wir das RAID einbinden, d.h. in /etc/fstab eintragen, damit es automatisch gemountet wird. Nun könnte man das Device /dev/md0p1 verwenden, doch sicherer ist es, die UUID zu verwenden. Und die findet man so:

$ sudo blkid /dev/md0p1
    /dev/md0p1: UUID="0a39c667-1947-4e97-993e-d294cedc6752"

    TYPE="ext4" PARTUUID="1ed56347-2adc-4454-8fb5-c11af8c7e1eb"

In /etc/fstab tragen wir dementsprechend ein:

UUID=0a39c667-1947-4e97-993e-d294cedc6752 /home/ ext4 errors=remount-ro 0 1

Nur noch mounten und das System ist im Wesentlichen fertig:

$ sudo mount -a


Sehr gut. Nun kann es losgehen: D.h. weitere Software je nach Anwendungsfall installieren, Daten draufspielen etc. etc.

Sonntag, 17. Juli 2016

Verflixter Wasserhahn

Grumpf!

Als ich neulich den Katzennapf auswaschen wollte hatte der Wasserhahn eine Überraschung für mich parat: Schwungvoll, wie immer drehte ich den Hahn auf und genauso schwungvoll schoss mir der Kopf des Auslaufs samt Perlator entgegen – dicht gefolgt von jeder Menge Wasser. Genau in mein Richtung. Dabei wollte ich nicht duschen, sondern nur den Napf spülen! Megagrumpf! Wie kann das passieren? Ganz einfach: Am Auslauf hat der Hahn ein drehbares Element, damit man sich leichter tut das Spülbecken zu säubern:
Bisher hatte ich mich nie gefragt, wie dieses drehbare Element sich eigentlich am Auslauf festhält.  Aus gegebenem Anlass interessiert mich die Frage nun. Wie man sieht, sind da zunächst mal zwei Dichtungsringe, damit nix tropft, aber darüber hinaus findet sich ein weißer Plastikring. Letzterer presst sich in eine Vertiefung im Auslauf und fixiert das Ganze:
Und genau dieser Ring ist einigermaßen abgenutzt, weswegen mich der Auslauf so freudig angesprungen hat. Also erstmal ausbauen und genauer studieren:

3D-Drucker zu Hilfe


Wozu habe ich einen 3D-Drucker? Das Teil muss man doch leicht duplizieren können. Also habe ich alles vermessen und die Form so gut es ging nachmodelliert:





Schnell musste ich jedoch feststellen, dass das nicht so der Königsweg war: PLA ist ein echt ein sprödes Zeug und nicht so toll für den Job geeignet. Besser ABS oder Nylon?  Vor allem aber kamen diese Submillimeter-Strukturen des Rings in der Praxis nicht gut raus. Aber braucht man die echt? Eigentlich muss der Ring sich doch nur in die passende Rille pressen und die genaue Form sollte ziemlich wurscht sein – oder?

Low-Tech Ansatz

Also mal weg von High-Tech Lösungen und kurz nachgedacht. Wenn man einfach ein Stück Nylon oder anderes Plastik mit geeigneten Maßen hätte... Zuerst dachte ich daran, ein Plastikrohr mit passendem Durchmesser zu finden und einen Ring abzusägen. Aber dann probierte ich erstmal was viel simpleres: Nylonfilament. Und das gibt's im Baumarkt, Gartencenter oder auf Ebay für kleines Geld – nur heißt es dort nicht Filament, sondern Mähfaden oder Trimmerschnur. Also dieser Faden, den eine Motorsense mit einem Affenzahn im Kreis schleudert, um wucherndes Gras und andere Gewächse in die Schranken zu weisen. In meinem Fall brauchte ich eines mit ca. 2mm Durchmesser. Auf Ebay habe ich für ein paar Euro 25 Meter davon gefunden:

Das ist genug um die Wasserhähne einer mittleren Stadt zu reparieren. 2mm sind etwas mehr, als der original-Ring hatte, d.h. man muss den Faden mit etwas Gewalt in die Rille pressen. Das ist jedoch ganz praktisch, denn so hält das Ganze ohne Klebstoff oder irgendwelche Verrenkungen:

Noch ein bisschen Silikonfett drauf (aber nur auf die schwarzen Dichtungsringe, sonst hält das nicht!) und mit etwas Nachdruck in den Auslauf drücken.
Und siehe da: Wasserhahn repariert. Anfangs war der Auslauf noch etwas schwergängig zu drehen, aber nach einer Weile hatte sich der Plastikfaden offenbar gut eingeschliffen und das Ganze fühlt sich an, wie neu.


Freitag, 4. März 2016

Maker Story Parodie

Ich liebe schöne Maker-Stories. Es hat einfach etwas, zu sehen, wie Leute mit ihren Händen Dinge herstellen. Manche sind zugegebenermaßen etwas schräg, aber in der Regel liebenswert. Einige Filmproduzenten finden diese Maker-Videos offenbar originell und haben begonnen, Parodien zu drehen. Diese hier finde ich besonders gelungen:



;-)

Samstag, 20. Februar 2016

Vimwiki - Personal Wiki in Vim

2016-02-20_vimwiki

Ein Vim sie zu knechten

Vim ist einer der besten Texteditoren, die ich kenne. Zwar fragt sich der VIM-Neuling anfänglich, ob er bei einer Computer-Variante von "Verstehen Sie Spaß" gelandet ist, aber nach einer kurzen Eingewöhnungszeit stellt man dann erstaunt fest, dass man in diesem Editor extrem effizient arbeiten kann, sobald man mal eine paar grundlegende Konzepte und Befehle verinnerlicht hat. Aus diesem Grunde verwende ich ihn seit vielen Jahren für eigentlich alles, was mit Text zu tun hat: Programmieren, Texte schreiben (z.B. in LaTeX) config Files anpassen etc.

Was einen guten Editor ausmacht ist aber nicht nur sein Interface, sondern vor allem, dass man ihn den persönlichen Bedürfnissen anpassen kann. Faustregel bei der Editor-Wahl: Wenn sich das Ding nicht gut konfigurieren lässt und es Erweiterungen nicht unterstützt – Finger weg. Vim lässt sich durch Plugins erweitern, die man entweder in Vimscript schreiben kann, oder aber auch in Python. Ähnliches gilt für den Erzrivalen Emacs, nur dass hier LISP das Mittel der Wahl ist.

Aber wieso mache ich so viel Aufhebens um einen Texteditor? Weil Textfiles unglaublich praktisch sind. Das wird nun vielen Leuten komisch vorkommen und so mancher hat heute gar keine Ahnung mehr, was ich mit Textfile überhaupt meine, wo doch jede Software inzwischen ein neues Dateiformat definiert, das zu allen anderen inkompatibel ist. Ist ja auch viel besser für den Hersteller, wenn ein Wechsel zur Konkurrenz durch die Unverträglichkeit der Dateien erschwert wird.

Aber eigentlich verwende ich stinknormale Textfiles andauernd – z.B. für

  • ToDo Listen
  • Notizen
  • Mitschriften aus Meetings
  • Meinen Wunschzettel
  • Readme Files für Programme
  • Readme Files für Folder in meinem Dateisystem
  • ...

Das ist praktisch, denn es ist kinderleicht ein Textfile zu editieren, man kann es sehr effizient durchsuchen – im Editor oder z.B. mit grep, ich kann es mit diff mit einer anderen Version vergleichen, alle Versionierungssysteme kommen damit klar, es ist schlank, es funktioniert problemlos unter LINUX, Windows, Mac, Android, iOS, DOS, CPM, OS/2, dem Betriebssystem von HAL9000 und überhaupt überall.

Mit anderen Worten es ist ein extrem einfaches und deshalb mächtiges Dateiformat.

Ein Vim sie zu finden

Zahlreiche Textfiles finden sich verstreut auf meinem Computer – ich organisiere sie so gut ich kann durch sinnvolle Ordnerstruktur. Im Großen und Ganzen klappt das gut. Manchmal denke ich mir aber, es wäre nett, wenn ich auch ein tool hätte, das bestimmte Dokumente stärker zusammenhält und verlinkt. Z.B. meine ToDos, Meetingnotizen und kleinere Texte in denen ich meine Gedanken ordne, Konzepte erarbeite etc. Ich hatte in der Vergangenheit schon gelegentlich verschiedene GUI Tools ausprobiert, die versprachen, meine Produktivität zu steigern, das Denken zu fördern, Verbindungen zu managen und den Weltfrieden herbeizuführen. Lange Rede kurzer Sinn – nach einer, meist kurzen, Testphase war ich zurück bei Textfiles in Folders, ggf. mit begleitenden Medien und Dokumenten, wie Photos, PDFs etc.

Warum? Weil alle diese vermeintlichen Produktivitätsbooster irgendwie unbequem zu bedienen waren, nur auf einer oder wenigen Plattformen funktionierten, untereinander vollkommen inkompatibel waren und einfach nervten.

Kürzlich bin ich nun auf etwas sehr angenehmes gestoßen: vimwiki. Das ist exakt, was der Name suggeriert: eine Implementierung eines Wiki Systems als Vim-Plugin. Wikis wurden ursprünglich erfunden, um es dem weniger HTML-erleuchteten Bürger zu ermöglichen, effizient kleine Webseiten zu erstellen, sie untereinander zu verlinken und auf diese Weise eine Menge wertvolle Information organisiert zu kriegen. Wikipedia ist das Vorzeigekind der Familie. Aber es muss nicht gleich ein Lexikon sein – ein Wiki ist auch unglaublich nützlich, um seine eigenen Gedanken Festzuhalten und Informationen, die man von irgendwo her hat zu organisieren. In der Tat waren auch veritable Wiki System unter den oben verworfenen Lösungen – sie waren einfach Overkill für das, was ich haben wollte.

Vimwiki implementiert nun ein minimalistisches Wiki. Die Syntax erinnert an Markdown, ist aber nicht exakt die gleiche, was aber echt wurscht ist. Und so habe ich angefangen, mir ein persönliches Wiki zu bauen und es füllt sich stetig:

  • Todo Liste (eigentlich mehrere, nach Kontext geordnet)
  • Lösungen zu schwierigen Computer-Problemen, die ich nicht verlieren möchte
  • Bookmarks mit ausführlichen Kommentaren für mich selbst
  • Ideen für Bastelprojekte und Blog Beiträge
  • Outlines für längere Texte, an denen ich arbeite
  • Planung unserer Urlaubstermine
  • Skizzen für Blogbeiträge
  • Ideen und Notizen zu Dingen, die gerade lerne oder lernen möchte
  • Meine Wunschliste
  • Geschenkideen für andere
  • und vieles mehr

Das Ergebnis besteht aus einer Vielzahl von Textfiles im vimwiki Markup, die in einem speziellen wiki Ordner liegen und untereinander durch Hyperlinks verbunden sind. Öffne ich das Ganze in Vim fühlt es sich an, wie Websurfen mit einem Text-basierten Browser (lynx/w3m o.ä.). Ich kann von meiner Hauptseite aus wie im Flug durch diverse Links navigieren, bis ich im Zieldokument ankomme. Innerhalb der Dokumente kann ich dann mit den gewohnten Vim Befehlen arbeiten und das Syntaxhighlighting machte es leicht, die Dokumentenstruktur zu erfassen.

Vimwiki kennt mehrere Levels von Überschriften, geordnete und ungeordnete Listen, die sich auch schachteln lassen, Links nach außen (auf Files, Webseiten, Bilder, etc.). Simple Textauszeichnungen, wie fett oder kursiv fehlen ebenfalls nicht.

Ein Vim sie ins Dunkel zu treiben und ewig zu binden

Und natürlich lässt sich das Ganze (oder einzelne Dateien) auch leicht in HTML verwandeln. wozu das nützlich ist? Zum Beispiel, um sein Wiki in aufgehübschter Form zu durchforsten, oder es anderen lesend zur Verfügung zu stellen.

Oder zum bloggen -- dieser Post wurde komplett in vimwiki geschrieben, nach HTML konvertiert und auf blogspot kopiert...

Sonntag, 14. Februar 2016

Code snippet beautification in vim

Hallo Welt! Chris hatte neulich ein schönes tool zum Verhübschen von Source Code vorgestellt (Gist). Das ist nützlich für Blogposts in denen man mal ein Stück Code vorstellen will.

Nun bin ich ein alter VIM user, denn in meinen Augen ist das der beste Editor der Welt und mithilfe diverser Plugins kann man ihm ungeahnte neue Trick beibringen. Einige erstaunliche Sachen kann er aber auch schon ohne solche Erweiterungen. Dazu gehört ein sehr hilfreiches Syntax-Highlighting für ziemliche alle Programmiersprachen, die es so gibt. Und wie es der Zufall so will bringt vim auch einen html Konverter mit! Um den aufzurufen gibt man einfach im Kommandozeilen Modus folgendes ein:

:TOhtml

Das Ergebnis landet in einem neuen Buffer und kann von dort als html File gespeichert oder eben in den Blog kopiert werden – zumindest der Teil zwischen den body tags. Probieren wir das also mal aus mit einem code snippet für die Collatz conjecture. Das sieht dann so aus:

def collatz(number):
    path = [number]
    while number != 1:
        if even(number):
            number /= 2
        else:
            number = number * 3 + 1
        path.append(number)
    return(path)

Die Formatierung passt schon, aber  Syntax-Highlighting wäre toll. Der Grund das es fehlt ist, dass vim per default CSS verwendet, was aber problematisch ist, wenn man nur das snippet kopiert. Man kann das aber auch abschalten, und zwar so:

:let html_use_css=0

Und dann wären Zeilennummern noch schön. Also:

:set number

Das Ergebnis gefällt mit schon sehr gut:

19 def collatz(number):
20     path = [number]
21     while number != 1:
22         if even(number):
23             number /= 2
24         else:
25             number = number * 3 + 1
26         path.append(number)
27     return(path)



Die Zeilennummern gehen bei 19 los, weil das die Zeile im Original File war. Wenn ich für das Snippet lieber bei 1 starten möchte dann muss ich vorher eben noch das Snippet in ein eigenes File tun - auch kein Akt. Und wenn einem das Farbschema nicht gefällt gibt es natürlich diverse zur Auswahl. z.B.:

:colorscheme delek

und man bekommt dies (diesmal mit Nummerierung bei 1 startend):

def collatz(number):
        path = [number]
        while number != 1:
                if even(number):
                        number /= 2
                else:
                        number = number * 3 + 1
                path.append(number)
        return(path)

Freitag, 29. Januar 2016

Gedankenstürme - oder doch Nachwirkungen der MakeMunich?

Komischer Titel für einen Beitrag, ich weiß. Ich hatte ja schon erwähnt, dass der Besuch der MakeMunich mit Philipp zusammen seine Spuren bei mir hinterlassen hat. Besonders angetan war ich vom bq-Stand, der unter anderem neuen 3D-Drucker Hephestos 2 präsentiert. Verfügbar und erschwinglich, für 850 Euronen... Hat ziemlich gute Kritiken soweit, großes Buildvolume, Auto-Bed-Levelling und als Einsteiger sicherlich interessant und als Highlight war Tom Sanladerer höchstpersönlich anwesend, dessen Youtube-Kanal ich natürlich als hoffentlich zukünftiger 3D-Druckerbesitzer abonniert habe ;-). Er wurde ja unlängst von bq angeheuert, wie er auch in seinem Channel erklärt. Hab ein bisserl geblauscht, war ganz nett. Ist der erste Youtuber aus meinen vielen Abos, den ich persönlich kennengelernt habe. Der Drucker kommt als Kit (siehe Foto) und wurde auf der Messe von einem jungen Mann in ca. 2 Stunden komplett aufgebaut - cool.


Aber ich Schweife ab. Ja, ein 3D-Drucker wäre schon schön. Ist aber groß und dann doch relativ teuer. Vielleicht gibt es ja was "Kleineres", das mein Herz erwärmen könnte? Tja, und das fand ich dann... Zuerst einige schöne Bücher am dPunkt Stand und dann noch folgendes Ding auf dem Filmchen unten, dann war's um mich geschehen:



Ja genau: LEGO Mindstorms EV3... seit er rausgekommen ist spiele ich schon mit dem Gedanken mir das Set 31313 zu holen, aber er war mir immer zu teuer. Aber: dieses mal war es anders :-). Ich hatte noch vom braven Christkind (meiner Eltern...) genau 350 EUR, für die ich bis zu diesem Augenblick keine Idee hatte, wie ich sie denn ausgeben könnte. Dada... komischer Zufall ;-), das Set kostet genau 349 Euro. Der Entschluss war also gefasst. Ich ließ ihn noch ein paar Tage reifen und begann zu recherchieren. Vielleicht doch besser die Education-Version 45544 oder doch die Home-Edition. Education ist noch einiges teurer (ca. 430 Euro) und die SW kostet dort noch extra (Class-Room Lizenz halt). Außerdem ist das Education Set besonders dadurch teuer, da es den LiIon-Akku für 100 Euro enthält... Außerdem sind etwas andere Sensoren dabei. Hmm... Was tun? Dann fand ich folgende Seite "Lego Mindstorms EV3 Comparison" auf github und musste Schmunzeln wozu man Python alles verwenden kann. Das Projekt generiert eine Delta-Aufstellung der beiden Sets und generiert auf Wunsch auch gleich eine automatische Bestellung der Teile auf der Lego Seite, cool. Außerdem gibt es Links auf weitere "Brick"-Seiten, wo man die fehlenden Teile kaufen kann.


Zusätzlich habe ich noch festgestellt, dass die PDFs der Bauanleitungen für die Education-Modelle frei verfügbar sind. Programmieren will ich die Dinger eh selber (am besten mit Linux ev3dev). Damit war klar, ich hol mir die Home-Edition. Gleich im Lego-Store München Pasing angerufen und ein Set weglegen lassen, nach der Arbeit mit S-Bahn vorbeigefahren und Set mitgenommen. Hab mir gleich noch den Gyro-Sensor und den Ultraschallsensor mitgenommen, den hatten sie dort lagern für je 35 Euro. Im Lego Online-Shop sind die aktuell nicht lieferbar und über Amazon/Ebay etc. gibt's die Dinger nur überteuert für mehr als 50 Euro. Alles gleich was gespart ;-). Die Teile, die man fürs Education-Set zusätzlich braucht hab ich mir über Brick-Owl (eine Meta-Suchmaschine für Legoteile, die auch ganze Set-Inventories anzeigen kann und einen weltweit an Brick-Shops weitervermittelt) geholt, die Delta-Aufstellung bekommt man sehr übersichtlich auf Rebrickable. Die Links hierfür fand ich auf der oben erwähnten github-Seite.

Dann folgte das Übliche: ersten Roboter aufbauen, Software runterladen und spielen. Mein 7-jähriger Sohn hatte mindestens genauso viel Spaß wie ich. muss ihm nur noch klarmachen, dass es MEIN Mindstorms ist ;-). Ich erspare hier die langweilige Auflistung des Lieferumgfangs, der Leistungsdaten, etc. Das wurde im Netz bereits zur Genüge behandelt.Gesagt sei nur, das Ding ist echt geil :-). Auch ohne Computer lässt sich das Ding rudimentär über den Brick direkt programmieren bzw. mit der Infrarotfernsteuerung oder über Bluetooth und Android/iOS App fernsteuern - was allein für Jüngere schon ziemlich Laune macht.

Aber mein Sohn will natürlich gleich was eigenes bauen, und zwar einen Drachen. Den hat er auch im Kopf geplant und den Oberteil mit Flügeln selbst konstruiert. Das Ding ist echt cool geworden.


Ich bin nun für die Beine und das Laufen verantwortlich, hab dafür aber nur mehr einen mittleren Motor zur Verfügung, hmmm. Die beiden großen brauchen wir für die Flügel ;-). Aber mit etwas Geschick und Inspirationssuche bei diversen Onlinequellen, hab ich eine "lauffähige Lösung" gebaut (Video als Beweis, dass das Ding echt läuft). Natürlich reicht das meinem Sohn nicht, er will auch rückwärts und lenken können - das geht halt mit einem Motor schwer. Daher hab ich gleich einen zweiten bestellt - der kommt morgen ;-).



Übrigens: die ganze Firmware des auf Linux basierenden EV3-Bricks ist quelloffen und auf der Lego Seite zum Download verfügbar. Zusätzlich verschiedenste SDKs für neue Sensoren, Firmware und Kommunkation. Auch die Hardware ist komplett offen, alle Schältplane, sogar die Ladeschaltung des Akku! Das gibt es bei so einem Produkt selten, macht es aber extrem attraktiv für Hacker.

Echt kein Mist: Gist

Beim durchlesen meiner Blog-Posts fragte ich mich: wie kann ich einfach Quellcode inkludieren, und zwar schön formatiert und mit Syntax-Highlighting. Nach etwas Googeln fand ich den Service Gist, angeboten von Github.

Das Ding ist selbsterklärend, es gilt nur zu beachten, dass man einen Github-Account benötigt, wenn man Gists hinterher nochmal editieren möchte. Auch bekommt man beim initialen Befüllen kein on-the-fly Syntax-Highlighting und Einrücken. Daher zuerst eingeloggt den leeren Gist mit der entsprechenden Dateierweiterung speichern und gleich wieder zum Editieren öffnen. Dann gibt's on-the-fly Formatierung und Einfärbung.

3-Servo Zweifüßer Teil #1: Mechanik

Vorbemerkung:
Dieser Beitrag existiert schon ewig als Enwurf (seit 2013!!). Daher ist es an der Zeit ihn mal zu bringen - zumindest als Teil #1 einer Serie. Er deckt nur mal die mechanischen Aspekte ab. Zum Programmieren bin ich nie groß gekommen, das hängt aber auch damit zusammen, dass ich die Picaxe-Umgebung und Sprache nicht so mag. Mittlerweile in der neuesten Version ist sie viel besser geworden, und vielleicht wird es ja nochmal was ;-).

Jetzt geht's los...

In diesem Beitrag stelle ich einen kleinen 2-Füßigen Roboter vor, der mit minimalen Mitteln (3 Servos, ein Micro und ein paar Farb-Rührhölzer) zu realisieren ist. Wie viele andere meiner Projekte (ich lerne ja noch ;-)) ist es leider keine eigene neue Idee, sondern ein Nachbau von einem Projekt, dass Frits Lyneborg auf seinem Make-Blog "Latest in Hobby Robotics" vorgestellt hat. Frits ist auch Mit-Initiator von letsmakerobots.com und auch dort ist der Roboter zu finden: Biped Walker with 3 Servos (Dead Duck Walking)

Farbrührhölzer oder Rührstäbe gibt's im Baumarkt für kleines Geld, vor allem die mit aufgedruckter Werbung. Die sind für kleine Projekte insofern super, da sie in Standardgrößen kommen und aus Hartholz bestehen.

Das ganze startet denkbar einfach, nämlich mit dem Absägen von 4 gleich langen Stücken (jeweils 1,5 Servolängen) von einem großen Farbrührholz (5mm dick, 30mm breit und ca. 30cm lang). Falls keine Rührhölzer zur Hand sind, gibt es Buchenholzleisten mit dieser Dicke und Breit im Baumarkt (Bastelholz). Nun werden jeweils 2 Löcher reingebohrt (Größe: M4 Schrauben sollen sich darin gut drehen können).


Als nächstes werden auf zwei Standardservos (ich verwende RS-2 von Modelcraft vom Völkner bzw. Conrad) Holzstückchen mit Heißkleber aufgeklebt, wie auf den folgenden Bildern zu sehen. Die Servohalterungen werden mit eine Feile abgeflacht, sodass sie mit dem Holzplättchen plan abschließen.


 

Die beiden Flächen die sich auf dem Bild unter diesem Absatz berühren, müssen gut gegeneinander gleiten können und werden mit einer Feile zu diesem Zweck entsprechend behandelt.


Nun werden 3 Stücke mit genau Servolänge (inkl der angeklebten Holzplättchen) abgesägt und eines der länge nach halbiert.


Die 4 enstandenen Stücke werden folgendermaßen mit ein wenig Heißkleber aufeinandergeklebt, um die folgende Bohrung zu erleichtern.



Nun brauchen wir ein reines Längs-Servohorn. Da bei meinen nur Kreuzhörner dabei waren, hab ich diese mit der Zange zurechtgeknipst. Weiters habe ich die Oberseite des Horns plan geschliffen.


Das Servohorn kommt jetzt auch mit Heißkleber auf den "Holzstapel".


Jetzt folgen die versprochenen Löcher ;-).


Danach das ganze wieder in seine Einzelteile brechen und somit haben wir alle Teile beieinander und können bald mit der Montage beginnen.


Aber bevor ich mit dem Zusammenbau beginnen kann, muss ich die Servos in der Mittelstellung haben. Damit das gelingt, hab ich mein kleines Picaxe Projektboard, namlich das AXE230 PICAXE-08M MODULE verwendet (wie auch bei letsmakerobots vorgeschlagen; mittlerweile gibt es schon den Nachfolger AXE231) und ein einfaches Programm geschrieben, um die Servos zu zentrieren.


Natürlich musste ich das unbedingt in einem kleinen Youtube-Video dokumentieren ;-).


So, nun beginnt die eigentliche Montage. Die Bilder sprechen soweit für sich. Im Originalbeitrag auf letsmakerobots.com gibt es auch ein 5-minütiges Video, dass die Montage zeigt. Ist alles in allem nicht sonderlich schwierig. Als erstes kommt der mittlere Servo dran, der die Wank-Bewegung des Roboters übernehmen wird (oder "Rollbewegung" für die Profis).




Hier nochmal ein Close-up Foto vom AXE230 Projektboard. Ist einfach über die serielle Schnittstelle programmierbar (mit einem USB-to-Serial-Adapter). Cool ist, dass das Teil out-of-the-box Header für bis zu 4 Servos hat. Wenn da halt nicht das Picaxe-Basic wäre, das ich nicht so prickelnd finde...

Nun werden die zwei Fuß-Servos links und rechts neben den mittleren Servo montiert. Diese Servos werden die Drehbewegung der Füße um die Hochachse übernehmen. Die grundlegende Idee ist ja, durch wechselseitiges Wanken des Walkers und dazupassendes Drehen der Füße eine Vorwärtsbewegung zu erzeugen.




Dann kommt ein Rührstabteil als "Kopf" rauf. dort wird auch das Batteriefach draufmontiert. Natürlich alles mit Heißkleber - what else ;-). 


Dann noch die Fußflächen unten an die Servos kleben und "dada" fertig ist das Teil. Ach ja, die Schrauben müssen so angezogen und die Löcher so dimensioniert werden, dass sich alles leicht bewegen lässt. Die Muttern hab ich mit Schraubensicherung gesichert, dass sie sich im Betrieb nicht lösen.



So, dann haben wir's fast mit der Mechanik. Zum Schluss noch zwei ganz frische aktuelle Fotos (Jan. 2016) vom fertigen Walker-Roboter. Hab ihn in einer meiner großen Projektkisten wiedergefunden ;-). Ich hoffe, dass es auch einen Teil 2# zu diesem Projekt geben wird. Vielleicht dann in 2018 oder so - na ich hoffe nicht, dass es so lange dauert. Und mit der neuesten Picaxe Entwicklungsumgebung ist das programmieren dieser Dinger auch nicht mehr ganz so schlimm wie früher.