mapid/README.md

83 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.
## Links
- [My blog post about MAPID (German)](https://malte70.de/blog/mapid/)
- Arduino libraries
- [SerialCommand Advanced](https://github.com/shyd/Arduino-SerialCommand)
- [serLCD](http://playground.arduino.cc/Code/SerLCD)