Amélie is a selfie printer that prints photos on cheap thermal paper, perfect for parties or weddings. It is named after the 2001 movie by Jean-Pierre Jeunet.
See here for more pictures and details.
This is a personal project and may be a bit finicky to set up.
- Raspberry Pi 4 B (1GB)
- Waveshare 4inch HDMI Capacitive Touch IPS LCD Display
- Adafruit Mini Thermal Receipt Printe
- Adafruit Rugged Metal Pushbutton (22mm)
- Raspberry Pi Camera Module 3
- Aioneus 40W 4-Port Fast Charging Block
- DAOKAI USB Type-C Power Converter
- Plexi Plate (you can find a template in the
lasercut-templatefolder) - Amazon Basic Case
- small heat sinks for the Raspberry Pi
- a fast SD card
- a cheap, small USB thumb drive
- some additional cables
Use a fresh Raspberry Pi OS Lite 32-bit installation. Install required dependencies with:
sudo apt install python3-opencv python3-picamera2 xserver-xorg xinitThen download or clone this repo, extract it into ~/amelie (this path is hardcoded at some places, if you want to use another path, change the code accordingly), then start it by calling the start file.
To allow starting over SSH, you may want to add this to your /etc/X11/Xwrapper.config:
allowed_users=anybody # was: console
then you can call the start file over SSH
To autostart, copy the amelie.service file into ~/.config/systemd/user/amelie.service and then activate it with:
sudo systemctl daemon-reload
systemctl --user enable amelie.service
systemctl --user start amelie.service
journalctl --user -u amelie.service
This script uses the picamera2 library, so if you use anything other then the official Raspberry Pi camera you may need to change some things accordingly.
You can mount a USB thumb drive at /mnt/usb0/ (or change this path in the amelie file). The script will automatically check, if this drive is mounted and if an amelie.txt file exists at this path. If it exists, it reads this file and overwrites the default options.
See config-template/amelie.txt for an example config file.
If you configure a backupDirectory, all images will be saved in this directory.
pinR, pinG and pinB are the pins for the RGB led. pinButton is the pin to listen for the button press. pinShutdown is another button that you can use to power down the Raspberry Pi. You need to hold this button for a few seconds before the shutdown triggers.
