C5: OBD2 Basteleien
#21
Hm, ich mag vom Weg her weiter sein, aber mein Weg hat sicher deutlich mehr (oder größere) Löcher als Deiner...
Ich meine damit: Wissen zusammenwüfeln bringt da sicher RICHTIG was.

Ich kann heute Abend mal den Arduino-Code für die Netzwerk-Ampel posten, damit man mal sieht, wie sowas aussieht. Ich denke nicht, daß es schwerer ist wie mit einem PC, auch den muß man programmieren.
Und wenn ich Dosen-Sprachen (Visual-Basic, Visual C++) mit Arduino-Code vergleiche, dann ist letzterer echt easy zu schreiben und zu verstehen. Und: Ein Arduino ist stoßfest, bootet in Millisekunden, läuft an einer Autobatterie wohl Jahrelang...
Die Teile sind simpel, sehr robust, und wenn man mal einen himmelt, dann ist's auch egal - 5$ kostet der Chip.
  Zitieren
#22
OK! ja, zeig mal etwas von so einem Programm bitte...... eventuell bestelel ich eins.
Hab schon beim Watterott geguckt dumdidum
  Zitieren
#23
Wurd gestern leider nichts, dafür aber jetzt Idee

Code:
#include <Ethernet.h>
#include <EthernetDHCP.h>
#include <Flash.h>
#include <Fat16util.h> // for FreeRam()
#include <TinyWebServer.h>
#include "Wire.h"
#include "BlinkM_funcs.h"

boolean index_handler(TinyWebServer& web_server);
boolean rot_handler(TinyWebServer& web_server);
boolean gelb_handler(TinyWebServer& web_server);
boolean gruen_handler(TinyWebServer& web_server);
boolean blau_handler(TinyWebServer& web_server);

// I2C-Adresse der Blink-LED
int blinkm_addr = 9;  // default address of a blinkm

// Mac Adresse setzen
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };


// Definition der einzelnen Webseiten
TinyWebServer::PathHandler handlers[] = {
  {"/", TinyWebServer::GET, &index_handler },
  {"/rot.html", TinyWebServer::GET, &rot_handler },
  {"/gelb.html", TinyWebServer::GET, &gelb_handler },
  {"/gruen.html", TinyWebServer::GET, &gruen_handler },
  {"/blau.html", TinyWebServer::GET, &blau_handler },  
  {NULL},
};

// Code der ersten Webseite, Plus LED ausschalten
boolean index_handler(TinyWebServer& web_server) {
  web_server.send_error_code(200);
  web_server.end_headers();
  web_server << F("<html><body><h1>Nagios-Ampel...</h1></body></html>\n");
  BlinkM_setRGB( blinkm_addr, 0x00, 0x00, 0x00 );
  return true;
}

// Code Seite ROT, und LED auf rot
boolean rot_handler(TinyWebServer& web_server) {
  web_server.send_error_code(200);
  web_server.end_headers();
  web_server << F("<html><body><h1>Ampel rot</h1></body></html>\n");
  BlinkM_setRGB( blinkm_addr, 0xFF, 0x00, 0x00 );
  return true;
}

// Seite GELB
boolean gelb_handler(TinyWebServer& web_server) {
  web_server.send_error_code(200);
  web_server.end_headers();
  web_server << F("<html><body><h1>Ampel gelb</h1></body></html>\n");
  BlinkM_setRGB( blinkm_addr, 0xFF, 0xFF, 0x00 );
  return true;
}

// Seite GRUEN
boolean gruen_handler(TinyWebServer& web_server) {
  web_server.send_error_code(200);
  web_server.end_headers();
  web_server << F("<html><body><h1>Ampel gruen!</h1></body></html>\n");
  BlinkM_setRGB( blinkm_addr, 0x00, 0x99, 0x00 );
  return true;
}

// Seite BLAU
boolean blau_handler(TinyWebServer& web_server) {
  web_server.send_error_code(200);
  web_server.end_headers();
  web_server << F("<html><body><h1>Ampel blau</h1></body></html>\n");
  BlinkM_setRGB( blinkm_addr, 0x00, 0x00, 0xFF );
  return true;
}


boolean has_ip_address = false;
TinyWebServer web = TinyWebServer(handlers, NULL);
const char* ip_to_str(const uint8_t* ipAddr)
{
  static char buf[16];
  sprintf(buf, "%d.%d.%d.%d\0", ipAddr[0], ipAddr[1], ipAddr[2], ipAddr[3]);
  return buf;
}

void setup() {
  Serial.begin(115200);
  BlinkM_beginWithPower();
  BlinkM_stopScript( blinkm_addr );  // stop startup light script
  BlinkM_setRGB( blinkm_addr, 0x00, 0x00, 0x00 );
  Serial << F("Free RAM: ") << FreeRam() << "\n";

  // Initiate a DHCP session.
  Serial << F("Getting an IP address...");
  if (!EthernetDHCP.begin(mac)) {
    Serial << F("\nCould not get an IP address");
    return;
  }

  has_ip_address = true;
  const byte* ip_addr = EthernetDHCP.ipAddress();

// DHCP-Adresse seriell ausgeben
  Serial << F("\nMy IP address: ");
  Serial.println(ip_to_str(ip_addr));

// Start the web server.

  web.begin();
  Serial << F("Ready to accept HTTP requests.\n\n");

}



void loop() {
  if (has_ip_address) {
    EthernetDHCP.maintain();
    web.process();
  }
}

Sieht schlimmer aus als es ist, immerhin ist das ein kompletter Webserver, der fünf simple Webseiten (rot.html, gruen.html, gelb.html, blau.html und index.html) ausliefern kann.

Einfach Dinge wie z.B. die serielle Schnittstelle abfragen, oder einen Port anschalten, sind deutlich einfacher...
  Zitieren
#24
Eine LED läßt man z.B. so blinken:

Code:
void setup() {                
  pinMode(13, OUTPUT);    
}

void loop() {
  digitalWrite(13, HIGH);  
  delay(1000);            
  digitalWrite(13, LOW);    
  delay(1000);          
}

Oder einen Analog-Wert lesen, und über den seriellen Port ausgeben:

Code:
void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue, DEC);
}

Einfacher gehts kaum, ist fast wie Basic Yeeah!
  Zitieren
#25
danke Michael!
Ich hatte mir schon einige Seiten im Netz angeschaut.
Ideal für mich als "C" Hasser OK!
Sieht viel übersichtlicher aus.

Ich bin ja eigentlich totaler Assembler Freak.

Michael, welches Arduino Board würdest Du denn empfehlen?
Direkt was dickes, oder ein Uno?

Hier kaufen oder in Hongkong?
  Zitieren
#26
Zitat:Original von Thomas V
Ideal für mich als "C" Hasser OK!
Sieht viel übersichtlicher aus.

Jo, C mag ich auch nicht wirklich, Basic auf dem C64 war immer noch am schönsten Yeeah!
Das hier finde ich aber echt ok, übersichtlich und relativ leicht zu verstehen und vor allem auf eigene Projekte zu adaptieren.

Zitat:Ich bin ja eigentlich totaler Assembler Freak.

Öhm! Stehst Du auch auf Peitsche und sowas? Hihi Blaulicht

Zitat:Michael, welches Arduino Board würdest Du denn empfehlen?
Direkt was dickes, oder ein Uno?

Der normale Uno ist schon "was dickes", es gibt auch noch deutlich kleiner Varianten. Der Uno ist aber sehr universell, man kann Ihn schön neben ein Breadboard (das weiße mit den Löchern) bauen und dann die Erweiterungen einfach lötfrei anstecken, oder man steckt Direkt eine Huckepack-Platine drauf.
Vorteil Uno: Der Prozessor ist gesockelt, wenn man das Ding himmelt, kann man günstig einen neuen draufstecken. Bei Seeedstudio.com gibts Arduino-Nachbauten, die sind günstiger, aber SMD-Bestückt. Da ist es mit dem Austauschen natürlich schwer. Generell sind die Dinger aber sehr robust.

Hier ein Arduino-Nachbau von Seeedstudio (22$):
LINK

Die komplette Serie sieht man hier:
LINK

Sparkfun aus den USA ist auch sehr zuverlässig:
Arduinos bei Sparkfun

Bei Solarbotics habe ich auch schon bestellt, auch problemlos:
Arduinos bei Solarbotics (USA)

Die haben nebenbei auch den kleinsten Arduino überhaupt - die ganzen Bauteile werden AUF (!) den Microcontroller gelötet, das ganze Ding kann man dann in ein Breadboard oder einen Sockel stecken:

[Bild: ardw-img_0351_ps.jpg]

Sehr nette Sachen (neben den Arduinos) gibt es auch bei Adafruit.com, die haben schöne Bausätze - unter anderem eine Röhren-Uhr. Die steht auf meiner pers. Wunschliste Engel-3

Adafruit

Zitat:Hier kaufen oder in Hongkong?

Mit Seeedstudio hatte ich bisher nur beste Erfahrungen. Versandkostenfrei ab 50$, gute Preise, Zahlung per Paypal, schnelle Lieferung. Das ist der Vorteil gegenüber Sparkfun oder Solarbotics, da kostet der Versand. Aber auch die haben immer prompt und problemlos geliefert.
Ich würde erst mal eine "Grundausstattung" (Arduino Uno, 1-x Breadboards, ein paar LEDs, Widerstände, vielleicht ein Relais-Shield) bei Seeedstudio bestellen, und dann mit Seeedduinos weitermachen. Den Arduino Uno sozusagen als Testgerät nehmen, und wenn etwas dann funktioniert, einfach was günstigeres genommen...
  Zitieren
#27
Breadboard und so ein Zeug habe ich ja alles.....
werde dann mal ein Uno bestellen...
obwohl, SMD ist auch nicht so tragisch, habe alles da um SMD ein- und auszulöten.

Mache ich ja alles beruflich Zwinkern

Assembler ist schön!
Man kann Rechenschaft über jede µsec. ablegen.
Letztens ein Projekt fertig gestellt mit 30.000 Zeilen Assembler Quelltext, waren dann
knappe 63kB Hex-Code und das alles im 8051 Derivat 89C51ED2....
AVRs bediene ich auch, meist in ultra low power Anwendungen mit Knopfzelle und für 5 Jahre
Dauerbetrieb.

In Basic programmiere ich auch noch hin und wieder, im 8051AH Dafür
Sind dann meist Programmänderungen an 15 Jahre alte Steuerungen.... die ich mal verbrochen habe.

Geiger
Klasse, ich glaube es hat sich gelohnt den Thread hier zu starten!
Wird zwar wahrscheinlich recht lange dauern bis unsere Wünsche fertig werden, aber
ich bin zuversichtlich das wir was auf die Beine stellen wo andere auch was von haben werden OK!

Frage Michael.
Hast Du schon rausgefunden welcher PID für die Fensterheber zuständig ist? huahua
  Zitieren
#28
Zitat:Original von Zaphod
Ich würde erst mal eine "Grundausstattung" (Arduino Uno, 1-x Breadboards, ein paar LEDs, Widerstände, vielleicht ein Relais-Shield) bei Seeedstudio bestellen, und dann mit Seeedduinos weitermachen. Den Arduino Uno sozusagen als Testgerät nehmen, und wenn etwas dann funktioniert, einfach was günstigeres genommen...

Und wenn man grad dabei ist gleich noch n paar Optokoppler 4N25/35. Dann kann man sich gleich mit dem Arduino an den J-Bus der Vette hängen.
Ohne zusätzlichen OBD2 Treiber.
  Zitieren
#29
ohje..... ich bin gerade bei Seeedstudio am gucken...... Yeeah!

das wird ggf. eine teure Bestellung.

GPRS Shield..... dann kann man mit der C5 telefonieren King
  Zitieren
#30
Da gibts reichlich Zeug, auch bei den anderen Shops Feixen
Und: Ja, es wird teuer. Keine Ahnung, was ich da schon gelassen habe dumdidum
WLAN-Shield, 2xEthernet-Shield, diverse Arduinos, LEDs, Treiber...

Das mit der Fensterheber-PID sollte kein Problem sein.
Die Busadressen:

Powertrain Control Module (PCM) 016
Electronic Brake Control Module (EBCM) 040
Electronic Suspension Control (ESC) 056
Body Control Module (BCM) 064
Inflatable Restraint Sensing and Diagnostic Module (SDM) 088
Instrument Panel Cluster (IPC) 096
Radio 128
HVAC 153
Driver Door Module (DDM) 160
Passenger Door Module (PDM) 161
Seat Control Module (SCM) 166
Remote Control Door Lock Receiver (RCDLR) 176

Die Adressen sind dezimal, für den ELM muß man's in Hex umrechnen.

Beim ELM die Header (Busadressen) einschalten:
> ATH1

und Monitoring einschalten:
> ATMA

und dann Adressen gucken, wärend man auf's Knöpfchen drückt.

Türöffner Fahrertür ergibt z.B.:
8A C5 A0 A1 22 5F
8A C5 A0 21 22 96

Zuschließen:
8A C5 A0 A0 22 13
8A C5 A0 20 22 DA

8A bezeichnet Modus und Priorität (?),
C5 ist die Busadresse des Empfängers (lt. Unterlagen: "Security", hier: Türverriegelung)
A0 ist die Busadresse des Senders (Dezimal 160 = Driver Door Module)

Lustig: Schickt man das "Tür entriegeln"-Kommando vom ELM, geht die Alarmanlage los. Das Teil merkt, daß da jemand schummeln will Nein-nein
  Zitieren


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  neues Projekt: OBD2 fun Thomas V 152 46.368 06.02.2013, 09:45
Letzter Beitrag: Hughes500
  OBD2 software für C5 smartie 18 9.662 22.09.2005, 16:21
Letzter Beitrag: Jochen

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Forenübersicht
Technikforen
-- C 1 Technikforum
-- C 2 Technikforum
-- C 3 Technikforum
-- C 4 Technikforum
---- C4 ZR-1 Technikforum
-- C 5 Technikforum
---- C5 Z06-Technikforum
-- C 6 Technikforum
---- C6 Z06-Technikforum
---- C6 ZR1-Technikforum
-- C7 Technikforum
---- C7 Z06 Technikforum
-- C8 Diskussionsforum
-- Tuningforum
-- Allgemeines Technikforum
---- OBD2
Other Vette-Stuff
-- Man sieht sich
---- Nachbetrachtungen
---- Stammtische Deutschland
------ Baden-Württemberg
------ Bayern
------ Berlin/Brandenburg
------ Hessen
------ Nordrhein- Westfalen
------ Niedersachsen/HB/HH
------ Rheinland-Pfalz
------ Sachsen
------ Thüringen
------ Schleswig Holstein
---- Stammtische Österreich
------ Wien / St. Pölten
---- Stammtische Schweiz
------ Ostschweiz/Vorarlberg
------ Treffen Schweiz
-- Jäger & Sammler
-- Vettetalk
---- Reiseberichte
-- Corvette-Bilder der Mitglieder
---- Membervideos
-- Sonstige Schöne Vettepics
---- Corvettevideos
-- Vettelady's Corner
-- Wissenswertes & Kurioses
-- Werkstätten & Händler
-- CORVETTE & Parts - For Sale!
---- laufende Auktionen bei EBAY
---- Transporthilfeforum
---- for sale - Alles ohne Corvette!
-- Wanted !
-- Wer weiß was
---- Fragen vor dem Kauf
-- Paragraphen & Pamphlete
Smalltalk und Forumsschnack
-- Über dieses Forum
---- Teammitteilungen
---- In Memoriam
-- Hallo, ich bin's!
-- Motorsport
-- Off Topic
---- Jux & Dallerei
---- Das Club-Forum
---- Don't feed the troll!
-- Glückwunsch- und Grußforum
-- Bits und Bytes
-- Comic-Forum
-- Das Modellautoforum
-- Testforum
Händlerangebote
-- Info-Forum
-- ACP Euskirchen
-- Dyno-Center
-- KTS American Parts
-- Corvetteproject (Molle)
-- Schmidt Revolution
-- NCRS Central Europe
-- IDP-CORVETTE ( INJA )
-- TIKT Performance Parts
-- BG Sportwagen
-- SPEEDSTYLE
-- V8Lounge
-- AVI Schilling & Wendt Assekuranzmakler
-- Autosalon am Park GmbH
-- NCRS Central Europe
-- Hoffmann Classics
-- CCRP Austria
-- RockAuto.com
-- Stingrays-Shop.com
-- corvetteparts.de