İçindekiler:
Video: Wifi Etkin OLED ESP32 Araba Göstergeleri: 3 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Ö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
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
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
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 Challenge'da İkincilik Ödülü
Önerilen:
WiFi Etkin Matrix Lambası: 6 Adım (Resimlerle)
WiFi Özellikli Matrix Lamba: Evdeki diğer lambalarla senkronize olan ve animasyonlar gösterebilen çarpıcı lambaya kim sahip olmak istemez ki? Öyle değil mi? O yüzden özel bir RGB lamba yaptım. Lamba, ayrı ayrı adreslenebilen 256 adet LED'den oluşur ve tüm LED'ler kontrol edilebilir
Biyometrik Araba Girişi - Gerçek Anahtarsız Araba: 4 Adım
Biyometrik Araba Girişi - Gerçek Anahtarsız Araba: Birkaç ay önce kızım bana, bir cep telefonu bile varken modern arabaların neden biyometrik giriş sistemiyle donatılmadığını sordu. O zamandan beri aynısını uygulamak için çalışıyordu ve sonunda T'me bir şeyler yükleyip test etmeyi başardı
Su/Yem Seviye Göstergeleri: 10 Adım (Resimlerle)
Su/Yem Seviye Göstergeleri: Bu derste size mikro işlemciler, mikro denetleyiciler, Raspberry Pi, Arduino vb. kullanmadan nasıl su seviyesi göstergesi yaptığımı göstereceğim. Elektronik söz konusu olduğunda, ben tam bir " kukla". Bazı elektronik bileşenler kullanıyorum
WiFi Etkin Mikro-quadrotor Oluşturun: 5 Adım
WiFi Özellikli Mikro Quadrotor Oluşturun: Bu talimat, WiFi özellikli bir mikro quadrotor oluşturmanın ne kadar basit olduğunu kendiniz kaydeder! Parçaların çoğu ucuz ve kolay bir şekilde satın alınabilir. Ve Android telefonunuzu uzaktan kumanda olarak kullanın
BME280 Göstergeleri ve Tablosu ile ESP8266 NodeMCU: 5 Adım
ESP8266 NodeMCU BME280 Göstergeleri ve Tablosu ile: BME280 Sıcaklık, Nem ve Basınç sensörlü ESP8266 NodeMCU Geliştirme kartınız için Fantezi Göstergeler ve Tablo. Thingspeak, tüm verilerinizi (umarız) gelecek yıllar boyunca herhangi bir zamanda almak için bulutta saklar. Göstergeler ve grafik bir