One of the most common comments I get when I show someone the Mr. Gibbs project is inevitably "where is the display?" Some disagree with me on the utility of just having the data & control on a watch. Fair criticism, and one I decided to finally act on.
When I set about building a mast mount display I wanted to stick to the core principles of the Mr. Gibbs project, namely low cost, commodity hardware, no wires and full modularity.
Additionally I wanted
- An extremely readable display, even in the brightest direct sunlight, roughly 6" in size.
- Self contained, with it's own battery
- Wireless or Bluetooth Connectivity
The display requirement renders LCDs and even OLED displays as non-starters. There are some insanely high nit displays that could work but they also have very demanding power requirements and high price tags. The next considerations were traditional LCD "segmented" displays which are very readable but given that I'm not producing bulk / custom parts I would be limited to off-the-shelf alphanumeric segments, and I wanted to get a little fancy eventually with graphics. This combined with color not being required made e-paper an obvious choice. I found an e-paper display and driver that fit the bill for ~$100 US. The addition of a microcontroller, battery, wifi module, and enclosure would put the total build at ~$150 (epaper+pi0w+2x 18650+case). It then occurred to me that I was re-inventing the wheel, this exists.
My next thought was to buy a refurbished Kindle, which at $50 during a woot deal certainly checks the cost-effective box. For an app my first draft was to simply host a web application on Gibbs and just point the web browser from the kindle to the Pi. There were a few problems with this approach. The browser "chrome" is always visible, the browser is dated, can't control the wifi for re connection, and the big one, it actually attempts to "phone home" to amazon for every page load because some processing is done in the cloud. These issues made me opt for a custom application to run on the kindle. The major problem with the kindle however is that it's not meant to run custom apps at all. You can do it, and I did, but the application development for it is pretty miserable. Constant crashes, horribly outdated api, and the constant threat that the next kindle update will wipe out your functionality.
Next I moved on the the nook, which at $37.95 again checked the cost effective box. The browser however turned out to be trash, and the antiquated Android version and weak CPU gave me about what one should expect for the price tag.
Finally I discovered the inkBook Classic. An unlocked android device with a street price of $79. Not quite the bargain that the refurb Kindle and Nook were, but unlocked android is a far, FAR better development proposition than the previous 2. I decided the time saved in development pain was easily worth $20-30. After plugging it in to my laptop I was stepping through debugging code on it with visual studio / xamarin in 5 minutes. Money well spent.
Obviously, none of these are waterproof. I knew I'd have to rectify this with a case & enclosure which I decided should be feasible.
Having been disillusioned with the mess that is bluetooth for a while now, I had committed mentally to adding wifi to Mr. Gibbs and using that when possible henceforth. I think that longer term Mr. Gibbs will simply become mostly a REST api and the plugins can interact that way. To do that however, I'd need to add wifi. It seems easy enough on the surface, just plug in a wifi dongle. The problem is the pi-zero only has 1 wifi port and it is currently occupied by a bluetooth adapter.
Problem solved! just buy a wifi+bluetooth adapter! Unfortunately however, most of the Bluetooth+Wifi adapters on the market don't support infrastructure mode which is necessary to create an Access Point.
My final solution was to simply add a tiny 2 port hub and plug in 2 dongles. Not elegant, but it works.
To actually set up the wifi AP I used the adafruit tutorial, minus the iptables parts since I wouldn't be routing anything.
Why would I not just use a Pi Zero 0 which has onboard Wifi and Bluetooth? Good question. I simply have not gotten around to figuring out how to get modern blueZ to play nicely with the onboard bluetooth on the Pi Zero. Some commentors have correctly pointed this out. My attempts included applying the raspbian patches to modern bluez but all ended in failure. For now, USB it is. Perhaps a winter project.
My "enclosure" grew a bit, but I decided that was OK in the short term.
With the Hardware pieces seemingly sorted, I skipped right past actually building working software and went straight to figuring out how to actually mount the device on the boat, which is an entire post itself.
Sneak Peak of the end result: