Here's the options I thought of (including repletion of what others have said):
1. E85001. The most straightforward approach but these things are much sought after on eBay: Expect to pay $100 or more
2. Raymarine plotters which do seatalk 1 and NMEA-0183 should bridge data for you. I have my C90W bridging my seatalk data to the raspberry pi. But I'm guessing you don't have such a plotter and buying
an old plotter to do the data bridging isn't cost, space, or power efficient.
3. Some of the old instruments will convert a subset of seatalk commands: The ST50+ multi for example. The subset of conversions they do may or may not be adequate for your needs. These instrument also seem to cost even more than the E85001 on eBay.
I don't know if Raymarine licensed seatalk to anyone else. I get the impression that non-Raymarine devices might have cribbed their data from Thomas Knauf's go-to seatalk site:
Thomas Knauf ¬*¬*¬*¬*SeaTalk Technical Reference
Note that the seatalk->NMEA conversion is not one to one: sometimes you have to assemble an NMEA sentence from several seatalk words and maybe some people's algorithms for doing that (is this the long that goes with that lat or did I miss one?) are not the same as Raymarine's. It probably doesn't matter too much. I might be a bit concerned about how well non-Raymarine vendors did the collision
management when writing nmea->seatalk. Doubtless many do just fine but I saw at least one open source arduino-based project
where there didn't appear to be collision
management at all.
but I digress...
There will be alternatives to the stuff below and I don't have personal experience of any of them other than exchanging a few emails
4. Frank Wallenwein has been selling converters for years: www.gadgetpool.de - Die Homepage
. Various to choose from including little compact ones: Possibly the closest "new" alternative to the E85001. Not super cheap
and not under $100 but not outrageous.
5. various people do nmea multiplexers which do seatalk conversion including brookhouse and shipmodul. vyacht has also been mentioned but these are "fatter" solutions than I believe the OP is really looking for
You could do bit banging with a microcontroller. Or build a circuit to invert the signal and change it to something your UARTs are happy to deal with. The use of the 9th bit to flag command bytes is not such a big deal where you have access to the parity bit but it's slightly more challenging from Linux
userspace if you don't want to stick a microcontroler between seatalk and the pi. You *can* do it though IF your serial
device allows you to set mark and space parity (set space parity, parity error means the 9th bit is set) and it actually flags
parity errors correctly (which a startech serial
to usb converter I was using didn't). I did play around with some seatalk-reading code with this technique and the Thomas Knauf circuit which did work but you can't write the collision management in linux
userspace so it would need to be read only. Note also that I understand there are better circuits around for doing seatalk to rs232
conversion than the one on Thomas Knauf's site but I don't have links and that one worked ok for me.