• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Projekt Arduino GPS-Tacho mit Oled-Display

Quiddje

Mitglied
Diesmal hab ich mal was zur Geschwindigkeitsanzeige zusammengestöpselt.
Auslöser war dieses Video:


Das ist jetzt so ein zwei Jahre her und hab es nie zum laufen bekommen.
Da hatte ich so ein rotes Modul am Wickel.
Aber ich hab ja mittlerweile ein anderes Modul (siehe GPS-Uhr).
Das hab ich mir geschnappt und mußte feststellen das jenes tot ist.
Warum? Ich weiß es nicht. Aber ich hab da ja noch dieses rote Modul - kram,wühl, sortier, umgrab - da isses ja!
Da ich da Kabel und keine Stifte dran will hab ich auch gleich entdeckt warum das nicht funtionierte - der RX Pin hatte zwar eine wnderschöne Verlötung,
die aber mit nix verbunden war. Das hab ich dann direkt mal geregegelt. Und läuft!.

Diesmal hab ich mich an dem hier orientiert:


Daraus wurde dann das :



Mit 0,96" Display:



und mit 1,3" Display:



Auf dem Balkon hat das jeweils rund 30 Sekunden gedauert bis das arbeiten konnte. Sehr schön.
Jetzt klemm ich das noch in den Autowagen und ans Kraftrad.

:cool:

Code:
#include "U8glib.h"

//Für das 1,3" Oled display
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);                                            // I2C / TWI 1.3
//Für das 0,96" Oled Display
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);   // SCK=A5, SDA=A4       // I2C / TWI 0.96
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9, 8);  // SCK=13, SDA=11, CS=10, DC=9, Reset=8   // SPI / TWI 0.96

#define u8g_logo_sat_width 20
#define u8g_logo_sat_height 20

//Satelliten Logo
const unsigned char u8g_logo_sat[] = {

0x70,0x00,0x00,
0x70,0xF8,0x01,
0x70,0xFE,0x03,
0x80,0xFC,0x07,
0x00,0xF9,0x07,
0x40,0xF2,0x07,
0xC0,0xE4,0x07,
0xE0,0xE9,0x03,
0xE0,0xE3,0x03,
0xE0,0xFF,0x01,
0xE0,0xFF,0x01,
0xE0,0xFF,0x00,
0xE0,0x7F,0x00,
0xC0,0x1F,0x00,
0x80,0x07,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00,
};

// Serielle Anschluß
#include <SoftwareSerial.h>
static const int RXPin = 2, TXPin = 3;     // GPS RX -> Arduino D3 //GPS TX -> Arduino D2
static const uint32_t GPSS = 9600;
SoftwareSerial ss(RXPin, TXPin);

//GPS Library
#include <TinyGPS++.h>
TinyGPSPlus gps;

//Program variables
double Lat;
double Long;

int num_sat, gps_speed;
String heading;

void(*resetFunc)(void) = 0; // Autoreset bei Fehler

void setup() {
ss.begin(GPSS);
}

    
void loop() {

  Get_GPS(); //Get GPS data

  //Display info in the OLED
  u8g.firstPage();
  do {
    print_speed();
  } while ( u8g.nextPage() );
}

void print_speed() {

  //u8g.setFont(u8g_font_fur42n);
  u8g.setFont(u8g_font_fur49n);
  u8g.setPrintPos(0, 50);
  u8g.print(gps_speed , DEC);
 
  u8g.setFont(u8g_font_6x10);
  u8g.setPrintPos(115, 28);               // Satelliten Anzahl Position
  u8g.print( num_sat, 5);

  u8g.setPrintPos(0, 62);
  u8g.print("Lat:");

  u8g.setPrintPos(26, 62);
  u8g.print( Lat, 3);

  u8g.setPrintPos(66, 62);
  u8g.print("Long:");

  u8g.setPrintPos(97, 62);
  u8g.print( Long,3);
 
  u8g.setFont(u8g_font_unifont);

  u8g.drawXBM(107, 0, u8g_logo_sat_width, u8g_logo_sat_height, u8g_logo_sat);   // Sat Icon Position
}

// Datenzufur zu dem GPS
static void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do
  {
    while (ss.available())
      gps.encode(ss.read());
  } while (millis() - start < ms);
}

void Get_GPS()
{
  num_sat = gps.satellites.value();

  if (gps.location.isValid() == 1) {

    Lat = gps.location.lat();
    Long = gps.location.lng();

    gps_speed = gps.speed.kmph();

    heading = gps.cardinal(gps.course.value());
}

smartDelay(1000);

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
   // Serial.println(F("No GPS detected: Please check you wiring."));
  resetFunc();
  delay(1000);
  }
}
 
D

Deleted member 1492

Gast
Das ist mal interessant. Wenn jetzt noch Maximal & Durchschnittsgeschwindigkeit gespeichert werden könnten. :thumbsup:

Ich frage mich gerade wie man sowas als Kombiintrument fürs 1:1 Mobil realisieren könnte.
Hier würde ich allerdings die OBD2 Schnittstelle am Auto nutzen, ist ja vorhanden.

Einen OBD2 Blauzahn-Adapter habe ich und der funzt mit Handy oder Tablet bestens.
Aber das ist mir zuviel Gedöns, Handy/Tablethalterung, Handy muss erst hochfahren und Programm muss gestartet werden.

Einschalten und sofortige Anzeige wäre besser. Ob der Arduino für die Daten schnell genug ist?
Keine Ahnung, vielleicht wäre ja ein ESP32 sinnvoller, wie ihn @TheDIYGuy999 verwendet.
Da wäre dann WiFi und Blauzahn bereits integriert

Ich werde mal genauer darüber nachdenken, wäre nett wenn man nicht nur eine Motorkontrollleuchte hätte.
 

DFENCE

Mitglied
ODB2 kannst direkt abgreifen, es gibt extra CANBUS Module für die Arduino um sie direkt ans ODB anzubinden, das ist realtiv Easy problem ist nur das man dazu Leistung brauch, ich würde kein ESP dafür nutzen das ist Unsinn wegen unnötigen Features, hier wäre ein Arduino DUE oder Zero oder M0 nen SAMD21 die bessere Wahl, die sind auch potenter und schneller als nen ESP. Diese Teile werden auch im Automotiven bereich genutzt als Zubehör fürs ODB ;)
 
D

Deleted member 1492

Gast
Auf Dich habe ich jetzt gehofft, warum nur? :cool: :thumbsup:

Allerdings möchte ich nicht unnötig Kabel verlegen, außer Versorgungsspannung.
Ich mach da mal bei Gelegenheit nen eigenen Thread für auf, nicht das wir hier noch ne Schelle einfangen. :eek:
 
D

Deleted member 1492

Gast
Mir hatten ja nüscht .................... :ROFLMAO:

Wobei, BMW Moppeds und Ekkilektrik, ähm, ja ..................... es hat zumindest funktioniert. :giggle:
 
Zuletzt von einem Moderator bearbeitet:

BAXL

Admin
Mitarbeiter
Hast Du denn mal testen können, so einmal ums Hausrennen oder so?
Womit versorgst Du das Modul?
 

Quiddje

Mitglied
Heute vormittag hab ich das Gesumms mitsammt Kamera vorbereitet weil ich heute mit dem Autowqgen den Moloch durchquert habe.
Also schnell noch mal auf den Balkon, eingeschaltet und nach ner Sekunde war das Signal da. Super!
Dann ins Auto gelegtt und - nüscht. Immerhin hab ich davon ein Video.
Heute sind 2 GPS-Module angekommen, von @BAXL sein Link.
Beide geben keinen Mucks von sich. Ich bin nicht amüsiert.
Das Modul wird vom Arduino betrieben.
 

BAXL

Admin
Mitarbeiter
@Quiddje das tut mir leid und verstehe ich auch nicht, bei meinem Versuch hat mein Modul sofort klaglos funktioniert. Liegt es vielleicht an der verwendeten Lib?
 

Quiddje

Mitglied
Wenn man so ein GPS-Modul mit Strom versorgt geht ja die LED mit Dauerlicht an.
Wenn Satelliten gefunden wird blinkt die LED. So mit ohne Arduino.
Beide Module machen keinen Mucks, so von den LED-Aktivitäten her.
Nun könnte es ja sein das die LED defekt sind. Hab die Module an den Arduino geklemmt und je ne halbe Stunde nach draußen gestellt
Da tut sich auch nix. Also hab ich die Teile eingetütet und werd sie morgen zurück schicken.
Dafür hab ich grad welche bei AZ-Delivery bestellt. Von da bekam ich noch nie funktionslose Ware.
Mpf.
 

BAXL

Admin
Mitarbeiter
Ich habe beim Anschließen der GPS-Antenne bemerkt, dass man da etwas fummeln muß, damit der Mittenkontakt richtig sitzt. Guck Dir mal die kleinen Pins in der Mitte an, ob der Mittenkontakt noch gerade ist, oder ob die jetzt krumm sind.
 
Top Bottom