Monday, April 18, 2016

Roomba Remote Tilt Controller

When you are in Bluetooth, accelerometers, and what do you get to combine iRobot Roomba SCI? A vacuum for couch potatoes.


Roomba Remote Tilt Controller
Roomba Remote Tilt Controller
SparkFun Electronics is a combination of just the toy room slope. We took a Bluetooth wireless accelerometer, a bit of firmware tweaked, and for Roomba RoboDynamics RooTooth combined with wireless connectivity. Now you literally at the bottom of your pile of Styrofoam bits can drive your Roomba (because you know I hate Styrofoam) from the comfort of your couch!
Remember, this is not like a joystick - there are no moving parts. You simply indicate how you want to move Roomba tilting the controller board. Does not quite make sense? Do not believe me? Here are some movies to whet your palette:

  • Rootkit Motion Control (2.4MB the AVI)
  • Rootkit vacuuming (4.7MB the AVI)
Just in case you were wondering BatchPCB film is located on the server, so that they do not SparkFun server load.

Oh, and here is the firmware in its primitive form. Definitely not polished, but it gets the job done:
  • RooTilt firmware v1.0 - C SM HEX
This is a very simple concept, the quality of some of them to get the shield radius throttle and ordered the translation, Roomba can understand, and then sending them over Bluetooth wireless connectivity. But some technical talk and ADCs, serial, com a breakdown, and get ready for some funky math.

This project WiTilt and Bloader / screamer boot loader we Pics 16F family has been designed for easy to use. We can quickly and easily WiTilt Board bootloader code. It took quite a bit of work, firmware, and it still is not perfect, but you can drive around the Roomba.

Here you can buy RooTilt with accompanying RooTooth.

WiTilt breakdown -
Triple-axis accelerometer reads the analog value of the stock WiTilt MMA7260Q. This is a triple-axis sensor Overkill? Completely. We need only two axes, but part of a stock WiTilt so I decided not to muck with it.

Stock photos WiTilt v2.3. The latest version 2.5 has an additional

MMA7260Q analog voltage output. This means, you tilt sensor (or shake it like crazy) as the sensor will output a voltage that varies between 0 and 3.3V. On WiTilt PIC16LF88 these voltages changed in the fall and a digital number (aka digital conversion, the ADC, AtoD, A / D analog). 0'g A '(zero gravity) to 3.3V (or 1.65V) to see exactly half. This was 1.65V converted to a digital number of our PIC.

On 16LF88 10-bit ADC. So if you 0V = 00.0000.0000 (10-bit binary) and 3.3V = 11.1111.1111 (1023 for 10-bit binary), then half of 1023 will be 1.65, or nearly 512. From now on, I will only use the decimal value.

0g = 1.65V = 512
1g = 1.65V + 0.8V = 2.45V = 760
-1g = 1.65V - 0.8V = 0.85V = 264
MMA7250Q 1.5g mode output 800 mv / g. These sensors are spec'd in the datasheet.
So if we WiTilt fully tilting forward, we should see the X-axis accelerometer 760 and Roomba say that we will proceed at maximum speed. The flip side -1g (H) on, we should see 264 and Roomba will tell you to go full speed in reverse.
But on the Y- axis turning dealing with the same number range. At 760, we should turn to the left in place. 264, turn to the right place. Something less extreme rates in turn dictates.

Roomba SCI -
iRobot rock. They were Hacking Roomba brains open platform. The way forward is to think iRobot!

Serial Communications Interface (SCI) document that tell you how to control the Roomba Roomba via the DIN connector. Sky iRobot found hacking page. SCI PDF here.

We Roomba 137 commands a throttle motor can send commands and followed the orders of a radius, Roomba, though we mandate it should be removed. The problem is that the Roomba is very smart. The number of small, small radius, Roomba will turn solid - we would have to say it's a very calculated radius of the turn. So we have a rising slope value (we are talking here about the Y- axis) and a decreasing radius value to be created. End of the world, but not clever.

Also, when turning, Roomba require some throttle. So not only do we have to calculate a radius, but we need to overlay on top of that some of the airway. Again, just takes time and firmware tweaking. And speaking of ...

Our PIC bootloader -
Make sure Bloader / screamer leaves have a look at. If the program is not the picture in front of you, it probably will not seem like a big deal. But if you're an avid our PIC programmer, a boot loader, you can invest in an afternoon and fiddle. It will save you the time of day.

Stock WiTilt Board for basic accelerometer data broadcasting already comes with some firmware. This will not work directly with the Roomba. So our staff board using RS232, I can connect and WiTilt PIC16LF88 reprogram on.

Roomba Remote Tilt Controller
Roomba Remote Tilt Controller
When you are passing our PIC Roomba (via Bluetooth) to see very handy - using board employees, I am able to debug serial port

PIC16LF88 Bluetooth module communicates with us, and in turn the RooTooth 57600 BPS 57600 BPS The Roomba (SCI characteristics required by) the contact. Firmware is:

Roomba Remote Tilt Controller
Roomba Remote Tilt Controller
Magic math calc throttle and calc turn was routine. The main routine (as shown above), a flat controller (the controller is set down, Roomba shutdown), sharp bend (turn in a particular case), and finally takes care of the general drive commands to check for the basics.

It's about. RooTkit a fun project and our first experience with a Roomba. I never thought that I buy the Roomba hype or marketing people say 'it works' believe, but now I do not. We Roomba day and every night because we got loose cables and chairs, and have a fairly large office, Roomba rarely makes it back to the charging station alive. But who cares? This is a surprisingly good little autonomous vacuum cleaning, it is very well designed, and the Roomba SCI port just like RooTkit can be augmented with Hack. Well done iRobot.

March 30, 2006 - NES (I'm happy to hear from readers!)

Here you can buy RooTilt with accompanying RooTooth.

No comments:

Post a Comment