Uni Projekte

Ich versuche in meiner restlichen freien Zeit mal endlich Videos zu Uniprojekten einzustellen. Einige befinden sich schon auf der neuen Projektseite (oder auch rechts im Menü). Viel Spaß damit! :)

ct-Bot: Testen und kleine Wartezeiten

Vor fast zwei Wochen habe ich den c’t-Bot das erste Mal komplett mit allen Teilen am Strom hängen gehabt und wie es sein sollte, drehten sich beide Räder in die entgegengesetzte Richtung. Gleich darauf habe ich die Sensoren überprüft. Zuerst ganz primitiv mit der Kamera. Die meisten Sensoren geben Infrarotlicht ab, was das menschliche Auge nicht, jedoch eine Digitalkamera sehen kann. Dabei ist mir bei einem Liniensensor (CNY70) eine Fehlfunktion aufgefallen. Die verbaute LED leuchtete nicht und auch mein Multimeter zeigte mir im Vergleich zum danebenliegenden zweiten Liniensensor sehr merkwürdige Werte an.

Weiterhin habe ich verschiedene Testprogramme auf den Bot überspielt, welche die einzelnen Sensoren überprüfen und die Ergebnisse über die auf der Hauptplatine verbauten LEDs bzw. ein Display ausgibt, wenn man denn eines hat. Dabei sind auch merkwürdige Erscheinungen zu Tage getreten, was den oben genannten Sensor angeht. Nach einem Tag voller Testen hatte ich erstmal genug vom Bot. Vor allem hat es auch eine ganze Weile gedauert bis ich den Programmieradapter soweit hatte, dass er die Testprogramme auf den Bot übertragen hatte. Zunächst habe ich es mit den Programmen von Atmel versucht. Das AVR Studio musste ich sogar in der neuen Version runterladen, da man den USB Treiber für den Programmieradapter nicht einzeln bekommt. Nein, man muss sich anmelden und ein knapp 100MB großes File runterladen, wenn man sich mit der älteren Version auf der mitgelieferten DVD nicht zufrieden gibt so wie ich. Das nenne ich benutzerfreundlich. Außerdem musste ich dann feststellen, dass dieses Programm für ein kurzes Überspielen zu groß und aufwändig ist. Das Flashen ist eher eine nette Dreingabe.
Schließlich habe ich mich doch für eine Kommandozeilenapplikation entschieden: avrdude. Da ich keine Lust auf Kompilieren hatte, musste ich mir wiederum WinAVR besorgen, denn avrdude ist dort integriert.

Wie oben erwähnt, liefert Atmel mit dem AVR Studio seinen eigenen USB Treiber für den Programmieradapter mit. Um avrdude benutzen zu können, ist jedoch libusb nötig. Beide Treiber gleichzeitig installiert zu haben, ist keine gute Idee. Sie stören sich anscheinend erheblich. So kam es auch, dass ich noch einige Neustarts über mich ergehen lassen musste. Zeitweise erkannte ein Testprogramm den Adapter am USB Port, jedoch konnte avrdude ihn nicht finden.

Zunächst müssen auf dem ATmega32 die Fuse Bits gesetzt werden. Das ist nötig um im Controller bestimmte Einstellungen zu setzen. Im schlimmsten Fall könnte der Controller nach Überspielen eines Programms nicht mehr reagieren. Mit avrdude werden die Fuse Bits mit dem Programmieradapter (AVR ISP mkII) wie folgt gesetzt:

avrdude -c avrispmkII -P usb -p m32 -U lfuse:w:0xFF:m -U hfuse:w:0xD1:m -v

Hier werden das low fuse und high fuse Byte entsprechend gesetzt. Danach können Programme mit diesem Befehl übertragen werden:

avrdude -c avrispmkII -P usb -p m32 -U flash:w:"<dateiname>.hex":i

Hier wird also die Datei <dateiname>.hex in den Flashspeicher geschrieben. Das :i gibt an, dass es sich um eine Datei im Intel Hex Format handelt.

Seitdem habe ich den Bot erstmal wieder zusammengepackt und mich bei Segor gemeldet wegen meinem defekten Liniensensor. Mir wurde sofort geantwortet und nach Auschließen eines Fehleinbaus wird mir nun ein Ersatz zugeschickt. Sehr schön Segor! :)

Links:

Nokia N810: Ein interessanter Anwendungsfall

Letztes Jahr habe ich mir ein Nokia N810 gegönnt. Nein, kein Handy, ein Nokia Internet Tablet (kurz NIT)! Dieses Gerät soll sich ganz klar vom Mobiltelefon abgrenzen und eher eine Ergänzung zu diesem sein. Somit gestalten sich auch die möglichen Schnittstellen: primär WLAN, Bluetooth und GPS. Für all diejenigen, die mit dem Begriff NIT nichts oder wenig anfangen können, sei gesagt, dass es sich prinzipiell um einen UMPC mit Touchscreen handelt, der jedoch in die Hosentasche passt und im Standby Betrieb schonmal seine sieben und mehr Tage übersteht.
Im Innern werkelt eine OMAP 2420 CPU mit 400Mhz, die einen integrierten GPU Kern hat. Dieser wird jedoch noch nicht unterstützt und liegt deswegen brach. Weiterhin bietet das N810 128MB Arbeitsspeicher und 256MB + 2GB Flashspeicher. Erweitert werden kann dieser durch einen MiniSDHC Karte. Warum sich Nokia gerade für diese ziemlich stiefmütterlich behandelte SD Kartenart entschieden hat, weiß keiner so genau. Der Vorgänger hatte noch zwei SDHC Kartenschächte, jedoch keine Hardwaretastatur. Ich denke, dass ein MicroSDHC Kartenslot die bessere Wahl gewesen wäre. Eine Kamera ist auch mit an Bord, leider nur mit VGA Auflösung (640×480), und die relativ schlecht.
Auf dem Tablet läuft eine angepasste Linuxvariante, Maemo. Durch eine durchaus aktive Nutzergemeinde und einen Standardsatz an Software, den Nokia beisteuert, ergibt sich eine Funktionsvielfalt, die einem PC in nichts nachsteht. Mailclient, Browser, Kartensoftware, Skype, Mediaplayer, sogar Pidgin und diverse Emulatoren laufen auf dem kleinen Rechner, im Ernstfall kann man auch in alter Unixmanier die Konsole bemühen.
Genug der Einleitung. Worauf ich eigentlich hinaus wollte ist, dass ich das Tablet bis heute nicht wirklich genutzt habe. Ab und zu hatte ich es unterwegs mit, wegen fehlender WLAN Verbindung war es jedoch ziemlich nutzlos für mich. Auch GPS habe ich bis heute nicht viel genutzt, weil ich mich meist auskenne, wo ich bin. In den letzten Wochen stand das Tablet deshalb meistens zu Hause in Sichtweite und machte eine gute Figur als Nachrichtenzentrale, falls ich mein Macbook nicht andauernd laufen lassen wollte, bzw. es mich zu sehr von meiner eigentlichen Beschäftigung abgehalten hätte. So war ich bei Mails und Twitter immer auf dem Laufenden und konnte auch fix eine Internetseite aufrufen. Gestern habe ich den Wunsch verspührt das MacBook mit einer Fernbedienung zu steuern. Dabei geht es mir insbesondere um Filme, Musik, aber auch Präsentationen. Klar, wird sich jeder sagen, nimm doch die Apple Remote Control. Daran habe ich auch erst gedacht, ist ja auch die naheliegendste Lösung. Ich persönlich finde den Funktionsumfang der kleinen Fernbedienung etwas eingeschränkt. Nur wenige Tasten stehen zu Verfügung, einstellbar ist nicht viel.
Deswegen kam ich auf die Idee eine der alten Fernbedienungen zu benutzen, die ich noch von diversen defekten Geräten im Schrank liegen habe. Mac OS X bietet jedoch keine Möglichkeit diese Fernbedienungen zu nutzen bzw. sie anzulernen. Nicht sehr befriedigend. Als einziges Programm, was dies in großem Maße bietet, habe ich RemoteBuddy gefunden. Damit kann man mehrere Apple Remotes benutzen und auch Universalfernbedienungen anlernen. Dazu benötigt man jedoch wieder eine Apple Remote, die ich nicht habe. Weiterhin kann man auch sein IPhone oder den IPod Touch als Fernbedienung nutzen. Habe ich auch nicht, will ich auch nicht. Letzte Möglichkeit ist es einen Bluetooth Empfänger mit Fernbedienung zu benutzen. RemoteBuddy unterstützt jedoch nur ausgewählte Typen und die Wiimote.
Ein Alternative wäre es lirc in Verbindung mit MacPorts zu nutzen. Die Installation ist simpel, danach wird man aber etwas im Regen stehen gelassen unter Mac OS X (siehe auch hier).
Das NIT hat ebenfalls eine Bluetooth Schnittstelle. Warum also nicht diese nutzen? Würde sich bestimmt gut anfühlen, so eine Fernbedienung mit Touchscreen und vollwertiger Tastatur. Ende letzten Jahres habe ich bei InternetTabletTalk von BlueMaemo gelesen. Dieses kleine Programm befindet sich zwar noch in einem sehr frühen Entwicklungsstadium, bietet aber trotzdem schon eine Menge und lässt erahnen, wohin die Reise geht. Mit BlueMaemo ist es möglich sein NIT über Bluetooth mit so ziemlich jedem bluetoothfähigen Gerät zu koppeln und es als Tastatur und Maus zu benutzen. Das Programm bietet hierzu eine fingerfreundliche Oberfläche und Profile für die Mausbenutzung, Tastaturbenutzung (SW und HW Tastatur), Benutzung eines Mediaplayers, Präsentationsunterstützung und neuerdings auch die Möglichkeit seine PS3 damit zu bedienen.

Hier ein Video, das die Funktionalität von BlueMaemo zeigt:

Hier ein Video, das die Kopplung an eine PS3 zeigt:

Ausprobiert habe ich die Maus- und Tastaturfunktionalität, welche schon ziemlich gut läuft. Abgesehen von der fehlenden Unterstützung für andere Tastaturlayouts außer dem Englischen sind mir keine groben Probleme aufgefallen. Auch die Steuerung von Keynote funktioniert problemlos. Alle Tastenbindings lassen sich manuell verändern. Leider gibt es noch nicht die Möglichkeit die CMD Taste der Apple Tastatur zu wählen, was einige Einschränkungen mit sich bringt. Viele, wenn nicht sogar alle, Programme nutzen die CMD Taste für die meisten Shortcuts. Das ließe sich natürlich bei vielen Programmen ändern, in dem andere Shortcuts definiert werden. Das geht aber, soweit ich weiß, nur wenn ein Menüpunkt für das Programm vorhanden ist, mit dem der Shortcut verknüpft ist. Quicktime zum Beispiel bietet keine seperaten Shortcuts für die standard Mediaplayer Funktionen Start, Stop, Weiter, Zurück, etc. Dazu benutzt es die Multimediatasten, die auf den F-Tasten liegen. Ich sehe ein wenig Schwarz, was die Benutzung dieser Tasten über das NIT angeht.
Weiterhin werden die CMD Taste und die Multimediatasten für globale Shortcuts genutzt. Über die Systemeinstellungen unter Mac OS X kann man meines Wissens jedoch nur lokale Shortcuts (wenn ein Programmfenster also den Fokus hat) ändern, was zum Beispiel für die Steuerung von iTunes nicht optimal wäre.

Falls jemand weiß wie man die Multimediatasten des MacBooks umschiffen kann und andere Tastenkombinationen belegen kann, die das selbe systemweit machen, kann er sich gerne bei mir melden. Bis dahin werde ich auf die rege Weiterentwicklung von BlueMaemo hoffen. :)

Links:

ct-Bot: Kabel schnippeln - Fortsetzung

Im letzten Beitrag hatte ich schon erwähnt, dass alle mitgelieferten Kabel zu lang waren. Das hat sich heute geändert, denn ich habe mich der überaus spannenden Aufgabe gestellt die Kabel auf Länge zu schneiden und an die richtigen Stellen zu löten. Dabei haben mir AC/DC, Metallica und die Hosen Gesellschaft geboten.

Die zwei Sensorplatinen und die Mausplatine wurde mit je einem Kabelstrang bestehend aus zehn Adern bestückt. Dabei wird das schwarze Kabel an Pin eins auf der Platine angelötet. Alle weiteren Kabel sollen laut c’t in “einer üblichen Zählweise - im Zick Zack” (Kabelbaum) verlötet werden. Ich hatte natürlich nicht wirklich eine Ahnung, was damit gemeint ist, höchstens eine Vermutung. Glücklicherweise wird es im Wiki von ctbot.de (Die Verkabelung des Bot) besser und bebildert erklärt. Damit war es nur eine Frage der Zeit, bis ich die drei Platinen mit Kabeln versorgt hatte. Das Prinzip war immer das selbe.
Beide Motoren werden durch je einen Kabelstrang mit zwei Kabeln angeschlossen. Hierbei wird das braune Kabel mit dem Pluspol verbunden.
Am Schluss musste noch das Batteriefach, bestehend aus einem Segment für drei Batterien und einem für zwei, verklebt und verlötet werden. Die fünf Batterien sollen später in Reihe hängen. Deshalb verbindet man den Pluspol des einen Segments mit dem Minuspol des anderen. Das habe ich mit einem kleinen Stück Kabel gemacht anstatt die vorhandenen Lötlaschen direkt zu nutzen. Das soll zuverlässiger funktionieren. Anschließend musste nur noch das braune Kabel des Kabelstrangs mit dem Pluspol eines Segments und das schwarze Kabel mit dem Minuspol des anderen Segments verbunden werden.

Im Großen und Ganzen war es das (nun wirklich) mit Lötarbeiten, wenn denn im Anschluss alles funktioniert. Was jetzt noch folgt, ist der komplette Aufbau und das anschließende Hoffen, dass alles wie gewünscht läuft. Morgen mehr.

batteriefach.jpgkabel_sensorplatine_geloetet_1.jpgkabel_mausplatine_geloetet_2.jpgkabel_sensorplatine_geloetet_3.jpgmotor_ngeloetet.jpgkabel_mausplatine_geloetet_1.jpgkabel.jpgkabel_sensorplatine_geloetet_2.jpgmotor_geloetet.jpgkabel_sensorplatine_leer.jpg

ct-Bot: Aufbau der Mechanik

Die Lötarbeiten hatte ich ja schon zum großen Teil beendet. Gestern ging es ein wenig ans Basteln: die Mechanik musste aufgebaut werden.
Zur Mechanik des Bots gehören zwei Räder und deren Motoren, zwei Encoderscheiben, mit denen je ein Optokoppler feststellen kann ob, in welche Richtung und wie weit der Bot gefahren ist, zwei Motorenflansche, an denen die Motoren montiert werden, die Grundplatte, einen Gleitfuß und drei Träger.
Zunächst habe ich die Motoren mit je drei Schrauben an den Motorenflanschen befestigt und anschließend die Gummis auf die Räder gezogen. Danach können die Räder über die Motorwelle geschoben und mit einer Nabenschraube befestigt werden. Beim ersten Mal habe ich natürlich glatt vergessen die Encoderscheiben auf die Rückseiten der Räder zu kleben und durfte die Räder nochmal von den Motorwellen ziehen. Das war bei einem Rad gar nicht so einfach, weil es sich nicht von der Motorwelle lösen ließ.
Den Gleitfuß schraubt man von unten an die Grundplatte. Der Roboter wird später von den Rädern “gezogen” und sein Hinter schleift eben auf diesem Gleitfuß. Anschließend müssen die Motorenflansche mit den daran befestigten Rädern mit je zwei Schrauben an der Grundplatte befestigt werden. Zu guter letzt werden die Träger von unten mit der Grundplatte verbunden. Dabei muss man darauf achten, dass man sie in der richtigen Richtung befestigt, weil die Sensorplatinen und zwei Abstandssensoren daran befestigt werden. Oben auf die Träger kommt später die Hauptplatine. Danach konnte mein Bot schon einmal manuell, von der Hand getrieben, einige Runden drehen. ;)

Da ich nicht darauf warten wollte, dass ich eventuell eine Entlötpumpe von irgendwoher bekomme und hier in der Nähe leider auch kein Elektronikfachgeschäft ist (komischerweise nur Baumärkte), habe ich mich dazu entschlossen einen kleinen Fehler, den ich an der rechten Sensorplatine begangen habe, nur mit dem Lötkoben bewaffnet “auszulöten”. Ich habe die Infrarot LED angewinkelt angelötet, was auf diesem Bild der c’t so erscheint. Meine rechte Sensorplatine sah so aus. Als ich die Platine probehalber zwischen Träger und Rad liegen hatte, wurde mir schnell klar, dass ich da wohl Mist gebaut hatte. Auch Fotos von anderen Botbauern bestätigten mir das. Also habe ich mich eine halbe Stunde mit dieser LED beschäftigt, habe es letztenendes geschafft sie richtig anzubringen und hoffe nun inständig, dass sie noch funktionsfähig ist.

Leider sind die mitgelieferten Kabel nicht auf den Bot zugeschnitten und allesamt zu lang. Das hieß Kabel abschneiden, Hüllen am Ende entfernen und wieder verzinnen. Gestern hatte ich nicht mehr viel Lust dazu und habe nur die beiden Sensorplatinen mit einem Teil der Kabel bestückt. Dabei musste man ziemlich aufpassen, weil diese Kabel die Abstandssensoren mit den Sensorplatinen verbinden und die Abstandssensoren zueinander seitenverkehrt an die Träger angebaut werden. Das bedeutet also, dass auch seitenverkehrt gelötet werden musste. Was ich meine, wird sicher in späteren Fotos klar, wenn der Bot aufgebaut ist.

grundplatte_raeder_seite.jpgsensorpatinen_kabel1.jpgraeder_o_enc_scheiben.jpgmechanikteile.jpgraeder_m_enc_scheiben.jpgmotoren_flansche_raeder.jpggrundplatte_unten.jpgsensorplatine_rechts.jpggrundplatte_raeder_vorne.jpgmotoren_flansche.jpggrundplatte_besetzt.jpggrundplatte_raeder_hinten.jpggrundplatte_oben.jpg

Kurzes Zwischenfazit: Der Aufbau macht wirklich Spaß. Was aber sehr nervt und viel Zeit kostet, ist die teilweise lückenhafte und auch schlechte Dokumentation seitens der c’t. Manchmal ist einfach kein Roter Faden zu erkennen und mehr Fotos vom Aufbau wären wünschenswert gewesen. Ohne viele andere Quellen mit wirklich guten Fotos von ambitionierten Botbauern wäre ich bis jetzt wohl oft gescheitert und hätte bestimmt mehr als nur eine LED falsch angebracht.