BrickUsingMultipleModules: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Bilder)
(Make Rhein-Main 2017)
 
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
BrickUsingMultipleModules (kurz: BUMM) ist ein Rätselspiel, das unter dem Theme "Bombenentschärfung" spielt. Angelehnt an [http://www.keeptalkinggame.com/ Keep talking and nobody explodes] geht es darum, unter Zeitdruck verschiedene Rätselmodule lösen, um eine Bombe rechtzeitig zu entschärfen.
+
BrickUsingMultipleModules (short: '''BUMM''') is a riddle game themed around bomb defusals. After an evening of playing [http://www.keeptalkinggame.com/ Keep talking and nobody explodes], I was sure that this had to be transferred to hardware. The goal of defusing multiple modules is the same, but the hardware implementation calls for some serious changes. Cutting wires was out of the question, since nobody was found to replace them for a new round. Maybe someone will build a robot arm for that in the future.
  
== Bilder ==
+
== Pictures ==
  
=== Frontpanels ===
+
=== Front panels ===
 
<gallery>
 
<gallery>
Image:BUMM countdown blink front.jpg |Countdown und Manipulationsdetektor (links), blink-Modul (rechts)
+
Image:BUMM countdown blink front.jpg |Countdown und manipulation detector aka life counter (left), blink-module (right)
Image:BUMM serial and gates front.jpg|Seriennummer-Anzeige (links) und gates-Modul (rechts)
+
Image:BUMM serial and gates front.jpg|Serial number display (left) und gates-module (right)
 +
Image:BUMM in action countdown.jpg |Countdown
 +
Image:BUMM in action gates.jpg |gates-module
 
</gallery>
 
</gallery>
  
  
=== Panelrückseite ===
+
=== Backsides ===
 
<gallery>
 
<gallery>
Image:BUMM serial and gates back.jpg|Gates-Modul (links), Seriennummer-Anzeige (rechts)
+
Image:BUMM serial and gates back.jpg|Gates-module (left), serial number display (right)
Image:BUMM countdown and md.jpg|Countdown und Manipulationsdetektor
+
Image:BUMM countdown and md.jpg|Countdown und manipulation detector
Image:BUMM blink module.jpg|Blink-Modul
+
Image:BUMM blink module.jpg|Blink-module
 +
Image:BUMM module b backside.jpg|Gates-module before mounting
 
</gallery>
 
</gallery>
  
  
=== Fertiger Brick ===
+
=== Complete Brick ===
 
<gallery>
 
<gallery>
 
Image:BUMM total side.jpg|
 
Image:BUMM total side.jpg|
Zeile 27: Zeile 30:
 
=== Details ===
 
=== Details ===
 
<gallery>
 
<gallery>
Image:BUMM bus backplane.jpg|Bus Backplane. 5 Signale (GND, 5V, Tx, Rx, 12V) auf 10er-Pinheadern sorgen für bequemes Löten und Verkabeln :)
+
Image:BUMM bus backplane.jpg|Bus Backplane. Why cut the copper stripes if we only need 5 signals (GND, 5V, Tx, Rx, 12V) anyway?
Image:BUMM speaker.jpg|Lautsprecher und massiv befestigter Verstärker
+
Image:BUMM speaker.jpg|Speaker for beeping and firmly mounted audio amplifier
Image:BUMM bus ftdi.jpg|Busplatine von oben und USB<->seriell-Wandler
+
Image:BUMM bus ftdi.jpg|Bus backplane and usb-serial converter
Image:BUMM powerpack.jpg|Erfahrungsgemäß ist auf die Stromversorgung auf der Make kein Verlass...
+
Image:BUMM powerpack.jpg|On the last Make Rhein-Main, we had lots of power outages. Not stopping this device!
Image:BUMM gui.png|Fernsteuerung mit Countdown, MD-Status, Seriennummbern, Konfiguration und Status für jedes Modul
+
Image:BUMM gui.png|Remote control with countdown, life counter, serial number, configuration and status for each module
 
</gallery>
 
</gallery>
  
== Technik ==
+
=== Basic test video ===
Jedes Modul enthält einen Arduino (oder anderen Controller), der über einen gemeinsamen Bus (5V) via UART kommuniziert ([https://github.com/hackffm/BrickUsingMultipleModules/tree/master/bus_docu Protokoll]). Dabei ist jedes Modul von der Logik her eigenständig und gibt nur an, ob es entschärft wurde und ob es eine Manipulation detektiert hat.
+
https://streamable.com/lxtuu
Als Zentrale fungiert ein Raspberry Pi, auf dem ein Pythonscript mit der gesamten Gamelogik läuft. Neben der Buskommunikation stellt dieses auch einen TCP-Server bereit, über den der Brick ferngesteuert werden kann.
+
  
== TODO ==
+
== Background ==
Folgendes ist noch notwendig (was noch nicht geklärt ist und noch Hilfe braucht, ist fett).
+
* WLAN (Raspi 3 coming?)
+
  
=== [[Make Rhein-Main 2017]] ===
+
[[Image:BUMM block diagram.png|200px|thumb|right]]
Der Brick soll auf der [[Make Rhein-Main 2017]] in einer separaten Kammer untergebracht werden, aus der nur auf elektronischem Wege kommuniziert werden kann.  
+
 
* Kammer: Da vermutlich kein separater Raum zur Verfügung stehen wird, wäre es cool, eine kleine Kammer aufzubauen. Vermutlich wird es ein Rahmen aus Holz mit eingespannter Folie.
+
Each module has its own arduino and is connected to a parallel bus backplane ([https://github.com/hackffm/BrickUsingMultipleModules/tree/master/bus_docu speaking 5V UART at 19200 baud]).
* Zur Kommunikation zwischen den Spielern werden Feldtelefone eingesetzt werden.
+
Each module contains its own logic and only tells the gamemaster whether it has been defused and if any manipulations (mistakes) were detected.
* Eine Videoübertragung nach außen, insbesondere für die Signalwirkung für potentielle neue Spieler.
+
 
 +
The gamemaster is a Raspberry Pi running a python script.
 +
Apart from the game logic and audio output, it opens a TCP socket which can be used to control the game remotely.
 +
The network protocol is based on tree structures serialized to JSON and terminated with NULL.
 +
 
 +
All lookuptables and manuals are generated completely automatic from config files using python and make.
 +
 
 +
All material, be it gamemaster scripts, arduino code, *.tex for manuals or svg files for lasercutting are available on [https://github.com/hackffm/BrickUsingMultipleModules github].
 +
 
 +
== Modules ==
 +
 
 +
=== Gates module ===
 +
The gates module has 7 LEDs, 4 toggle switches and a push button (looking like a switch).
 +
Depending on the status of the LEDs, the toggle switches have to be set correctly, then the RUN button has to be pressed.
 +
There are two instances of the manual, which both evaluate to the same instructions.
 +
The one which gave the module its name has a big network of binary NAND/NOR gates which take the LEDs as inputs and give output levels that correspond to the switch states.
 +
For the less nerdy players, there is a second manual, which lists a lot of rules which reference other rules depending on the LED state.
 +
 
 +
A random gate network is generated using python and visualized using PyGraphViz.
 +
Then all possible outcomes are calculated and placed in a big lookup table, which is stored on the arduino.
 +
The rules are created by reading the lookup table and pruning.
 +
Higher difficulties are achieved by creating larger networks, which depend on more LED states.
 +
 
 +
=== Blink module ===
 +
The blink module has a red and a green LED, which blink in a specific pattern.
 +
Depending on this pattern, a push button below either the red or green LED has to be pressed.
 +
Correct solutions are taken from a lookup table (both on the arduino and in the manual).
 +
Higher difficulties require multiple iterations and increase the blink frequency and pattern length (and therefore lookup table size).
 +
 
 +
=== Planned ===
 +
* PCB: Lots of resistors dumped onto a board. Find the correct pins to bridge using resistor color codes.
 +
* Balance: Two dots chase each other. One has randomly varying speed, the other's speed is controlled using a potentiometer. If one catches the other, it goes boom.
 +
* High stakes: Spray cold water onto the handler on explosion or failures. Alternative: One button which has to stay pressed the whole time (also makes handling harder) gets wired to a shocker.
 +
 
 +
== Manuals ==
 +
* [[Medium:BUMM manual en.pdf|Introduction]]
 +
* [[Medium:BUMM manual en b.pdf|Gates module]]
 +
* [[Medium:BUMM manual en d.pdf|Blink module]]
 +
* [[Medium:BUMMleicht.pdf|Eine Anleitung für Jünglinge (german)]]
 +
 
 +
 
 +
=== Make Rhein-Main 2017 ===
 +
Bringing a bomb mockup to a fair - what could possibly go wrong? BUMM was present on the [https://make-rhein-main.de/ Make Rhein-Main 2017].  There is also a short [https://streamable.com/bikcu clip].
 +
 
 +
The BUMM was placed in a small chamber built just for this weekend. It is made of a wooden frame with black stretch foil. Of course, we also needed warning tape.
 +
Communication is done using a field telephone to the booth, where the manuals were located.
 +
As an eye catcher, we made a live video feed using extra crappy cables for an analog S-Video camera.
 +
 
 +
<gallery>
 +
Image:BUMM MRM2017 chamber.jpg|Chamber for the BUMM
 +
Image:BUMM MRM2017.jpg|Inside the chamber there is also a video camera for live feed and an FF-OB/ZB field telephone to our booth
 +
Image:BUMM MRM notes.jpg|Lots of notes have been taken
 +
</gallery>
 +
 
 +
== Links ==
 +
* [https://github.com/hackffm/BrickUsingMultipleModules Github repository]

Aktuelle Version vom 20. März 2017, 22:03 Uhr

BrickUsingMultipleModules (short: BUMM) is a riddle game themed around bomb defusals. After an evening of playing Keep talking and nobody explodes, I was sure that this had to be transferred to hardware. The goal of defusing multiple modules is the same, but the hardware implementation calls for some serious changes. Cutting wires was out of the question, since nobody was found to replace them for a new round. Maybe someone will build a robot arm for that in the future.

Pictures

Front panels


Backsides


Complete Brick

Details

Basic test video

https://streamable.com/lxtuu

Background

BUMM block diagram.png

Each module has its own arduino and is connected to a parallel bus backplane (speaking 5V UART at 19200 baud). Each module contains its own logic and only tells the gamemaster whether it has been defused and if any manipulations (mistakes) were detected.

The gamemaster is a Raspberry Pi running a python script. Apart from the game logic and audio output, it opens a TCP socket which can be used to control the game remotely. The network protocol is based on tree structures serialized to JSON and terminated with NULL.

All lookuptables and manuals are generated completely automatic from config files using python and make.

All material, be it gamemaster scripts, arduino code, *.tex for manuals or svg files for lasercutting are available on github.

Modules

Gates module

The gates module has 7 LEDs, 4 toggle switches and a push button (looking like a switch). Depending on the status of the LEDs, the toggle switches have to be set correctly, then the RUN button has to be pressed. There are two instances of the manual, which both evaluate to the same instructions. The one which gave the module its name has a big network of binary NAND/NOR gates which take the LEDs as inputs and give output levels that correspond to the switch states. For the less nerdy players, there is a second manual, which lists a lot of rules which reference other rules depending on the LED state.

A random gate network is generated using python and visualized using PyGraphViz. Then all possible outcomes are calculated and placed in a big lookup table, which is stored on the arduino. The rules are created by reading the lookup table and pruning. Higher difficulties are achieved by creating larger networks, which depend on more LED states.

Blink module

The blink module has a red and a green LED, which blink in a specific pattern. Depending on this pattern, a push button below either the red or green LED has to be pressed. Correct solutions are taken from a lookup table (both on the arduino and in the manual). Higher difficulties require multiple iterations and increase the blink frequency and pattern length (and therefore lookup table size).

Planned

  • PCB: Lots of resistors dumped onto a board. Find the correct pins to bridge using resistor color codes.
  • Balance: Two dots chase each other. One has randomly varying speed, the other's speed is controlled using a potentiometer. If one catches the other, it goes boom.
  • High stakes: Spray cold water onto the handler on explosion or failures. Alternative: One button which has to stay pressed the whole time (also makes handling harder) gets wired to a shocker.

Manuals


Make Rhein-Main 2017

Bringing a bomb mockup to a fair - what could possibly go wrong? BUMM was present on the Make Rhein-Main 2017. There is also a short clip.

The BUMM was placed in a small chamber built just for this weekend. It is made of a wooden frame with black stretch foil. Of course, we also needed warning tape. Communication is done using a field telephone to the booth, where the manuals were located. As an eye catcher, we made a live video feed using extra crappy cables for an analog S-Video camera.

Links