JSOxford NodeBots, August 2014Published on 8/27/2014 6 min read
Most importantly, we had a flag (opens new window):
Alan Shaw (opens new window) and Oli Evans (opens new window) very kindly came up for the day from London to impart some of their NodeBots wizardry on us and show off their impressive suite of hardware. It was great to start the day with the message that 'hardware is really hard' – as I repeatedly drove our JS remote control car into the wall I was definitely feeling that!
We purchased 10 oomlout starter kits (opens new window) and had a few servos, Arduino Uno boards and a load of wires kicking around, so there was plenty of kit and the day started with most people running through the introductory blinking LED lessons. Some chose to start with Arduino and some went straight to using the Johnny Five library, a JS library for controlling the Arduino inputs/outputs over the USB cable.
Once the initial single-LED board was out the way things got a bit more interesting, and the rest of the day saw some cool little projects at varying levels of completeness (sorry if I forgot yours):
- A parking sensor which evolved into an octocat alert (opens new window) with lights, beeping an waving octocats.
- A RESTful web-based temperature sensor.
- A temperature-sensing board with LCD display.
- A device built with Scratch for Arduino.
- 2-bit Guitar Hero. I still have that Sweet Child O' Mine riff replaying in my head.
- An RC car with automatic braking to avoid obstacles (or not, it turned out)
We deliberately didn't set a particular objective so everyone could plough on at their own pace and dive into whatever grabbed their interest. This worked really well, and had the added advantage that it was really easy to organise!
After Oli and Alan had got us all excited about the possibilities they set about linking a Logitech gaming joypad with the CrazyFlie, a cool but twitchy little quadcopter with a death-wish. These little devices are quite exciting (there's nothing boring about flying) but can pick up a lot of speed and cause a lot of damage to themselves with a bit of errant programming.
Needless to say it didn't take long before the inevitable:
Fortunately there was plenty of other kit to get overly enthusiastic about.
# Pinoccio and the Dension WiRC
Our first thought was to add more sensors to the existing car but that didn't seem possible so we settled on the idea of using a Pinoccio board as a sensor array and then have a single JS script running on the laptop which would use these sensor readings to action the car. The Pinoccio board seemed perfect for this because the 'lead scout' board has a WiFi backpack. Now that I've had a couple of days to look into Pinoccio in a bit more detail it's clear that all the limitations I'm about to talk about were because of our lack of understanding. Hopefully we'll run another NodeBots day and get a chance to play with it again.
Pinoccio boards (opens new window) are a great idea: mesh-networked Arduino-based devices which connect to the Internet by default, combined with a web-based IDE. The result is a system you can get up and running with in minutes. Needless to say, having feedback on the IR rangefinder's value in the IDE without typing a single line of code got us quite excited.
I'd thoroughly recommend having a closer look at the Pinoccio boards. I am particular taken by the way it has battery (including charging), wireless networking, and more importantly a way to access the device from a computer without needing to plug in. The boards also have a temperature sensor which is a nice addition for the home automation projects I'm thinking about.
Unfortunately our enthusiasm was stifled when we tried to use the node client library (opens new window). While it's suitable for non-realtime applications, the library connects to hq.pinocc.io rather than to the device, which leads to >1s latency for reads. The pinoccio-server (opens new window) package allows you to run your own HQ, and I'd guess that while flashing the devices with the updated server address you'd also be able to update the refresh rate (obviously at the expense of battery life).
Using ScoutScript commands (opens new window) it's possible to write functions and save them on the device, which is great if a scout on the mesh needs to carry out an action when another scout on the network detects an input. We didn't find this section of the docs until after the event. Sad face.
So at the moment I'm not sure how you'd go about streaming the live status of an input at a greater resolution than once per second, but I know it's possible because of this video (opens new window).
It's a shame we only had the afternoon to play around with these devices, and I'll be picking up a pair soon to play with over winter.
Thanks to everyone who's helped out with the JSOxford Summer or Hacks and made it possible, and a huge thanks to Ben (opens new window) for coming up with the idea in the first place. We also owe Alan Shaw (opens new window) and Oli Evans (opens new window) at least one or two beers for bringing their skills and enthusiasm and giving up a day to escape the big smoke.
I've also got to say a big 'thank you' to the great sponsors who've made it possible to make the events almost free:
- B2M Solutions (opens new window)
- GitHub (opens new window)
- Haybrook IT Resourcing (opens new window)
- Treehouse (opens new window)
- White October (opens new window)
- What you'd like to talk about or listen to at upcoming meetups.
- Which events you'd like to see come to Oxford, and which events you'd love to see happen again.
I'm not the only one to write up the event: