ct-Bot - Erweiterungen

Hauptseite
Beruf
Spiele
Freiheit für Links
Geschichten
Zitate
HP48
ct-Bot
Allgemeines
Äußeres
Sensoren+Melder
Probleme
Justierungen
Erweiterungen
Bilder
Links
(ct-)Hardware
MP3-Wetterstation
LED-Tafel
LED-Licht
Nixie-Uhr
Diverses
Rechenmaschine AE13
Grundgesetz
Jargon Lexikon
Holgi on Tour
Bilder
Rückmeldung?
Impressum
Quasi die erste Erweiterung ist das aufsteckbare LCD-Display. Na ja, es ist von Anfang an eingeplant gewesen, allerdings optional aufsteckbar. Wer also ein wenig sparsam mit dem Geld umgehen muß, braucht das Display nicht. Allerdings ist es zur Ausgabe von Informationen fast nicht zu ersetzen. Im ct-Framework sind zudem umschaltbare Ansichten enthalten, um die begrenzte Textauflösung von 4x20 Zeichen zu erweitern.
Einige Leute haben das Display entfernt, um die durch das zugehörige Schieberegister zur Verfügung gestellten 8 Ausgabeleitungen für andere Zwecke zu nutzen.

Den USB-2-Bot-Adapter kann man nicht direkt als Erweiterung des Roboters bezeichnen. Er dient vielmehr dazu, den Roboter mit dem Computer zu verbinden (daher ja auch der Name). In erster Linie werden hier Sensordaten übermittelt, die der Simulator anzeigen kann. Das "Debuggen" von Code auf dem Roboter fällt damit (und der Möglichkeit, erweiterte Logmeldungen zu senden) entsprechend leichter. Der Adapter enthält einen Konverter zwischen USB und einer seriellen Schnittstelle (die Gegenstelle dazu ist natürlich eine der Schnittstellen des Bot).
Durch den WLAN-Anschluß der Erweiterungsplatine (s.u.) sinkt die Bedeutung des Adpaters möglicherweise, aber der Anschluß ist immer noch möglich, und zudem die "letzte Rettung", wenn man sich den WLAN-Anschluß verkonfiguriert hat.

Durch Community-Mitglieder wurde der Ultraschallsensor SRF10 an den ct-Bot angeschlossen sowie die nötigen Änderungen im Framework bereitgestellt. Der sehr kompakte Sensor wird recht bequem über den I2C-Bus angesprochen. Die dazu notwendige Technik ist im ATMEGA32 (unter anderem Namen) enthalten.
Der Ultraschallsensor hat eine Reichweite von bis zu 6 Metern. Er kann über einige Parameter gesteuert werden. Hier ist ein wenig "Feintuning" nötig, um die für die jeweilige Umgebung korrekten Werte herauszufinden.
Ich habe an meinem Bot ein Stück Lochrasterplatine zurechtgesägt und an den vorderen Platinenbefestigungsschrauben angebracht. Darauf ist der zum Sensor gehörende Befestigungswinkel festgeschraubt. Damit sollte der Sensor nicht der zukünftigen Transportfachverriegelung im Wege sein. Die Anbindung des Sensors erfolgt über 4 Kabel, zwei davon an eine der vorgesehenen Erweiterungsleisten.

In die Kategorie "doch eher etwas Spielerei" gehört der elektronische Kompass CMPS03. Eigentlich kann der Maussensor ja (je nach Untergrund und der beschriebenen "Tieferlegung") ja durchaus die Ausrichtung des Bots feststellen. Aber eines der Gründe für den Roboter ist ja das Experimentieren.
Das CMPS03 wird (am einfachsten) wie der SRF10 an den I2C-Bus angeschlossen. Die Ausrichtung im Magnetfeld (also die Gradzahl) kann einfach ausgelesen werden. Die Kallibrierung des Modules darf allerdings nicht vergessen werden.

Noch mehr "Spielerei" stellt der Temperatursensor TPA81 dar. Der Sensor enthält eine Thermopile-Sensor-Zeile und ermittelt die Temperatur von 8 nebeneinanderliegenden Punkten berührungslos. Die ermittelte Temperatur nimmt entsprechend der Entfernung natürlich ab, aber der Sensor ermöglicht es, eine Wärmequelle (Mensch, Kerze) auch über eine gewisse Entfernung zu orten und die Position im Erfassungswinkel (12 Grad) zu orten. Für die Entfernung kann man dann ja den Ultraschallsensor verwenden.

In der Ausgabe 2/2007 hat die ct nun eine offizielle Erweiterung vorgestellt. Im Vollausbau finden sich dort die folgenden Ergänzungen:

  • Klappe für das Transportfach
  • SD/MMC-Einschub für das Speichern größerer Datenmengen (z.B. genauerer/größerer Karten)
  • WLAN-Modul zur drahtlosen Anbindung des Bots an einen PC oder zwischen Bots untereinander
  • Möglichkeit, über WLAN den Prozessor neu zu flashen
Die Erweiterungsplatine wird über der Hauptplatine plaziert. Über Steckleisten ist sie mit einigen der Erweiterungssteckern der Hauptplatine verbunden. Sie sitzt dann direkt zwischen Hauptplatine und Display. Bei meinem Bot war der Platz durch die beiden oben erwähnten Zusatzsensoren allerdings derart knapp, daß ich das Display weiter nach oben setzen mußte, um die Sensoren noch dort unterzubringen.
Die Klappe wird an einer Art Bügel über einen Servo vor dem Bot hin- und hergedreht, um die Öffnung vorne zu verschließen. Da es aufgrund der Konstruktion nötig ist, den Stecker des einen Abstandssensors zu entfernen und die Kabel direkt anzulöten, habe ich diese Änderung noch nicht vorgenommen. Ich möchte den Stecker dort lieber behalten und überlege mir noch eine Modifikation dazu.
Der MMC/SD-Karteneinschub dient als Speichererweiterung. Es werden jeweils Seiten von 512 Bytes in den Hautspeicher kopiert, in welche das Programm Daten schreiben und lesen kann. Diese Seite kann dann auf die Karte zurückgeschirben werden. So kann man beispielsweise genauere und größere Bereiche kartographieren lassen. Der Code ist allerdings noch etwas empfindlich, d.h. man wird (zumindest zur Zeit) mit einer Menge SD-Karten vermutlich Probleme bekommen.
Das WLAN-Modul von Lantronix bietet neben dem WLAN-Anschluß auch einen LAN-Anschluß, allerdings nur wechselweise. Intern ist das Modul über zwei serielle Schnittstellen mit der Erweiterungsplatine verbunden. Der "WiPort" besitzt zudem einen eigenen Webserver, über den die Konfiguration stattfindet. Zudem kann er für eigene Webseiten verwendet werden. Hierüber ist es dann (mit ein wenig weiterer Programmierung) prinzipiell möglich, den Bot über einen Browser fernzusteuern. Zudem ist es mit einer erweiterten Codeversion für den Bot möglich, dessen Programm auch über LAN bzw. WLAN upzudaten.
Beim Layout der aktuellen Platine hat sich übrigens ein Fehler eingeschlichen: Die 6-polige Programmierbuchse der Hauptplatine ist für die Möglichkeit des Flashens über WLAN mit der Erweiterungsplatine verbunden. Um aber weiterhin mit einem normalen Programmieradapter arbeiten zu können, ist auf der Platine eine entsprechende Buchse vorhanden, d.h. die Kontakte sind durchgeschleift - leider um 180 Grad gedreht! Steckt man den Programmieradapter wie vorgesehen ein, so funktioniert der Adapter nicht. Man muß leider die Codiernase am Stecker abschleifen und den Stecker um 180 Grad gedreht einstecken, dann funktioniert der Adapter fehlerfrei.

Die einmal angedachte Kamera als Identifikationshilfsmittel wird von Seiten der ct nicht entwickelt, aber möglichweise durch die Community, zumal es bereits einige Module gibt, welche die nötige Bearbeitung schon "onboard" durchführen können.

Auch strenggenommen keine echte Erweiterung ist ein Upgrade auf den Prozessor ATMEGA644. Dieser ist im wesentlichen pinkompatibel mit dem ATMEGA32 (die erweiterten IO-Möglichkeiten der CPU liegen halt brach), aber er bringt eine Menge mehr Speicher mit: 64KB Flash (Programmspeicher) und 4 KB RAM, also doppelt so viel wie der ATMEGA32. Nach der Veröffentlichung der Erweiterung (s.o.) ist Speicher so richtig knapp, da "lohnt" sich der Prozessor wirklich.
Der Prozessor benutzt tw. andere Registernamen, aber diese Änderungen sind im Code enthalten, es müssen lediglich im Projekt an zwei Stellen die Prozessoroption von "-mmega32" nach "-mmega644" gewechselt werden (Compiler und Linker). Natürlich benötigt man auch Compiler und Flashtools, die mit dem neuen Prozessor umgehen können.
Hinweis zu den Fuse-Bits für den ATMEGA64 im AVR Studio:

  • SPIEN=0 (das Kästchen ist nicht ausgewählt, aber auch ausgegraut)
  • BOOTSZ=10 (Boot flash section size=1024, ohne Bootloader kann man auch BOOTSZ=11, d.h. Größe 512 nehmen)
  • BODLEVEL=101 (Brown-Out detection VCC=2.7V). Man kann dieses Feature auch ganz abschalten (BODLEVEL=111).
  • CKSEL=1111 SUT=11 (Ext Crystal/Res. High Freq, Startup T 16K CK+64ms)
  • JTAGEN darf nicht ausgewählt sein! (also strenggenommen JTAGEN=1)
Interessant könnte noch das Behalten des EEPROM-Inhaltes beim Chiplöschen (wird beim Programmieren ja durchgeführt) interessant sein (EESAVE=0, wenn Haken gesetzt). Beim Bootloader ist BOOTRST=0 (wenn Haken gesetzt) nötig. Bilder Justierungen
©2017 Holger Thiele
generiert aus "ctbot5.template" vom 10 04 2007
Valid HTML 4.01!