Wednesday, October 28, 2009

The promised video

Tuesday, October 27, 2009

My first vibrobot


This is a small vibrobot (based on the awesome bristlebot over at evil mad scientist) that I started work on a couple of months ago but never finished. My initial aim was to make a simple vibrobot that was self-sufficient (BEAM-style) and photo-tropic. This required some sort of directional-control for the bot, a solar engine and light sensors.

I settled on a solar engine from Solarbotics, two Colgate "micro sonic power" toothbrushes and two LDRs that I had laying around. After wiring up the solar engine I wired up the vibrating motor capsules (from the toothbrushes) , the LDRs and a pair of IN4004 diodes as shown below.


The directional-control of the vibrobot is controlled by the two LDRs connected across their respective motors. When the LDR is exposed to sunlight it conducts more current than when it is in the dark. This increased conduction causes the voltage across the motor to drop, slowing down the motor on that side and turning the robot towards the light. The diodes allow the two motor/LDR circuits to act independently.

Now, the important part, does it work? Yes, fantastically well, in fact! Its initial movement is very vigorous and erratic but as the solar engine discharges the bot clearly starts to steer towards the sun. It orientates itself so well at the end of its movement that I will be shortly tilting the solar panel towards the front to speed up the charging time.

Finally, the design of the circuit has resulted in a few interesting benefits that I hadn't realised before which I thought I would list:
  • The initial vigorous and erratic behaviour gets the bot out of tight situations, whilst the phototropic behaviour is more evident at the end of the solar-engine's discharge. This gives the bot an "obstacle-avoiding" behaviour that I hadn't planned for.
  • The brighter the light, the slower the bot moves and the less distance it covers (due to the LDRs stealing some of the solar-engine's discharge). This has the unexpected benefit of keeping the robot relatively stationary within an area of bright light, whilst making it more active when it is in the dark.
  • Finally, as mentioned above, the bot aims its front at the sun almost faultlessly. This will allow me to tilt the solar panel toward the front of the bot (and therefore the sun), increasing its efficiency and reducing the charge time.
I will upload a video in my next post, I am waiting on both consistent sunshine and a full camera battery...

Monday, October 19, 2009

Pong game blue glowing coffee table prototype procrastination outlet


Well, this proves I still exist :)

After much effort I realised that I haven't been able to keep to any sort of regular uploading schedule so, to limit disappointment I will simply promise to post any cool projects that I work on when they happen - I recommend following my RSS feed (the big orange image to the right) to make this easier.

In three weeks I will have completed the last exam keeping me as an undergraduate! Obviously, exams study requires dedicated procrastination which has lead to the pretty picture above.

I purchased a Velleman pong kit from ThinkGeek a week ago and set about testing out an idea - to make a coffee table with pong embedded (okay, I admit, not the most original idea...).

After constructing the kit I wired it up to the small in-car TV that I had laying around, added a piezoelectric speaker and a 4 gratuitously blue LEDs.

This works surprisingly well so the next step is to find a coffee table that I can wedge it into...


In daylight

The constructed pong kit, pre-modification

Detail of the modifications.

Sunday, June 28, 2009

Taking photos in the daylight helps...

Here is a better photograph of the calculator (I also gave it bit of a clean-up).

Click on it for a high-quality version.

Saturday, June 27, 2009

The real google calculator

I have just completed the first major stage in a funky new project, building a real "google calculator."

Well, sort of...

Essentially, you are looking at the combination of a clunky old NS600 reverse polish notation calculator with a USB->RS232 adapter and a small chunk of Python brought together to create a cloud information display (think of it like a chumby, but far more ghetto...)

Using the python script, the calculator displays how many unread emails I have in my gmail account, and how many unread items are in my google reader list. The decimal point display (actually just a LED) splits the two, so the counter will show no more that 99 unread google reader items and no more than 9999 unread emails (this may seem the wrong way around, but I'll explain this later on). Using this logic, the (crummy, low-light) image above shows that I have 12 unread emails and 47 unread google reader items.

The logic of the python script is pretty simple:
  1. Get the current unread counts for gmail and google reader
  2. Make sure the unread counts are less than there maximums
  3. Multiply the email count by 100 and add it to the google reader count
  4. Press the +/- keys (using relays) until the number displayed is correct
The script keeps a record of the current calculator state so it can work out how many times it has to "press" '+' or '-' and it assumes the initial start point is zero.

The modifications

The mechanicals of the modification are also really simple. A pair of 5v DIP relays are directly triggered from the Request To Send (RTS) and Data Terminal Ready (DTR) pins. These two pins are directly controllable through the python pyserial library, using the setDTR() and setRTS() methods. The calculator was originally powered off a 9v battery, but the internal ic's work perfectly well off the 5v from the usb port.

The relay's are switched on for 0.1 seconds, and the delay between sequential "on's" is also 0.1 seconds - this was the fastest reliable speed. This means that the calculator can increment by 5 every second. This time is important because when a new email is received, it has to "press" the '+' key 100 times, which takes 20 seconds. That is why the emails are on the left of the "decimal point", and the unread google reader count is on the right, as I receive google reader items more often than I receive new emails.

Well, that's it. Of course I should attach the code to this post but, to be honest, it is a bit of a shambles. A reliable, working shambles, but not something that should be inflicted on other people. I will re-factor it properly, give the calculator a clean up, add some more technical detail, take some better photos and make a nice video for my next post.

If you are reading this and want more information before my next post, please don't hesitate to leave a comment.

Sunday, April 26, 2009

Testing out the sonar sensor


Just a short video of the Maxbotix EZ0 sonar sensor hooked up to the helicopter. The code running on the Picaxe simply reduces the pulse-width to the servo by 20% if something is closer than 30cm. This is too close for actual use, but demonstrates the concept.

I was going to have a lot more to show from today, but 20 seconds after I finished filming this, the batteries in my rc controller went flat, the helicopter took on a mind of it's own, flipped over and proceeded to rip off the top rotor...

Friday, April 24, 2009

Installing the sonar range sensor

Here is a photo (click to enlarge) from the install of the sonar range sensor (the Maxbotix EZ0) and, as you can see, the sensor fits beautifully!


I moved the RC Receiver and Gyro electronics back to the position they were in when I bought the helicopter, and it has massively improved the flight stability, so I will stick with the layout that the designer's chose...

I can not wait to get cracking with the code now!

Monday, April 20, 2009

Shopping

I just bought the sonar range-finder for my Heli-bot from Maxbotix.

I purchased the most sensitive of their sensors, the EZ0, for the front of my heli-bot, to test out the "autopilot" PICAXE control. This looks to be an awesome sensor, with a 1-inch resolution out to 6.5 meters! It offers either continuous or polled mode, and the sensor output is RS232, 0-Vcc or Pulse-width, all in a package smaller than a cubic inch. Full datasheet is available here. (pdf)

By the time the exchange rate and postage was taken into account, it came to about $90 AUD.

I will be giving this sensor a thorough workout when it is attached to the robot, probably less than 20mm from the front rotor's drive motor, so we can see how it behaves in an electrically and acoustically noisy environment.

Wednesday, April 15, 2009

Swarming bots

This is a very interesting video that I just found on YouTube.



(if it doesn't seem to play properly, move the slider forward a bit)

The title says it all, "Swarm-bots pulling a child."

I tracked the video down to this site, if you want more information on these bots.

Wednesday, April 8, 2009

A different project

Whilst I sort out some annoying rs232 problems with my Arduino, I have been working on a couple of little projects, one of which I can show a bit of today.

This starts with a little history. I have always been interested in flying contraptions, and a while ago, on an impulse, I purchased a LAMA V4 RC Helicopter (below).



The LAMA is a basic, easy to fly, Coaxial helicopter. Obviously, as soon as I had learnt to fly it, I started modifying it. Since then, it has been converted into a small, light-weight platform for some future robotics experiment.

...A year passes...

Now, to the present, and I will show you a video. This is the LAMA in it's current state, being flown relatively badly.





The important thing about this video is the details, specifically that I have inserted a PICAXE-08M chip in between the output of the RC receiver and the back-and-forward tilt servo on the helicopter. The point of this is to test the accuracy of the PICAXE's pulsin and pulsout commands. The program on the PICAXE simply listens for a pulse from the RC receiver's servo connector then repeats that pulse, sending it to the servo. The PICAXE is installed as shown in the following two images (click to enlarge).




The point of all this is to verify that the PICAXE is capable of accurately and quickly repeating Servo control signals. This has been verified, as the helicopter flew as well as it did before the modification, with there being absolutely no difference in the fidelity or response of the servos. Based on this, I intend to connect an accelerometer (possibly this one at Maker Shed) to this PICAXE, allowing the helicopter to maintain a steady forward/back position in space. This will be expanded to left/right as well after the accelerometer's integration is finished.

The most awesome part of this experiment is the simplicity. Anyone, with a $5 IC, can interface and interfere with the signals to an RC servo, and do so in a high-accuracy manner. Adding to this simplicity is the fact that (in this case, at least) the PICAXE is powered from the power supply to the servos, which was 5V.

The PICAXE-08M code for this example is as follows:

main:
'read a pulse in
pulsin 4,1,w0

'pulse it out
pulsout 0,w0

'loop
goto main

The circuit is simple too (click to enlarge):



I just have to name whatever it will become now. How about PICopter.