İçindekiler:

Wifi Etkin OLED ESP32 Araba Göstergeleri: 3 Adım (Resimli)
Wifi Etkin OLED ESP32 Araba Göstergeleri: 3 Adım (Resimli)

Video: Wifi Etkin OLED ESP32 Araba Göstergeleri: 3 Adım (Resimli)

Video: Wifi Etkin OLED ESP32 Araba Göstergeleri: 3 Adım (Resimli)
Video: TİKTOK DİLENCİLERİ PART 1 DAHA NELER DEDİRTEN Video #tiktok #tiktokvideo #tiktokvideo 2024, Aralık
Anonim
Image
Image
Wifi Etkin OLED ESP32 Araba Göstergeleri
Wifi Etkin OLED ESP32 Araba Göstergeleri

Önce tanıtımlar…

Bir tür tekrar tekrar hobi olarak araba göstergeleri yapıyorum. Daha yeni iki örnek için https://www.instructables.com/id/Remote-Car-Monit… ve https://www.instructables.com/id/Remote-Car-Monit… adresine bakın. Özellikle arabanın orijinal parçalarıyla uyumlu olanları seviyorum. Peki, bu neden farklı ve onu inşa etmem için bana ilham veren şey. Cevap iki şeydir:

1) ESP32 - Özellikle arduino tabanlı araç zinciri oldukça olgun olduğundan, blok çipteki yeni çocuğu denemek istedim. ESP32'nin sağladığı ilginç şeylerden biri, yerleşik wifi ve bluetooth özelliklerine sahip IOT'dir. Topluluk, bunu biraz basit hale getirmek için birden fazla kitaplık yazmıştır (web sunucuları, AP'ler, wifi istemcileri, mDNS, vb.).

2) Ucuz OLED ekranlar - 2007'de bir GD (2004-2007) WRX'te saatin yerine oturan bir TFT kullanarak bir gösterge yaptım. TFT çeşitli tatlarda gelir. Bazıları geceleri daha iyi çalışır, bazıları gündüzleri daha iyi çalışır vb. Ama hiçbiri her koşulda çalışmaz. Bir forum üyesinin güneşli pist gününde kullandığım göstergelerden biri işe yaramaz olana kadar yöntemlerimin hatasını fark etmemiştim. Otomotiv uygulamaları için harika olan OLED'e girin. Geceleri çok parlak değiller ve (daha da önemlisi) çoğu güneş ışığı koşullarında görülebilirler.

Bu, iki yaygın araç göstergesi, yağ basıncı ve turbo basıncı için her şeyi yazdığım için bire bir öğretilebilir. Her ikisi de esasen aynı şeydir: ayrı sayılar ve maksimum değerlerin görüntülendiği, hareketli bir analog görünümlü OLED ekrana sahip küçük bir form faktörü göstergesi. Her ikisi de wifi AP'ler ve web sunucuları olarak işlev görür. Bir bilgisayar veya cep telefonu aracılığıyla onlara bağlanıldığında, hareketli bir EKG stype tablosu görüntülenebilir (bu biraz yenilikçi kısımdır).

Gereçler

HELTEC ESP32 modülü - wifi varyantını edinin

Yağ Basıncına özel parçalar:

Yağ Basıncı sensörü - Bir automter 5222 Yağ basıncı sensörü bağlantı parçaları kullandım - bu, araca ve kurulum yerine göre değişir. Lütfen servis kılavuzlarına, forumlara, mekaniklere vb. bakın ve yağ sızıntısı olmaması için bunu doğru yapın

Göstergeye özel parçaları artırın:

  • Hava basıncı sensörü (yalnızca bir takviye göstergesi yapmak istiyorsanız) -
  • Hava hortumu
  • T bağlantı parçaları

Kullandığım vazgeçilmez kütüphaneler:

Smoothiecharts - https://smoothiecharts.org/ Mükemmel ve hafif canlı güncelleme çizelgeleri. Çok özelleştirilebilir ve internette başka bir yerde bir js kitaplığına başvurmaya dayanmaz. Bu, "yerel-IOT" tipi bir kuruluma izin verir ve tüm kitaplık, koddaki web sunucusu ifadesi için tek bir dizeye sığar!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- kutuda ne yazıyorsa onu yapar ve iyi yapar

ThingPulse OLED grafik kitaplığı (bazen squix kitaplığı da denir) - https://github.com/ThingPulse/esp8266-oled-ssd130… - ESP yongaları için çok verimli ve basit grafikler. Biraz tembel programlama yapmama ve hala ikna edici animasyonlar almama izin verdi.

Araçlar/çeşitli:

havya - sensörler için uzun kablo geçişleri yapmak, panoya başlık takmak, büzülme sargısı vb. için kullanılır.

tornavida/soket/diğer araç aletleri - araca sensör takmak için gerekli

çift taraflı bant - göstergeleri muhafazalara takmak ve muhafazayı arabaya takmak için (sıcak tutkal ve diğer şeyler işe yarayabilir, ancak ben 3M çift taraflı dış kaplama bandını tercih ederim. İyi tutar ve eşyalara zarar vermeden çıkarılabilir.)

makas - bant ve kesme boruları ve fermuarlar için

Fermuarlar - eşyaları bir arada tutmak, kabloları ön panel altında ve motor bölmesinde demetlemek, sensörleri yerinde tutmak vb. için.

Adım 1: Önce Kod/Donanım İkinci

Birinci Kod/İkinci Donanım
Birinci Kod/İkinci Donanım
İlk Kod/Donanım İkinci
İlk Kod/Donanım İkinci

Kod buradan indirilebilir:

Yağ Basıncı -

Artış Basıncı -

Analog görünüm göstergeleri yerine yüzlerle Basınç Arttırın -

Grafik kodu: ThingPulse kitaplığı o kadar verimlidir ki, xbms'yi üst üste çizebilir ve ikna edici sonuçlar elde edebilirsiniz!

Gösterge görüntüleri aslında açık kaynaklı bir grafik deposundan geldi (https://thenounproject.com/). Sanatçı Iconic, CY (https://thenounproject.com/icon/490005/).

İğne her bir onay işaretini gösterecek şekilde 20 farklı çerçeve oluşturmak için gimp kullandım. Gülen yüz Simgeleri NOVITA ASTRI, ID'ye aittir ve buradadır:

Daha sonra bu tekniği kullanarak bunların hepsini const uint8_t dizilerine dönüştürdüm (ipucu: görüntülediğinizde renkler ters çevrilirse, renkleri orijinalde ters çevirin): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

Canlı animasyon kodu oldukça basittir:

  • Sensörden okuma alın
  • Ölçek okuması (Pozitif yükseltme değerleri için 1'e 1 yaptım ve iğneyi vakumdayken değil, yalnızca yükseltmedeyken hareket ettirin)
  • xbm çizin ve ardından diğer her şey için sayı karakterlerini yazın.
  • durulayın ve tekrarlayın

Sensör kodu: Bu iki sensör için kullandığım sensör kodunu birkaç başka proje için yeniden kullanıyorum. Sarsıntılı sensörlerden uzaklaşmak için biraz ortalama ekledim. Bu, her bir "okumanın" ortalama 5 okuma olmasını içerir.

Yükseltme kodu (sensör, ADC'nin 0-1024 arası adımlara dönüştüğü 0-5 volt arasında bir analog değer verir):

int getBoost() { float rboost = ((analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36))/5); //yüzer SonuçPSI = (rboost*(.00488)/(.022)+20)/6.89 - atmo; //kpa float için /6.89'dan izin ResultPSI = (((rboost / 4095) + 0.04) / 0.004) * 0.145 - atmo; // psi hesaplamak için 0.145 ile // esp32'de 4096 değerler /*rBoost = rBoost + 1; if (rBoost >= 20) { rBoost = 0; }*/ dönüş (SonuçPSI); }

Yağ basıncı kodu (sensör, algıladığı basınca göre direncini değiştirir, bu nedenle bunu 0-5v arası bir voltaja dönüştürmek için bir voltaj bölücü gerekir bkz: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito…(aşağıya doğru) daha fazla bilgi için):

int getOilPSI() { float psival = ((analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36))/5); psival = -0.0601*psival + 177.04 - 14.5; dönüş psival; }

Web Sunucusu ve AP işlevi: AP işlevi oldukça basittir - yayınlamak istediğiniz ESSID ve parola ile somutlaştırın ve AP nesnesi ve gitmeye hazırsınız.

const char *ssid = "boost_gauge_ap";const char *parola = "parola";

WiFi.softAP(ssid, şifre);

Bir DHCP sunucusu bile var, bu yüzden endişelenmenize gerek yok. Varsayılan olarak IP'si 192.168.1.4'tür (neden olduğu hakkında hiçbir fikrim yok, bu sadece seçilen şey). Web sunucusu biraz daha zor ve biraz araştırma gerektiriyor. Temel olarak, canlı güncelleme verilerini alabilmesi için zaman uyumsuz bir web sunucusu istiyorsunuz. Neyse ki bunun için bir kütüphane var. Ben bir javascript geliştiricisi değilim, bu yüzden smoothie çizelgelerine rastlayana kadar bir sürü çizelge ve grafik kütüphanesiyle uğraştım. Diğer grafik kitaplıklarının çoğu, bir sayfa oluşturulduğunda dinamik olarak yüklenen web'deki diğer kitaplıklardan her tür kodu devralacak şekilde yazılır. Bunun internetten bağımsız çalışmasını istedim, bu yüzden bu büyük bir keşif oldu. İkincisi, bir arduinoya sığacak kadar küçük olmalı ve kodda da görebileceğiniz gibi tek bir karakter dizisine sığmalıdır.

Web sunucusu bildirimleri: #include AsyncTCP.h #include ESPAsyncWebServer.h … AsyncWebServer sunucusu(80); //başlatın ve bağlantı noktası seçin (80, http için standarttır) … server.on("/", HTTP_GET, (AsyncWebServerRequest *request){ request->send(200, "text/html", "… // web sayfası + büyük bir karakter dizisindeki smoothiecharts kitaplığı }); server.on("/val", HTTP_GET, (AsyncWebServerRequest *request){ //ilk sayfa aslında sadece değer isteğini döndüren bu çok küçük sayfayı çağırır ->send(200, "text/html", Sboost); }); server.begin();

Adım 2: Donanım ve Kablolama

Donanım ve Kablolama
Donanım ve Kablolama
Donanım ve Kablolama
Donanım ve Kablolama
Donanım ve Kablolama
Donanım ve Kablolama

Galeride kullandığım iki sensör var. Büyük altın renkli olanı bir Autometer 2242 yağ basınç sensörüdür. Bu sensörün gövdesi ve dişi topraklanmıştır ve terminal dirençteki okumadır.

Autometer, sensörlerinden herhangi biri için size basınca direnç veya sıcaklığa direnç eğrisi sağlayacaktır. Bunu bir voltaj bölücü kullanarak voltaja dönüştürdüm (bağlantı şemasına bakın).

MPX4250AP hava basıncı sensörünün üç canlı pimi ve birkaç kullanılmayan pimi vardır. Bunlar V girişi, topraklama ve sensör çıkışıdır. Mikrodenetleyici tarafından okunabilen bir 0-5v okuma verir (veya bu mcu 0-3 volt olması durumunda. Bu nedenle, sensör okuması bir voltaj bölücü kullanılarak küçültülür.). Bunun için teknik özellik sayfası burada bulunabilir:

5v'den 3v mantığına ölçeklendirmede birkaç sorun var. Benim durumumda basitlik için voltaj bölücü kullandım ve çalışma masamın etrafındaki parçalar vardı. Ek bileşenlerin (iki direnç) olası hatasına bağlı olarak okumalara biraz hata ekleyeceksiniz. Bu, bazı durumlarda okumalarınızı %10 indirimli yapabilir. Bununla yaşayabilirim. Eğer yapamıyorsanız, bir opamp ve dirençler veya bir mantık seviyesi dönüştürücü kullanmak isteyebilirsiniz (çeşitli elektronik satıcılarından temin edilebilir. Sparkfun'da bir tane var: https://www.sparkfun.com/products/12009 Ben buna geçebilirim. Bazen bu göstergede yüksek değerler alıyorum (aslında bu ürünü kablo şemamda gösterdim).

ESP32'leri USB üzerinden çalıştırdım. Bu, şuna benzer bir doğrudan şarj cihazının bağlanmasını içeriyordu: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… Her şeyin küçük bir alanda çalışmasını sağlamak için dik açılı usb kabloları kullandığımı görebilirsiniz (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Diğer fotoğraflarda delik açtığım veya kablo döşediğim yerler görünüyor. Her araba farklı olacak. Dikkatli olun, bıçaklar ve makaslar keskindir, elektrik tehlikeli olabilir, bu nedenle lütfen kabloları bağlamadan önce pilin bağlantısını kesin.

Adım 3: 3D Baskılı Muhafaza

3D Baskılı Muhafaza
3D Baskılı Muhafaza

Bunun için birkaç 3D baskılı muhafaza kullandım.

  • Genel bir büyük 2 ekranlı yuvarlak gösterge. Bunu ilk sayfadaki bu resimlerde görebilirsiniz. Kumandamın üzerindeki saatin yanına koydum.
  • Yaklaşık 2008'den 2014'e kadar bir subaru impreza'nın (wrx, sti, vb.) saat alanına uyan tek ölçü kama stili.
  • Direksiyon kolonlarına ve diğer hafif yuvarlak yüzeylere uyan çift ölçülü parça:

Bunları ihtiyaçlarınıza göre kopyalayabilir ve değiştirebilirsiniz. Hiçbiri mükemmel değil ve hepsinin biraz ayarlanması gerekecek.

Bazı notlar:

  • Ben plastidip ile bitirdim; tembellerin tercih ettiği yöntemdir.
  • Plastikleri zımparalamak sizin için iyi olmayan ince partiküller yapar, uygun bir maske kullanın.
  • Muhafazalarım için PETG kullandım. ABS'si de iyidir. PLA, bir gösterge panosunda sıcak güneşte çarpacak.
IoT Mücadelesi
IoT Mücadelesi
IoT Mücadelesi
IoT Mücadelesi

IoT Challenge'da İkincilik Ödülü

Önerilen: