Schlagwort-Archive: Arduino

NMEA2000 Daten mit dem Arduino an den Actisense NMEA Reader übertragen

Actisense hat einen NMEA Reader, der die NMEA 2000 Datensätze entschlüsselt und lesbar darstellen kann. Den NMEA Reader gibt es hier.

Mit meiner MCP 2515 Platine und dem Arduino Mega 2560 werden die Daten jetzt im Actisense Format über USB an den PC gegeben und im NMEAReader dargestellt.

Hier das Programm Weiterlesen

NMEA2000 Daten aus dem Bus seriell auf USB als Klartext ausgeben

Nachdem der Aufbau hier beschrieben wurde, kommt nun das erste Programm.
Die NMEA2000 Daten sollen Klartext über USB auf den PC ausgegeben werden in der seriellen Konsole.

Das heißt der MCP 2515 holt die NMEA2000 Daten aus dem Netz und gibt sie an den Arduino Mega weiter. Hier ist im NMEA2000 Netz nur noch der Lowrance HDS 5m. Mit der Library wird daraus Klartext und dieser wird auf dem USB Port an den PC weiter gegeben und in der Seriellen Konsole ausgegeben. Weiterlesen

Den Arduino Quarztakt auf 3ppm genau bestimmen mit der DS3231 RTC

Der Arduino Uno hat einen 16MHz Quarz für den Prozessortakt.

Diese Quarzfrequenz ist von der Temperatur abhängig, typisch +-30ppm oder 480 Hz über normale Temperaturen und Herstellungsbedingt fehlerhaft in der Größenordnung von typisch +-30ppm oder 480Hz. Das ergibt zusammen einen Fehler von +-960Hz oder 60ppm. Bei einer Frequenzmessung kann das zu großen Fehlern führen sodaß die 4. Stelle schon falsch sein kann. Bessere Angaben liefert das Datenblatt vom Quarz oder der Aufdruck.

Das läßt sich verbessern auf unter 3ppm oder 48 Hz Fehler mit der RTC DS3231. Dazu wird der 1Hz Ausgang des DS3231 verwendet um bei steigender Flanke einen Interrupt im Arduino auszulösen. Bei jedem 4. Interrupt (4 Sekunden) wird die vergangene Prozessorzeit mit der Funktion micros() in Mikrosekunden ermittelt. Daraus kann nun der Prozessortakt genauer bestimmt werden. Weiterlesen

RTC3231 Aufbau

Von der RTC DS3231 die Temperatur auslesen mit dem Arduino

Die RTC DS3231 kompensiert die Quarz Frequenzänderung mit der Temperatur. Die Temperatur wird alle 64 Sekunden neu gemessen. Man kann diese Quarz Temperatur auslesen.

Hier das Arduino Programm dazu Weiterlesen

RTC3231 Aufbau

Die Uhrzeit des RTC DS3231 Modul vom Arduino einstellen

Die Uhrzeit des RTC DS3231 Uhrzeitmoduls soll vom Arduino einmalig eingestellt werden. Danach speichert das Modul die richtige Uhrzeit und läuft mit der angebauten Batterie weiter.
Die Verkabelung wurde im vorherigen Beitrag beschrieben.

Hier das Programm.
Die aktuelle Uhrzeit +1min wird manuell eingegeben unter setup(). Dann wird das Programm ca. 4 Sekunden vor der Uhrzeit übersetzt und hochgeladen. Es sollte nun ungefähr zur richtigen Uhrzeit im RTC Chip ankommen. Ansonsten ein wenig mit den 4 Sekunden herum spielen. Weiterlesen

RTC3231 Aufbau

Die Uhrzeit des RTC DS3231 Modul vom Arduino auslesen

Das Uhrzeitmodul RTC DS3231 (Real Time Clock ZS-042) ist eine genaue Uhr mit eingebauten Quarz. Dieser Quarz wird intern Temperatur überwacht und korrigiert sodass sie einen Fehler von nur +-2ppm hat, was ca. 1 Minute pro Jahr entspricht.

Ich habe das RTC3231 mit 4 Leitungen an den Arduino Uno angeschlossen. Weiterlesen

Folientastatur

Mit der 4×4 Folientastatur Zahlen eingeben am Arduino

Ich habe eine 4×4 Folientastatur bekommen. Damit möchte ich verschiedene Zahlen in den Arduino Uno eingeben, ändern und auch löschen können.

Es gibt eine praktische Library Keyboard auf der Arduino Seite. Die erleichtert die Arbeit ganz erheblich.

Die Tastatur hat links 4 Anschlüsse für die 4 Zeilen, von oben beginnend. Daneben sind die 4 Anschlüsse für die 4 Zeilen von links beginnend. Diese 8 Anschlüsse werden mit Kabeln verbunden zu den Arduino Digital Pins D11…D4. Das finden wir nachher im Programm wieder. Weiterlesen

Den Mittelwert fortlaufend bilden mit einer Funktion

Es soll ein fortlaufender Mittelwert aus n Integer Zahlen gebildet werden. Dazu wird die Funktion float mittelWert(int neuerWert) verwendet.

Am Anfang des Programms wird die Anzahl der Mittelungen festgelegt und die globalen Variablen werden erstellt.

#define anzahlMittelWerte 10
int werte[anzahlMittelWerte], zaehlerMittelWerte=0;

Im Hauptprogramm werden fortlaufend Zufallszahlen zwischen 1 und 10 erzeugt. Diese werden hier gemittelt und ausgegeben.

Weiterlesen

Mit dem Timer Interrupt des Arduino die LED blinken lassen

Wenn im Programm keine Zeit ist eine Status LED blinken zu lassen, dann kann das ein Interrupt machen.

Er werden die Interrupt Register gesetzt, der Prescaler gesetzt und das Vergleichsregister eingestellt.

In meinem Beispiel ist der Prescaler auf 256 eingestellt. Damit wird das Vergleichsregister folgendermaßen berechnet.

Taktfrequenz / Prescaler ergibt einen Aufruf des Interrupt pro Sekunde.

Soll eine LED einmal die Sekunde blinken, dann ist sie 1/2 Sekunde aus und dann 1/2 Sekunde an. Das ergibt einen Wert von 16.000.000 / 256 / 2 = 31250 Weiterlesen

Den ESP8266 mit der Arduino IDE in Betrieb nehmen

Ich habe einen ESP8266 WiFi Chipsatz ESP-01 für ein paar Euro zu bekommen. Das ist ein kompletter Mikrocontroller mit WiFi und Antenne auf der Platine.

Er soll nun in der Arduino IDE programmiert werden können.

Zuerst wird die Arduino IDE Version 1.6.5 von der Arduino Homepage geladen und installiert. (Die zur Zeit aktuelle Version 1.6.6 macht Probleme)

Dann geht es weiter in der IDE unter:
Datei > Voreinstellungen
bei der Zeile Additional Boards Manager URLs: wird eingetragen
http://arduino.esp8266.com/stable/package_esp8266com_index.json
und dann mit OK bestätigt.

Und dann in der Arduino IDE
Werkzeuge > Platine… > Boards Manager
ganz unten steht: esp8266…
Das auswählen und Install drücken
Ca. 156 MB werden nun installiert. Weiterlesen