Parcel ATM is an art project and website conceived for Data through Design 2024 (DxD). The installation was open March 15-24 2024 and allowed visitors to query 22 years of NYC MapPLUTO data. This repo contains the instructions for operating the physical ATM and running the interface's source code.
The following instructions are for running and maintaining the physical ATM made for the DxD show. It was built with:
- A Raspberry Pi 5
- LCD screen
- TM-T20III Thermal Receipt Printer
- Nullbits TIDBIT customizeable 19-key numpad
- Custom vessel
- Lots of cords
If you are just interested in running the ATM's source code, skip to Developer set-up.
- Pull the ATM a few inches from the wall so you can access its internals.
- Plug cords back if unplugged.
- Turn on the Raspberry Pi (it may do so automatically when you plug it in; if not, press the on button on the side). A green light on Raspberry Pi should be illuminated, going from flashing green to solid green. After the Raspberry Pi is on, the following should be true: screen is illuminated and showing a desktop; the numpad keyboard should be faintly illuminated behind the keys; printer is on (see that the solid blue light on top is illuminated).
- Open the terminal app.
- Remove the full keyboard and mouse from the back of the ATM. I like to place them on the top of the ATM. Turn on the keyboard and mouse as necessary.
- Open the terminal app by clicking the
>\_
icon in the menu bar at top. - Run
./Documents/github/pluto-hist/startup.sh
. You should now see some logging in the terminal before a window is launched in full-screen / kiosk mode.
Note
This command needs to be from /home/fishmulch
, the default directory location for this computer. If the command fails and errors saying it can’t find the script, run cd /home/fishmulch
and try again
- Place the cursor in the middle of the black pin on the map. I like to put it over the white dot. IMPORTANT: If you don’t do this the map will not zoom or it will not zoom intuitively to the middle, but to the cursor’s location.
- Turn off the keyboard and mouse, placing them back inside the ATM.
- Push the ATM back up against the wall, centering it on the grout line on the floor.
Try:
- Panning the map with arrow keys
- Zooming with rotary encoder
- Printing a receipt
- Turning on different layers with the other keys
- First, try refreshing the interface by pressing the rotary encoder - (secret! It’s also a key).
- Make sure the plugs are still plugged in. Did they get bumped and come unplugged?
- There is a popup/alert on the screen
- Get the trackpad out of the back of the ATM and click cancel. Then, try refreshing the page by pressing the rotary encoder.
- If that didn’t work, try a full restart
- Is the wifi connected?
Exit the interface in order to try a full reload
- Pull ATM from the wall
- Take out the keyboard and mouse. Turn them on with the switches in the - back.
Alt
+Cnrl
+T
to open a terminal window.- Run
pkill chromium
- Run
./Documents/github/pluto-hist/startup.sh
again - Make sure to replace the cursor in the center of the map marker, turn off the trackpad and keyboard, place them in the back of the ATM, and push the ATM against the wall.
Replacing the paper
- Go get the door key and a fresh roll from the closet
- Open the door (agin, key in blue-lidded container in closet)
- Open the printer door with the grey latch.
- Remove the empty roll.
- Place the fresh roll into the machine with the feeding side of the paper up.
- Pull the feeder side of the paper out and close the door, making sure the roll stays well coiled.
- Check that it is working.
Is the printer on and connected to the Raspberry Pi?
- Open the door with the key
- Check that the printer is on (a blue light should be illuminated)
- Check that the paper is full (the lights on the front should indicate this but you can also open it up)
- Check that the grey cord is properly connected to the back of the printer and is plugged into the Raspberry Pi
Paper is not feeding properly
- Open the door (you'll need the key)
- Press the small circular button and see if the paper feeds out. If so, great, it’s probably cleared. It’s unlikely this works if you’re here.
- Open the printer door with the grey latch. The paper is probably loosely coiled. Remove the roll and tighten the paper around the roll.
- Place roll back into the machine with the feeding side of the paper up. There is a diagram inside the door.
- Pull the feeder side of the paper out and close the door, making sure the roll stays well coiled.
- Check that the printer is working.
For anything else, refer to the printer manual.
- Make sure that the screen is turned on. It should be on by default when the power is on but there is a tiny “POWER” button on the thin mini-PCB board with buttons connected to the screen driver PCB board.
- Try switching the HDMI port the screen is connected to on the Raspberry Pi. There are two next to each other on the side of the Raspberry Pi.
- Check that the screen driver PCB board is connected to the screen, via the Flexible Flat Cable (FFC).
To reconnect the FFC to the screen driver PCB:
- Open the port by pushing the small grey FFC latches out, on either side of the FFC port on the screen driver.
- Insert the FFC into the port. If it doesn’t insert easily, make sure the latches are open.
- Close the FFC latches. You should hear an audible click as they snap shut.
- Pull the ATM away from the wall
- Grab the keyboard and mouse from the back, turning them back on.
- Stop the app:
Alt
+Cnrl
+T
to open a terminal window; runpkill chromium
- Shutdown the Raspberry Pi by pressing the green light button.
- Click Shutdown from the menu shown on the screen.
- Turn off the printer.
Under the hood, the ATM's interface is just a website. To get started:
- Run the ELT pipeline
- Spin up the backend
- Run the frontend
You're done!
This project includes also includes some undocumented EDA.
This project uses poetry to manage dependencies for the backend, ELT pipeline, and EDA. Make sure you have poetry installed.
GDAL and GEOS are dependencies of this project. Django has a great walkthrough for installing these dependencies which should work for this project.
Create a .env
file in the root directory with:
DEV=true
Contributions are most welcome! Please open a PR for small changes. For larger changes, please open an issue first so we can discuss.
This project is formatted with ruff using pre-commit hooks. Make sure pre-commit and ruff are intalled then run pre-commit install
in the root directory.
Test that the pre-commit hooks are working by running pre-commit run --all-files
.
This project was developed on an M1 MacBook Pro. I make no guarantees that it will work on your machine out-of-the-box. Poetry is designed to make cross-platform easy, though, so hopefully it does work! 😊
Have fun! If you liked this project, star it on shoot me a note on insta.