The hardware is not very complexe if you're familiar with Raspberry Pi. The screen is a recycled one from office, a standard 19" DVI. The resolution is 1280x1024. It's rotated in portrait mode.
The printer is an Epson TM-T20II, connected to the Rpi with USB.
The camera module is a clone of the official Raspberry pi, with a slightly more luminous lens. Connected directly to the Rpi with the CSI port.
The buttons are connected between Rpi GPIO and 0V. And their LED to a small driver board and Rpi GPIO.
All power supplies (screen, Rpi 5V, printer) are connected to the same plug and a general switch.
The raspberry pi is running under the official Raspbian image.
In addition, the native raspbian program raspividyuv is used to get the camera frames. The camera output is on top of everything and always visible.
Once the button is pressed, a frame is saved. The gray scale image is saved to a jpeg file, then data are dithered (Floyd–Steinberg) and sent to the printer.
Originally JavaFX was used to display a small interface. It was convenient as it worked without X. Now Oracle decided to not support anymore JavaFX on ARM. So It's back to Swing and LXDE should be started...