Archiv der Kategorie: Arduino

AIS Daten vom Cypho-150 Empfänger im Arduino live einlesen und die MMSI ausgeben

Hier werden die AIS Daten von meinem AMEC Cypho-150 AIS Empfänger eingelesen und die MMSI wird ausgegeben.

Die NMEA0183 Ausgangsleitungen vom Cypho-150 sind gelb + und grün – , wie im Handbuch angegeben.

Zur NMEA0183 > UART Pegel Wandlung nehme ich den MAX232 Chip.
Der NMEA0183 Eingang+ ist Pin 8 (R2IN) und der UART Ausgang ist Pin 9 (R2OUT). Dieser kommt an den Arduino Uno RX Eingang.
Der NMEA0183 Eingang- kommt auf den GND vom MAX232 und vom Arduino. Weiterlesen

Eine 7-Segment Anzeige direkt vom Arduino ansteuern

Die 7-Segmentanzeige soll direkt vom Arduino Uno angesteuert werden.

Dazu werden die einzelnen Segmente jeweils mit einem 200 Ohm Widerstand an die digitalen Ausgänge D2 bis D9 des Arduino angeschlossen.

Die 7-Segment Anzeige besteht aus 7 Dioden a-g und einer Diode für den Punkt h. Die Segmente sind so angeordnet:

7 Segmente

Die einzelnen Segment werden mit je einem 200 Ohm Widerstand an die folgenden digitalen Ausgänge des Arduino angeschlossen: Weiterlesen

Arduino DCCduino Nano USB Treiber installieren für den CH340 USB Chip.

Ich habe einen neuen Arduino Nano Clon bekommen. Es ist ein DCCduino NANO. Dieser hat keinen standard FTDI USB Chip auf dem Board, sondern den Chinesischen CH340 USB Chip.

Nach einigen Fehlversuchen bin ich dann auf den richtigen Treiber gestossen.

Den passenden DCCduino USB Treiber dazu gibt es hier. (Rechts-Click > Ziel speichern unter…)

von Matthias Busse

Distanz und Peilung zwischen 2 Positionen berechnen

Die Entfernung und die Peilung sollen von Position 1 (Länge / Breite) zu Position 2 (Länge / Breite) berechnet werden. Dabei werden beide Positionen in Grad mit Kommastellen eingegeben. Die Software soll auf dem Arduino laufen.

Die Distanz wird in m und sm (Seemeilen) ausgegeben, die Peilung in Grad 0….359 Grad. Weiterlesen

AIS VDM Datensatz Decoder mit dem Arduino Uno

Marine AIS Empfänger und Transponder geben über den NMEA0183 Ausgang die AIS Informationen im !AIVDM Datensatz aus. Diese Informationen sind 6-Bit codiert und können aus dem Datensatz extrahiert werden.

Ich verwende hier für erste Versuche zur Decodierung den Arduino Uno mit 3 Testdatensätzen.

In dieser Software Version 0.1 werden die Messages 1, 2 und 3 untersucht.
Daraus werden die folgenden Daten extrahiert.
– die Checksumme wird überprüft, die Erklärung hier.
– der AIS Kanal
– der Message Typ
– die MMSI
– der NavStatus
– SOG / Geschwindigleit über Grund
– Breite der Position in Minuten
– Länge der Position in Minuten
– Kurs
– Heading / Vorausrichtung

Weiterlesen

Ein SeaTalk zu Arduino Interface mit LT-Spice simuliert

Thomas Knauf stellt auf seiner Seite viele Informationen zum SeaTalk Protokoll von Autohelm / Raymarine zur Verfügung, unter anderem eine RX / TX Eingangsstufe vom PC (RS232) zum SeaTalk Bus.

Diese Schaltung habe ich mit LT-Spice simuliert und etwas verändert.
1. Es wurden die Standard Transistoren BC547B (NPN) und BC557B (PNP) verwendet.
2. Die Spannung am Arduino Pin sollte 5V nicht übersteigen, deshalb ist am Ausgang zum RX am Arduino ein Spannungsteiler mit 4,7k und 2,2k Ohm eingefügt. Weiterlesen

Einen String im Flashspeicher mit PROGMEM ablegen und ausgeben

Der SRAM Speicher beim Arduino Uno und Nano hat 2 kByte für Variablen und Strings.
> Infos zum Arduino Speicher.

Das reicht manchmal nicht aus um alle Strings zu speichern und dann kann der Programmspeicher (FLASH) zusätzlich verwendet werden. Hier stehen immerhin 32 kByte zur Verfügung, abzüglich Programm und Bootloader. Dazu gibt es zwei Möglichkeiten. Weiterlesen

3 Tasten: Einen Wert einstellen und im EEPROM ablegen

Um einen Kalibrationswert oder ähnliches einzustellen und im EEPROM abzulegen kann man 3 Tasten nehmen.

Die erste Taste unterbricht das Programm per Interrupt und geht in das Menu.

Die zwei anderen Tasten verändern den Wert. Eine Taste für kleiner und die andere für größer.

Danach verlässt die Interrupt Taste das Menu wieder und der Wert wird im EEPROM abgelegt. Weiterlesen

Eine Taste per Interrupt einlesen und entprellen

Ein Taster an speziellen Anschlüssen kann per Interrupt das laufende Programm anhalten und sofort ein Unterprogramm per Interrupt ausführen.

Die Arduino Uno und Arduino Nano haben 2 solche Interrupt Pins
Pin 2 für Interrupt 0
Pin 3 für Interrupt 1
Für andere Arduino Versionen gibt es hier die Beschreibung.

Wenn z.B. der Pin2 mit digitalWrite(2, HIGH) über den internen Pull up Widerstand auf 5V gelegt wird und als INPUT definiert wird, ist nur noch ein Schalter oder Taster gegen Masse notwendig. Weiterlesen