Jimmy the mouse bot

I'm building a mouse bot based on the Parallax Propeller microcontroller.

Similar projects worth following
Jimmy now has a sensor board with three IR LEDs/receivers for object detection, two phototransistors for light detection, an expansion header and a piezo buzzer.

On the main board inside there is a Parallax Propeller microcontroller (40 pin DIP) the motor drivers for the two motors and a header for the Adafruit ultimate breakout GPS module.

In the expansion port on the sensors board is a SD card module with SD card.

I mounted the two gear motors and wheels. Mousey now can drive around!

The goal is to build a mouse bot which seeks out for light as the original Make Mousey did or drive to a location/waypoints via the GPS module.

This project was inspired by the Mousey from Make magazine.

I wanted to build a robot which fits inside a mouse case and is controlled by a Parallax Propeller microcontroller.

I listed some components I used, this list is not complete but the main parts are there.

The mouse was an Commodore Amiga mouse. I removed the board and drilled some holes in the upper half for all the wires. It was a good choice because it's rectangular inside so my main board fits right.

The schematics are only on paper now, I will draw them with Kicad and publish them later. They are based on some Parallax learning circuits for robotics and some other ideas I found on the web.

As can be seen on the photo it's a mess of wires which needs some carefull planning on the colors to use. I made a clip on the gps module mounting hole and strapped the wires to that. I have to put them together to close the mouse case.

Mousey is now programmed by a Tachyon forth control program. Mousey now drives around and should avoid running into obstacles via the three IR sensors.

Finally I mounted the gear motors and wheels so Mousey can now drive.


the schematic

Adobe Portable Document Format - 38.97 kB - 01/12/2018 at 12:30



The Tachyon Forth programm which gets uploaded over bluetooth by the mobile phone app.

fth - 4.68 kB - 01/11/2018 at 18:36


  • 1 × Parallax Propeller 40 pin DIP
  • 1 × EEPROM 32 KB stores the program for the Propeller chip
  • 1 × Adafruit ultimate GPS breakout module
  • 1 × SD card module from tdus (AFAIK not longer sold) ; other modules will work too but need some other wiring
  • 3 × IR receiver TSOP 4838 works on 3V

View all 10 components

  • Bluetooth module RN-42

    jay-t10/11/2015 at 14:17 0 comments

    I plugged a bluetooth module into my mouse bot. It is connected to the Propeller TX/RX serial pins.

    From my mobile phone app I can now control the robot. The Tachyon Forth gets the commands in direct mode. I only flashed Tachyon and the EXTENDS.FTH Forth extension into the EEPROM. The control Forth program will be transfered over bluetooth into the Propeller RAM on a click onto the "PROGRAM" button. Then the robot is ready to listen to commands.

    This way of programming is more flexible then flash into the EEPROM. I can test new programs very easy this way.

    The mobile phone app is written in Java with Android Studio. I just had to find a good bluetooth example. Then I changed things to my needs. The response message of the Tachyon Forth is shown below the control buttons. So I can see what is going on. Here is a picture of the GUI:

  • IR remote control prototype

    jay-t02/23/2015 at 21:15 0 comments

    I made a IR remote control prototype with my Propeller One board and a tiny bread board. The three push buttons are for "forward", "turn left" and "turn right". After the startup beep sequence the bot waits for the user choice:

    "Turn left" pressed starts the automatic drive mode and the bot searches light.

    "Turn right" pressed starts the user manual IR control mode. So both is possible after switching on the mouse bot. Now I want to solder this onto prototype perf board. The IR control also will get a "backwards" button. And some other buttons for "special" commands like "beeeping".

  • IR signal received

    jay-t02/06/2015 at 16:26 0 comments

    I made a successful IR signal transmit to the mouse bot. My protocol sends 4 bits now and the receiver program works.

    For a one it sends a long on and a short off pulse. For a zero it reverses it with a short on and a long off pulse. Behind the data bit follows a stop mark. The timing of the signal was important. The receiving program measures the on and off pulses. If the on pulse was longer as the off pulse then it's a one bit. The real time of the pulse length is not measured. Only the relative timing is important.

    I did take care to make the signal decoder loops stop counting if a threshold value is reached. So the decoding won't wait forever for a signal change if a "false" signal was received.

  • IR signal transmitting test

    jay-t02/02/2015 at 21:24 0 comments

    I connected a IR LED on a little breadboard with my Propeller One board. And did try some signal sending to my mouse bot. It's a 4 bit signal sent.

    The signal receiving on the mouse bot didn't work right. I use counter loops to "measure" the duration of the IR pulses. A one is send as a 2 ms on and a 1 ms off pulse. And a zero as a 1 ms on and a 1 ms off pulse.

    Now I'm working on the decoder to get the signal right. I have to take care of not make the decoder loop endless waiting for a signal change which never comes. So I have to add a counter break if some high value is reached.

    The goal is to build a remote control for the mouse bot. Or at least try that.

  • Schematics & firmware released

    jay-t01/14/2015 at 18:45 0 comments

    The schematics and firmware are released now on my blog. The schematics are in PDF and in KiCad project file format. The firmware includes all the needed Tachyon files and my Tachyon Forth files for Jimmy the mouse bot.

    The firmware lets mousey seek and drive for the brighter light side. This is funny to play with.

    Here is the blog entry: Jimmy the mouse bot

    Have some fun with this.

  • Load firmware from SD card

    jay-t01/11/2015 at 13:42 0 comments

    I'm using now a nice Tachyon feature, it's the ?AUTOLOAD command. It checks the SD card for an updated FIRMWARE.ROM file. If it finds one then the new firmware is loaded into the EEPROM and it reboots then.

    To use this I had to first program the EEPROM with the Tachyon Spin program. The next step ist to prepare the SD card with two files:

    FIRMWARE.ROM, with a size of 32 KB (or your EEPROM size), filled with SPACES (ASCII code 32).

    WORDS.DCT, with a size of 4 MB (should be enough), filled with SPACES too.

    The files must be with filled with SPACES because the EASYFILE functions can't create files. So we have to take care of this. The WORDS.DCT file will store Forth words later. So it can store program parts and make more free RAM possible.

    I put the SD card in my module on my Propeller board.

    Then I loaded EXTEND.FTH, SDCARD.FTH, EASYFILE.FTH and SDWORDS.FTH over serial connection with a terminal program.

    The next step was to run COMPACT, to move Forth words to the WORDS.DCT dictionary file. Then I loaded my firmware files.

    The trick is to put the command ?AUTOLOAD as the first command into the word which runs as the AUTOSTART word. Now I can simply create a new firmware ROM file on my Propeller board and copy it to the SD card. And don't have to open Jimmy all the time to get access to the EEPROM.

  • Follow the light

    jay-t01/10/2015 at 15:45 0 comments

    I wrote a Tachyon Forth program which lets Jimmy sense light and move to the brighter side. It reads out the light sensors value and rotates Jimmy to the brighter side.

    With the IR sensors Jimmy avoids obstacles while following light.

  • Gear motors mounted

    jay-t10/19/2014 at 12:29 0 comments

    Finally I mounted the two gear motors and wheels. Mousey now can drive.

    I wrote a little control program in Tachyon Forth, so Mousey uses it's IR sensors to avoid obstacles. This is just the first step to improve the program further.

  • Motor driver rebuild

    jay-t08/19/2014 at 09:00 0 comments

    Now I found out that the pins of a Propeller are to weak to switch an IRL 510. It seems that my Propeller died after switching the motors on. I now want to use a L298 dual H bridge motor driver from Solarbotics. It's sold as a kit. Then mousey II can drive forward and backward at different speeds.

  • New motor driver tested

    jay-t08/17/2014 at 20:31 1 comment

    I soldered a new motor driver with an IRL 510 mosfet. I did this because the transistors I used got too hot and burned out. The driver for the left motor works with the old motor. So I can now build the driver for the right motor in the same way. The mosfets don't fit inside the mouse case, so I made a new tiny board which will be placed on top of the SD card module. This isn't pretty but will work. Also the board has connector pins soldered in for more easy handling of the cables that are connected to it. This looks more professional as my direct wired boards before.

View all 13 project logs

Enjoy this project?



tachyonforth wrote 01/11/2018 at 05:46 point

Do you have a new blog address for the TF code etc.? The one on the Hackaday sight will not work.

  Are you sure? yes | no

Adam Fabio wrote 10/20/2014 at 16:50 point
Very cool robot, Jay! I've seen a few mouse bot's over the years and I always say "I have to build one" ... you're doing a great job of it. I like that you're using the propeller - those 8 cores are just perfect for a robot project.

  Are you sure? yes | no

jay-t wrote 10/20/2014 at 18:33 point
I like the interactive testing in Tachyon Forth. A program can be load via serial cable and tested in a terminal program. You don't have to program the EEPROM every time you change something. And yes the 8 cores are really cool. My program uses PWM for controlling the motor speed and Tachyon runs this in one core. The IR LED frequency is generated by a core. So actually there are three cores used with the main program. So there is still room for more complex things.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates