-
Notifications
You must be signed in to change notification settings - Fork 0
Hardware Performance
The door lock was originally implemented with four MiFare rfid card readers. Each worked well separately, but gave very unreliable readings when used together. Our initial research turned up examples of multiple readers connected to one Arduino using jumper wires, but when we used longer cables, their reliability dramatically decreased. Our tests showed at short distances, the readers could reliably share SCK, RST, MISO, MOSI, VCC, and GND connections, and use a separate SDA connections. At long distances, we could reliably use a single reader. Sadly, we could not do both. An undocumented programming fix allowed us to use these reliably enough at shorter distances for the fish puzzle.
After testing the shortcomings of the first door lock and further research, the door lock was refit with four seeed uart rfid readers. These readers had support for external antennas, which was a better design for the structure of the frames. They also only required four connections per reader, two shared and two separate. Arduino UNOs only have one hardware serial input, so the readers connected to four digital inputs, and the software serial library was used to read from each one after the next. Unfortunately, these readers only read a tag once, so any noise or interruption in the serial connection completely prevents a tag from being read. While all four readers worked in this configuration, they were not reliable enough to use in the final puzzle.
Both types of RFID sensors sent power and data through cat5e cables at TTL voltages. This type of connection is only meant to span short distances; further research revealed that to extend it reliably, we would have to use two rs232 shifters per serial connection, so eight shifters in total. The shifters would also have to be powered with eight separate DC power connections, in addition to the four serial connections, which was too demanding. Even using rfid tags for the puzzle now seemed too demanding; one byte of data at sixty baud was more than enough for what we needed, and far less than the readers provided.
This type of sensor simply activates when a magnet is nearby, and works reliably at TTL voltages across our required distances. They do not detect unique magnets, so they are positioned differently to match different elements of the puzzles. Powering eight sensors was no problem for the fireplace, so we chose to use them to replace the four rfid card readers in the painting puzzle, and got much better results. Some sides of the cube magnets only activate the sensors at certain angles, so the least finicky side was positioned to be facing the sensors.
This is the microcontroller of choice used in all of the puzzles. Its most useful features are the pulldown resistors built into the digital inputs, and the abundance of code examples available online. Most of the programs could be replaced with on board logic gates and latches, but Arduinos are reusable, and being able to reprogram them when puzzles change or I am at school proved very valuable.
Longer connections in the door lock and the fireplace use cut and crimped cat5e cables to carry both 5v power and TTL signals. They work very well, but surprisingly we found no hardware capable of reliably carrying VCC, GND, TX and RX to a serial device with a single cable, which was our main use case for them.
The power supplies provide a reliable 5v output from a 12v dc power connection, which here is coming from an adapter plugged into the wall. Although they are advertised as protecting against short circuits, the two supplies I shorted now read ten volts on a multimeter, rather than the expected five. To avoid this, and to keep up with the constant structural changes to the puzzles, the components were connected with breadboards and dupont wires. (The less stripping and soldering, the better.)
Soldering jumper wires to these is tricky, but they are very bright and colorful. The lights were first embedded into wax candles with hot glue, but they heated up enough to melt the wax through the glue, so they are now hanging freely inside the candles. I first tried programming them with the FastLED library I was familiar with, but the vendor Adafruit NeoPixel library worked better for multiple outputs.
This anemometer worked well for detecting when a player blew on them, but while I was between visits every single one of them failed. Once again we decided that they were excessive; they are meant to produce accurate wind speed readings, and we just need to know the order that the sensors are blown on, not how hard they are blown on.
Simple piezo sensors worked far better than the wind sensors, their analog reading reliably drops to zero when they are blown on. I expected them to also pick up noise in the room, as they are normally used as acoustic sensors, but no amount of clapping and stomping had the same effect as blowing on them. Surprisingly, researching this use case online found nothing. The sensor readings slowly rise while they are powered, but they seem to top out eventually, and this has had no consequences yet.
The alignment of the magnet attachment is very finicky, but once it is in place, it holds very strong against a straight pull away from the lock. The solenoids are too weak to release a load running at 12 volts, but work well when doubled to 24. The relays are all set to active low and normally closed, so that the room can be easily reset by turning the power strips off and back on again between sessions.
© 2019 Complexity Rooms. All Rights Reserved.