Allgemein

Roboter basteln – gut vorbereitet

Bis zur letzten Sekunde habe ich mich heute nochmal mit Linux und Bluetooth rumgeärgert. Nicht nachvollziehbar ist dass das Tutorial nicht auf allen Linuxen oder Computern funktioniert – ich habe keine Ahnung woran das liegt. Jetzt läufts jedenfalls auf den zwei Laptops, die die Kinder zum Programmieren mit Snap4Arduino benutzen sollen.

Jetzt ist jedenfalls alles vorbereitet und ich hoffe ich habe in dem Chaos nichts vergessen :) Morgen gehts los, ich bin schon aufgeregt….

Roboter basteln – Prototyp v0.2

Nun ist der zweite Prototyp fertig, verbunden per Bluetooth mit Snap4Arduino macht er seine ersten Bewegungen.


Link zu einem kurzen Video.

Arduino per Bluetooth mit s4a und Snap4Arduino verbinden (Linux)

Arduino und Bluetooth vorbereiten

1. Arduino vorbereiten

Der Arduino muss mit einer Firmware bespielt werden, um mit s4a oder Snap4Arduino über die serielle Schnittstelle zu kommunizieren. Für Snap4Arduino wird diese Firmware bereits mit der Arduino Entwicklungsumgebung mitgeliefert.

Verbinde Arduino per USB-Kabel mit dem Computer und starte die Arduino-IDE. Unter "Datei/Beispiele/Firmata" findet sich die StandardFirmata, welche auf den Arduino geladen wird. Vergiss nicht unter "Werkzeuge" das richtige Board (Arduino UNO) sowie die richtige serielle Schnittstelle auszuwählen. Oft erkennt die Arduino-IDE diese automatisch.

Ist die Firmata-Firmware auf den Arduino geladen, kannst Du sie sofort mit Snap4Arduino verwenden. In der grafischen Snap-Oberfläche klickst Du auf "Arduino" und "mit Arduino verbinden". Erscheint die Meldung "Ein Arduino Board wurde verbunden. Fröhliche Prototyping" ist die Umgebung für erste Versuche eingerichtet.

Ähnlich funktioniert das mit s4a, wobei du hier eine andere Firmware benutzen musst. Diese findest Du auf der s4a-Website unter "Downloads".

2. Bluetooth-Board vorbereiten

Das Bluetooth-Shield ITead BT-Shield V2.2 ist im Grunde bereits vorbereitet. Bei mir kam es mit einer voreingestellten Baut-Rate (Datenübertragungsgeschwindigkeit) von 38400 Baud, die auch die s4a-Firmware benutzt. Sollte dies allerdings nicht der Fall sein, musst Du die Baud-Rate selbst einstellen. Darüber hinaus kannst Du den Namen des Bluetooth-Modul verändern, um es zu personalisieren und zB. erkennbar zu machen wenn Du mehrere der Module im selben Raum verwendest. Es gibt noch einige andere Einstellungen, die wir ignorieren können.

Arduino und ITead BT-Shield V2.2

Für Snap4Arduino benötigst Du allerdings eine Übertragungsrate von 57600 Baud. Möchtest Du diese Programmierumgebung benutzen, musst Du also die Baudrate anpassen – entweder im Quellcode der Firmata-Firmware, oder auf dem Bluetooth-Board. Da wir dem Bluetooth-Board sowieso einen eigenen Namen geben wollen, zeige ich hier diese Variante.

Bluetooth-Shield mit dem Computer verbinden

Auf dem Bluetooth-Board findest Du einen Schalter mit der Beschriftung CMD und DAT. Um das Board anzupassen benötigen wir den Command-Modus, der Schalter wird also in Richtung CMD geschoben. Außerdem müssen die Jumper in die richtige Position gebracht werden, damit das Board mit dem FTDI-Chip des Arduino und nicht mit dem Arduino Microcontroller kommuniziert. Auf dem Foto siehst Du die richtige Einstellung hierfür.

Nun wird es etwas fummelig. Aus dem Arduino-Board musst Du vorsichtig den Microcontroller entfernen. Dies gelingt am besten mit einem kleinen Schraubendreher und langen Fingernägeln. Pass auf, dass keine der Füße abbrechen, sonst kannst Du ihn später nicht mehr einsetzen. Außerdem solltest Du dich vor dieser Arbeit kurz „Erden“. Damit ist keine Meditation gemeint, du musst nur ein unisoliertes Heizungsrohr anfassen. Durch Reibung bei Bewegung ist dein Körper elektrisch geladen. Diese Ladung kann den Chip beschädigen. Durch das Berühren eines großen Metallgegenstandes, der mit der Erde verbunden ist, wird dein Körper entladen und du kannst sicher mit dem Chip hantieren.

Mit einem kleinen Schraubenzieher hebst Du den Chip auf einer Seite ein wenig an, dann tust Du dasselbe auf der anderen Seite. Schritt für Schritt in Micrometerschritten hebelst Du den Controller langsam aus der Halterung bis du ihn mit den Fingern herausziehen kannst.

Arduino mit herausgelöstem Microcontroller

Jetzt wird das Bluetooth-Board auf den Arduino aufgesteckt und per USB-Kabel mit dem Computer verbunden. Nun startest Du die Arduino-Umgebung. Kontrolliere, ob das richtige Board und der richtige Port ausgewählt ist.

Mit dem eingebauten Serial Monitor kannst Du nun so genannte AT-Befehle an dein Bluetooth-Board senden. Mit diesen lässt sich das Board einstellen. Stelle unten Links im Serial Monitor die Verbindungsgeschwindigkeit auf 38400 Baud, und den Modus daneben auf "Sowohl NL als auch CR" ein.

Wenn Du nun in die Befehlszeile oben "AT" eingibst und die Enter-Taste drückst, sollte im Ausgabefeld ein OK erscheinen. Nun kannst Du deinem Bluetooth-Board Befehle erteilen:

1. Namen verändern:

mit dem Befehl AT+NAME? wird er aktuelle Name des Boards ausgegeben. Willst Du ihn z.B. in "KLARA" ändern, tippe

AT+NAME=KLARA

2. Baudrate verändern

Wenn Du Snap4Arduino verwenden willst, musst Du die Bautrate mit folgendem Befehl anpassen:

AT+UART=57600,0,0

Mit dem Befehl AT+UART? überprüfst Du die Werte nochmal, dann kannst Du den Seriellen Monitor schließen und die USB-Verbindung wieder lösen.

Vorsichtig kannst Du nun den Microcontroller wieder in dein Arduino-Board einsetzen. Beachte, dass die kleine Kerbe an der richtigen Seite ist. Sie korrespondiert mit einer kleinen Kerbe in der Halterung. Richtig herum zeigt sie auf die gegenüberliegende Seite vom USB-Anschluss.

Pairing

Nun muss der Computer per Bluetooth mit dem Modul verbunden werden. Der Prozess nennt nich "Pairing". Zunächst ändern wir die Jumperposition wieder wie auf dem Bild zu sehen und der kleine Schalter wird auf die Position DAT gestellt. Das Shield wird auf den Arduino aufgesteckt und dieser per USB mit Strom versorgt. Dies kann nun auch mit einem Netzteil erfolgen, denn die Verbindung wird ja nun über Funk hergestellt.

Unter Linux starten wir den Bluetooth-Manager (grafische Oberfläche). Wenn ein Bluetooth-Device im Computer eingebaut ist, erscheit es als blaues Bluetooth-Symbol in der Task-Leiste (z.B. unter Ubuntu oder Linux Mint). Der Rechner scannt die Umgebung nach aktiven Bluetooth-Geräten und irgendwo sollte in der Liste unser Modul mit dem vorher vergebenen Namen auftauchen. Nach einem Doppelklick darauf werden wir aufgefordert, einen Pin einzugeben. Wenn dieser nicht im letzten Schritt per AT-Befehl verändert wurde, ist er "1234".

Arduino mit aufgestecktem Bluetooth Shield

Neben dem Namen in der Liste erscheint dann kurz "connected" und anschließend wieder "disconnected", doch dies ist kein Problem. Die Verbindung bauen wir später wieder auf.

Rechner und Bluetooth-Shield sind nun "gepaired".

Serielle Verbindung unter Linux einrichten

Nun gehts auf der Kommandozeile weiter. Wir öffnen ein Terminal-Fenster und tippen:

hcitool scan

Dieser Befehl gibt uns eine Liste von Bluetooth-Geräten mit ihren MAC Adressen aus. In der Liste sollte auch unser Modul zu finden sein. Wir benötigen die MAC-Adresse für den nächsten Schritt:

sudo rfcomm bind /dev/rfcomm0 MAC-Adresse

wobei "MAC-Adresse" durch die lange, mit Doppelpunkten bestückte Nummer ersetzt wird. Mit dem Root-Passwort weisen wir uns als berechtigter Superuser aus.

Workaround für s4a (funktioniert nicht richtig)

s4a scannt beim Start auf der Suche nach dem Arduino-Modul die Standard-Ports für eine USB-Verbindung. Es gibt leider keine eingebaute Möglichkeit s4a eine andere Verbindung beizubringen. Deshalb behelfen wir uns mit einem kleinen Hack, der allerdings (das muss ich vorausschieben) nicht richtig funktioniert.

Um s4a vorzugaukeln mit einer USB-Verbindung zu kommunizieren setzen wir einen Symlink von der Bluetooth-Adresse zu einer Fake-USB Adresse:

sudo sudo ln -s /dev/rfcomm0 /dev/ttyACM0

Wenn anschließend s4a gestartet wird, findet es tatsächlich den Arduino über Bluetooth – zu erkennen über die sich verändernden Werte der analogen Inputs.

Dieser Hack ist aber alles andere als stabil, weshalb ich letztendlich von s4a Abstand genommen habe und mich für Snap4Arduino entschieden hab.

Snap4Arduino – Bluetooth-Verbindung herstellen

In Snap4Arduino kann nämlich ein Verbindungsport ausgewählt werden. Aus dem Arduino-Menü wählen wir den Baustein "verbinde Arduino mit Port []" (siehe Bild) und ziehen ihn ins Scripte-Fenster. In das Eingabefeld schreiben wir die Adresse unseres Bluetooth-Geräts:

/dev/rfcomm0

Arduino Portauswahl

Durch einen Klick auf diesen Baustein wird nun eine Bluetooth-Verbindung aufgebaut und wir können endlich "Hello World" sagen:

hello world

s4a und Bluetooth auf Linux

s4a ist eine Scratch-Variante mit der man Programme wie bei Scratch für den Arduino zusammenklicken kann. Der Vorteil dieser Software ist, dass man die Programmieranweisungen wie Puzzleteile auf einer grafischen Oberfläche zusammenfügt. Für Kinder, die sich noch nie mit dem Programieren beschäftigt haben, ist dies ein guter Start.

Bluetooth Shield

Leider hat die Software auch einen Nachteil: der Arduino muss eine ständige serielle Verbindung zum Computer haben, da die Programme nicht auf dem Arduino ausgeführt werden. Der erhält vom Host-Computer lediglich die Befehle in Echtzeit. Eine Kabelverbindung ist allerdings für einen Roboter, der sich bewegen soll, keine gute Wahl.

Aus diesem Grund habe ich versucht eine Verbindung per Bluetooth aufzubauen. Das Modul, das einfach auf den Arduino aufgesteckt wird, heißt Itead BT Shield und erweitert Arduino um eine Bluetooth-Schnittstelle. Über diese lassen sich dann Kommandos drahtlos an den Arduino übertragen – in der Theorie (und auch im Buch „Scratch, Arduino und Raspberry Pi“ von Erik Bartmann) hört sich das toll an. Wenns Praktisch wird, liegt der Teufel im Detail.

So verbrachte ich die letzten Stunden damit, herauszufinden, wie man das Bluetooth-Modul nun richtig konfiguriert und einen Linux-Computer dazu überredet mit dem Modul zu sprechen. Die Informationen dazu sind im Internet aber spärlich und ich brauchte viele verschiedene Anleitungen und Informationen und musste eine Menge testen… In einem anderen Blog-Beitrag werde ich das detailliert beschreiben, um dem Leser diese Strapazen zu ersparen. Eins aber vornweg:

s4a funktioniert damit nicht reibungslos. Eine Verbindung zum Arduino wird nicht immer hergestellt, s4a findet ihn schlicht oft nicht. Mein Weg bestand darin, sämtliche RESET-Knöpfe (auf Arduino Board und Bluetooth-Modul) zu drücken und s4a neuzustarten usw.

Immerhin konnte ich einen Weg ermitteln mit dem es reproduzierbar funktioniert: s4a schließen, Arduino ausschalten / Stecker ziehen / Batterie abklemmen, wieder anklemmen, s4a öffnen, win! Leider verliert s4a allerdings die Verbindung stets wieder, wenn es einen neuen Sketch läd…

Jetzt bin ich müde. Eine umfangreichere Anleitung kommt frühestens morgen ;)

Roboter basteln – Prototyp v0.1

Für einen Ferienworkshop für Kinder entwickle ich gerade einen Roboter, der sich mit Scratch programmieren lässt. Scratch ist eine Programmiersprache zum lernen, bei der sich die einzelnen Befehle auf einer grafischen Oberfläche zusammenklicken können. Um mit dem Roboter zu kommunzieren gibt es die Scratch-Variante S4A. Mit dieser kann man einen Arduino programmieren.

Das ist der erste Prototyp:

Arduino Roboter v0.1

Der fertige Roboter soll eine Mischung aus dem Coffee-Bot und dem Bauvorschlag aus dem Buch „Scratch, Arduino und Raspberry Pi“ (Link) werden.

Ich habe den Roboter zunächst nicht mit Servos sondern mit normalen Gear-Motoren gebaut. Schnell wurde klar, dass diese sich viel zu schnell bewegen und wenn sie per PWM gedrosselt werden, bringen sie zu wenig Power auf um den Roboter präzise zu bewegen.

Außerdem muss bei der Nutzung von S4A eine stetige Verbindung zwischen Computer und Arduino bestehen. Man läd also nicht das Script auf den Arduino, sondern es läuft auf dem Rechner und Arduino bekommt lediglich die Befehle zur Ausführung per Serieller Schnittstelle. Erik Bartmann nutzt aus diesem Grund in seinem Buch ein Bluetooth-Shield für die drahtlose serielle Kommunikation zwischen Rechner und Roboter. Dem werde ich mich anschließen, habe aber das entsprechende Modul noch nicht.

URLs kürzen mit DuckDuckGo

wie das sehr einfach, schnell und effektiv geht habe ich bei Diaspora geschrieben:

Wusstet ihr schon dass #DuckDuckGo auch lange URLs verkürzen kann (um sie dann bspw. bei Twitter oder #GnuSocial einzubinden.

Im Eingabefeld einfach
shorten https://example.com

und die URL wird vom Dienst #is.gd gekürzt. Dieser bezeichnet sich selbst als „ethischer URL-Shortener“, und mein damit, dass er die Nutzer:innen nicht trackt usw.

Noch einfacher gehts, wenn DuckDuckGo z.B. im #Firefox als Standart- #Suchmaschine eingestellt ist. Dann kann man nämlich einfach das shorten vor die URL schreiben und man wird nach DuckDuckGo weitergeleitet und erhält die gekürzte URL. #Tipp #Pro-Tipp

Pinwand aus Korken

Wer gerne Wein trinkt, hat viele leere Flaschen und viele Weinkorken. Aus den Weinkorken kann man leicht eine Pinwand basteln. Ein Brett oder ein Stück Pappe, Korken, Messer, Heißkleber, mehr braucht es nicht. Der Haken ist aus einem Getränkedosen-Nuppel. Die Bilder erklären sich selbst:

Zutaten

Advent Advent

Überraschung! Hinter Türchen 1 des Conrad Adventskalenders 2016 befindet sich eine LED und ein Widerstand. In Verbindung mit einer Batterie kann sie zum leuchten gebracht werden! Alte Conrad-Adventskalender-Hasen werden gähnen. Hatten wir schon. Und ich kann euch versprechen, es geht in den nächsten Tagen so weiter bevor es spannend wird…

LED und Widerstand

Mate-Vibrobot

Mate Vibrobot

So sieht der Prototyp der Vibrobots aus, die wir auf dem 33c3 KidSpace basteln wollen (Mate-Version). Habs heut schon mit ner Handvoll Kinder ausprobiert und wir hatten jede Menge Spaß!

Wunderschöner LM386-Verstärker

LM 368 Tube Amp

Das ist kein Röhrenverstärker, denn in dem Glaskolben werkelt ein standardmäßig verschalteter OP-Amp-Chip LM386. Dennoch ist es ein wunderschönes Werk, das Instructables-User Pricklysauce gebaut hat. Hier gehts zur Bauanleitung.

Mit dem LM368 lässt sich mit wenig Bauteilen ein kleiner Mono-Verstärker bauen, der in Kombination mit einem alten Lautsprecher aus dem kaputten Radio zu einer aktiven Lautsprecherbox für Handy und MP3-Player erweitern lässt.