Wir wollten unseren alten Garminplotter durch ein Tablet mit Navionics (Mittlerweile Sailgrip WR) ersetzen, da wir hier nur ein Zehntel des Preises für die Karten und Gerät zahlen müssen. Um unser Garmin ersetzen zu können, brauchten wir größere Geräte als unsere Handys, deshalb haben wir uns zwei günstige Blackview Tab 11 SE Tablets gekauft und dort Navionics installiert. Für unser Navigationssystem war uns wichtig ein hochgenaues GPS und AIS zu haben, um auch in engen oder unübersichtlich Stellen, sicher navigieren zu können. Wir hatten bereits eine AIS Antenne mit eigenem GPS, und diese wollten wir jetzt relativ schnell und günstig in Navionics einbinden.
Um die AIS Antenne und Navionics verbinden zu können, brauchen wir eine Schnittstellte. Wir haben uns für einen ESP32 Board entschieden. Unsere Version (DOIT ESP32 DEVKIT V1) verfügt beispielsweise schon über WLAN und war damit perfekt für die Aufgabe geeignet. Um NMEA 0183 Daten ins WLAN zu übertragen, mussten wir erstmal die Spannung der NMEA 0183 Verbindung von 5 auf 3 Volt reduzieren. Das ging recht einfach mit zwei Widerständen, die in Reihe geschaltet wurden, um einen Spannungsteiler zu bilden, der größere Widerstand wurde dabei parallel zum ESP 32 geschaltet.
Falls jemand mit dem ESP32 Board noch nicht so bewandert ist, hier noch zwei gute Links mit weiteren Informationen:
Dabei wird das ausgehende Kabel unserer AIS Box (Transmitter), mit Plus an den 2,2 KΩ Widerstand angeschlossen, der wiederum an den RX2 Pin und 3,3 KΩ Widerstand angeschlossen ist. Ground des ESP ist dabei mit dem anderen Ende vom 3,3KΩ Widerstand verbunden und außerdem mit dem Minus - Transmitterkabel unserer AIS Box. Jetzt mussten wir nur noch den Code unten auf der Seite aufspielen und die Baudrate anpassen.
Damit das ESP-Board gut geschützt auf dem Boot ist haben wir noch eine 3D-Box mit Hilfe von FreeCad erstellt. Diese haben wir dann ausgedruckt und aus Plexiglas durchsichtige Scheiben für die Fronten gefräst. So sieht die Box jetzt aus.
Und hier kann man die Box downloaden.
Als nächstes muss man Arduino IDE Installieren und den ESP 32 Hinzufügen.
Dann muss man den untenstehenden Code kopieren und in Arduino DIE einfügen. Da kann man jetzt alle Parameter so anpassen wie man es braucht. Die wichtigsten Einstellungen sind:
const int nmeaBaudRate = 38400
Hier bestimmt ihr die Baudrate, vorstellbar als die Geschwindigkeit, in der eure Geräte miteinander sprechen. Die muss auf eurem NMEA-Netzwerk und dem ESP 32 gleich sein. In der Regel arbeitet NMEA 0183 mit einer Baudrate von 38400 oder 4800, selten aber auch mit 9600. Falls ihr nicht wisst welche Baudrate bei euch verwendet wird, einfach mal die drei durchprobieren, bis die Daten auf dem Serial-Monitor lesbar sind, mehr dazu später.
const char* ssid = "wifi_name”;
Das bestimmt den Namen des Wlan-Netzwerkes, mit welchem ihr euch später verbinden könnt.
const char* password = "meinpasswort"
Hier könnt ihr das Passwort für das Wlan-Netzwerk festlegen.
ESP32 Code
// ESP32 Code
#include <WiFi.h>
#include <WiFiClient.h>
const char* ssid = "wlan_name"; // WLAN Name
const char* password = "meinpasswort"; // Passwort für den Access Point
const int serverPort = 1234; // Port für die Verbindung
const int MAX_CLIENTS = 10; // Maximalanzahl der Clients
// NMEA 0183 Daten
const int nmeaBaudRate = 38400;
const int nmeaRxPin = 16;
const int nmeaTxPin = 17;
// NMEA 0183 Serielle Verbindung
HardwareSerial nmeaSerial(1); // Serieller Port 1 am ESP32
WiFiServer server(serverPort); // Server-Objekt erstellen
WiFiClient clients[MAX_CLIENTS]; // Array für Client-Verbindungen
void setup() {
// Serielle Verbindung für Debugging
Serial.begin(115200);
// Access Point erstellen
WiFi.softAP(ssid, password);
// IP-Adresse des Access Points abrufen
IPAddress apIP = WiFi.softAPIP();
Serial.print("Access Point IP-Adresse: ");
Serial.println(apIP);
// WLAN Server starten
server.begin();
// NMEA 0183 serielle Verbindung konfigurieren
nmeaSerial.begin(nmeaBaudRate, SERIAL_8N1, nmeaRxPin, nmeaTxPin);
}
void loop() {
// Neue Client-Verbindungen akzeptieren
WiFiClient newClient = server.available();
if (newClient) {
for (int i = 0; i < MAX_CLIENTS; i++) {
if (!clients[i]) {
clients[i] = newClient;
Serial.print("Neuer Client ");
Serial.print(i);
Serial.println(" verbunden.");
break;
}
}
}
// NMEA-Daten vom AIS-Antenne lesen und an alle Clients senden
if (nmeaSerial.available()) {
String nmeaString = nmeaSerial.readStringUntil('\n');
for (int i = 0; i < MAX_CLIENTS; i++) {
if (clients[i] && clients[i].connected()) {
clients[i].print(nmeaString);
}
}
// NMEA-Daten auf dem seriellen Monitor anzeigen
Serial.print("Empfangene NMEA-Daten: ");
Serial.println(nmeaString);
}
}
Jetzt muss man den ESP 32 nur noch mit einem USB kabel mit dem Computer verbinden, seinen ESP 32 auswählen und den code installieren. wie das geht sieht man in folgender Bilderstrecke.
1. Klickt auf Select Board
2. Klckt auf Unknown
3. Sucht euer Board, in unserem Fall DOIT ESP32 DEVKIT V1
4. Drückt auf den Pfeil um das installieren der software zu starten.
Jetzt müsst ihr euer Mobilgerät nur noch mit dem ESP verbinden. wählt euch dafür in das Wlan-Netz ein und geht dann in die Software in der ihr eure daten übertragen möchtet, hier am beispiel von Navionics erklärt.
1. Drückt auf menü
2. Wählt verbundene geräte
3. Wählt gerät hinzufügen
4. Namen könnt ihr frei wählen.
Als host müsst ihr 192.168.4.1 eingeben
Als Port Number 1234
Drückt auf save.
Jetzt sollten die AIS Daten an euer Mobilgerät gesendet werden. sollte das nicht der fall sein habt ihr wahrscheinlich die falsche Baudrate. In diesem fall probiert es nochmal den code mit 4800 Baud und danach mit 9600 Baud aufzuspielen.