Thursday, May 12, 2016

More on the Lowrance Elite 7 Ti

I guess I'll start out with the undocumented web browser interface I found. If you use a device that supports WiFi and web browsing then you can access this webpage. First pair up your device via WiFi like you do when using it with the Android or Apple Lowrance Go Free App. Then start up a web browser and type in the IP address of your unit. You should then get a page that looks like this:


The upper section is for uploading and downloading your Waypoints. Routes, and Trials USR file which resides in a protected area of storage. If you click the download button you end up with this:


This allows wireless transfers of this file directly to your device of choice instead of transferring it to an SD card and transferring it from the SD card to your device .... sweet

Basically these units are set up just like a smart phone or tablet. It runs Embedded Linux for ARM CPU's as it's core OS just like Android does, Also like Android, Lowrance has it's own custom GUI which gives it it's character but the hardware and storage memory is all controlled by the Linux OS. So just like an "Unrooted" or "Unlocked" phone or tablet the OS'es core file storage is protected from user access and you have a "home" directory that allows access to a small portion of storage for logging files, custom wallpaper, downloads from the Go Free website, etc. That's what the Logs section gives you access to. It's basically a simple FTP file server and when you click the "Logs" link you can see it's an FTP port. You can also access it via a FTP program by typing in the same IP address you used before and enter 21 as the port


Those folders are where you can download (or upload with a FTP program) your Sonar logs files and AIS files for those who have that addition to their system. If you click the parent-directory link it takes you up to the userdata folder which looks like this:


This gives you access to additional folders of interest like screenshots. Here's a little tip on how this undocumented feature can be used to many people's advantage. I can take a screen shot of something interesting I see on the finder. and then access it via my smartphone's web browser and then transfer the screen shot to Google + or Facebook or any other place you upload pictures. No messing around with transferring stuff to a micro SD card and then to my phone or tablet which is still tricky depending on the device. 
If you go up one more to the pseudo-root directory (Really a user's Home directory root) all you see is a folder marked 'userdata' but if you have an SD card plugged in you see this:

For some reason only known to a Lowrance engineer (or perhaps an oversight) it always displays 0 bytes for the SD card but you can click on it and access the files. I haven't tried it yet but theoretically I could delete a map and upload a new one via FTP and have a new map. I suspect I'll have to unplug and replug in the card to get it to read it though. Still that's a lot easier than fumbling around with a bunch of micro SD cards in a rocking boat ...... in the wind .... possibly raining .... etc.


As far as I know I'm the first to find this undocumented feature and the first to document it in detail. It does raise some interesting possibilities. I have a Nexus 7 2013 (Still one of the brightest LCD's out there) which I will use to display and control the Elite Ti remotely and I use a file manager program called ES File Manager and it has an FTP client built in so I can store scan logs, and maps on the Nexus 7 and transfer them back and forth to the Elite Ti with a few swipes of a finger. How cool is that?
As I mentioned in the previous post using the internal GPS for map making creates a sizeable error in the data so I reworked the NMEA multiplexer/GPS/logger I made last year to act as just a GPS with multiple outputs. I also reprogrammed the GPS to send all the messages the Elite Ti does such as $GPZDA which is just date and time but is apparently used by the Elite Ti to set the date and time on the unit. Because the Arduino's are fairly slow (16MHz) and the way they transfer data to an SD card I had to limit the data to 1 Hz but my unit is capable of 5 Hz so I reprogrammed the GPS for the faster rate. The output of the GPS module goes to one of the UARTS on the Arduino Mega and also to the same RS232 converter I used before only reversed, it's now an output instead of an input for a finder. I send that to the Elite Ti's NMEA 0183 input and the Elite Ti picks it up automatically and uses it instead of the internal GPS, no muss no fuss. The GPS data is sent to the Mega and output to the USB port and to a Bluetooth Radio so it can still be used without the finder. Here's a couple of shots of the reworked unit. I also upped the baud rate to 38400 which is the same 'official' baud rate for AIS (I plan on whipping up a little AIS receiver in the near future to monitor barge traffic when I'm fishing the Mississippi River) 



  The cost on this was a wash, basically the new parts cost about the same as the parts I removed and will use in another project. 
Initially frustrated by not having the NMEA 0183 data bridge over to the Wifi I decided I was going to try to make my own using the NMEA 0183 RS-422 outputs. Just a note, although I used the existing RS-232 converter to drive the RS-422 inputs I wouldn't recommend that with the outputs. If you ground one of the differential inputs (I used only one input and ground to ground) it may or may not work but you won't hurt anything, however grounding one of the outputs is a different story. Outputs without a load (grounded) tend to go up in smoke and even though the Lowrance likely has opto-isolated I/O it's still not a good idea. Besides getting the proper RS-422/485 to TTL (0-5V) converter is about the same price. I got mine from Fasttech.com out of Hong Kong for $1.10 
About a year ago I came across a neat little device designed by a Chinese manufacturer that looked very promising based on their ESP8266 WIFi IC. At the time people were still trying to translate the Chinese only data sheet and were hooking them to Arduino's and programming them via AT modem codes ( it has a 32 bit processor core and 512k -1Mb eeprom but no one knew how to program it until the English datasheets came out) The manufacturer released official datasheets in English last summer and development really took off so I figured someone had tried something like this even if it was for WiFi control of a different RS-232/422/485 device. So I headed up to the best place I know for info on the ESP8266 www.esp8266.com (of course)  And there I found this neat little project that was just what the doctored order .... I hate having to "redesign the wheel"  which is what I love about Open Source. So most of the following is credited to KB7KMO Larry Littlefield who is on a boat somewhere in the Pacific I guess. You can find more details on his version on his blog .

I made some minor changes to Larry's original design. First I dropped the switches because I likely won't need to reprogram the unit and if I do I can just tack in temporary jumpers. I set up my circuit on a breadboard first and programmed everything and verified it's operation and then mounted everything to a prototyping PC board. Larry used a single transistor circuit (shrewd) to convert the bi-polar higher voltage RS-232 signal to 3.3V logic levels. RS-232 signals also need to be 'inverted' since -12v is a logic high and +12v logic low which this single transistor converter does just fine (Converting from 3.3v or 5v to -12v to +12v RS-232 levels is a little trickier) The speeds are slow enough that about any General Purpose NPN transistor can be used here. However in my case I'm using a RS422/485 to TTL (5v) converter but I still need to convert the 5v TTL levels down to the 3.3v levels the ESP8266 needs. I could use Larry's single transistor circuit to do that except it inverts the signal and I don't want that. Now I could use a series current limiting resistor and hope the ESP8266 has "Clamping Diodes" to protect the inputs (It likely does) or I could make a simple 2 resistor voltage divider but the big downside to that is as the frequency goes up (higher baud rate) the capacitance in the circuit and input capacitance of the EPS8266 and the resistors starts to act as a lowpass filter which 'rounds off' the corners of your square wave signal which is never good for reliability. So I modified Larry's single transistor converter so it wouldn't invert the signal. All you really have to do to accomplish that is take out the NPN and use a PNP instead and change the configuration from Larry's common emitter setup to a common collector setup. I also changed the value of the pull-up resistors from 4.7k to 3.9k since I have a lot more of them and the value used isn't all that critical anything from 2.2k to 10k will probably work fine. It's a good place to use more uncommon values that you usually have more of left over from that last resistor assortment you bought. 5.1k is another good 'uncommon' value to use and pull-up resistors are a good place to use up some of those more uncommon values you have piling up since the value isn't all that critical, the next closest value will work just fine in most circuits. Anyways here is my version built on a slightly used Radio Shack prototype PCB (I really miss being able to drive 5 minutes and get stuff like this at a Radio Shack)





At the top is the ESP-01 WiFi module and the RS-422/485 to TTL converter. Below the ESP-01 is the PNP level converter transistor and the upside down module is a 3.3V LDO voltage regulator module.



One addition not shown is I added a pair of screw terminals like on the RS-422 board for the power leads in the open area of the PCB. I'll use some 2 twisted pair plus drain shielded data cable that I have but an old USB cable should work just as well in this instance (Don't toss those bad USB cords, cut off the ends and use the cable in your projects). Here it is mounted in a enclosure I made on my 3D printer (I love that thing)




Costs;
ESP-01 module - $3.15
RS-422/485 converter - $1.10
3.3V Regulator module - $0.85
2N3906 Transistor and resistors - $0.10
3mm hardware - ~$1.00 (I buy in bulk)
3D printed enclosure - $0.40
Total - $5.60

I'll make another post on how I set up a NMEA network on my Windows tablet which I set up as a hotspot/router that I can also access with my Android devices and grab the NMEA depth and position data from the Elite 7 Ti. 

6 comments:

Larry Littlefield said...

Very nice implementation. Thanks for the credits.

Aleksandrs Bebrišs said...

Pleas make donate button. :)

Long John said...

Credit where credit is due Larry, you did most of the heavy lifting. I'm sure I would have come up with a working implementation but not without hours of extra work

Long John said...

Although I do appreciate the offer Aleksandrs I'm not really looking for money here. Anyway wouldn't you rather spend the money on that new rod and reel you've been eyeing? (C'mon, you aren't going to convince me that Russian fishermen are any different than American fishermen so I know you have your eye on one)

What I am looking for here is to inspire people to create their own things, to take my ideas and build on them like I did with Larry's ideas and like he did with ideas he got from Forward Computing and Control. That's the beauty of Open Source .... The beauty of the Internet is we can interact and trade ideas despite being thousands of miles apart

Ting T3ng said...

Hi, is it can i change the WIFI module to usb? Coz i hope to direct insert my broadband direct transmit the data to server, since im a newbie for this, i dont know how it really work, hope sir can give some ideal about this

Long John said...

I assume you mean the NMEA output of the Lowrance Elite Ti?

If so yes you can do that, you would use the RS-485 converter but instead of sending it to the WiFi module you would send it to a Serial TTL to USB converter which can be found for just a few dollars on eBay or many other places online

Lowrance NMEA output ----> RS-485 converter ----> USB converter ----> computer of choice

There is essentially no programming necessary, just hook the modules togehter correctly and you should be good