(TECHNICAL) How the screens will interface with the phone

A project log for Open Source Minimalist Phone

A modern, minimalist device that doesn't break the bank.

Johnny SteneJohnny Stene 12/29/2020 at 14:520 Comments

One issue I've had is that writing screen drivers is kind of difficult - I need to be able to tell the screen what to do, and store fonts, graphics, etc...

There are already Arduino libraries for tons of displays, but I want arcticOS to be more modular, and having screens require Arduino libraries would immediately break them for something that isn't compatible with some random library.

Plus, fonts and graphics take up space! In the ATMega chips, program memory and RAM are at a premium. When I tried adding some Arduino libraries to arcticOS (for testing, not for release) my program memory usage shot up from 30% to around 80%, and my RAM was left with less than 200 bytes.

My solution? Create a standardized screen communication protocol and have a separate board to store fonts and graphics, and handle drawing to the screen. The board will be based on an Arduino Nano (but could be replaced with a Nano for any DIY projects) and shouldn't add too much to the cost. Plus, having a standardized pinout means that screens can be upgraded on phones without needing a new motherboard to interface with the new display. Plus, if I write the UI code properly, it should detect and scale to the new screen without even needing a reflash!

The new protocol will work over I2C, but I haven't figured out the exact bytes that need to be sent yet. Stay tuned!