Der Adafruit BNO055 9-DOF Sensor IMU Breakout macht es einem nicht leicht – oder doch?

Um bei einem Roboter festzustellen, in welche Richtung er sich wie weit bewegt (hat), nutzt man Odometrie, also Wegmessung. Dieses hilft bei einer Orientierung im Raum, um zum Beispiel festzustellen, ob die Anweisung „fahre x Sekunden lang“ oder „fahre y weit“ auch wirklich funktioniert hat. Der Adafruit BNO055 9-DOF Sensor IMU Breakout macht es einem nicht leicht – oder doch? weiterlesen

ROS auf dem Raspberry Pi – Teil 3: Ansteuerung einer LED mit Python

Der Vollständigkeit erst mal eine Erklärung noch ohne ROS: Eine LED mit dem Raspberry Pi mit Python und RPi.GPIO Library ist denkbar einfach. ROS auf dem Raspberry Pi – Teil 3: Ansteuerung einer LED mit Python weiterlesen

Raspberry Pi Kamera-Fehler mmal ENOSPC beheben

Beim Testen meiner Raspberry Pi-Kamera mittels

raspistill -o test.jpg

kam seit einigen Tagen immer diese Fehlermeldung:

mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
mmal: camera component couldn't be enabled
mmal: main: Failed to create camera component
mmal: Failed to run camera app. Please check for firmware updates

Zuerst wurde natürlich eines der letzten Updates durch sudo apt-get update und sudo apt-get upgrade als Ursache vermutet. Aber Fehlanzeige. Auf Betriebsystem-Eben erschien alles einwandfrei. Für das Ubuntu ist die Kamera offenbar einsatzbereit. Raspberry Pi Kamera-Fehler mmal ENOSPC beheben weiterlesen

ROS auf dem Raspberry Pi – Teil 1: Installation und Test

Nun ist es also soweit: Nach viel Zeit mit dem Lesen von Büchern – ja, echten Büchern aus Papier – und dem Stöbern in sehr vielen Online-Tutorials und sonstigen Webseiten, habe ich endlich das Robot Operating System (ROS) auf einem Raspberry Pi 3 zum Laufen bekommen. Hier werde ich nun erklären, bzw. eine Art Anleitung schreiben, wie das funktioniert. Außerdem zeige ich meine ROS-Programme , die meinen selbstgebauten Roboter minibot steuern oder einfach nur eine LED ansteuern („ROS LED Blinky“).

ROS auf dem Raspberry Pi – Teil 1: Installation und Test weiterlesen

Spannungsmessung mit AD-Wandler am Raspberry Pi – Update

Damit das für den minibot angeschaffte OLED-Display auch einen vernünftigen Nutzen hat, soll es unter anderem für die Überwachung der Akku-Spannung genutzt werden. Dazu sind drei Schritte notwendig: Spannungsmessung mit AD-Wandler am Raspberry Pi – Update weiterlesen

Ansteuerung eines OLED-Displays via I2C

Ich finde ja, ein Roboter der etwas auf sich hält, benötigt ein Display. :) Nicht nur, dass es „was hermacht“, es ist auch hervorragend zum Anzeigen wichtiger Informationen oder zum Debuggen hilfreich.

Der Einfachheit halber entschied ich mich beim minibot für ein kleines und günstiges OLED-Display, welches via I2C angesteuert wird. Damit kann es sehr einfach für einen Raspberry Pi, als auch für einen Arduino genutzt werden. Die Auflösung des LCD beträgt 128×64 Pixel und es ist ganze 0,96″ groß – für meine Zwecke aber völlig ausreichend. Aber Vorsicht: Es wird nicht immer die gleiche Version der Platine geliefert. Manchmal sind + und – je nach Lieferung vertauscht (aber stets korrekt beschriftet)!

Es ist übrigens ein grafisches Display. Das bedeutet, man kann nicht nur Text, sondern auch Bilder anzeigen oder selbst Linien, Kreise etc. zeichnen. Für diesen Zweck gibt es zwei fertige Bibliotheken, für die Adafruit mal wieder ganze Arbeit geleistet hat!

Besser wäre es gewesen, ein Original Adafruit-Display zu kaufen, denn diese stellen mal wieder eine super Anleitung zur Ansteuerung zur Verfügung.

Und das Ganze hat dann auch mal auf Anhieb funktioniert – sogar mit eigenem Font:

minibot - hello world
minibot – hello world

 

Debugging minibot

Manchmal sieht etwas so einfach aus: Schaltplan skizzieren, alles aufbauen und los geht’s. Das dachte ich auch bei meinem neuen Roboter dem minibot. Aber leider bewegten sich die Motoren meines kleinen Bots kein Stück.

Lange suchte ich den Fehler in der neu erstellten Test-Software, die ich (erstmals) in Python programmierte. Insbesondere, da das Monster Moto Shield zur Geschwindigkeitsregelung der Motoren PWM (Pulsweitenmodulation) benötigt. Diese wird mit dem verwendeten Python-Modul GPIO per Software erzeugt. Zum Mitmachen und Suchen des Fehlers hier einmal der verwendete Sourcecode:

Debugging minibot weiterlesen