Archive for the ‘Cleaner Robot’ tag
Today I managed to kill (what could definitely be.. sure…) the last bugs in the design of the Tchibo Cleaner Robot mod-chip. In fact, it is not only a chip.. it is a tiny PCB that slots in the place of the original ATmega8 controller. On this PCB an ATmega32, 16MHz crystal and Max3232 are placed, enabling serial control of all the robot’s functions. In the meantime we have bought 10 of these vacuum cleaners, and the first batch of 10 mod-chip boards has been delivered. Task two will be getting some additional brains on the robot. The quick-and-dirty is the now-very-mobile Asus eee-pc…
So, what does it do? It provides you with simple command line (using a terminal emulator, normal 9600 bps serial port) access to the robot. Typing ‘h’ will display a list of options. With simple commands like ‘b 100′ you can turn on the brush at speed 100 (of 255). Other commands include getting status from the sensors, encoders etc. Beeping the speaker and turning on LED’s and motors.
The Arduino boards mainly use Atmega8 or ATmega168 controllers. For most of the projects and boards I have been working with in the last years, I have been using mega32 (more memory, more IO). In order to make use of the excellent Arduino resources, making my boards Arduino Compatible seems a logical choice. First thing to do was to rewrite the bootloader. In the following ZIP file you’ll find the modified source (untidied, but working) for an Atmega32 runnning at 16MHz. Also the modified ‘boards.txt’ file that resides in your Arduino hardware directory is in the ZIP. bootloader sources.
The bootloader can be compiled using the makefile in the zip archive, simply typing make in a console (from the correct directory, with correct path settings. I have WINavr as main avr compiler on my system)
In order to make code examples work, a re-mapping of input- and output pins is necessary. IN the discussion on the Arduino forum files where posted with a suggested re-mapping. (unfortunately they didn’t rewrite the bootloader for ATmega32, so I had to do that) I have tested uploading a serial-port example and a simple blinky, using the pin-mapping from AndreS from robotcraft.ca. Their arduino mega32 mapping sources have been posted in above forum. Overwriting the files with same names in hardware/cores/arduino directory does the trick.
I also recompiled bootloaders for other boards with ATmega8 running at 8MHz, see a page on http://www.edwindertien.nl/interactivos/index.html
Unfortunately the bootloader is rather large (2k). For an educational platform (MasterClass robot) we have been using a smaller bootloader (512K) which is AVR911 appnote compatible. (also using AVRdude to do the programming). More on this (mega32) platform can be found on http://www.ce.utwente.nl/e13 in the folder ‘education’.
A newer discussion on avrBootloaders, including the AVRdude commands used are on the wiki.
In the netherlands a lot of webshops have the Tchibo Vacuum robot on on sale at ridiculous discount prices. <30EUR for a robot with two motorized wheels, encoders, bumpers, battery, obstacle sensors, and (best of all) very straightforward electronics!
On this forum the message was posted that the Tchibo robot is a Roomba – Original clone, so perhaps this article is of use of Roomba Original owners too. Other great resource is ofcourse the roomba hacking forum
The electronics of the Tchibo consist of an ATmega8 microcontroller running at 8 MHz, with two 74HC245 bus drivers for inputs and an 74HC373 for outputs. Everything runs on 5V. Motors (two for driving, and 3(!) for cleaning) are controlled by respectively an L298 dual bridge driver and a power MOSFET.
At first I was hoping to hack into the original Atmel microcontroller, and use its serial port pins to make a ‘tap’ into the robot. Unfortunately PC0 and PC1 of the controller have been used to control the latch-inputs of the bus drivers. The approach I settled for was to take a different microcontroller (ATmega32) with more IO-pins and use that to take the place of the original ATmega8.
I really like the Arduino standard, so I took this opportunity to make one of my mega32 boards Arduino compatible, in order to have an Arduino Vacuum Robot. This mostly consisted of rewriting the exisiting STK500-compatible bootloader sources in order to work on the mega32. In the next post I will discuss the software and sources.