Thanks for your work on this project!
Yeah, unfortunately it probably will be. Playing with it to get familiar is a good idea. It would be worth it to build a tiny UI prototype just so you know how the thing behaves.Oh, it's going to be an enormous amount of work.
@eorange thanks for the pygame suggestion. It's really powerful.My thoughts on architecture choices. This is by no means exhaustive or comprehensive; these are introductory high-level concepts:
Microcontroller-based (Arduino & similar controllers)
Pro
Con
- No operating system overhead
- Straightforward implementation
- Better performance
Operating System-based (Raspberry Pi)
- Less language support for helper libraries
- Monolithic solution (i.e. 1 big file) impedes collaboration
- Limited memory for software; could be an issue for complex solution
Pro
Con
- Full Support for Python and similar languages = easier to develop & collaborate (github)
- Virtually unlimited storage compared to microcontrollers (think logging, etc)
- Easy hardware support (filesystems, wifi, BT)
All that said, I agree the Armadillo is the next best step. The issue of smart displays (Nextion with the ability to do easily crank out UIs at the expense of RFI due to more processing on the board) vs dumb displays (simple bit-mapped which requires more code but requires less processing and therefore less RFI) is also a factor.
- Operating system know-how (updates & patches, installing packages, file permissions)
- Yanking power without graceful shutdown can cause problems
The only thing that is a potential gotcha for the Armadillo is touch-screen support at a programming level. IF you go with Python and IF you choose to use PyGame as your UI library...there's a longstanding issue where PyGame cannot accurately report the (x,y) of the touch. See this post by me: Uniden Remote Head Project
I'll have to check which version if PyGame I'm running, and if it's fixed in PyGame 2.0. That would be great.
PyGame is a solid library for graphics and games (collision detection, cameras, scrolling, etc), but honestly it's overkill for a remote head application. It would be nice if there was a simpler graphics library for Python that supported touchscreen, fonts, and simple graphics.
It's on a regular pi with raspbian and a 7" display. I haven't tried it on the armadillo yet. It uses a Debian based OS but hopefully will work the same.@mancow Good to hear! Yeah, pygame is a pretty good library. I haven't done serial using python yet. My python code for my ads-b scanner and remote uses UDP sockets for all comms. But I know what you mean; the only serial library I've used that's solid is the one in the .NET framework. Everything else always seems to have a compromise.
The nice thing about working with a library like PyGame is you can create function libraries (better yet, classes) to simplify your display.
Good progress and glad you're touchscreen code is working. So refresh my memory....this is the Armadillo? Can you tell me which version of the Raspbian OS you're using, and, which version of PyGame? I'd really like to finish my ads-b remote but I'm stuck with no touchscreen support.
cat /etc/os-release
pip3 show pygame
pip2 show pygame
pip show pygame
1;Ah yes, that display. I kinda forgot about that one as I've been focusing on the Adafruit displays that are the same size as the Pi and plug right on. Maybe I'll look at this one for my remote head. It's bigger anyway which is a plus.
Ok, 3 questions. These will help me figure out the gap with PyGame not supporting touch on my display.
1. What version of Raspbian are you running? Issue this command:
cat /etc/os-release
2. What version of PyGame are you running? PyGame is managed by pip, which is the python package installer. There are a couple versions of pip. Issue these commands in succession until you get a result:
pip3 show pygame pip2 show pygame pip show pygame
3. Does your Pi boot to the graphical desktop, or does it boot to the command line? I am pretty sure this might be the difference. I installed the command-line only version of Raspbian; the desktop version has the proper touch drivers.