RP01

Moonshot RP01 LCD
T-Minus 10 — Deploy
T-Minus 0 — Launch
Guidance System — RP2350
Moonshot RP01 LCD



RP01 is an exploration of technical minimums in a time of maximalist technology. What might be possible with the least? RP01 is part of an ongoing interest in small board computers. Inspired by the Art Appliances made by John F. Simon Jr. in the early 2000s, I’ve been curious about accessible computation and the notion of art appliances, computer jewelry, and screens for your screens. I wanted to share my curiosity with you.

Brian Eno once said “the only interesting thing about computers is screensaver software.” RP01 is preloaded with a collection of apps that speak to the history of the screensaver. In 1983, when personal computers first became affordable and popular, John Socha wrote the first screensaver software to preserve the image quality of computer displays.

RP01 is powered by a Waveshare RP2350 1.28 inch LCD display. The RP2350 microcontroller chip was designed by Raspberry Pi in the United Kingdom. Plug it in to a USB-C power source and it runs by itself.

Features


- Automated rotation between animations
- Smooth backlight fade transitions
- Boot sequence with logo display
- Memory-efficient modular design
- Error recovery handling

Animations

01. DVD-01
Classic DVD-style bouncing Moonshot logo

02. Mystify  
A tribute to the classic Windows screensaver

03. Sum
Concentric circles with randomized colors

04. Lissajous
Lissajous curves with smooth frequency transitions

05. Starfield  
A tribute to the classic Windows screensaver

06. Toasters
A tribute to the 1-bit Macintosh After Dark 2.0 screensaver

07. DVD-02
Classic DVD-style bouncing stacked Moonshot logo

08. Rise
Color transitioning sunrise palettes

09. Moiré
Evolving interference patterns with dynamic colors

10. Eclipse
Moving eclipse effect with color changes

11. Clouds
A tribute to Super Mario Clouds by Cory Arcangel

12. SCRNSAVE
A homage to the first screensaver by John Socha in 1983

Animation Timing Control

- Each animation's duration is controlled through the animation_controller.py file
- Durations are specified in milliseconds in the AnimationController class:

self.animations = [
    ("DVD-01", run_dvd_01, 120000),
    ("Mystify", run_mystify, 120000),
    ("Sum", run_sum, 180000),
    ("Lissajous", run_lissajous, 180000),
    ("Starfield", run_starfield, 120000),
    ("Toasters", run_toasters, 120000),
    ("DVD-02", run_dvd_02, 120000),
    ("Rise", run_rise, 180000),
    ("Moire", run_moire, 180000),
    ("Eclipse", run_eclipse, 360000),
    ("Clouds", run_clouds, 180000),
    ("SCRNSAVE", run_scrnsave, 180000)
]

Customization

- Transition timing can be modified in animation_controller.py
- Color palettes can be customized in base_colors.py
- New animations can be added by following the existing pattern:
  1. Create new animation file
  2. Add to animation_controller.py sequence
  3. Follow timing/transition conventions

Development

To add a new animation:
1. Create new file your_animation.py
2. Implement run_animation(lcd, duration_ms=180000)
3. Add to AnimationController.animations list
4. Test independently before adding to sequence

Troubleshooting

- Black screen: Check pin connections and power
- No animations: Verify all files are present
- Memory errors: Reduce active animation count
- Display glitches: Check SPI connections

Error Recovery

The system includes:
- Clean shutdown on Ctrl+C
- Error handling for display issues
- Automatic sequence continuation

Performance Notes

- Each animation runs for 3 minutes by default
- Smooth 60fps target for transitions
- Memory-efficient buffer usage
- Optimized drawing routines

Contributing

Feel free to:
- Add new animations
- Optimize existing code
- Improve transitions
- Report issues

MIT License

Copyright © 2024 Duane King

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Credits

- Original LCD driver by Waveshare Electronics
- Animations and system design by Duane King
- All rights reserved, all wrongs reversed