Welcome to Daniels blog

Select one of the following projects or scroll down to the newest posts.

Roobert

a raspberry pi home robot


>> visit robert project page

Cobra robot

industry robot projects and restoration


>> see all cobra roboto posts

holoGaito

a holographic desktop assistant


>> visit the holoGaito project page

iGoBot

a GO game playing robot ... using a raspberry pi, opencv and gnugo


>> visit the iGoBot project page

Arduino Workshop Kit (unboxing)

Heute konnte ich das Kit Workshop Base (mit Arduino Board) von RS Components auspacken und mir einen ersten Eindruck davon verschaffen.

Bereits auf den ersten Blick fällt mir auf, dass die Zusammenstellung des Kits auf Qualität und langfristige Nutzbarkeit ausgelegt ist:

Die Box für die Aufbewahrung der Bauteile und Box für die Drahtbrücken machen einen soliden Eindruck. 

Die ausgewählten Bauelemente decken im Vergleich zu anderen Lernpaketen ein recht breites Spektrum an Komponenten ab. Daher sollten die Möglichkeiten, was man mit dem Kit so alles bauen kann recht groß sein. Auch das Breadboard ist im Vergleich zu den mir sonst bekannten, beiliegenden Steckplatinen schon fast luxuriös groß.

Dem Kit liegen keine Bauanleitungen in Papier bei. Stattdessen stellen RS Components auf ihrer Seite Video-Anleitungen bereit, mit denen man zum Beispiel ein Theremin, ein Love-O-Meter oder einen Wahrsager bauen kann.

Die Videos sind gut gemacht und leicht verständlich. Ein kleiner Wermutstropfen ist dabei vielleicht, dass sie ausschließlich in Englisch verfügbar sind. Das sollte aber aus meiner Sicht für den Arduino-Interessierten bestimmt kein Problem sein ;-)

Das Kit ist für ca. 50 € erhältlich und bietet aus meiner Sicht deutlich mehr Möglichkeiten als beispielsweise das teurere „Lernpaket für Arduino“ von Franzis.

Für Arduino-Einsteiger oder Elektronik-Interessierte bestimmt ein prima Weihnachtsgeschenk.

Ich werde die nächsten Tage darauf verwenden, ein paar Experimente mit dem Kit durchzuführen und werde natürlich hier darüber berichten.

Hackathon 2012: Projekt Wortwecker - Teil 1

Im September war es dann soweit: Dirk, Jens und Thomas fanden sich ein, damit wir gemeinsam 4 Tage und Nächte lang Pizza essen, Cola trinken und basteln konnten.

Unser Ziel war es, dass am Ende jeder der vier Bastler einen fertigen Wortwecker mit nach Hause nimmt - also eine Uhr, welche die aktuelle Zeit in Form von Sätzen anzeigt. Dabei werden die Buchstaben durch einzelne LEDs mit entsprechendem Passepartout dargestellt.

Geplanter Funktionsumfang des Wortweckers:

•Anzeige der Uhrzeit
•Automatische Zeitstellung per Funkuhr
•Helligkeit der Leuchtdioden je nach Umgebungshelligkeit
•Weck-Zeit einstellbar
•Weck-Melodie definierbar

Als „Gehirn“ der Uhr wählten wir einen Arduino Uno

Arduino Uno mit Funkuhr-Modul
Arduino Uno mit Funkuhr-Modul

Insgesamt sind pro Wecker 112 LEDs verbaut, welche alle einzeln angesteuert werden möchten. Da der Arduino natürlich nicht über so viele Ports verfügt, muss noch eine entsprechende Schaltung zwischen Arduino und LEDs eingesetzt werden. Kern dieser Schaltung sind bei unserem Projekt 14 Stück TPIC6C595 Schieberegister pro Uhr. 

Ohne Plan läuft nichts...
Ohne Plan läuft nichts...

Da wir nicht nur ein reines Löt- und Bestückungs-Projekt durchführen wollten, entschieden wir uns für die Verwendung von Lochrasterplatinen statt geätzte Platinen zu designen. Eine Wahl, welche wir bei einem „nächsten Mal“ sicher überdenken würden ;-)

Tag 1

Los ging es am ersten Tag mit der Programmierung des Arduino, wobei dieser Tag eigentlich nur ein halber war, da wir erst am späten Nachmittag begannen und zu diesem Zeitpunkt auch erst zu dritt waren.

Während Dirk und Thomas die LED-auf-Worte-Übersetzung und die Beschickung des Schieberegisters vorbereiteten, konnte ich mich mit dem Auslesen des Funkuhr-Modules befassen.

Dirk und Thomas programmieren die Schieberegister
Dirk und Thomas programmieren die Schieberegister

Was mich zugegebener Maßen an den Rand des Wahnsinns getrieben hat. Der verwendete Funkuhr-Empfänger ließ sich nicht korrekt auslesen und verweigerte jede sinnvolle Zusammenarbeit. Einer Stunde und viele Test-Programme später probierte ich ein zweites Exemplar aus, und – aha – dieses funktionierte dann augenscheinlich. Also war wohl der erste Empfänger kaputt. Am nächsten Tag funktionierte dann aber auch dieser zweite Empfänger nicht mehr bzw. nur noch sehr sporadisch.

Am Ende stellte sich per Zufall heraus, dass das Notebook den Empfang der Uhr störte: Der Abstand der Uhr zum Notebook bestimmte, ob diese ein (funktionierendes) Zeitsignal empfangen konnte oder halt nicht.

Wenn die Funkuhr ausreichend weit vom Notebook entfernt ist, funktioniert sie plötzlich
Wenn die Funkuhr ausreichend weit vom Notebook entfernt ist, funktioniert sie plötzlich


Impressionen vom Schieberegister-Test-Arbeitsplatz

Tag 2 

Der zweite Tag startete mit den Arbeiten an der ersten Platine. Die Aufgaben waren die Verteilung der Bausteine und die optimale Verdrahtung der Lochrasterpunkte als Ersatz für Leiterbahnen. Im Nachhinein betrachtet liegt die Anzahl an Drähten und Bauteilen pro Platine wahrscheinlich knapp an der Grenze (oder auch darüber), was man noch per Lochraster machen kann oder sollte.

Die Platine wird bestückt..
Die Platine wird bestückt...

... und verlötet
... verlötet, und gemessen

Nachdem Jens und Thomas die erste Platine fertig bestückt und verlötet hatten, ging es an das Hardware-Debugging. Prima war dabei, dass Jens sein Oszilloskop mitgebracht hatte, denn die Schaltung verhielt sich überhaupt nicht so wie erwartet.

Auch hier zeigte sich nach langem Suchen, dass wir – wie schon bei der Funkuhr – einem Phantom nachgejagt waren.

Gut dass Jens sein Oszilloskop dabei hatte
Gut dass Jens sein Oszilloskop dabei hatte

Arduino und die Arrays

Offenbar initialisiert ein Arduino Programm ein Byte-Array auf dem Heap mit Nullen, während es auf dem Stack den Speicher bereit stellt wird, jedoch der vorherige Inhalt der betroffenen Speicherzellen unverändert bleibt. Das frühe Testprogramm mit ausschließlich statischem Array funktionierte daher wunderbar. Für den Test der fertigen Platine hingegen waren die identischen Code-Zeilen bereits in Methoden ausgelagert worden und verhielten sich daher anders. Aber wer soll so etwas erahnen? Da liegt es näher, nach Fehlern auf der umfangreich verdrahteten und verlöteten Platine zu suchen... und das dauert dann durchaus mal mehrere Stunden.

Prototyp eines Skateboard-Controllers

 

 

Zur Steuerung eines Video-Spieles ist dieser Skateboard-Controller entstanden.

Es ist nur ein Prototyp und daher nicht sonderlich robust, funktioniert aber technisch einwandfrei.

Als Basis habe ich ein preiswertes Skateboard aus dem Sportgeschäft erstanden:

Von unten sieht es so aus...

Da der spätere Controller fixiert und unbeweglich sein soll, mussten zuerst die Räder entfernt werden:

Bei diesem Prototyp wird sämtliches Gewicht des Spielers durch Tür-Buffer aus Gummi aus dem Baumarkt aufgenommen...

...die auf einer Seite über eine Klebefläche verfügen. Leider sind diese in der Mitte hohl, was für die Verwendung der Drucksensoren nicht ganz optimal ist - doch dazu später mehr...

Da die Mitte des Skateboards nicht relevant für die Richtungsmessung ist (und damit die Drucksensoren später nicht das komplette Gewicht des Spielers verarbeiten müssen),  können zwei der Gummi-Buffer direkt in die Mitte des Boards geklebt werden:

In den vier Ecken des Skateboards wird nun jeweils ein Drucksensor angebracht.

Ich habe mich bei diesem Prototyp für einen 12,7mm großen Sensor entschieden, welcher für den Messbereich von 100g bis 10kg optimiert und mit unter 10,- EUR noch relativ günstig ist.

Nachdem an die Sensoren jeweils ein zweipoliges Kabel angelötet ist, können diese grob auf dem Board fixiert werden.

Jetzt kommt die kleine Problematik mit den hohlen Gummi-Buffern. Diese habe ich mit jeweils einer kleinen Portion Heißkleber gelöst.

Vorher wurde natürlich die ursprüngliche Klebeschicht entfernt.

Wichtig ist dabei, dass die Oberfläche in etwa plan ist:

Die so vorbereiteten Buffer benötigen nun wieder eine Klebefläche. Dazu verwende ich hier einfach doppelseitiges Klebeband:

Nun kann auf die vier Sensoren jeweils ein Gummi-Buffer aufgeklebt werden:

Die Verkabelung zum Arduino-Board wird später auf die analogen Eingänge A0 bis A3 geführt.

Hier die Kabel-Belegung:

Als Controller wird hier ein Ardunio Uno Rev 3 verwendet.

Die Drucksensoren werden nun mit jeweils einem Anschluss an den 5V Port des Arduino und mit dem anderen Anschluss an einen analogen Ausgang (A0-A3) angeschlossen.

Gleichzeitig muss noch ein Widerstand zwischen dem jeweiligen analogen Port und dem GND Port des Arduino angeschlossen werden. Ich habe hier 470 Ohm verwendet, was vom späteren Messergebnis her prima funktionioniert.

Als Versuchsaufbau für einen einzelnen Drucksensor sieht das dann so aus (die blauen Kabel führen zum Drucksensor):

Um das Ganze für die vier Sensoren etwas stabiler und übersichtlicher auszulegen, habe ich die Verkabelung und die Widerstände in Form eines Shields an entsprechende Kontaktleisten und eine Platine angelötet:

Das Shield lässt sich nun auf den Ardunio aufstecken.

Damit ist der Hardwareteil erfolgreich abgeschlossen. Ein kleiner Test mit einem Arduino-Programm, welches über den seriellen Port die vier Messwerte sendet, war erfolgreich und zeigt entsprechend der Gewichtsverlagerung auf dem Skateboard entsprechende Messwerte an.

Am Ende muss das Skateboard nur noch auf einer Untergrund-Platte fixiert werden (hier nicht als Foto zu sehen). Dabei verwende ich die bereits vorhandenen 8 Löcher, an welchem früher die Rollen befestigt waren. Die Schrauben sollten nur so fest angezogen werden, dass das Board gut auf den Gummie-Buffern fixiert ist, aber dennoch noch nicht zu viel Druck auf diese ausübt.