NIBObee mit Bluetooth Modul HC-06
Startseite

NIBObee Roboter

An dieser Stelle möchte ich jungen und erwachsenen Spielkindern einen spannenden Roboter-Bausatz vorstellen.

Der NIBObee Roboter Bausatz von Nicai Systems richtet sich an Menschen, die ein bischen basteln wollen und vor allem Interesse an der Programmierung eines solchen Gerätes haben. Für nur 50 Euro erhalten Sie mit dem NIBObee ein lehrreiches Männerspielzeug mit sehr guter Aufbauanleitung.

Der NIBObee wird normalerweise mit dem AVR-GCC Compiler in C programmiert, für den es zahlreiche kostenlose grafische Oberflächen gibt. Laut Verpackung kann man den Roboter auch in Java programmieren, dazu liefert der Hersteller jedoch keine Anleitung.

An technischer Ausstattung hat der Roboter folgendes zu bieten:

Mit zwei Getriebemotoren fährt er etwas schneller als 1 Meter pro Sekunde. Zwei Lichtschranken erfassen die Rotation der Räder, sie dienen der Messung von Strecke, Richtung und Geschwindigkeit.

Zwei Fühler erkennen Kollisionen mit Hindernissen. Drei Infrarot Sensoren auf der Unterseite erkennen Markierungen auf dem Boden.

Die Platine hat vier Leuchtdioden und zehn I/O Pins zur freien Verwendung übrig. Davon können vier Pins als analoger Eingang verwendet werden. Zwei I/O Pins können als serielle Schnittstelle verwendet werden, und zwei andere können als I2C Schnittstelle verwendet werden.

Der mitgelieferte ATmega16 Mikrocontroller ist mit 16kB Programmspeicher (Flash) und 1kB RAM angemessen ausgestattet. Die größte Uprade-Option wäre der ATmega1284P mit 128kB Programmspeicher und 16kB Flash.

Vergleich NIBObee mit Asuro

Im Vergleich zum Asuro Asuro fallen mir folgende Vorteile auf: All diese Vorteile bekommt man quasi ohne Aufpreis.

Programmierung

Der Hersteller stellt nur eine sehr knappe Programmieranleitung bereit. Wie man die LEDs blinken lässt, wird noch ausführlich erklärt. Wie man den Antrieb regelt, so dass er ordentlich geradeaus fährt, wird jedoch gar nicht erklärt. Das ist der Punkt, wo man sich selbst mit Regel-Algorithmen und den Eigenarten der nicht perfekten Hardware auseinandersetzen muss - was der eigentliche Sinn dieses Lehrbausatzes ist.

Als ich mich 2009 zum ersten mal mit dem NIBObee beschäftigte, steckte die mitgelieferte C Library noch in den Kinderschuhen. Sie war stellenweise unnötig kompliziert und viele Leute hatten Schwierigkeiten, sie in ihre Entwicklungsumgebung einzubinden. Inzwischen eignet sie sich laut Dokumentation nur noch für veraltete Entwicklungsumgebungen.

Da ich aber bereits mit dem Mikrocontroller vertraut war, schrieb ich kurzerhand meine eigene Library. Sie ist umfangreich kommentiert und funktioniert (immer noch) mit allen mir bekannten Entwicklungsumgebungen in jeder Version.

Inhalt meiner Library

nibobee.h, nibobee.cEnthält alle Funktionen der NIBObee Platine
fahren.h, fahren.cErweiterung um einen PI-Regler für präzise Fahrmanöver
servo.h, servo.cErweiterung um eine Ansteuerung von bis zu fünf Modellbau Servos
MakefileKonfigurationsdatei für den make Befehl
rm.batHilfsprogramm, damit die Konfigurationsdatei unter Linux und Windows gleich aussehen kann
80-nibobee.rulesKonfigurationsdatei für Linux
test1.cErstes Testprogramm, demonstriert den Nutzen des PI-Reglers
test2.cZweites Testprogramm, enthält vier komplexe Anwendungs-Beispiele

In den Dateien findest du zahlreiche erklärende Kommentare. Anwendungsbeispiel:

#include "nibobee.h"
#include "fahren.h"

int main() 
{
    // Zeige den Batterie-Status an
    batterie_status(); 
           
    // Vier Meter vorwärts fahren
    vorwaerts(400*CM,MITTEL);
    while (fahrstatus() < ZIEL_ERREICHT) 
    {
         fahren_regeln();
         
         // Bei Kollision anhalten
         if (SENS_ANY)
         {
             stop();
             break;
         }
    }
}

Erste Schritte

Installiere eine AVR Toolchain, mitsamt dem make Befehl und avrdude. Packen meine ZIP Datei aus. Falls du Linux verwendest, kopiere die Datei 80-nibobee.rules nach /etc/udev/rules.d. Falls du Windows verwendest, installiere den libusb Treiber gemäß dieser Anleitung.

Öffnen eine Eingabeaufforderung und gehen mit dem cd Befehl in das nibobee Verzeichnis. Gebe make clean code ein, um das Programm zu übersetzen. Schließe das USB Kabel des Roboters an und gebe make program um es auf den Roboter zu übertragen.

Wenn du das zweite Testprogramm ausprobieren möchten, must du das Makefile editieren und dort den Dateinamen test1.c durch test2.c austauschen. In dieser Datei stellt man auch die Baudrate der seriellen (Bluetooth) Kommunikation ein, welche vom zweiten Testprogramm verwendet wird.

Die Dokumentation der avr C Library findest du hier.

Nachdem du ein bisschen erfolgreich programmiert hast, empfehle ich dir, einen eigenen Regel-Algorithmus (ohne meine fahren.h) zu entwickeln. Das ist eine anspruchsvolle und sehr lehrreiche Aufgabe.

Erweiterungsvorschläge

Mit einem Bluetooth Modul kann der Roboter drahtlos mit dem PC oder einem Smartphone kommunizieren. Wenn du meine Library einsetzt, benutze dazu ganz einfach die Funktionen der stdio Library, z.B. println(), puts(), gets() und scanf(). Im Handel werden "HC-06 Module for Arduino" angeboten, die zufälligerweise exakt auf den Anschluss X5 passen.

Wer nicht gegen Hindernisse fahren möchte, kann einen Ultraschall Entfernungs-Sensor (z.B. den SRF02 oder den chinesischen HC-SR04) auf den Roboter montieren. Alternativ bieten sich besonders für den Nahbereich auch optische Entfernungs-Sensoren von Sharp an.

Wenn man den Entfernungs-Sensor auf einen mini Servo aus der Modellbau-Abteilung montiert, kann man ihn sogar hin und her drehen, ohne den ganzen Roboter bewegen zu müssen. Das sieht dann so aus:

Ultrschall Sensor mit Servo

Wenn du noch mehr I/O Leitungen für Erweiterungen benötigst, dann schaue dir mal die Datenblätter dieser Chips an:

Verbesserungsvorschläge

Wenn die Biene frontal gegen einen schmalen Gegenstand fährt (z.B. ein Stuhlbein), erkennt sie das Hindernis nicht. Das obige Foto zeigt einen Umbau der Fühler, der dieses Problem weitgehend behebt.

Die Schalthebel der Fühler waren bei mir zu schwergängig. Vermutlich hätte ich sie an der markierten Stelle nicht fest löten sollen:

Ich hatte das Problem damals anders gelöst, indem ich die Fühler ohne Schalthebel mit einem dicken Klecks Heißkleber direkt an der Platine befestigte. Das klappte einwandfrei:

Auf manchen Teppichen und auf leicht verstaubtem Laminat rutschen die Reifen leicht durch. Klemme ein zusätzliches Gewicht (z.B. einen flachen Stein) mit einem Gummiband an den Batteriehalter, so kommt mehr Gewicht auf die Räder. Man kann das Problem natürlich auch programmatisch beheben, indem man sanft beschleunigt und bremst.

Die Zahnräder des Getriebes schauen unten heraus und enden sehr dicht über dem Fußboden. Sie sammeln daher fleißig Staubflocken und Haare ein, die dann das Getriebe blockieren. Abhilfe schafft hier die Abdeckung aus einem halbierten Deckel von einer Haarspray-Dose, mit Heißkleber angeklebt.