README
This commit is contained in:
parent
5b51034d84
commit
2c70501b83
106
README.md
Normal file
106
README.md
Normal file
@ -0,0 +1,106 @@
|
||||
# pozytywny sejf™
|
||||
|
||||
## What is this?
|
||||
|
||||
Pozytywny Sejf™ is an entertainment device - essentially an inside-out escape
|
||||
room.
|
||||
|
||||
A 80x80x80cm box where each of four sides have ~8-10 different tasks to solve.
|
||||
Every side contains:
|
||||
|
||||
* 6 "slots" for replaceable hardware modules
|
||||
* an ~12" 1280x1024 LCD screen in the middle
|
||||
* a "status indicator" slot above the screen - 10 RGB LEDs indicating tasks progress
|
||||
* a drawer with a PIN entry keyboard
|
||||
* (optional, present on one of the sides) extra drawer for final game reward
|
||||
|
||||
Main point of this project is to design a framework for these types of
|
||||
entertainment devices, and some reference game task modules.
|
||||
|
||||
## Hardware
|
||||
|
||||
### Furniture
|
||||
|
||||
80x80x80cm wooden box holding all the modules.
|
||||
|
||||
#### Wiring
|
||||
|
||||
All module slots should have CAT5e RJ45-terminated input/output cables available.
|
||||
Whenever a slot does not use a sejfduino module in a specific game - an RJ45 coupler
|
||||
should be used.
|
||||
|
||||
"Status indicator" is not generally meant to be replaceable. Some extra hardware
|
||||
features like game finish siren/lamp or extra game finish drawer will be
|
||||
controlled via its sejfduino board.
|
||||
|
||||
Certain slots may have extra 12v high power Tamiya connector exposed.
|
||||
|
||||
Certain slots may have extra USB female port available for custom functionality
|
||||
(eg. extra audio interface for microphone/speaker)
|
||||
|
||||
All wiring runs going to module slots shall have enough slack for simple
|
||||
maintenance (module removal *before* disconnecting of its cabling)
|
||||
|
||||
Main 5v/12v power will be provided by a central ATX power supply.
|
||||
|
||||
Raspberry Pi boards should be connected to a 5-port ethernet switch, with static
|
||||
IPv4 networking set up (with "master" board exposing a management/debugging
|
||||
DHCP server)
|
||||
|
||||
The only cable coming out of the Furniture shall be a 230v power lead.
|
||||
|
||||
Only cabling shared between "sides" shall be ethernet data and 12v power.
|
||||
UBus/RS485 *must not* be shared between multiple sides - each "side" has its own
|
||||
separate bus managed by its Raspberry Pi board.
|
||||
|
||||
### sejfduino
|
||||
|
||||
A custom Arduino-style board with several special features:
|
||||
|
||||
* ATMega328PB running at 16MHz - compatiblity with a lot of arduino boards
|
||||
* 8P8C/RJ45 input/output connectors for 12v power and RS485 half-duplex
|
||||
communication bus. If a module is removed, it can be easily replaced with
|
||||
a dumb RJ45 coupler, keeping all the wiring inside.
|
||||
* Arduino Pro Mini-style serial programming header
|
||||
* Screw terminals for easy and (fairly) secure connection of extra peripherals
|
||||
|
||||
Design files for this board are present in `hardware/sejfduino/` directory.
|
||||
|
||||
Sejfduino-based modules are running arduino-based code, including an "UBus"
|
||||
library that implements some basic cross-device communication on a half-duplex
|
||||
RS485 bus. See `software/arduino/ubus/` and `protocol.md` for reference on that.
|
||||
|
||||
### Raspi
|
||||
|
||||
Raspberry Pi 3 connected to an LCD screen is present on each of 4 sides of the
|
||||
"Furniture".
|
||||
|
||||
Raspberry Pi boards are running Python Kivy based software that takes a role of
|
||||
a ~master~ leader on the "UBus" bus.
|
||||
|
||||
Game "scenario" is configured there, and sejfduino modules are mostly meant to
|
||||
be a custom human interface devices for specific game tasks.
|
||||
|
||||
Code running on the raspberry pi is present in `software/raspi/` directory.
|
||||
|
||||
#### raspbian bootstrap (WIP)
|
||||
|
||||
```sh
|
||||
apt install -y --no-install-recommends python3-pip python3-virtualenv
|
||||
apt install -y --no-install-recommends libsdl2-2.0-0 libsdl2-image-2.0-0 libgl1 libmtdev1
|
||||
python3 -m virtualenv /opt/kivy
|
||||
/opt/kivy/bin/pip3 install "kivy[base]" kivy_examples
|
||||
|
||||
apt-get install --no-install-recommends xserver-xorg-video-all xserver-xorg-input-all xserver-xorg-core xinit x11-xserver-utils unclutter xterm
|
||||
```
|
||||
|
||||
## Sample task modules
|
||||
|
||||
* 16x2 LCD + a potentiometer used as a digit input device - "safebox combination
|
||||
lock dial" entry module
|
||||
* Snake - displayed on screen, with hardware joystick exposed as plain GPIO inputs
|
||||
* NFC card reader - connected over I2C (card found earlier in the game)
|
||||
* "Key" module - plain GPIO input - key found earlier in the game
|
||||
* Barcode scanner - USB port exposed externally, with a separate USB scanner
|
||||
(found earlier in the game)
|
||||
* Electronic drawer with pincode entry
|
Loading…
x
Reference in New Issue
Block a user