BAM is implemented as a local web server; the UI is then accessible over the local network through a web browser so people can interact with their devices while in their escape rooms from a tablet or other portable device. This requires BAM to listen on a “port” for incoming connections, and the default is port 8080.
Occasionally, you may be running another application on your computer that uses the same port number. If you have another web server or engineering tool that runs on port 8080, please consider closing or reconfiguring it to a different port number before launching BAM.
One of the most common goals of an event on the BAC is to cause an action to occur elsewhere. This typically is accomplished by completing a circuit to supply power to some other electrical component, like a magnetic lock or a light.
The BAC offers two ways to control external devices – a relay and a digital output. Since both can be used in similar scenarios, the differences can be pretty confusing at first glance!
Think of digital outputs as a computer-controlled power supply.
The digital outputs (on the top row of the BAC, numbered 0 through 5) directly supply power to external devices using the same source power supply as the controller itself.
Depending on the revision of the BAC you have and the configuration in BAM, these may be “high side” (each output replaces the + terminal, and the other wire connects to GND) or “low side” drivers (each output replaces the – terminal, and the other wire connects to +12V). Refer to the BAC manual for details on how to wire them up… but in both cases, the key takeaway is that they share the power supply with the BAC itself.
Unlike Arduino devices, where digital outputs can only safely supply a tiny amount of power at a low voltage, the BAC’s outputs are higher power. They operate at the supply voltage (typically 12V) and can be directly connected to many external devices! Just make sure your current draw needs to stay below the limit indicated in the BAC documentation (typically 500mA at 12V per channel), and your total current consumption has to stay within the maximum capacity of your power supply.
The advantage of these digital outputs is that they are easy to understand and use – just wire a device directly to the output and it gets power when the output is on, and has no power when it’s off. They are also completely silent during operation.
The disadvantage is that you are limited to the same output voltage your controller is operating at (typically 12V), and that you cannot draw more than 500mA (fine for small cabinet mag locks, but potentially an issue for larger door-sized locks or other high current props).
The key takeaway is that these digital outputs are electrically connected with the BAC’s control electronics. That means that electrical interference from devices connected to them could potentially affect the BAC (although we include lots of protections against this happening), and it also means it isn’t always appropriate to use these outputs to control other props that have their own power supply.
Think of relays as a computer-controlled switch.
What is a relay?
The term ‘relay’ dates back to the very beginning of electrical communication, where early engineers needed to solve the problem of how to send telegraph signals across the country. Wires have resistance and signals degrade over long distances (a problem we even have to contend with in escape rooms!), so there needed to be a way to connect different circuits together to resupply new power every so often into the telegraph network, “relaying” a signal from one circuit to another.
The solution that was developed is very similar to what we still use today! Relays are switches controlled by electricity; when they are turned off, the Common terminal is connected to Normally Closed, and when they are turned on, the Common terminal is connected to Normally Open.
The aspect that makes relays most useful today is that the circuit being controlled is completely electrically isolated from the circuit doing the controlling. The switching happens by turning on a small electromagnet: this attracts and pulls a piece of metal from one contact to another, physically changing the switch’s state. It’s exactly like a physical switch, except with a magnet operating it rather than your hands.
How do relays work? You can think of a relay conceptually as a flappy piece of metal, switching between two contacts called “normally closed” and “normally open”. When the relay is unpowered, a spring causes this metal to rest against the normally closed terminal:
When you power the relay up, the coil acts as an electromagnet, pulling the flappy metal towards the Normally Open terminal and switching the circuit:
As you can see, there is electrical isolation between the controls and the terminals. A fault in the circuit the relay controls wouldn’t affect the control electronics, because they are separated by air and magnetism inside the relay module.
When would I need a relay instead of a digital output?
There are several situations where a digital output won’t be sufficient and you’ll need to use a relay:
You need more output current than the digital output can provide. This typically happens when controlling a large door magnetic lock, which often draw between 650 mA and 1A.
You need a separate power supply or you need a different voltage. The relay is entirely isolated from the main circuit, so you can use any power supply you prefer. The contacts are rated to handle a large amount of current (the relays themselves are rated to 10A and 125V, but we recommend you not exceed 2A and 24V in escape room applications).
You are controlling a pre-existing prop or signaling an external system. If you have a prop from another vendor, it’s safe to switch its power supply using the relay without causing any unintended effects caused by sharing power supplies between the prop and the BAC. The relay can also be used to simulate button presses or other switch closures for other controllers; this could be used to safely signal a 5V input pin on an Arduino, for example.
You are out of inputs. Even if a digital output would be sufficient, you can wire up a relay to achieve the same goals and get two extra outputs without resorting to an FX60 or other expander. In this situation, you would use the + and – terminals from the BAC’s connectors to access the same 12V power supply being used to power the BAC. You lose the electrical isolation benefits, but in many applications the convenience is worth that tradeoff.
What are the pros and cons of a relay?
Pros: The relay is isolated from the main circuit, so it’s safe to use the relay to control external devices with different power supplies or power requirements. The relay can also handle much more current than the normal digital outputs.
Cons: Relays make a soft telltale clicking noise when they switch, which can occasionally be problematic in some escape room applications by telegraphing to players that something has changed in the room. They also are mechanical devices, so they can eventually wear out if switched repeatedly (although we use high quality Panasonic relays in our products to minimize the chance of this occurring). They are also large, so only two relays fit in the BAC case.
How do I wire up a relayas a switch?
Simply insert the relay in series into your circuit as if it were a regular switch. Wherever you would normally connect a switch, connecting COM to one terminal and either NC or NO to the other.
If you want the relay to connect (close) the circuit when it’s on and disconnect (open) the circuit when it’s off, connect to normally open. (Usually used for activating special effects or solenoids.)
If you want the relay to disconnect (close) the circuit when it’s on and connect (close) the circuit when it’s off, connect to normally closed. (Usually used for magnetic locks which should be locked by default until the player solves a puzzle.)
It’s okay to switch either the high or low side for most escape room applications – we recommend whichever side your BAC is configured to switch for its digital outputs for consistency.
How do I wire up a relay as a spare digital output?
If you just want to use the relay as an extra digital output, you can source power from the + and – terminals as shown in this diagram:
One of the most powerful features of the BAC is the ability to send messages over a network connection to game control software. One of the most popular protocols for this connection is MQTT, which is a simple industry standard designed for sending short messages between two points. Because the BAC is built on MQTT, you have the option of using off the shelf packages like M3 or creating your own control solution using a tool like Node-RED.
Because MQTT is an open standard, you can also connect to the server and monitor the ongoing communications using desktop tools. This can be a great option if you’re having trouble getting a link established and are not sure where the problem is in the system.
We recommend the MQTT Explorer project for most users; it’s a convenient graphical browser for MQTT messages and is available for most major platforms. If you prefer the command line, we recommend the mosquitto_sub tool available as part of the Eclipse Mosquitto project.
While you can run MQTT Explorer from the same computer as your MQTT server (also known as a broker), the best test results will come if you can use a second computer on the network, as this will validate that your firewall and network are configured correctly.
To set up MQTT Explorer to monitor your BAC, install it from the link above, then open the application. You’ll see a server connection window:
In this window, set the “Host” field to the network address of your MQTT broker. (For most people with M3, this is the address of the computer running M3.). Then, click Save and Connect.
MQTT Explorer will connect to your server and display a tree view of topics and messages that updates live as messages are sent:
If MQTT Explorer gets stuck on the connection page and never connects, eventually showing a “Disconnected from server” bar in the bottom corner, it’s likely that your MQTT broker is misconfigured. One common possibility is that the server computer is running a firewall that’s blocking access from other computers (to disable Windows Firewall, follow these instructions). Another possibility is that you are using Eclipse Mosquitto 2.0 as your server; the new 2.0 version has default security settings that disable access from remote computers. The Eclipse project has instructions for enabling remote access here.
The best way to set up a BAC’s network connection is to plug it into your main router, or to a connected Ethernet switch. This allows the BAC to get an IP address from your router’s built in “DHCP Server”, which is a piece of software that controls your network and hands out IP addresses. It ensures that any other computer on your network will be able to access the BAC, making it easy to integrate with M3 and other software packages.
Sometimes, you might need to configure your BAC without access to your router, though. If you’re using a phone hotspot for connectivity and don’t have an office network, or if you’re setting up a BAC in a new location before a network is available, you might need an alternate approach.
In these situations, you can connect your BAC directly to your computer via an Ethernet cable. In some cases, this will just magically work – so we recommend you start by simply connecting the cable and opening Bad Ass Manager. If you see your controller there, you can skip the rest of this article.
Unfortunately, sometimes just making the connection isn’t enough – both your computer and the BAC will make up random ‘local’ IP addresses, and they won’t be able to find and talk to each other.
The solution is to “share” your Wi-Fi connection temporarily to your Ethernet port. This causes Windows to set up its own local server to hand out addresses, and enables BAM and your BAC to find each other and communicate. We don’t recommend this arrangement for more than temporary setup – you’ll want to invest in a router, perhaps a small travel router like this one that can connect an Ethernet device to a Wi-Fi network – but in a pinch this can get you up and running.
Before getting started, make sure to download BAM from our Downloads page; it’s possible that in some situations this process will cause your computer to not connect to the Internet properly until you’re done configuring your BAC and disable the sharing feature.
Find the Ethernet port on your Windows 10 computer and plug in your BAC using a standard cable. If your computer is a laptop without an Ethernet port, you can buy an affordable USB adapter like this one from TP-Link.
Open your Start Menu. Search for “Network Connections”, and when “View network connections” appears, select it.
3. In the window that appears, examine the network connections. You may have several, but you’re looking for two connections: your standard Wi-Fi connection that connects you to the Internet, and the second Ethernet adapter that is connected to the BAC.
The Wi-Fi adapter should be easy to find; the Ethernet adapter might be a little harder, but it probably will have “Ethernet” in the name, potentially followed by a number. If you see other items in the list with words like “Virtual” or “VPN”, you can ignore them.
6. Check “Allow other users to connect through this computer’s connection”. Then, in the dropdown box, choose your Ethernet connection that is plugged into your BAC. Uncheck “Allow other users to control or disable the shared Internet connection.” When you’re done, the dialog should look like this:
7. Click OK.
8. Launch BAM. When it opens, you may be asked about firewall access; make sure to permit it to communicate on all network types:
10. If all goes well, you should see your BAC in BAM. If not, try clicking Discover; if it still doesn’t appear, unplug and replug the power to your BAC and wait two minutes, then click Discover again.
11. Important: when you’re done configuring your BAC, reverse the process by right-clicking your Wi-Fi adapter and unchecking the options on the Sharing tab. If you forget this step, your Ethernet adapter will no longer work for other network connections, and you may even cause problems if you attempt to plug your computer into another network (because your computer will be competing with the network’s router to hand out IP addresses).
The SD card that comes with your Audio BAC is prepared at the factory with the correct file system, but if you need to prepare another card, it should be formatted with the FAT16 or FAT32 file system only.
Do not use NTFS or exFAT, and do not store files on your card other than audio files intended for playback via the BAC. Many SD cards ship from the factory with an exFAT file syste
The act of formatting a storage card erases all data on it permanently. Before formatting your card, back up any files on it that you wish to save.
Exercise special caution when formatting your storage card to ensure you don’t accidentally format the wrong device – if you aren’t careful, you could accidentally format other external storage devices or even your computer’s secondary hard disk or recovery partition. When in doubt, stop and consult your operating system manual for assistance.
Files should be named with short filenames – 8 characters or less with a 3 character extension. We recommend simple numbers (for example, 001.wav).
The Audio BAC supports .WAV, .MP3, .OGG, .AAC and .WMA file formats. We recommend the industry-standard 44100Hz 16-bit stereo .WAV format for shorter sounds and 192Kbps CBR MP3 for longer sounds, but most sample rates and formats should work well.
Great question! While both can be used to build your escape room technology, we designed the Bad Ass Controller to solve several key problems we frequently encountered when using Arduino-based controllers.
At the core, both are surprisingly similar devices – both the Arduino and the Bad Ass Controller are based on industry-standard Atmel microcontrollers.
Arduino microcontrollers are generic control devices designed to be used in a wide variety of DIY projects. They operate at a low voltage – typically 3.3V or 5V – and have pin connectors designed for temporary breadboard assembly of circuits. While they offer a great deal of flexibility, the responsibility is on you as the user to design circuits to integrate them with other devices you want to control and to write software implementing your game logic using C++ or a similar programming language.
The Bad Ass Controller builds on this foundation. We designed it to be a turnkey approach, and the BAC improves on the Arduino for escape room use in several ways:
The BAC can be configured to run most common escape room game scenarios right out of the box, no programming required. Our easy-to-use configuration tool, Bad Ass Manager, makes configuring game behavior an easy point-and-click operation.
The BAC comes with a built-in Ethernet port and integrated support for common escape room software platforms, allowing custom game logic and easy integration with other sound/lighting/gameplay elements. Adding network support to an Arduino requires extra costly hardware and time-consuming software development.
The BAC uses industrial screwdown connectors that ensure a safe, secure connection. Loose or poorly soldered wiring is one of the top causes of unreliable escape room props.
The BAC uses higher voltages (12V or 24V DC), which better withstand long wiring runs. 3.3V or 5V signals like those generated by an Arduino are not intended to travel more than a few inches from the circuit board and are unsuitable for long in-wall wires.
BAC inputs and outputs have extensive protection against electrical faults, protecting your controller in case of wiring mistakes or transient electrical noise. Most Arduino boards have no protection and the controller can be easily damaged by electrical noise.
The BAC includes high-current driver circuitry and multiple relay suitable for controlling magnetic locks, which are commonly used in escape rooms. Arduino boards require additional modules and custom wiring to control locks.
We love the Arduino platform, and in fact many elements of the BAC are inspired by its foundation. (In fact, the BAC can actually be used as a fancy Arduino for complex projects, so please reach out to us if you’re interested in that option!)
But our years of experience building escape rooms have taught us there are many challenges encountered when using Arduino devices as the core of an escape room, and we’re proud to have solved many of them with the BAC.
While the upfront investment may be a bit more expensive, we’re confident the time you save by using our products will pay for itself many times over by helping you get up and running faster and by keeping your games reliable over the lifetime of your experience.
In almost all cases, they can be fully enclosed. All electronics, when they are on, generate heat. However, the power these devices draw is very minimal and there is not any concern enclosing them as long as they are not located next to another heat source.
When in doubt, please contact us and we’ll be happy to offer safety advice specific to your situation.
Its works more like a flashlight against a wall. The closer you get, the brighter, but at a faster rate than the distance [inverse square relationship]. What this means is that as a magnet gets closer to the sensor, the magnet field gets much larger than the distance. Here is a quick table of our 1/2″ cylindrical magnet.
Distance between sensor and magnet (closest surface)
2. Don’t get them too close or too far away from the sensor
Based on the above information, we can see that the sensing distance is important. Think of the magnet as the signal to the board. You don’t want a weak signal (like under 50 Gauss) and you don’t want to overpower it (1000 Gauss is the sensor limit).
3. Use the appropriate magnet size
This brings us to the last bit. If you are not happy with the range a particular magnet gets you, use a different magnet! A smaller magnet of the same type (there are different types, so please consider what kind you are using) will be weaker up close. If you need more range, get a larger magnet and move it away further.
The newest versions of the FX51D have a built in feedback mechanism to show you when you are too weak or over powering it.
The Bad Ass Controller acquires its network address (“IP Address”) directly from a special service called a DHCP server built into your router. In most cases, this is automatic and you do not need to take special action for it to work.
While Bad Ass Manager can detect when your controller changes IP address, we still recommend using your router’s “Static” or “Fixed” reservations feature to assign it a consistent address that never changes. This setting can usually be found in the “Advanced”, “LAN” or “DHCP” section of your router’s configuration page.
To ensure your computer can talk to your Bad Ass Controller, some additional configuration steps may be needed. Most computers come standard with a ‘firewall’ that blocks communication on your local network – great for security, but bad for connecting to a controller!
For Windows users, be sure your network connection type is not Public. Setting to Private or Domain is the recommended setting. Windows networks marked as Public with extra security which hinders controller communications. If you do need to have your network type Public, then contact us for how to configure your firewall – we’re happy to help.
Typically, selecting the correct network setting will get everything working – but if you’re a firewall configuration wizard, the short answer is that you need to add a inbound firewall rule allowing UDP traffic to the BadASSManager server application.
As is typical for industrial automation, the Bad Ass Controller is designed to be used on a trusted local network and does not have required authentication. This means anyone who has access to your network can use Bad Ass Manager to control your games.
If you provide Wi-Fi access to your guests, we strongly recommend that you use your router’s guest network feature to create a separate Wi-Fi network that only allows access to the Internet, blocking access to other local devices.
You should also ensure devices on your local network are inaccessible to inbound traffic from the Internet. In nearly all cases, this will happen automatically if you are using a standard router.