Actors & Directors came about really because in attending another skill-share a while back, I had volunteered to put on my own workshop broadly on the topic of selecting the right controller for your project. It also happened to neatly coincide with the Manifestations project which was great because A: it would boost participation numbers and B: I would actually have some new skills to share. Earlier in the year I had done a talk at Dorkbots, (whose members overlap a fair amount with the Bristol Hackspace), that covered some of the process and technical detail that went into Manifestations so this workshop could serve as a practical follow-up to that talk.
The workshop focused on how we controlled the Manifestations sculptures using a hybrid system of Raspberry Pis and Arduino-like boards. The sculptures used Raspberry Pi's media capabilities to layer multiple sound files whilst using a separate Arduino-like board to control multiple LEDs and ultrasound sensors – they communicated over an I2C bus.
For the workshop I wanted to highlight these different roles. We loaded a Raspberry Pi with a theatrical script for a specially written two minute production of 'A Bristol Story' with parts for ten 'actors'. Each participant took one of the parts and programmed an Arduino board to act out when they received the cue from a Raspberry Pi 'director'. At the end of the two hour workshop, the Arduinos were networked together on an I2C bus and we sat back to enjoy show.
Networking ten Arduino UNOs
I hadn't networked so many boards over I2C before and so there were some concerns that needed to be addressed before the workshop began. For example the Raspberry Pi and the Arduino UNO run I2C off different voltages and so networking them together could mean damaging the Raspberry Pi pins with a higher voltage.I tried using a voltage level shifter however this was not suited for I2C and gave heavily slewed signals. In the end it turns out that for the I2C pins only the Raspberry Pi has a strong pullup to the 3.3V rail compared to the relatively weak 10kOhm pullup on the UNO 5V I2C. This meant for individual boards at least, the signal was pulled down to 3.3V for direct I2C connection – which was nice.
There was also some doubt as to whether I2C could be delivered effectively over ten daisy chained bread-boards. The Arduinos were laid out in a 'worst-case' daisy chain where the tenth board was ten removed from the Raspberry Pi – typically you would expect a more hub-like networking where the outer boards would be only a few removed from the Raspberry Pi. The signal was fine, however we did find that the voltage drop from the bench power supply in this configuration was significant enough that the end boards would brownout after a few minutes. This was solved by powering over the USB individually.
Trying for full participation
I wanted the workshop to be fun for people who had not programmed Arduino much before. For this reason some of the 'actors' had relatively simple programming parts but with more involved hands-on stuff. For example the actor controlling the curtain only had one cue which set a pin high to activate the curtain motor. Much of the work in this role was making sure that the mechanism actually worked such as setting up the pulley system.
I made some Arduino controlled stage curtains. pic.twitter.com/13hJHDSOc0— Joe Leech (@mrjoe) May 5, 2015
I had considered as well people who did not want to program or who maybe did not have a role could also improve the set, create better props etc. I did bring spare Meccano and stuff but people were generally too busy coding. As you can see above, the guy who chose the curtain role was one of the few who actually got time to take some video and Tweet.
For next time
Feedback from the workshop was positive with people really liking the building towards a common goal. Ninety minutes programming time was probably not enough though and much of the first hour or so there was intense programming going on and not much chatting. Rather than a twenty minute talk on different controllers to begin with, I think a presentation which introduces the workshop more would be more appropriate.
Since I wanted to demonstrate the capabilities of each of the controllers and what they are suited for, it was suggested that for future workshops it would be great to synchronise some sounds to the script, for example some thunderclaps for the storm scene or some music for the final party.
Although me and Jon (who was helping out) we were lucky that many of the people in this workshop were already somewhat proficient with Arduino programming, future workshops should probably have more helpers who know how to code if there are to be absolute beginners.
The premiere of 'A Bristol Story'
The Wurzels couldn't make it unfortunately but the end result was a lot of fun.
Thanks to everyone at the workshop, Jon for helping out and Hackspace for helping me tick 'put on a theatre production' off the bucket-list.
Thanks to Oomlout for providing some free stuff.