cell-wall
cell-wall copied to clipboard
A multi-device display for showing interactive data, such as photos, weather information, calendar appointments, and more.
CellWall
A multi-device display for showing interactive data, such as photos, weather information, calendar appointments, and more.
CellWall is my project to repurpose a batch of old hand-me-down cell phones into a useful display in my apartment. It uses ADB to let each phone connect to a server and receive data about what to show.
Putting the hardware together
The hardware boils down to a bunch of cell phones stuck onto a plank of wood, with USB cables connecting them to a server. A detailed run-through is coming soon.
Parts list
Wood plank (the "Wall")
- Plywood handy panel
- White acrylic paint
- Paint brush
- Sandpaper
- Tools to mount the plank onto your wall, such as:
- Command Strips for an apartment
- Wood screws for a house.
Mounting and connecting the phones (the "Cell"s)
- Old cell phones and/or tablets running Android
- Raspberry Pi or another computer to use as the server
- Velcro strips
- USB cables
- Wire clips
- USB hub
Note that most of these links are affiliate links for Amazon. As an Amazon Associate I earn from qualifying purchases. Using these links helps out the project!
Using the software
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Prerequisites
- Node.js 16 or greater
- pnpm
- Android Studio 4.1 or greater
- Android Debug Bridge
Installing dependencies
Install Node dependencies for the server:
pnpm install
Install Gradle dependencies for the client by opening the ./android
folder as
an Android Studio project and syncing Gradle.
Alternatively, from the command line:
cd ./android
gradlew build
Development
Test locally in development environment by spinning up two servers: client & server.
pnpm run dev --filter server
pnpm run dev --filter client
Deployment
The server communicates with phones over ADB. ADB should be installed and the phones should be in debug mode. Check that all phones appear when running adb devices
.
Run the server by compiling the TypeScript code and launching it with node:
pnpm run build -r
pnpm start -w
A production build is available on the pi-deploy
branch. It can be started by running:
pnpm install --frozen-lockfile --prod
node javascript/server/build/index.js
Environment variables
Some paths and API keys are set via environment variables. The project uses dotenv
, so an .env
file will automatically be loaded by the server.
See env.ts for a list of environment variables.
Built with
- SveleteKit - Client code
- Fastify - Web server
- ADB - Communication from server to phones
- Android Architecture Components - Used for MVVM architecture on client