Ömer Sarıgül Perşembe 10:17 Paylaş Perşembe 10:17 Bir süredir merak ettiğim bir konuydu, dün itibariyle aracımın ECU'sundan bilgi okuması yapıp gelen bilgiye göre bir işlem yapmayı basitçe başardım. Elimde daha önceden öğrenmek için aldığım Nodemcu(esp8266) kartım vardı. Bunu elm327 ile wifi üzerinden haberleştirip ecudan gelen motor devir verisine göre 3 ledi yaktım. Devir 0-1500 arası iken yeşil, 1500-3000 arası sarı, 3000 üzerine çıkınca kırmızı yanıyor. Özetle bir elektronik karta yazılan Arduino kodlar ile obd2 verilerini analiz edip basitçe istediklerimizi yaptırabiliriz. Sadece elektronik mezunuyum basit pic mikrodenetleyici kodları ötesinde aşırı bir yazılımcı bilgim yoktur. Yapay zeka ile kodları geliştirerek oluşturdum düzenleme yaptırdım. Bu konuyu kendini geliştirmek isteyenler için bir başlangıç olması adına açmak istedim. Sizde kendinize özel işler yapabilirsiniz. Örneğin + eski model araçlara LCD Hud display projesi olabilir. + Hararet durumlarında sesli ikazlar + Motor verilerinin, anlık arıza kodlarının bağlanacak bir display üzerinden takibi, Vs aklınıza gelen başka projeler de olabilir. Birçoğunu obd programları ile telefondan yapabiliyoruz, programın bize vermedikleri ilginç projeler yapmak isteyen olabilir. Yüksek düzey kodlama bilgisine ihtiyaç duymadan yapay zekayla kod yazabilir ve pratikte karta yükleyip çalıştırabilir. Benim elm327 wifi özellikte ve geliştirme kartım(ESP8266) da wifi bağlantısı var. PC Arduino ide veya Arduinodroid uygulaması ile cep telefonu tabletten otg üzerinden program yazıp yüklenebilir. **USB Serial monitör uygulamaları üzerinden kartın çalışma durumu takip edilebiliyor AT komutları yollayabiliriz. Bu bana programı tasarlarken yapay zekaya hataları giderme adına çok yardımcı oldu. **Not: Kartı ev ağına bağlayıp akıllı ev sistemleri de tasarlanabilir, kartın özellikleri dahilinde html sayfası oluştup yayın yaptırmak uzaktan erişmek mümkün(uzaktan sürekli bağlantı için gerekli sabit ip vs olması gerekir diye düşünüyorum bunun hakkında çok bilgim yok sadece ip ye bağlanıp "merhaba dünya" mesajı yazdırma ötesinde işlem yapmadım). İlgisi olabilecekler için umarım yararlı paylaşım olmuştur. Aşağıda yapay zeka ile oluşturduğum obd2 kodlar. Kodlar üzerinde oynamak geliştirmek yapay zeka ile çok kolay. #include <ESP8266WiFi.h> const char* ssid = "WiFi-OBDII"; const char* password = ""; WiFiClient client; #define LED_YESIL D1 #define LED_SARI D2 #define LED_KIRMIZI D3 void sendCommand(String cmd) { client.print(cmd + "\r"); delay(200); // cevap bekleme süresi } String readResponse() { String response = ""; unsigned long start = millis(); while (millis() - start < 1000) { while (client.available()) { char c = client.read(); response += c; } } return response; } int parseRPM(String response) { int idx = response.indexOf("41 0C"); if (idx == -1) return 0; response = response.substring(idx + 5); // "41 0C " sonrası response.replace("\r", ""); response.replace("\n", ""); response.trim(); // A ve B byte'larını ayır int a, b; sscanf(response.c_str(), "%x %x", &a, &b); return ((a * 256) + b) / 4; } void setup() { Serial.begin(115200); pinMode(LED_YESIL, OUTPUT); pinMode(LED_SARI, OUTPUT); pinMode(LED_KIRMIZI, OUTPUT); WiFi.begin(ssid, password); Serial.print("WiFi baglantisi bekleniyor"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi baglandi"); if (!client.connect("192.168.0.10", 35000)) { Serial.println("ELM327 baglanamadi."); while (1); } Serial.println("ELM327 baglandi. AT komutlari gönderiliyor..."); sendCommand("ATZ"); readResponse(); // Reset sendCommand("ATE0"); readResponse(); // Echo off sendCommand("ATL0"); readResponse(); // Linefeeds off sendCommand("ATSP0");readResponse(); // Auto protocol } void loop() { sendCommand("010C"); String response = readResponse(); Serial.println("Gelen: " + response); int rpm = parseRPM(response); Serial.println("RPM: " + String(rpm)); // LED kontrol if (rpm > 3000) { digitalWrite(LED_YESIL, LOW); digitalWrite(LED_SARI, LOW); digitalWrite(LED_KIRMIZI, HIGH); } else if (rpm > 1500) { digitalWrite(LED_YESIL, LOW); digitalWrite(LED_SARI, HIGH); digitalWrite(LED_KIRMIZI, LOW); } else { digitalWrite(LED_YESIL, HIGH); digitalWrite(LED_SARI, LOW); digitalWrite(LED_KIRMIZI, LOW); } delay(1500); // 1.5 saniyede bir sorgu } 5 1 Yorum bağlantısı
Gökhan Tuna Perşembe 15:17 Paylaş Perşembe 15:17 Emeginize saglik, sayenizde ilk firsatta esp8266 temin edip evde bir kac deneme yapacagim.. Yalniz size kodun bu kismini ("while (1);") veren yapay zekaya selamimi soyleyin Yorum bağlantısı
Ömer Sarıgül Perşembe 16:12 Yazar Paylaş Perşembe 16:12 Gökhan Tuna yazdı: Emeginize saglik, sayenizde ilk firsatta esp8266 temin edip evde bir kac deneme yapacagim.. Yalniz size kodun bu kismini ("while (1);") veren yapay zekaya selamimi soyleyin Kolay gelsin @Gökhan Tuna bey. Yapay zeka selamı aldı. Kodlara laf yok diyor. Sağolsun ne desek kodlamaya döküyor. Hep program bilgim çok yüksek olsun isterdim. Şimdi sadece ne yapmak isteğimi söylüyorum o hemen elimdeki karta göre bütün programı tasarlıyor. Kodlama hataları düzenlemede çok başarı, hata veren kısmı veriyorum hemen başka yoldan deneyelim yenisi ile düzeltelim diyerek anında çözüyor. Artık iş hayal gücümüze kalmış. 1 Yorum bağlantısı
Recommended Posts