Swarm Robot competition entry and workshop

SwarmRobot with new IR shield PCB
SwarmRobot with new IR shield PCB

Just put in a huge effort to enter the Xinchejian SwarmRobot into the AFRON competition.

Also used the assembly instructions created as part of the entry to help run a  workshop with other Xinchejian members making SwarmRobots. The workshop was pretty successful, although our preparation was lacking a bit with an untested PCB that just arrived and was assembled for the first time during the workshop and a different power switch that did match the board!

Definitely time for a more relaxed pace – exploring the Lophilo and a few other projects!

Hello Lophilo

No “Hello World”, no blinking LEDs yet, but the Lophilo LEDs are controllable through the example shell scripts!

Lophilo signed board #2 All LEDs on.
Lophilo signed board #2 All LEDs on.
Lophilo signed board #2 1 LED via shell script and button push.
Lophilo signed board #2 1 LED via shell script and button push.








First impressions

  • more in the box than I expected – already almost complete, extremely professional!
  • WOW – signed board #2!
  • it is a very complex PCB
  • it really is a computer (ahem you have to push the on button, not just plug it in “:oops:”)
  • I can’t wait to get stuck into the FPGA – have several projects in mind
  • I can’t wait to get into the cloud9 environment
  • I can’t wait do heaps more

The new Lophilo board has also been run through most of the test procedure successfully. The tests that have not yet been completed are due to my poor Linux skills!

The training that is included with this version of the Lophilo will help fix that and get me up to speed with the FPGA.

LittleWire programming Xinchejian SwarmRobot AtTiny

LittleWire programming Xinchejian SwarmRobot AtTiny via Arduino GUI
LittleWire programming Xinchejian SwarmRobot AtTiny via Arduino GUI

The LittleWire was mainly purchased to support Ihsan as he has been very open, providing a lot of really interesting information about his build process and design and it has also been interesting seeing the DangerousPrototypes community helping that process and even building many variations.

But now it looks like it will become my main and highly used programmer and in high demand for the Swarm Robot project, so I might have trouble finding time to play with all the other modes it has!

Thanks Ihsan!

USB device detected, but no USB port assigned – Ubuntu

This issue, where a USB device is detected, but no USB port assigned has taken me a lot of effort to solve on several occasions, because I forgot the fix each time, so hopefully this post might help you!

In short if you connect a ‘new’ USB device and it does not ‘work’, but dmesg reports something like below and the device number increments on every dis/reconnect:
usb 4-2: new full speed USB device number 11 using uhci_hcd

The issue is that no USB port has been assigned, as seen below in this successful connection:
usb 4-2: new full speed USB device number 12 using uhci_hcd
cdc_acm 4-2:1.0: ttyACM0: USB ACM device

The following fix has worked for me on three, maybe four, systems:
sudo modprobe cdc_acm

The systems it definitely fixed were the Dangerous Prototypes OLS, a USnooBie and just this week, an Arduino UNO v2.0. Plus it probably fixed a Dangerous Prototypes BusBlaster, but my notes don’t document and it almost certainly would have fixed the very long saga I had with the Dangerous Prototypes IRToy, but it went a different, painful process, that I won’t be able to reproduce, but the root issue seemed the same.

While three of these systems are all from Dangerous Prototypes, ALL five have a different hardware USB implementation! The Arduino and Dangerous Prototypes devices are also all very popular.

Two references that helped were 1 and 2. The second, Gentoo link, talks about modprobe cdc_acm and interestingly modprobe ftdi_sio, which I have not used, but am trying to burn into my brain for the next issue I have. I must have used other sites – but apologies to them as I forgot to record the sources 🙁

Possibly relevant background information:

I only use the one Ubuntu laptop, so have not run into this on any other systems! The build started with 10.10 and took all upgrades up to 11.10. These devices all worked on Windows XP Pro, with only a couple of minor issues.

I have successfully used lots of other devices on the same Ubuntu laptop, including an Arduino Deumilanove, a DP BusPirate, a DP USB LCD Backpack, and three different types of USB to TTL (FTDI) convertors.

Highly relevant background information = I break stuff – lots of stuff, just by touch and sometimes it seems just by looking.

Tools, parts and bedding in.

To help progress some projects and also to explore CPLD and FPGAs some CPLD breakout boards, a Bus Blaster and Open Logic Sniffer have been purchased from DangerousProtoypes (via SeeedStudio). To get started on the project ‘list’ some ATtiny85s, ATtiny2313As (pico power), ATMEGA328s and a Boarduino kit with have been purchased via the good folks at Xinchejian.

Unfortunately the Part Tester board, an ATXMEGA32A4U and some AtTiny’s  sent via two generous contributors in the DangerousProtoypes forums have taken the long way and not arrived after many months.

As often happens it is taking ‘a while’ to get all the new toys bedded in! Here are just some of the things that consumed lots of time:

  • Reinstalling a 2003 vintage Windows XP computer that did not like all the new USB devices and fatally blue screened.
  • On the main Linux development laptop, it has taken weeks learn how to get past the coms port not being installed for the Logic Analyser (a simple modeprobe did the trick!).
  • Some very puzzling issues trying to load firmware into the new Atmega 328s, where the new chips can be programmed via ISP in an Arduino but not on a bread board ISP circuit, yet older 328 chips already on hand do work in the same breadboard circuit!
  • Along the way, a misread resistor value on the reset line and incorrect jumper cabling on the coms port slowed things down as well!

Lots of times recently I pulled out my BusPirate to do things and I keep thinking just how good it is! Not only is it an excellent protocol analyser, but it has so many EXTRA uses, including ISP programmer, general purpose break out, logic analyser, serial pass through/FTDI, LCD driver, and even as a PC controlled power supply (on/off and select 3.3 or 5V – but hey when you are working away from your own desk – that is fantastic to have!)

The Open Logic Sniffer is now already proving it’s value by helping with debugging the Boarduino kit build and code on my current “pet” project.

MC HCK – Five dollar microcontroller!

The MC HCK five dollar micro controller project is now getting more publicly active, with a forum thread started and some mailing list traffic.

Why am I so keen on this board? Well it is small,  cheap, can be used on breadboard, is more powerful than many common systems, has a good number of I/O pins and a reasonable computer build chain.

Now before the comments are flooded with “so what – plenty like that around” – take note of the target price of $5, yes FIVE DOLLARS.  As the forum post says:

“you all know the drill — $20 makes you stingy (“frugal”)…… Low price fosters creativity”

When this hits the streets it will be affordable to have several projects on the go at once and even keep in use permanently! You can more risk instead of being overprotective of your precious chips.

All that is fantastic, but the implications actually go a LOT further. There are huge numbers of people who have little or no access to this type of technology, but the MC HCK could change that!

Imagine 10s or 100s of thousands of these devices, maybe used with the slowly spreading OLPC (Australia just announced OLPC funding).

This site exists to inspire the individuals in the varied communities and help remove restrictions to accessing this technology as described in the UsableDevices About page:

“unrestricted access is to increase access to these devices/projects for those in developing countries or other socially and financially restricted groups by promoting really cheap and accessible, but useful projects. ie people can source parts easily worldwide, or scavenge local parts or substitutes, as well as access to the tools and techniques to build the projects”

So it is really exciting to support ideas like the MC HCK !

More inspirations (than you can poke a stick at)!

There are truly so many really interesting projects around, it is getting hard to stop reading, and hard to stop buying and it is becoming a challenge to make time to progress my own projects!

There is a LOT of really interesting activity in the ‘large power’ board space – ie run an operating system and have access to the IO. There has been a lot of work put into the openWRT project and supporting a wide range of off the shelf hardware. Other groups are creating new hardware and development environments, some examples are:
Just announced this week was the Lophilo, it looks to beat the Olinuxino board to market. There is an interesting discussion about the the Olinuxino and rPi (now delivering the boards!) in the DangerousPrototypes forums and of course there is also the DangerousPrototypes Web Platform. Microsoft have already released their open source Gadgeteer and in recent days even Intel announced they are about to release a system in this space.

Other things that caught my attention include:-


HY-SRF05 Ultrasonic Sensor for autonomous robot

Continuing the autonomous robot sensor theme with some updated sample code for the HY-SRF05 Ultrasonic Sensor that significantly reduces the blocking (delays in program execution where NO code is run!).

Once again, the code is placed on the Wiki as part of the move to help create re-usable community content.

Honeywell HMC5883L compass sensor for autonomous robot

One big part of my ‘relaxation’ project – ‘building’ an autonomous maze solving car is the sensors.

Installation of the four ultrasonic sensor and experimental avoidance code has shown (again) just how bad I am at visualising in 2 & 3D space. My simple avoidance logic attempts always end up avoiding big objects, but then get stuck in a tight loop “go forward” – “avoid = go back” – “go forward”.

So I thought it was time to add the Honeywell HMC5883L compass sensor (part of Christmas present to self). The sample code ran up easily (once converted all the wire-I2C commands to Arduino v1.0), so I ported the code into my code. Weeks later after umpteen different project sidetracks I noticed that the output from the compass was not linear and very different if you rotated clockwise or anticlockwise!

After lots of web searching and help from others with this sensor, I have now started to get more sensible output. While this work is not fully complete, it is a big improvement over the standard sample code that is commonly found, so I thought I better start publishing before I loose momentum on this.

Details are on the wiki, and I also updated the SeeedStudio site sample code on their wiki. The main point to note is that it takes some effort to calibrate, but hopefully the sample code provided helps simplify the tasks.