Tartalomjegyzék:

Arduino autó kijelző: 7 lépés (képekkel)
Arduino autó kijelző: 7 lépés (képekkel)

Videó: Arduino autó kijelző: 7 lépés (képekkel)

Videó: Arduino autó kijelző: 7 lépés (képekkel)
Videó: 🎮 Arduino akadály elkerülő robot autó építés 2024, Július
Anonim
Image
Image
Arduino autó kijelző
Arduino autó kijelző
Arduino autó kijelző
Arduino autó kijelző

Építettem egy fedélzeti diagnosztika (OBD-II) alapú kijelzőt az Adafruit 7 hüvelykes TFT LCD-jének, a Teensy 3.6-nak, a Freematics OBD-II I2C adapternek és néhány, az Amazon-on talált biztonsági mentési érzékelőnek a használatával. A kijelző két oldalas: egy arra, amikor a Honda Accordom menet közben van, és egy arra, amikor hátramenetben van.

Amikor az autóm hajt, a RPM, az MPH, a motor terhelési százaléka, az akkumulátor feszültsége, a kabin hőmérséklete és a motor hűtőfolyadékának hőmérséklete jelenik meg (számos más járműstatisztika is megjeleníthető, ha valaki nem szeretné ezeket).

Amikor az autóm hátramenetben van, az Arduino IDE -kompatibilis Teensy 3.6 beolvas egy animált bitképes képet az autómról, amelyet online találtam, megjeleníti, majd leolvassa a biztonsági érzékelőket. A négy érzékelő mindegyikének lába a távolság, valamint egy animáció az autó mögött, amely megváltoztatja a színét, attól függően, hogy milyen közel van a tárgy az autóhoz (csak a zöld azt jelenti, hogy <5 láb, a zöld és a sárga azt jelenti, hogy <2,6 láb, és a zöld, sárga, a piros pedig <1 láb).

Végül hozzáadtam azt a képességet, hogy éjszaka tompítsa a kijelzőt.

A végeredmény jól néz ki, és nagyon jól működik az autómban. Végül még a középkonzolra is telepítettem, ami egy teljesen más folyamat volt, amibe nem fogok belemenni ebben az utasításban. Az LCD -kijelző létrehozásához használt alkatrészek listája az alábbiakban található.

1) Freematics OBD -II adapter - 35 dollár

2) Biztonsági érzékelők - 15 USD

3) 7 hüvelykes TFT LCD kijelző - 38 dollár

4) SPI alapú LCD kijelző illesztőprogram - 35 USD

5) Teensy 3,6 - 30 dollár

6) Szintváltó - 4 dollár

7) 74HC125 Tri State Buffer IC -6 dollár 2 csomagért (biztos vagyok benne, hogy máshol is megtalálhatja ezt a pofát)

8) MicroSD kártya> = 1 GB - 4 USD

9) Vezetékek, kondenzátorok és ellenállások.

10) LP3470-2.93 Bekapcsolás visszaállítása IC - 2 USD

11) (opcionális): DS18B20 hőmérséklet -érzékelő - 8 dollár

12) (opcionális): OBD -II Splitter - 10 USD

13) (opcionális): Adjon hozzá egy áramköri biztosítékzsinórt - 8 dollár az 5 -ös csomaghoz

1. lépés: Olvassa el a biztonsági mentési érzékelőket

A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása
A biztonsági mentési érzékelők olvasása

Ez a lépés bonyolult, mert ezek a tartalék érzékelők egy adó -vevővel, majd egy kis LCD -vel kommunikálnak, amint a fenti képen látható. Azt akartam, hogy megszabaduljak a kijelzőtől, és használhassam a sajátomat. Egy weboldal segítségével, amelyet némi googling után találtam (Hacking reverse parkolásérzékelők), el tudtam olvasni azt a saját kommunikációs protokollt, amelyet az adó -vevő az LCD -képernyőre küld. Valamilyen oknál fogva a kommunikációs protokoll nem tipikus, például I2C, UART, CAN, USB stb., És a protokoll a szállítótól függően eltérő. Nagyon ajánlom, hogy vásárolja meg a fent linkelt készletet, ha használni fogja a kódomat, mert kifejezetten ezekhez az érzékelőkhöz készült.

Mielőtt leválasztanám az általuk biztosított LCD -t, megvizsgáltam az adó -vevő és az LCD -t összekötő három vezetéket. Volt +5V piros vezeték, földelt fekete vezeték és kék vezeték. Miután csatlakoztatom az oszcilloszkópomat a kék vezetékhez és a földhöz, a fenti képhez hasonló nyomot láttam, de nem pontosan (a fent linkelt webhelyről származó képet használtam). A nyomkövetésnek volt egy HIGH hosszabb időtartamú kezdő bitje, amelyet még 17 rövidebb időtartamú bit követett. A kezdő bit utáni 0-5 bitek nem tartalmaztak hasznos információkat. A 6-8. Bit az A, B, C vagy D érzékelőnek felel meg. A 9-16. Bit a hosszúságnak felel meg méterben. Mellékeltem egy Arduino IDE vázlatot, amely leolvassa az érzékelőket és kimeneti az adatokat a soros konzolon keresztül.

2. lépés: A Bitmap kép létrehozása és MicroSD kártyára helyezése

A Bitmap kép létrehozása és MicroSD kártyára helyezése
A Bitmap kép létrehozása és MicroSD kártyára helyezése
A Bitmap kép létrehozása és MicroSD kártyára helyezése
A Bitmap kép létrehozása és MicroSD kártyára helyezése

GIMP nevű ingyenes képszerkesztő szoftvert használtam, hogy kivágjam és átméretezzem az autóm képét felülnézetből. Ezt követően exportáltam a képet 24 bites bitképként "car.bmp" néven, ami 110 x 250 képpont. Feltöltöttem ezt egy microSD kártyára, és betettem a microSD kártyát a Teensy 3.6 mikrokontrollerbe.

A fő okok, amiért az UNO helyett a Teensy 3.6 -ot választottam, az volt a sebesség, amellyel a Teensy képes volt olvasni egy SD -kártyát és megjeleníteni a képet az RA8875 kijelzőmeghajtó segítségével. Az UNO használatával a folyamat körülbelül 8 másodpercet vett igénybe, míg a Teensy 3.6 1,8 másodpercet vett igénybe.

3. lépés: A hardver csatlakoztatása

A hardver csatlakoztatása
A hardver csatlakoztatása

Az Adafruit egy igazán jó megjelenésű, 7 hüvelykes TFT LCD kijelzővel rendelkezik, amelyet az RA8875 nevű IC vezérli. Két okból választottam ezt a kijelzőt és a megjelenítő illesztőprogramot. Először is, kiterjedt könyvtárak vannak a kijelzőre írva. Másodszor, a kijelző illesztőprogramja képes beszélni bármely SPI feletti mikrokontroller, vagyis nincs sok vezeték, amely összeköti a mikrokontrollert az RA8875 -tel.

Ennek a beállításnak két hátránya van. Először is az a tény, hogy az Adafruit RA8875 kártyáján található egy hardverhiba, amely megköveteli a 74HC125 háromállapotú puffer IC használatát, ha bármilyen SPI-alapú eszközt, például SD-kártyát szeretne használni. A hardverhiba teljesebb megértéséhez olvassa el az alábbi fórumot. Másodszor, viszonylag hosszú idő szükséges a képek LCD -re történő elküldéséhez. Továbbá, a kép LCD -re történő elküldéséhez szükséges hosszú idő az SPI -kapcsolatnak köszönhető, amelyet a mikrovezérlők órajele és a nagy mennyiségű adat továbbít a kijelző illesztőprogramjának. nagyon kevés vezeték.

Létrehoztam egy Fritzing -sémát, hogy bárki, aki szeretné létrehozni ezt a kijelzőt, könnyen le tudja olvasni, hogy a Teensy 3.6 -as érintkezők melyikhez csatlakoznak. Alább mellékeltem egy.frz fájlt. Az egyetlen két komponens, amely nincs megjelölve, a kondenzátorok, amelyek 1F 16V elektrolit kondenzátor és 100μF kerámia kondenzátor. Ezeket azért tettem bele, hogy megbizonyosodjunk arról, hogy a Teensy mikrokontroller áramellátása egyenletes DC +5 V volt, és nem tartalmazott feszültségcsúcsokat (lehet, hogy nem szükséges, de azért beleraktam őket, mert az autó feszültsége gyorsan ingadozhat az akkumulátor terhelésétől függően).

Pár dolog, amit érdemes megemlíteni az alkatrészekkel kapcsolatban. Először is, a szintváltó bármilyen 5 V -os jelet vesz, és 3.3 V -os Teensy 3.6 biztonságos feszültséggé alakítja át. Ez szükséges az OBD I2C adapterhez, valamint a tartalék érzékelő adó -vevőhöz. Másodszor, a teensy I2C vonalaihoz 4,7 kΩ felhúzó ellenállás szükséges. Harmadszor, az "éjszakai vezetéket" (a fényerő-szabályozó vezetéket) és a "tartalék bekötő vezetéket" összekötő négy ellenállás szükséges feszültségosztóként, hogy a 12V-13V jeleket körülbelül 2,5-3V jelekre csökkentsék.

UPDATE 7/22/18: Úgy találtam, hogy az OBD-I2C modul belső hőmérséklet-érzékelője nagyon furcsa számokat ad ki. Néha működne, de a legtöbb esetben a modul 400 fok feletti hőmérsékletet adott ki. Emiatt úgy döntöttem, hogy hozzáadom a saját ds18b20 hőmérséklet -érzékelőmet. Örömmel fogadja, ha bármilyen típusú hőmérséklet -érzékelőt használ itt, de módosítania kell az Arduino kódot.

FRISSÍTÉS 19.03.19.: A Teensy 3.6 nem indul el, ha nagyon hideg van. Hozzáadtam egy bekapcsolási visszaállítási áramkört, hogy megbizonyosodjon arról, hogy megfelelően indul.

4. lépés: RA8875 kijelző illesztőprogram és grafikus tervezés

RA8875 kijelző illesztőprogram és grafikus tervezés
RA8875 kijelző illesztőprogram és grafikus tervezés

Az RA8875 kijelzőmeghajtónak van egy Adafruit_RA8875 nevű könyvtára, amelyet az első és a második oldalon látható alakzatok létrehozásakor használtam fel. Az RA8875 könyvtára csak vonalakat, téglalapokat, lekerekített téglalapokat, háromszögeket, ellipsziseket és köröket hozhat létre, ezért a grafikát okos módon kell megtervezni, hogy összetettebb alakzatokat hozzon létre. Például az első oldalon található szürke gyűrű valójában egy nagyobb szürke kör, nagyobb átmérővel, amelyet egy kisebb, kisebb átmérőjű fekete kör követ. Ezenkívül a biztonsági mentés oldalának egy kis része 2 háromszöget tartalmaz, amelyek sokszög alakúak. Ezt azért tettem, hogy megváltoztassam a tartalékérzékelő oldal egyes szakaszainak színét. A kijelző Arduino fájlja egy sor tömböt tartalmaz, amelyekkel nyomon követtem a háromszögek és egyéb alakzatok helyét.

Ezt a nagyszerű weboldalt használtam az RGB565 színek kiválasztásához és a vázlatban történő meghatározásához, hogy használhassam az Adafruit_RA8875 könyvtárban előre definiált nem alapértelmezett színeket.

Betűtípusok tekintetében az Adafruit_RA8875 könyvtár csak egyet támogat, kivéve, ha megjegyzést fűz a könyvtár egy részéhez, amely lehetővé teszi az Adafruit_GFX könyvtár betűtípusainak használatát. Az alábbiakban hozzáadtam a módosított Adafruit_RA8875 könyvtárat. Csak megjegyzett néhány sor kódot, majd használhattam az Adafruit_GFX könyvtár betűtípusait. Ezenkívül a projektben használt 7 szegmenses betűtípus használatához győződjön meg arról, hogy a "FreeSevenSegNumFont.h" fájl az Adafruit_GFX könyvtár betűtípusok mappájában található.

5. lépés: A vázlat feltöltése

A vázlat feltöltése
A vázlat feltöltése
A vázlat feltöltése
A vázlat feltöltése

A vázlat feltöltéséhez a Teensy 3.6 -ra telepítenie kell a Teensyduino programot. Ezután le kell cserélnie az Adafruit_RA8875 és az Adafruit_GFX könyvtárakat a tizenéves könyvtárban (nem a tipikus hely a dokumentumokban). Macen jobb gombbal kellett kattintanom az Arduino alkalmazás ikonjára az alkalmazásokban, majd navigálni a/Contents/Java/hardware/teensy/avr/libraries mappába. Windows esetén teljesen biztos vagyok benne, hogy a C meghajtó alatt van az x86 programfájlokban, az Arduino -ban, majd a hardvermappában. Miután ezt megtette, meg kell változtatnia a vázlatfüzet helyét az Arduino alkalmazásban, módosítva azt a preferenciákban arra a helyre, ahol a tizenéves könyvtárai vannak (azaz /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UPDATE 7/22/16: A belső hőmérséklet -érzékelő problémája miatt, amiről korábban beszéltem, telepítenem kellett egy DS18B20 modul hőmérséklet -érzékelőt. A zip fájlban 4 arduino vázlatot fog látni. Kérjük, töltse fel a display_code vázlatot, ha az OBD-II I2C modul belső hőmérséklet-érzékelőjét szeretné használni. Kérjük, töltse fel a display_code_with_new_temperature_sensor vázlatot, ha használni szeretné a fent linkelt DS18B20 modult.

UPDATE 11/17/17: Több hibát is kijavítottam a szoftverben, beleértve a DS18B20 -at, amely 185 Fahrenheit hőmérsékletet produkált, a kijelző hideg időben egyáltalán nem kapcsol be, és a pixelek rossz színben ragadtak, amikor a kijelző elsötétült.

Ezután használja a fenti képet, hogy megbizonyosodjon arról, hogy tizenéves beállításai megfelelnek a képnek. Azt tapasztaltam, hogy a teensy 240 MHz-es túlhajtása nem teszi lehetővé az I2C OBD-II adapter kommunikációját a tizenévesekkel. Végül kattintson a feltöltés gombra.

Elég kiterjedt megjegyzéseket írtam az arduino vázlatfájlokba. Kérjük, keresse meg a szoftver működésének magyarázatát. Bármilyen kérdéssel forduljon hozzám bizalommal. Igyekszem a lehetőségeimhez mérten válaszolni rájuk. Sok szerencsét!

6. lépés: 3D nyomtatás egy LCD tokban

3D nyomtatás LCD tokban
3D nyomtatás LCD tokban
3D nyomtatás LCD tokban
3D nyomtatás LCD tokban
3D nyomtatás LCD tokban
3D nyomtatás LCD tokban

Létrehoztam egy 3D nyomtatott LCD felső és alsó fedelet a 7 -os kijelző védelme érdekében. Csatoltam az. IPT feltaláló alkatrészfájljait, valamint a. STL fájljait.

Tartalmaztam a backup_sensor_ring.ipt nevű részt is, amely egy gyűrű, amely illeszkedik a fent linkelt biztonsági mentési érzékelők köré. Az autómban már voltak előre fúrt biztonsági mentési érzékelő lyukak, amelyek túl nagyok voltak az Amazonon vásárolt tartalékérzékelőkhöz, ezért létre kellett hoznom egy gyűrűt, amely illeszkedik a tartalékérzékelőkhöz. Ha a készletben található kör alakú fúródarabbal szeretne fúrni a lökhárítójába, akkor erre az alkatrészre nincs szüksége.

7. lépés: Az OBD-II port felosztása, így az Arduino csak akkor rendelkezik energiával, amikor az autó fut

Az OBD-II port felosztása tehát az Arduino-nak csak akkor van ereje, amikor az autó fut
Az OBD-II port felosztása tehát az Arduino-nak csak akkor van ereje, amikor az autó fut
Az OBD-II port felosztása tehát az Arduino-nak csak akkor van ereje, amikor az autó fut
Az OBD-II port felosztása tehát az Arduino-nak csak akkor van ereje, amikor az autó fut
Az OBD-II port felosztása tehát az Arduino-nak csak akkor van ereje, amikor az autó fut
Az OBD-II port felosztása tehát az Arduino-nak csak akkor van ereje, amikor az autó fut

Röviddel a kijelző felszerelése után rájöttem, hogy a kijelző mindig bekapcsolt állapotban van, még akkor is, ha az autó ki volt kapcsolva. Az OBD-II csatlakozóba nézve azt tapasztaltam, hogy az OBD-II csatlakozóhoz tartozó 12 V-os tápvezeték mindig közvetlenül az akkumulátorhoz van csatlakoztatva.

Ennek kiküszöbölésére vásároltam egy OBD-II elosztót, elvágtam az elosztó két csatlakozójának egyikén a 16-os tűhöz vezető vezetéket, majd a levágott vezetéket egy áramköri vezetékhez kötöttem.

Ezután a multiméterem segítségével a vezetőoldali biztosítékdobozhoz mentem, és teszteltem a meglévő biztosítékokat, hogy melyik biztosíték kap áramot, miután a kulcsot gyújtásba helyezték.

Végül csatlakoztattam az áramköri vezetéket az általam elhelyezett biztosítékhoz, hogy a kijelző csak akkor kapcsoljon be, amikor az autóm jár. Kérjük, végezzen néhány kutatást, hogyan lehet megfelelően áramkört hozzáadni autójához. Ezt a youtube tutorialt jónak találtam.

Ajánlott: