I decided to make two different portable computers with raspberry pi zero: one would have low-end user interface, perhaps low price and dimensions; another one with bigger display and keyboard, somehow resembling smaller laptop PC.
Project A is the smaller one. A lot of work has been done, but I couldn't find time to write logs here, so this is somehow retrospective description of how I did the design process. I also included some photos of prototype, to attract you to future logs ;-)
Project A, motivation
The project has to fit those constraints:
- raspberry pi zero as main processing unit
- at least 320x240 pixels LCD
- some form of keyboard and
- some form of pointing device to allow handheld use
- at least one USB 2.0 interface, with A type connector
- on/off switchable via single button, negligible current draw when off
- no touchscreens
- easy to source components
The last one is more difficult than it may look. Internet is not short of various displays and especially keyboard connected to all forms of whatever-pi class computers, but those are often gutted Chinese consumer items, like Xbox chatpad containing and PIC device back in the day, but nothing but asphalt blob on newer ones. While the difference is next to none for average consumer, it can be dealbreaker for open-source project, prepared for others folks to reproduce and build upon. So I want to build the thing using basic and obtainable components, available from multiple sources.
The main limiting factors for overall dimensions of the device is the size of user IO - display, keyboard, pointing device, so I have to choose those ones first.
For display I experimented with PAL/NTSC displays from Chinese sources, designed for parking camera in your car. While perhaps usable for its intended purpose, it doesn't fit very much the "availability point" above and the picture quality leaves a lot to be desired, not to mention the fact the analog/digital interface takes a lot of current, what is a problem for portable battery powered gadget. The only real option here is digital interface. Another usual suspect is HDMI, but the connector is bulky, interface takes a lot of valuable juice too and brings price higher. Those two options don't require any configuration nor programming, so being more hardware than software oriented guy, I have to resort for "more complicated" methods (though being quite easy, in fact). I took inspiration from #Portable Raspberry PI Zero and bought some ILI9341 TFTs.
I ended up having three different sizes - 2,2", 2,4" and 2,8", all being electrically the same. The 2,2" is most common and cheapest of the three. The former ones are somehow more expensive, but the size of display is IMHO good fit for this project, especially in 2,8" variant. I debugged the interface on Raspberry pi 3, easy to use for it's populated 0,1" header and Ethernet interface for headless access.
Keyboard is problem as usual. Calling @davedarko as reference for second time, I'm not the only one having this problem. See me reply in here for some more background info. Long story short, I decided to use the same keyboard as on my #Pavapro - portable AVR programmer project. It is available locally and through Asian suppliers and seems to be more-less jellybean part.
For pointing device, I opted for joystick, moving mouse cursor in similar way as pointing stick on some notebook computers. After a long search, I decided to use joystick designed to be replacement part of PSP1000 and others. While it is exception to the "availability rule", it is available in huge amounts from a lot of sources, including local ones, so - while not being particularly happy about it - I had to accept it as solution. It's dimensions and electric interface are well defined, so future replacements will be good fit too.
Having, the main parts identified, I had to arrange it somehow. I thought of three different variants:
1, Display on top, keyboard left and joystick right
Read more »