74 lines
2.2 KiB
Markdown
74 lines
2.2 KiB
Markdown
# MAPID – Malte's Arduino-Powered Info Display
|
||
|
||
Info display powered by two parts:
|
||
|
||
1. Command line OS running on Arduino (MAPID/CP)
|
||
2. Python pyserial script controlling the display over a serial connection
|
||
|
||
## Requirements
|
||
|
||
- Arduino libraries
|
||
- [SerialCommand Advanced](https://github.com/shyd/Arduino-SerialCommand)
|
||
- [serLCD](http://playground.arduino.cc/Code/SerLCD)
|
||
*Note: This is not the official library, but an old one found on the legacy Arduino Playground!*
|
||
- Python libraries
|
||
- pyserial
|
||
- python-dotenv
|
||
|
||
## Configuration
|
||
|
||
MAPID is configured using a dotenv file. Currently you have to set three options:
|
||
|
||
`SERIAL_DEV`
|
||
: Serial device file. `/dev/ttyUSB\*` on Linux, `/dev/cu.usbserial-*` on macOS.
|
||
|
||
`SERIAL_SPEED`
|
||
: Speed (in Baud) of the serial connection. `9600` is the default value of the Arduino Sketch.
|
||
|
||
`FIFO`
|
||
: File name for the FIFO. Note that systemd uses a private `/tmp` for services, so the Web-UI cannot access these files, and you have to use a different location.
|
||
|
||
An example file for GNU/Linux:
|
||
|
||
```sh
|
||
# Serial device
|
||
SERIAL_DEV="/dev/ttyUSB0"
|
||
|
||
# Serial baud rate
|
||
SERIAL_SPEED=9600
|
||
|
||
# FIFO filename
|
||
FIFO="/var/mapid/fifo"
|
||
```
|
||
|
||
## Components
|
||
|
||
### `MAPID-CP/`
|
||
|
||
An Arduino sketch containing the command line os *MAPID/CP* (CP=Control Program). It supports some commands to control a LCD and a LED (there are even a few more non-relevant ones):
|
||
|
||
- Turn the LED on/off: `ON`/`OFF`
|
||
- Turn the display on/off: `LCDON`/`LCDOFF`
|
||
- Select a line for output: `LINE i`
|
||
- Display some text: `ECHO Foo bar`
|
||
- Clear the display: `CLS`
|
||
|
||
### `mapid.py`
|
||
|
||
A Python library used by the other scripts
|
||
|
||
### `mapid-count.py`
|
||
|
||
Displays a fake bomb countdown like in one of those action movies. Written as a first test for Pyserial communication with *MAPID/CP*.
|
||
|
||
### `fifo_bridge.py`
|
||
|
||
A Python script that provides a FIFO file to pass commands to *MAPID/CP*. Each line read from that file is directly passed over a serial connection.
|
||
|
||
### `fifo-webui/`
|
||
|
||
PHP based Web interface for `fifo_bridge.py` supporting all commands of *MAPID/CP* (except for those without a real purpose, that only return some information relevant for interactive serial connections).
|
||
|
||
### `notification.sh`
|
||
|
||
Use the LED and display to show a notification, the purpose of the whole MAPID project.
|