Seatalk Autopilot Remote Control
This repository shows how to build a Seatalk Autopilot Remote Control device based on an Arduino Pro Micro and a simple 433 MHz KeyFob. It has been tested successfully with different Raymarine autopilots.
My special thanks to users of www.segeln-forum.de for testing.
The circuit diagram and the PCB layout are shown in the hardware section of this repository.
I made the PCB available at aisler.net (https://aisler.net/p/LCDCUVMF). Minimum number is three pieces for about 24 EUR. So it makes sense to buy once and share with others interested in the remote control.
The circuit implements mainly an interface between the Seatalk bus (12 Volt) and the Arduino (5 Volt). The easiest way was to use the 74LS07 open collector driver device. This is much easier than most of the other implementations I have seen so far. The PCB also contains the voltage regulator (12-14 Volt from Seatalk bus to 5 Volt for the Arduino) and a 433 MHz receiver. Please select/buy the right ProMicro device (5 Volt). There are also 3.3 Volt devices available. But the 3.3 Volt devices will not work.
Please also select a high quality receiver which fits to the PCB design (RXB6, Superhet). As antenna please use a short wire (e.g. 17,3 cm).
The PCB also allows the connection of a standard OLED device (SSD1306) to show the current apparent wind speed. But this is optional.
The voltage regulator (7805) may get quite hot (90 mA * 9 Volt = 0,81 Watt). This is usually not a problem, because it within the specification of the 7805 (< 1,4 Watt).
An alternative which is not getting hot is the following replacement which has the same pin layout as the 7805: https://www.digikey.de/product-detail/en/w-rth-elektronik/173950578/732-8243-5-ND/5725367?cur=EUR&lang=en
A standard 4 button 433 MHz KeyFob is used to send (+1 / -1 degree) and (+10 / -10 degrees) course changes to the autopilot. The used Seatalk codes are derived from Thomas Knauf (http://www.thomasknauf.de/rap/seatalk2.htm ). Many thanks for this excellent piece of work.
The software is sending a beep to the Raymarine devices (Seatalk alarm function). This helps to get a feedback regarding the recognition of of a pressed key. The LED on the PCB blinks in addition if keys are successfully recognised. This should also help with trouble shooting. It is also possible to connect an active 5 Volt buzzer to pin 20 (A2) and GND of the ProMicro.
Since version 1.1 it supports now also Auto and Standby remote control. You have to use a 6 button KeyFob or an additional 2 or 4 button remote for controling Auto/Standby function.
Caution: Lighthouse III does not react on Seatalk Alarm
MFDs with Lighthose II will react on the Seatalk alarm function with a short beep. Unfortunately, Lighthouse III is ignoring this alarm. If you prefer to use Lighthouse III then please connect an additonal buzzer to pin 20 of the ProMicro.
The Seatalk communication is a 9 bit serial protocol. This is not directly supported from Arduino. But I found a working 9 bit hardware serial implementation. For convenience, I have added the working source code here, because there are different versions available (in github and elsewhere).
Caution: The 9 bit hardware serial implementaion is depending on the version of the Ardunio IDE and the ProMicro board information. IDE 1.6.13 and board version 1.6.15 are working with the files in "NewHWSworking". Later versions (e.g. 1.8.10) changed the hardware serial implementation and the 9 bit changes will work work with files in "HardwareSerial9bit".
For newer IDE versions the three files from "HardwareSerial9bit" (or "NewHWSworking" for older IDE) have to be copied into the Arduino directory on your local PC e.g.: "C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino".
As Arduino board for the ProMicro you can either use the standard Arduino "Leonardo" board information or the ProMicro SparkFun implementation: https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide . Both will work.
Make sure that you install the ProMicro Board Addon using the Board Manager as described in the hookup guide: https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide#windows_boardaddon
The software is using several additional Arduino libraries (RCSwitch, Adafruit_GFX, Adafruit_SSD1306). These libraries have to be downloaded and installed. The easiest way is to add the libraries with the IDE Library Manager.
Programming the 433 MHz KeyFob
You should change the four codes in the software to individual random numbers. The same codes have to be copied to the "_433_Programming_New.ino". Only for programming you will also need a 433 MHz sender connected to the ProMicro. I used a ProMicro on a "bread board" to program the codes.
Send each code individually and programm the keys of the remote according to the programming description of your KeyFob. Press "Send" button in serial console for next key.
Key 1 = button A = -1 degree
Key 2 = button B = +0 degree
Key 3 = button C = -10 degrees
Key 4 = button D = +10 degrees
If you use Auto/Standby function you also have to program the two additional buttons accordingly. After programming you can check directly if codes are programmed correctly. Just press the key on the remote and check if the shown value is correct.
Have fun with the remote control.
Please be aware that this repository is only for educational purpose, to learn how to use the Seatalk protocol. Use it on your own risk and do not use it for critical systems in real life environments.
- J1 Connector, AKL 101-03, 3-pin, 5,08 mm Link
- J2 RXB6 433 Mhz receiver Link
- J4 Arduino ProMicro, 5 Volt Link
- U1 7805 (alternative: 173950578 MagI3C DC-DC Power Module) Link or Link2
- U2 7407N (alternative: 74LS07) Link or Link
- D1 Zenerdiode 5,1 Volt (0,5 Watt) Link
- D2 LED, rot, 3 mm Link
- R1,R5 Resistor 10 KOhm, 1/4 watt Link
- R2 Resistor 68 KOhm, 1/4 watt Link
- R3 Resistor 27 KOhm, 1/4 watt Link
- R4 Resistor 270 Ohm, 1/4 watt Link
- Version 1.4 - 27.07.20: Use of millis() funtion to avoid delay() and timer counter in loop(). Improved detection of 433MHz keys.
- Version 1.3 - 13.12.19: Added definition for certain OLED displays that require this to work properly.
- Version 1.2 - 21.09.19: Added buzzer support on pin 20 (active 5 Volt buzzer works without additional transitor).
- Version 1.1 - 03.08.19: Added support for Auto and Standby (Key 5 and 6).
- Added new programming code (_433_Programming_New.ino) to simplify programming of KeyFob without recompiling and upload for each key.