|Python WIFI NMEA server on TomatoUSB router with Nook Display|
|Web Server on ASUS Wifi Router|
|Nook Simple Touch Display|
- I wrote a python script that acts as a web-server to display any incoming NMEA 0183 data on (almost) any browser, and some example web pages to show how it can work. This can run on many different types of computers.
- I modified an off-the-shelf wireless router (ASUS RT-N16) to run the NMEA data server while maintaining all router functions (if you want them)
- I rooted a Nook Simple Touch to make an awesome daylight display of NMEA data while still using it as an e-reader when not sailing.
- I also wrote an arduino program to create fake NMEA 0183 data for testing (and to conform to www.hackaday.com standards)
- Very little hardware modifications, mostly software hacks.
I was motivated to put NMEA 0183 info on a wifi web server to use an E-Ink display as a data repeater sailboat instrument.
E-ink displays are really nice for viewing in the sun, as anyone with a black and white kindle or nook can confirm. As a low-power screen, I thought they might be good for boat instrumentation displays. The only drawback is that the refresh-rate for E-Ink displays is pretty slow. But too slow? I cooked up a web page to test using the browser in a kindle I had. I adjusted the refresh-rate and was able to confirm that once per second was fine. Try it yourself: open this link on your e-reader's browser (doesn't work with MS Internet Explorer, but firefox is good).
So, I want one. But how? E-Ink modules are around, but expensive and hard to prototype with. E-Ink readers are cheap and available, but perhaps hard to hack. Taking a cue from my experiment with screen refresh rate, I decided to implement a wireless NMEA server. My first goal was to display boat speed and depth on a mast-mounted display for my boat Firebolt. As a bonus, anyone with a wifi browser (iphone, etc) can read the instruments too.
My first attempt at a NMEA server used wifi modules and microcontrollers, but I broke the wifi module. While waiting for more parts to come, I wrote a python script to do the job, and tested it on my laptop. I then hacked a wifi router I had in my parts box to serve the data. It still runs all the wifi functions too, so if you need a router on your boat you might as well add the NMEA server to it, right? This is an all-software project, so no tools are required, but I will admit that some of the modifications are pretty confusing. Use your google skills and learn some linux basics and you will be fine.
The nook simple touch just needs to be rooted so you can run opera mobile on it to get to the server.
If any of this turns out to be too difficult for you, I'm available for consulting on your installation at very reasonable rates!
Here is a picture of the whole system:
AUS rt-n16 Router running the webserver,
Arduino providing simulated NMEA 0183 data over USB-RS232 cable
Browsers displaying data
- ASUS RT-N16 router.
- USB memory stick
- FTDI USB-Serial cable (I used this one: USB-RS232-WE-1800-BT_5.0).
- Nook Simple Touch