Tartalomjegyzék:

Wifi -kompatibilis OLED ESP32 autómérők: 3 lépés (képekkel)
Wifi -kompatibilis OLED ESP32 autómérők: 3 lépés (képekkel)

Videó: Wifi -kompatibilis OLED ESP32 autómérők: 3 lépés (képekkel)

Videó: Wifi -kompatibilis OLED ESP32 autómérők: 3 lépés (képekkel)
Videó: ESP32 TFT Clock using auto select open WiFi and NTP to sync 2024, November
Anonim
Image
Image
Wifi -kompatibilis OLED ESP32 autómérők
Wifi -kompatibilis OLED ESP32 autómérők

Bevezetés először…

Autómérőket építek egyfajta újra és újra hobbiként. Lásd: https://www.instructables.com/id/Remote-Car-Monit… és https://www.instructables.com/id/Remote-Car-Monit… további két példaért. Különösen azokat szeretem, amelyek illeszkednek az autó eredeti alkatrészeihez. Tehát miért más ez, és mi inspirált arra, hogy megépítsem. A válasz két dolog:

1) ESP32 - Ki akartam próbálni az új kölyköt a blokk chipen, különösen azért, mert az arduino -alapú eszközlánc meglehetősen kiforrott. Az egyik érdekes dolog, amit az ESP32 lehetővé tesz, az IOT a beépített wifi és bluetooth képességekkel. A közösség több könyvtárat írt, hogy ezt némileg egyszerűvé tegye (webszerverek, AP -k, wifi -ügyfelek, mDNS stb., Stb.).

2) Olcsó OLED képernyők - Még 2007 -ben készítettem egy mérőt egy TFT segítségével, amely az óra helyén állt egy GD (2004-2007) WRX -en. A TFT különböző ízekben kapható. Vannak, akik jobban dolgoznak éjszaka, vannak, akik nappal, stb. De egyik sem működik minden körülmények között. Észre sem vettem az útjaim hibáját, amíg az egyik használt mérőeszköz használhatatlanná vált egy fórumtag napsütéses pályán. Lépjen be az OLED -be, amelyek fantasztikusak az autóipari alkalmazásokhoz. Éjszaka nem túl fényesek, és (ami még fontosabb) a legtöbb napfényben láthatók.

Ez kettő az egy számára tanulságos, mivel mindent írtam két közös autómérőhöz, az olajnyomáshoz és a turbónyomáshoz. Mindkettő lényegében ugyanaz: egy kicsi alakmérő, analóg megjelenésű, animált OLED kijelzővel, diszkrét számokkal és maximumokkal. Mindkettő wifi AP -ként és webszerverként is működik. Amikor számítógépen vagy mobiltelefonon keresztül csatlakozik hozzájuk, megjelenik egy mozgó EKG -stílus diagram (ez a kissé innovatív rész).

Kellékek

HELTEC ESP32 modul-szerezze be a wifi változatot

Olajnyomás -specifikus alkatrészek:

Olajnyomás -érzékelő - egy 5222 -es automter 5222 -es olajnyomás -érzékelő csatlakozóalkatrészeket használtam - ez autó és telepítési hely függvényében változik. Kérjük, olvassa el a szervizelési kézikönyveket, fórumokat, technikai eszközöket stb., És tegye ezt helyesen, hogy ne legyen olajszivárgás

Nyomásmérő specifikus részei:

  • Légnyomás -érzékelő (csak ha nyomásfokozót szeretne készíteni) -
  • Légtömlő
  • T szerelvények

Az általam használt könyvtárak, amelyek nélkülözhetetlenek voltak:

Smoothiecharts - https://smoothiecharts.org/ Kiváló és könnyű élő frissítési diagramok. Nagyon testreszabható, és nem támaszkodik a js könyvtár hivatkozására máshol az interneten. Ez lehetővé teszi a „local-IOT” típusú beállításokat, és a teljes könyvtár egyetlen karakterláncba illeszkedik a webkiszolgáló kódkódjában!

Az ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- azt teszi, amit a dobozon ír, és jól teszi

ThingPulse OLED grafikus könyvtár (néha hívjuk a squix könyvtárnak) - https://github.com/ThingPulse/esp8266-oled-ssd130… - nagyon hatékony és egyszerű grafika az ESP chipekhez. Megengedte, hogy lusta programozást végezzek, és továbbra is meggyőző animációkat kapjak.

Eszközök/egyéb:

forrasztópáka - hosszú kábelvezetékek készítésére szolgál az érzékelők számára, fejlécek felszerelése a fedélzetre, zsugorodó zsugorpapír stb.

csavarhúzó/foglalatok/egyéb autós szerszámok - szükségesek az érzékelők autóba történő beszereléséhez

kétoldalas szalag - mérők felszerelése a házakba és a ház felszerelése az autóba (forró ragasztó és egyéb dolgok működhetnek, de én inkább a 3M kétoldalas külső díszítőszalagot részesítem előnyben. Jól tart, és károsodás nélkül lehúzható.)

olló - szalaghoz és csővágáshoz és cipzárhoz

cipzár - a dolgok összefogásához, a vezetékek kötéséhez a műszerfal alatt és a motortérben, az érzékelők helyben tartásához stb.

1. lépés: Első kód/Második hardver

Első kód/Második hardver
Első kód/Második hardver
Első kód/Második hardver
Első kód/Második hardver

A kód innen tölthető le:

Olajnyomás -

Növelje a nyomást -

Növelje a nyomást arcokkal az analóg megjelenésmérők helyett -

Grafikus kód: A ThingPulse könyvtár annyira hatékony, hogy xbms -t rajzolhat egymásra, és meggyőző eredményeket érhet el!

A mérőképek valójában egy nyílt forráskódú grafikai tárolóból származtak (https://thenounproject.com/). A művész Iconic, CY (https://thenounproject.com/icon/490005/).

A gimp segítségével 20 különböző keretet generáltam úgy, hogy a tű minden kullancsjelre mutatott. A mosolygó arc ikonok NOVITA ASTRI, ID, és itt vannak:

Ezután ezeket a módszereket konvertáltam uint8_t tömbökbe (tipp: ha a megjelenítéskor a színek megfordulnak, csak fordítsa meg az eredeti színeit): https://blog.squix.org/2015/05/esp8266- bólintás…

Az élő animációs kód meglehetősen egyszerű:

  • Olvassa el az érzékelőt
  • Skálaolvasás (1 -től 1 -ig állítottam be a pozitív boost értékeket, és csak akkor mozgassa a tűt, amikor erősítés van, nem pedig vákuumban)
  • Rajzoljon xbm -et, majd tegyen le számkaraktereket minden máshoz.
  • öblítse le és ismételje meg

Érzékelő kód: A két érzékelőhöz használt érzékelő kódot újra felhasználom néhány más projekthez. Hozzáadtam néhány átlagolást, hogy elkerüljem az ugráló érzékelőket. Ebbe beletartozik az is, hogy minden „olvasás” átlagosan 5 olvasás.

Fokozási kód (az érzékelő 0-5 voltos analóg értéket ad, amelyet az ADC 0-1024 lépésre változtat):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); // float ResultPSI = (rboost*(. 00488)/(. 022) +20)/6.89 - atmo; // a /6.89 elhagyása kpa float esetén ResultPSI = ((((rboost /4095) + 0.04) /0.004) * 0.145 - atmo; // 0,145 -tel a psi kiszámításához // 4096 érték az esp32 /*rBoost = rBoost + 1; ha (rBoost> = 20) {rBoost = 0; }*/ return (ResultPSI); }

Olajnyomás-kód (az érzékelő az általa érzékelt nyomás alapján változtatja ellenállását, ezért feszültségosztó szükséges ahhoz, hogy ezt 0-5 V közötti feszültséggé alakítsa át: lásd: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito …… (az aljára) további információért):

int getOilPSI () {float psival = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); psival = -0,0601*psival + 177,04 - 14,5; return psival; }

Webkiszolgáló és AP funkció: Az AP funkció meglehetősen egyszerű - példányosítson és AP objektumot a sugárzni kívánt ESSID azonosítóval és jelszóval, és már indulhat is.

const char *ssid = "boost_gauge_ap"; const char *password = "jelszó";

WiFi.softAP (ssid, jelszó);

Még DHCP szervere is van, így nem kell aggódnia. Alapértelmezés szerint az IP 192.168.1.4 (fogalma sincs miért, csak ezt választotta). A webszerver kicsit bonyolultabb, és némi kutatást igényel. Alapvetően aszinkron webszervert szeretne, hogy élő frissítési adatokat kaphasson. Szerencsére van könyvtár erre. Nem vagyok javascript fejlesztő, ezért egy csomó grafikon- és grafikonkönyvtárral bütyköltem, amíg rá nem akadtam a turmixlistákra. A legtöbb többi diagramozó könyvtár úgy van megírva, hogy mindenféle kódot örököl a web más könyvtáraiból, amelyek dinamikusan betöltődnek az oldal megjelenítésekor. Azt akartam, hogy ez az internettől függetlenül működjön, így ez nagy felfedezés volt. Másodszor elég kicsi volt, hogy elférjen egy arduino -n, és amint a kódból látható, egyetlen karakter tömbbe illeszkedik.

Webszerver deklarációk: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer szerver (80); // példányosítsa és válassza ki a portot (a 80 a http szabvány)… server.on ("/", HTTP_GET, (AsyncWebServerRequest *kérés) {request-> send (200, "text/html", "… // a weboldal + a smoothiecharts könyvtár hatalmas karakter tömbben}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *kérés) {// az első oldal valójában ezt a nagyon kis oldalt hívja, amely csak az értékkérést adja vissza -> send (200, "text/html", Sboost);}); server.begin ();

2. lépés: Hardver és kábelezés

Hardver és huzalozás
Hardver és huzalozás
Hardver és huzalozás
Hardver és huzalozás
Hardver és huzalozás
Hardver és huzalozás

A képen a galériában látható az általam használt két érzékelő. A nagy arany színű egy Autometer 2242 olajnyomás -érzékelő. Ennek az érzékelőnek a teste és menete földelt, a terminál pedig az ellenállás leolvasása.

Az Autométer bármelyik érzékelőjének nyomással vagy hőmérséklettel szembeni ellenállási görbéjét biztosítja. Ezt feszültségosztó segítségével alakítottam át feszültséggé (lásd a kapcsolási rajzot).

Az MPX4250AP légnyomás -érzékelőnek három feszültség alatti csapja és több nem használt csapja van. Ezek V bemenet, föld és érzékelő kimenet. 0-5v leolvasást ad ki, amelyet a mikrokontroller ki tud olvasni (vagy ebben az esetben 0-3 volt mcu. Tehát az érzékelő leolvasása feszültségosztó segítségével csökken.) A specifikációs lap itt található:

Számos probléma merül fel az 5V -ról a 3V -ra történő csökkentéskor. Esetemben az egyszerűség kedvéért a feszültségosztót használtam, és az alkatrészek a munkapad körül voltak. Egy kis hibát vezet be a leolvasásokba a további komponensek (a két ellenállás) lehetséges hibája alapján. Ez egyes esetekben 10% -os kedvezményt jelenthet a leolvasott értékekkel. Ezzel együtt tudok élni. Ha nem tudja, akkor opamp -et és ellenállásokat vagy logikai szint -átalakítót szeretne használni (különböző elektronikai gyártóktól beszerezhető. A Sparkfun rendelkezik itt: https://www.sparkfun.com/products/12009 Néha magas értékeket kapok ezen a mérőn (valójában ezt a terméket a kapcsolási rajzon mutattam be).

Az ESP32 -eseket USB -n keresztül tápláltam. Ebbe beletartozott az is, hogy a következőhöz hasonló közvetlen töltőt kell bekötni: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… az autóba, majd egy USB -elosztó segítségével felosztani. Láthatja, hogy derékszögű USB -kábeleket használtam annak biztosítására, hogy minden kis területen működjön (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Más fényképeken olyan helyek láthatók, ahol lyukakat vágtam vagy drótot futtattam. Minden autó más lesz. Legyen óvatos, a kések és ollók élesek, az áram veszélyes lehet, ezért kérjük, húzza ki az akkumulátort, mielőtt beköti a dolgokat.

3. lépés: 3D nyomtatott ház

3D nyomtatott ház
3D nyomtatott ház

Ehhez több 3D nyomtatott házat használtam.

  • Általános nagyméretű, 2 képernyős kerek mérő. Ezt láthatja az első oldal képein. Az órám mellé tettem a műszerfalra.
  • Egyméretű ék stílusú, amely elfér a Subaru Impreza (wrx, sti, stb.) Óraterében körülbelül 2008 és 2014 között.
  • Kettős nyomtávú darab, amely illeszkedik a kormánykerék oszlopaira és más enyhén lekerekített felületekre:

Szívesen másolja és módosítsa ezeket az igényeinek megfelelően. Egyik sem tökéletes, és mindegyikük némi kiigazítást igényel.

Néhány megjegyzés:

  • Az enyémet plasztidippel fejeztem be; ez a lusták preferált módszere.
  • A csiszoló műanyagok finom részecskéket képeznek, amelyek nem jóak az Ön számára, használjon megfelelő maszkot.
  • A házamhoz PETG -t használtam. Az ABS is jó. A PLA a forró napsütésben a műszerfalon vetemedik.
IoT kihívás
IoT kihívás
IoT kihívás
IoT kihívás

Második díj az IoT Challenge -ben

Ajánlott: