Sisukord:

Arduino auto ekraan: 7 sammu (piltidega)
Arduino auto ekraan: 7 sammu (piltidega)

Video: Arduino auto ekraan: 7 sammu (piltidega)

Video: Arduino auto ekraan: 7 sammu (piltidega)
Video: How to use TM1637 4 digits seven segment display with Arduino 2024, November
Anonim
Image
Image
Arduino auto ekraan
Arduino auto ekraan
Arduino auto ekraan
Arduino auto ekraan

Ehitasin pardadiagnostikal (OBD-II) põhineva ekraani, kasutades Adafruit'i 7-tollist TFT-ekraani, Teensy 3.6, Freematics OBD-II I2C adapterit ja mõnda Amazonist leitud varundusandurit. Ekraanil on kaks lehte: üks selleks ajaks, kui minu Honda Accord sõidab, ja teine tagasikäiguks.

Kui mu auto on sõidu ajal, kuvatakse pöörete arv, MPH, mootori koormusprotsent, aku pinge, salongi temperatuur ja jahutusvedeliku temperatuur (kui te seda ei soovi, on saadaval ka mitu muud sõiduki statistikat).

Kui mu auto on tagurpidi, loeb Arduino IDE -ga ühilduv Teensy 3.6 minu veebist leitud auto animeeritud bitikaardi pildi, kuvab selle ja loeb seejärel varundusandurid. Mõlema anduri kaugus on jalgades pluss auto taga olev animatsioon, mis muudab värvi vastavalt sellele, kui lähedal objekt on autole (lihtsalt roheline tähendab <5 jalga, roheline ja kollane tähendab <2,6 jalga ja roheline, kollane, ja punane tähendab <1 jalga).

Lõpuks lisasin võimaluse öösel ekraani hämardada.

Lõpptulemus näeb hea välja ja töötab minu autos väga hästi. Lõpuks installisin selle isegi keskkonsooli, mis oli hoopis teine protsess, millesse ma selles juhendis ei süvene. Allpool on loetelu osadest, mida selle LCD -ekraani loomisel kasutasin.

1) Freematics OBD -II adapter - 35 dollarit

2) Varundusandurid - 15 dollarit

3) 7 -tolline TFT LCD -ekraan - 38 dollarit

4) SPI -põhine LCD -ekraanidraiver - 35 dollarit

5) Teensy 3,6 - 30 dollarit

6) taseme nihutaja - 4 dollarit

7) 74HC125 Tri State Buffer IC -6 dollarit 2 paki eest (olen kindel, et leiate selle piiluri mujalt)

8) MicroSD -kaart> = 1 GB - 4 dollarit

9) Traat, kondensaatorid ja takistid.

10) LP3470-2.93 Lülita sisse lähtestamise IC - 2 dollarit

11) (valikuline): temperatuuriandur DS18B20 - 8 dollarit

12) (valikuline): OBD -II Splitter - 10 dollarit

13) (valikuline): lisage vooluahela kaitsme juhe - 8 dollarit 5 pakendi eest

Samm: varundusandurite lugemine

Varundusandurite lugemine
Varundusandurite lugemine
Varundusandurite lugemine
Varundusandurite lugemine
Varundusandurite lugemine
Varundusandurite lugemine
Varundusandurite lugemine
Varundusandurite lugemine

See samm on keeruline, kuna need varundusandurid suhtlevad transiiveriga ja seejärel väikese LCD -ga, nagu ülaltoodud pildil näha. Tahtsin võimalust nende väljapanekust lahti saada ja enda oma kasutada. Veebisaidi abil, mille leidsin pärast mõningast guugeldamist (tagurpidise parkimise andurite häkkimine), suutsin lugeda varalist suhtlusprotokolli, mille transiiver LCD -ekraanile saadab. Millegipärast ei ole suhtlusprotokoll tüüpiline, nagu I2C, UART, CAN, USB jne, ning protokoll erineb sõltuvalt tarnijast. Soovitan tungivalt osta ülalpool lingitud komplekt, kui kavatsete kasutada minu koodi, kuna see oli spetsiaalselt nende andurite jaoks kirjutatud.

Enne nende poolt eraldatud LCD -ekraani lahtiühendamist uurisin kolme juhtme vahel, mis ühendasid transiiveri ja LCD -ekraani. Seal oli +5 V punane juhe, maandatud must juhe ja sinine juhe. Pärast ostsilloskoobi ühendamist sinise juhtme ja maandusega nägin ülaltoodud pildile sarnast jälge, kuid mitte täpselt (kasutasin ülaltoodud lingi veebisaidi pilti). Minu jäljel oli HIGH pikema kestusega algusbitt, millele järgnes veel 17 lühemat kestusega bitti. Bittidel 0-5 pärast stardibitti ei olnud kasulikku teavet. Bittid 6-8 vastavad anduritele A, B, C või D. Bittid 9-16 vastasid pikkusele meetrites. Kaasasin Arduino IDE visandi, mis loeb andureid ja väljastab andmed jadakonsooli kaudu.

Samm: Bitmap -pildi loomine ja MicroSD -kaardile panemine

Bitmap -pildi loomine ja MicroSD -kaardile panemine
Bitmap -pildi loomine ja MicroSD -kaardile panemine
Bitmap -pildi loomine ja MicroSD -kaardile panemine
Bitmap -pildi loomine ja MicroSD -kaardile panemine

Kasutasin tasuta fototöötlustarkvara nimega GIMP, et kärpida ja muuta oma auto pilti ülaltvaates. Seejärel eksportisin pildi 24 -bitise bitikaardipildina nimega "car.bmp", mis on 110 pikslit ja 250 pikslit. Laadisin selle microSD -kaardile ja panin microSD -kaardi oma Teensy 3.6 mikrokontrollerisse.

Peamised põhjused, miks ma UNO asemel Teensy 3.6 -ga läksin, oli kiirus, millega Teensy sai lugeda SD -kaarti ja kuvada pilti RA8875 draiveri abil. UNO -d kasutades võttis protsess aega umbes 8 sekundit, Teensy 3.6 aga 1,8 sekundit.

Samm: riistvara ühendamine

Riistvara ühendamine
Riistvara ühendamine

Adafruitil on tõesti hea välimusega 7 -tolline TFT -LCD, mida juhib RA8875 -ga varustatud IC. Valisin selle ekraani ja kuvari draiveri kahel põhjusel. Esiteks on kuvari jaoks ette kirjutatud ulatuslikud teegid. Teiseks saab kuvaridraiveriga rääkida mis tahes mikrokontroller üle SPI, mis tähendab, et mikrokontrollerit RA8875 -ga ei ühenda nii palju juhtmeid.

Sellel seadistusel on kaks negatiivset külge. Esiteks on asjaolu, et Adafruit'i RA8875 plaadil on riistvaraprobleem, mis nõuab 74HC125 kolme oleku puhvri IC kasutamist, kui soovite kasutada mis tahes SPI-põhist seadet, näiteks SD-kaarti. Riistvara vea täielikumaks mõistmiseks lugege palun järgmist foorumit. Teiseks, kas piltide LCD -le saatmiseks kulub suhteliselt kaua aega. Samuti on pildi LCD -le saatmiseks kuluv pikk aeg tingitud SPI -ühendusest, mida piiravad mikrokontrollerite taktsagedus ja suur hulk andmeid, mis tuleb ekraanidraiverile saata väga vähe juhtmeid.

Lõin Fritzingi skeemi, et igaüks, kes sooviks selle ekraani luua, saaks hõlpsasti lugeda, millega Teensy 3.6 tihvtid ühenduvad. Lisasin alla.frz -faili. Ainsad kaks märgistamata komponenti on kondensaatorid, mis on 1F 16V elektrolüütkondensaator ja 100μF keraamiline kondensaator. Lisasin need, et veenduda, et Teensy mikrokontrolleri toide on ühtlane DC +5V ja ei sisalda pingepiike (ei pruugi olla vajalik, kuid lisasin need, kuna auto pingevarustus võib olenevalt aku koormusest kiiresti kõikuda).

Paar asja, mida komponentide kohta mainida. Esiteks võtab taseme nihutaja mis tahes 5 V signaali ja muudab selle 3,3 V Teensy 3,6 turvaliseks pingeks. See on vajalik nii OBD I2C adapteri kui ka varundusanduri transiiveri jaoks. Teiseks, teismeliste I2C liinid vajavad 4,7 kΩ tõmbetakistit. Kolmandaks, neli takistit, mis ühendavad "öise juhtme" (hämardav juhe) ja "varukoopia juhtme", on vajalikud pingejaguriks, et vähendada 12V-13V signaale umbes 2,5-3V signaalideni.

UPDATE 22.07.18: leidsin, et OBD-I2C mooduli sisetemperatuuri andur väljastab väga kummalisi numbreid. Mõnikord see toimiks, kuid enamasti andis moodul välja temperatuurid üle 400 kraadi F. Seetõttu otsustasin lisada oma ds18b20 temperatuurianduri. Olete siin teretulnud kasutama mis tahes tüüpi temperatuuriandureid, kuid peate Arduino koodi muutma.

UUENDA 01.03.19: Teensy 3.6 ei käivitu, kui on väga külm. Lisasin sisselülitusahela, et veenduda, et see korralikult käivitub.

Samm 4: RA8875 kuvaridraiver ja graafiline disain

RA8875 kuvaridraiver ja graafiline disain
RA8875 kuvaridraiver ja graafiline disain

RA8875 kuvaridraiveril on raamatukogu nimega Adafruit_RA8875, mida kasutasin esimesel ja teisel lehel nähtavate kujundite loomisel. RA8875 raamatukogu saab luua ainult jooni, ristkülikuid, ümardatud ristkülikuid, kolmnurki, ellipse ja ringe, nii et keerulisemate kujundite loomiseks tuleb graafika kujundada nutikalt. Näiteks esimesel lehel olev hall rõngas on tegelikult suurema läbimõõduga hall täisring, millele järgneb väiksema läbimõõduga täisring. Samuti sisaldab varundusanduri lehe üks väike osa 2 kolmnurka, mis on paigutatud nii, et need moodustavad hulknurga. Tegin seda selleks, et saaksin varundusanduri lehe üksikute sektsioonide värvi muuta. Ekraani Arduino -fail sisaldab hulga punkte, mida kasutasin kolmnurkade ja muude kujundite asukoha jälgimiseks.

Kasutasin seda suurepärast veebisaiti RGB565 värvide valimiseks ja visandis määratlemiseks, et saaksin kasutada Adafruit_RA8875 raamatukogus juba eelnevalt määratletud vaikimisi värve.

Fontide osas toetab Adafruit_RA8875 raamatukogu ainult ühte, kui te ei teegi teeki jaotisest kommentaari, mis võimaldab teil kasutada Adafruit_GFX raamatukogu fonte. Lisasin allpool muudetud Adafruit_RA8875 raamatukogu. Kommenteerisin just paar koodirida ja sain seejärel kasutada Adafruit_GFX raamatukogu fonte. Samuti, et kasutada selles projektis kasutatud seitsme segmendi fonti, veenduge, et fail "FreeSevenSegNumFont.h", mis asub Adafruit_GFX raamatukogu fondide kaustas.

Samm: visandi üleslaadimine

Sketši üleslaadimine
Sketši üleslaadimine
Sketši üleslaadimine
Sketši üleslaadimine

Visandi üleslaadimiseks teenusesse Teensy 3.6 peate installima Teensyduino. Seejärel peate asendama raamatukogud Adafruit_RA8875 ja Adafruit_GFX teismelise teegi asukohas (mitte teie tüüpiline asukoht dokumentides). Macis pidin rakendustes paremklõpsama Arduino rakenduse ikoonil ja seejärel navigeerima jaotisesse/Contents/Java/hardware/teensy/avr/libraries. Windowsi puhul olen üsna kindel, et see on teie C -draivi all programmifailides x86, Arduino ja seejärel riistvara kaustas. Kui olete seda teinud, peate Arduino rakenduses visandiraamatu asukoha muutma, muutes seda eelistustes sinna, kus teie teismelised teegid kunagi asuvad (st /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UUENDAMINE 22.7.16: sisetemperatuuri anduri probleemi tõttu, millest ma varem rääkisin, pidin paigaldama DS18B20 mooduli temperatuurianduri. Zip -failis näete 4 arduino visandit. Kui soovite kasutada OBD-II I2C mooduli sisetemperatuuri andurit, laadige üles visand display_code. Kui soovite kasutada ülal lingitud DS18B20 moodulit, laadige üles esitusviisi display_code_with_new_temperature_sensor esitus.

UUENDAMINE 17.11.17: Parandasin tarkvaras mitmeid vigu, sealhulgas DS18B20, mille väljundtemperatuur oli 185 Fahrenheiti, ekraan ei lülitu külma ilmaga üldse sisse ja pikslid jäid ekraani hämardamisel valesse värvi.

Seejärel kasutage ülaltoodud pilti, et veenduda, et teie teismelised seaded vastavad pildile. Leidsin, et teensy kiirendamine 240 MHz-ni ei võimaldanud I2C OBD-II adapteril teismelisega suhelda. Lõpuks klõpsake lihtsalt üleslaadimisel.

Kirjutasin arduino visandifailidesse päris ulatuslikke kommentaare. Palun vaadake sealt, kuidas tarkvara töötab. Küsimuste korral võtke minuga julgelt ühendust. Püüan neile oma võimaluste piires vastata. Edu!

6. toiming: LCD -korpuse 3D -printimine

3D -printimine LCD -korpus
3D -printimine LCD -korpus
3D -printimine LCD -korpus
3D -printimine LCD -korpus
3D -printimine LCD -korpus
3D -printimine LCD -korpus

Lõin 7 -tollise ekraani kaitsmiseks 3D -prinditud LCD ülemise ja alumise kaane. Olen lisanud. IPT leiutaja osade failid ja. STL -failid.

Lisasin ka osa nimega backup_sensor_ring.ipt, mis on rõngas, mis sobib nende varundusandurite ümber, mille ma eespool linkisin. Minu autosse olid juba eelnevalt puuritud varundusandurite augud, mis olid Amazonist ostetud varundusandurite jaoks liiga suured, nii et pidin looma rõnga, mis sobiks varundusanduritele. Kui kavatsete puhvrisse puurida komplekti kuuluva ümmarguse puuritükiga, ei vaja te seda osa.

Samm: OBD-II pordi jagamine nii, et Arduino saab võimsust ainult siis, kui auto töötab

OBD-II pordi jagamine, nii et Arduino saab jõudu ainult siis, kui auto töötab
OBD-II pordi jagamine, nii et Arduino saab jõudu ainult siis, kui auto töötab
OBD-II pordi jagamine, nii et Arduino saab jõudu ainult siis, kui auto töötab
OBD-II pordi jagamine, nii et Arduino saab jõudu ainult siis, kui auto töötab
OBD-II pordi jagamine, nii et Arduino saab jõudu ainult siis, kui auto töötab
OBD-II pordi jagamine, nii et Arduino saab jõudu ainult siis, kui auto töötab

Mõistsin varsti pärast ekraani paigaldamist, et ekraan oli alati sisse lülitatud, isegi kui auto oli välja lülitatud. Vaadates OBD-II pistikut, leidsin, et 12 V toiteliin OBD-II pistikuga on alati otse akuga ühendatud.

Selle vältimiseks ostsin OBD-II jaoturi, lõikasin jaoturi kahest pistikust ühe tihvti 16 külge ja ühendasin selle lõigatud juhtme ahela juhtmega.

Seejärel läksin oma multimeetrit kasutades juhipoolse kaitsmekarbi juurde ja katsetasin olemasolevaid kaitsmeid, et näha, milline kaitse sai toite peale võtme süüte keeramist.

Lõpuks ühendasin lisatud vooluahela juhtme minu leitud kaitsmega, nii et ekraan lülitub sisse alles siis, kui mu auto töötab. Palun uurige, kuidas oma autole vooluringi õigesti lisada. Leidsin, et see youtube'i õpetus on hea.

Soovitan: