2.5 KiB
MAPID – Malte's Arduino-Powered Info Display
Info display powered by two parts:
- Command line OS running on Arduino (MAPID/CP)
- Python pyserial script controlling the display over a serial connection
Requirements
- Arduino libraries
- SerialCommand Advanced
- 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:
# 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)
- Arduino libraries