The Black Rock City Wifi Summit 2015 took place yesterday. It was an interesting discussion with a collection of people from inside the Burning Man organization and artists / community who want to provide wifi to their art installation and camps. It was held at the Internet Archive which is a very interesting idea / place.
There are some bits of information that I learned or re-learned while at the summit.
BRC internet basically uses all the available bandwidth coming into Gerlach, around 40Mb/s, to support all the services for a temporary city of 70,000 people.
In 2014, the bandwidth was maxed out on Thursday before the event started.
Internet access is becoming / has become critical for the support of Burning Man. Without it, the event might not be able to take place.
Ubiquiti AirMax protocol deals well with the hidden node problem.
It’s important that the uplink antenna be stable and pointed at the center camp. Movement or misalignment of the antenna causes problems for everyone in that sector by reducing the available bandwidth.
The uplink antenna needs line of sight to the center camp tower.
If you need to use tape to seal anything, use aluminized hvac tape instead of duct tape. The glue on duct tape deteriorates rapidly in the heat and dust of the playa. The aluminized tape will last much longer.
During the weeks before and the event, download is maxed out. The week after, it’s the upload bandwidth that’s maxed out.
At 4:00 and A there’s usually a phone booth that uses VOIP to allow calls to the outside world. Calls are limited to 3 minutes. Because of bandwidth usage, the other side will be able to hear you while you might not be able to hear them. That makes for interesting conversations when you’re stoned.
Don’t use 5Ghz band for access points or other projects. It’s used for the uplinks and putting up local access points (or anything else) in the 5Ghz band will just interfere with the uplinks.
There’s lots of local, on playa bandwidth available. If there’s lots of data that you
Mount the local access points 6 or 7 feet in the air, no higher. This will help reduce interference and the hidden node problem on the local wifi connections.
If there’s any data you want to make available, consider setting up a server on the playa. If you do, let the folks on the BRC wifi mailing lists know about it. They may be able to help let people know about the server by including it on the captive portal page, setting up a dedicated IP address and / or a DNS entry.
Protect the access point and uplink power sources from water and dust. A simple way to do this is to put them in a tupperware type container. Cut a notch near the edge to allow any wires into the container and seal it closed.
There are no guarantees. The bandwidth available is completely subjective to the current needs and wifi in camps and art installations is at the bottom of the priority list.
Lastly and perhaps most importantly, the folks running the BRC network are at Burning Man to enjoy themselves. Leave them alone and talk with other camps and installations about any issues that you may be experiencing.
Setup On The Playa
There are two main components needed to setup wifi on the playa – an uplink radio and an access point. The uplink radio runs in the 5Ghz band and the access point in the 2.4Ghz band. The recommended uplink radio is the NanoBeam from Ubiquiti. A NanoBridge will work if you have a spare one laying about. The recommended access point is a Ubiquiti Unifi AP.
To start, reset the NanoBeam to factory settings before bringing to the playa can help you save some hassles and wasted time on playa. With it reset to factory defaults, mount it with a clear line of sight to the center camp tower and power it up. It should connect and start provisioning. This can take a while, as in hours depending on what else is going on. Use a laptop to monitor the setup and configuration.
After the NanoBeam has connected, been provisioned and received it’s IP address, connect and power up the local access point.
Consider a Unifi AP Outdoor. The rain last year helped several people discover that the Unifi AP’s aren’t waterproof. Water and playa dust will do corrosive wonders to exposed connections.
Note that the UniFi AP Outdoor 5G runs in the 5Ghz band, don’t use it.. Why? Because 5Ghz is used for the uplinks.
The configuration of the Unifi AP’s that’s downloaded from the playa NOC will most likely include a captive portal that times out after some period. This will help manage the bandwidth needed since you’ll have to re-accept the terms and conditions page to connect back to the Internet.
If you don’t use a Unifi AP, set your access point SSID to the camp name / location and make it discoverable. Set up a captive portal for your users. It’ll help manage available bandwidth and provide service to the community:
I’ve been toying with different ideas for project on the playa of which two seem to be most likely to happen this year.
The first is a local wifi spot and map server but since there will be playamap onsite and there’s lots of local bandwidth available, I think the mapping may get put on the back burner for this year.
It turns out that there were a few like minded people at the summit talking about projects to bring wifi to the masses. I’m planning to work with the folks at http://ki7wv.net/ to create some solar powered wifi kiosks and distribute them on the playa.
Set up a Raspberry Pi image that pulls SNMP status from the Ubiquity NanoBeam uplinks. This will allow an uplink operator to get an idea on how well their connections works over time.
I was reminded recently that when writing code in C, you have to take care to understand how variable are going to be used when declaring them. I was had just finished working on the code used to control the fire effects at The Crucible‘s Maker Faire 2013 booth when the system just seemed to come to a halt. That’s not quite what it was supposed to do.
The system was designed to have 3 24′ towers as the central part of the booth. On top of the towers would be accumulator based fire effects – a 24″ round sphere w/ a 2″ exhaust port, a 9″ x 24″ oblong tank w/ a massive 3″ pneumatic solenoid / exhaust and three smaller accumulators based on old fire extinguishers. The solenoids on the fire effects would all be controlled with an Arduino. The idea was that there would be no direct user interaction this year but the system would run automatically. Plug in the Arduino and away we go.
The code would run one of a number of possible sequences, pause between 30 and 90 seconds, randomly run the next sequence, pause . . . And it did that, most of the time. A couple of times after starting up the Arduino, several sequences would run and then nothing else would happen. Made me wonder if I had crashed the Arduino.
I added some Serial.print statements to the code to dump out details on what was happening internally and ran the code again. This time it ran without issue for almost 2 hours before coming to a halt. Looking at the output on the serial console showed that that pause value was -31438. Of course everything came to a halt, the system was attempting to pause negative 31,438 milliseconds! This didn’t make much sense until I reread the Arduino docs and saw that ints are 16 bit values. Of course it rolled over into a negative number.
Digging into the code I realized that I had used int’s in several places where an unsigned long was needed. Once fixed, all was right with the world and the system went on to work just fine for both days of the Maker Faire.
Perhaps I need to start writing these systems on a Raspberry Pi where I can use Python 😉
I recently had the need to recycle several old computers and by old, I mean Power Mac G4 old. These systems were state of the art in 1999.
As any good IT professional knows, you don’t want to just recycle any computers without first erasing the data on the hard disks. Now I doubt that there’s anything of any importance on the disks but it’s better to erase them to be certain. A traditional way would be to reinitialize the disk and overwrite all the sectors several times. But why follow tradition when there are so many other, more creative ways to erase the contents!
I think I’ve come up with a method guaranteed to destroy the contents of a hard disk for those occasions when you need to be reasonably sure that the data can never be recovered.
What do you think? Too much?
Now before you think of trying this at home let me just say no, stop, don’t try this at home. That’s insane. This forge was running at approximately 2,300 degrees fahrenheit. There’s no way any appliance in your house generates nearly enough heat to reproduce this madness. Just put the thought out of your head.
I just read a post on Becky’s blog called “Mmm, serif-y.” She seems to have some mixed feelings about the little Arduino. I tend to agree with her but I’d like to offer a consideration that the Arduino has done more to open electronics and hardware hacking to more people than any other available electronics / hardware / software system to date. It’s easy to use, has lots of examples, an IDE that just work across Windows, OS X and Linux, and is very extensible through shields.
While many of these budding hardware hackers will never progress past the “oh golly gee, my led is blinking” stage, there are lots that will begin to explore more electronics, pcb design and creation, and such. They’ll discover that they can work with different types of hardware and electronics to bring their creations to life. And along the way they will also discover the wonderful sight of chips, resistors and caps going up in smoke. With that annoying burnt electronics smell that comes with it.
They’ll realize that the set of electronic candles they want to create would be too expensive if each one had an Arduino. They’ll start looking at other possibilities like using a PIC processor and designing their own PCB. They’ll ask questions and talk with others who are working to create their own bit of custom electronics. They’ll join or start a local hackerspace. And along the way, they’ll learn a bit and create even more.
All this because they were exposed to that simple world of the Arduino.
I had a need to control 16 fire poofers. I wanted the control to be done through a Arduino microcontroller so that the effects like Fire, Stage Left, Thumping and Fire Line can be done. So, a new fire control panel had to be built.
Before I get too deep into the details of building the panel, please read Fire Effects – Safety before even considering doing something like this at home or where you like to play.
The panel started out life as a stainless steel box (A24H2412SS6LP) that was received as part of a donation a while ago. It measures 24″ x 24″ x 12″. It was a bit deeper than needed but that’s ok. The extra space could always be used for something.
The first work was to modify the front door to allow for the switches to manually control everything. There’s a number of different types of switches that are needed to allow the control panel to work with this project as well as future ones.
- An emergency stop switch is needed to shut everything down in the event of things going sideways.
- Toggle switches for things like solenoids on propane tank feeds.
- Toggle switches to control solenoids and igniters.
- Push button momentary contact switches to control solenoids on propane lines feeding fire effects.
- Push button momentary contact switches connected to an Arduino.
- Toggle switch to turn power off to the Arduino and any supporting electronics in case it needs to be reset.
The panel was laid out with 4 logical sections:
- Top most is for the Arduino power switch.
- Next is for the push button momentary contact switches for the Arduino.
- Next is a field of toggle switch / push button momentary contact switch pairs. This allows an individual effect to have a toggle for the igniter and a push button for the solenoid.
- The bottom most is the emergency power switch and the capped toggle switches for the propane feeds.
Just How Many Drills Are Needed?
Once the basic layout was decided, the front door was removed and layout work done to position the switches.
A whole lot of time was spent on a milling machine with a step drill to drill out the holes needed for the switches.
At one point, I had to stop so I cleaned off the panel and remounted it to see what it was going to look like when done. There were only 2 more holes needed, the power switch for the Arduino and the emergency stop switch.
What Does This Wire Do?
With the holes all drilled, the switches were inserted and secured into the panel. It was a bit unfortunate but I used cheaper switches that I purchased through Jameco. The problem with these switches is that the nuts couldn’t be tightened too much or they would slip. Rather annoying but I had already invested in getting them installed and there was a show coming up where I wanted to use the panel.
With all the switches installed, the task of running and soldering all the wires was next. Blue wire was used to connect one side of all the toggle switches with power. White wire was used for the push buttons and yellow for the toggle switches.
Ethernet, It’s Not Just For Networks!
Next up was creating a way to allow the various switches to be connected to the things that they’re controlling.
Since there would only be low current / low voltage signals being sent out from the control panel, I decided to use ethernet cat 5 cable. It’s readily available and reasonably easy to work with. With 4 paired conductors in each cable, I settled on 1 pair for power, 1 pair for ground and 2 pairs for control. That allows each cable to control up to 4 devices. 4 ethernet covers were use with 4 jacks per cover giving a total of 64 control channels.
In an effort allow for changing configurations, all the switches were wired to terminals on one set of euro-style terminal blocks and the ethernet control lines were wired to terminals on another set of euro-style terminal blocks.
The switches are on the left side blocks and the ethernet on the right. With this in place, it’s fairly easy to move the jumpers from one location to another to allow for difference switches on the front panel to control different devices in the field.
In order to allow this control panel to do anything, I created octa-control packs that are deployed in the field and provide switch 120v Edison sockets.
Each octa-control pack has 2 connections for ethernet signal lines, an 8-way relay board, 4 duplex Edison sockets and power plugs to provide power to the Edison sockets.
Originally I also designed quad-control packs that used a single ethernet, 4-way relay board and provided 4 switched Edison sockets. So far I haven’t built any since the octa-control packs have worked well for the types deployments the system has been on.
You can see the 8-way relay board here. It’s a tight fit but works well. The relay board is a Hivitronix “Eight Way Channel Relay Board” that can be found on ebay for around $32 plus shipping. The board requires 12v power which is provided from the control panel via 2 pairs of the ethernet lines, blue / blue stripe are +12v and green / green strip are ground. The remaining ethernet lines are connected to the 8 control pins that trip the relays. Each relay is in turn wired to 120V coming in from the power cords and to the individual hot side of the Edison sockets. The neutral side of the sockets is connected to the common side of the 120V power cord.
So far, everything has been done to allow for manual control. This makes for easier test of the system when it’s deployed as well as if automation isn’t needed. But computer control of the system is a major reason for building this control system and the heart will be an Arduino Mega board.
On a side note, I’d like to give a big shout out to Lady Ada and her amazing crew over at Adafruit. They’re helpful, friendly and provide outstanding customer service. Get your Arduino’s from them!
Now this part is a bit of a mess. Not being an electrical engineer caused a few missteps here. To start with, the switches were setup to provide +12V along the ethernet control lines to the relay boards. That means that the Arduino has to supply +12v for all the circuits which is something that it didn’t want to always do. It let me know this by resetting regularly. So I got a bunch of UDN2981 Darlington IC chips that allows for 8 switched channels each. Connecting the I/O pins of the Arduino to the control pins on the UDN2981 chips and the output pins of the UDN2981 chips to the corresponding ethernet control lines allowed the Arduino to switch the needed +12V and control the relays in the octa-control packs.
All was fine until one of the manual switches was thrown and the Arduino stopped working. This turned out to be a problem where applying +12v to the output pins on the UDN2981 chips caused the chips to burn out. So I added a diode to each of the output pins of the UDN2981 chips to keep the +12V from the manual switches from causing any more grief.
The first generation code for doing fire effect sequences can be found at https://github.com/pkropf/Control_Panel.
As you can see from the image above, there was quite a bit of a hack that was put in place at the last minute before the first show. I’ll get to pulling it out some day and cleaning everything up. In the mean time, the system has been used successfully on The Crucible’s Fire Circus in July 2011, The Crucible’s Fireside Lounge August 2011, the mini-Maker Faire in the east bay October 2011 and The Crucible’s Machine: A Fire Opera in January 2012.
Having run the system several times now, I have quite a few ideas on changes that should be made. Things like:
- Designing a circuit board for the UDN2981 chips and diodes.
- Replacing the euro-style terminal blocks with a set of patch panels and use banana plugs to configure the switches to relays.
- Reorient the switches so that the push buttons are either in the center with the toggles surrounding them or the push buttons on one side and the toggles on the other.
- Adding visual indicators on what’s happening like status lights on the Edison plugs and expose the leds on the relay boards.
- Possibly set up some sort of feedback that can be displayed on the control panel to let the operator know the status of the control packs.
- Add temperature, voltage and current monitoring displays.
- Design an Arduino control pack that has an embedded Arduino controller that can be controlled via the control panel.
With a little luck I’ll actually make the time to do some of these…