Hour of Code

I spent Saturday and Sunday at Singapore’s Hour of Code demonstrating the BeerBot to kiddiwinks, parents and passers by. It was at Singapore Science Centre and was organised by the same team that runs the Singapore Mini Maker Faire. It was a lot of fun and I got some great ideas from some of my fellow presenters.

Seeing what the other demonstrators brought along was much more interesting than BeerBot’s performance. John Lim brought a brilliantly simple robot made by attaching an arduino’s PWM connection to the arial of a cheap remote control car (~$10). He’s found that a lot of these cars use the same chips, and that the data sheets are available online. He found the PWM values for forward, left, right and back and added an ultrasonic sensor on the front with a servo to allow it to “look” in different directions. The really cool thing was that he was able to assemble a new one of these robots in about 10 minutes in front of a crowd of kids. They were quite gobsmacked.

The ultrasonic sensor on the front pivots right and left using a servo motor
The ultrasonic sensor on the front pivots right and left using a servo motor
The arduino is connected to the antenna of the car and controls it with PWM
The arduino is connected to the antenna of the car and controls it with PWM


The robot working 10 minutes after the toy truck was taken out of the box

Henry Wong assembled a network demonstration made up of 8 Raspberry Pis with camera modules. Kids could experiment with a script that caused all the cameras to take pictures simultaneously and then downloaded the pictures to a local folder. I admired the 3D printed camera holders for the Pis – I need to make something similar to replace the current BeerBot camera fitting (blu-tack).

8 Raspberry Pis networked together to take simultaneous pictures and download them to a laptop
8 Raspberry Pis networked together to take simultaneous pictures and download them to a laptop

Roland Turner showed his Yet Another Haze Indicator project. Haze caused by forest clearing in Sumatra is an annual problem in Singapore. Roland runs a network of sensors run by volunteers which measure the haze levels across the island. He designed the sensor to use a heating resistor which sets up a convection current. This current moves haze particles through an infra red beam. By counting the number of particles per second he can work out the haze levels at that location. You can see the results real time on his website.

Melvin Zhang developed a new teaching activity during the course of the weekend. He allowed kids to write a simple algorithm for playing Tic Tac Toe and then test it against other algorithms. He has put the code up on github here. He also showed a fun activity that teaches error detection using go stones. Kids created a random matrix of black and white stones. Melvin then added parity stones to the edge of the grid, turned his back and asked the kids to replace one stone with the opposite colour. He could then turn around and identify the stone they changed. The only drawback seemed to be that kids quickly decided he had actual magic powers.

The computer is set up to test volunteers' algorithms against all other possible grid based approaches and tell them how many games they would win, lose and draw.
The computer is set up to test volunteers’ algorithms against all other possible grid based approaches and tell them how many games they would win, lose and draw.

I’m particularly grateful to Melvin for suggesting CherryPy as a way of allowing BeerBot to be controlled directly from a webpage rather than using the SSH connection. It will be a lot more intuitive for volunteers and might also be a bit more stable.

BeerBot itself was set up both days. I haven’t done much with the BeerBot since Mini Maker Faire, so the most arduous bit of preparation was actually remembering the name of the alias I created to run mjpeg-streamer (hopefully next time I will remember that aliases on the Raspberry Pi are stored in the hidden file .bashrc_aliases). I made some minor modifications to the lego structure so that it requires fewer rubber bands to hold it together and changed the code that controls the robot so that it would deal with kids’ aggressive key hammering without crashing quite so often. Since this event was targeted solely at kids I also replaced the can of Tiger beer I use for demonstration purposes with a can of coke.

Two brothers showcasing cooperation to drive the BeerBot to the coke can
Two brothers showcasing cooperation to drive the BeerBot to the coke can

View of the screen showing mjpeg-streamer and SSH windows
View of the screen showing mjpeg-streamer and SSH windows

The BeerBot behaved itself relatively well, but seems to go through phases where it becomes unresponsive (usually where there was a small child very keen to drive it). In one of its unresponsive fits I plugged it into ethernet and it then worked fine, so I have a suspicion it is something to do with the wifi connection. There are a lot of tesla coils at the science centre so I could blame interference from them, but I think it is much more likely that it is something to do with my router and wifi adaptor. I at least ruled out overheating as a possibility – when it was misbehaving I was able to measure the temperature and it was well under 50 degrees Celsius.

So all in all a great couple of days! My excitement about setting up CherryPy can be represented by the following video of BeerBot being commanded to spin around manically by one of the kids who successfully brought the can to the finish line.

Leave a Reply

Your email address will not be published. Required fields are marked *