INHOUDSOPGAWE:

Arduino -motorvertoning: 7 stappe (met foto's)
Arduino -motorvertoning: 7 stappe (met foto's)

Video: Arduino -motorvertoning: 7 stappe (met foto's)

Video: Arduino -motorvertoning: 7 stappe (met foto's)
Video: Build Seven Segment LED clock with Arduino and DS3231 - Robojax 2024, Julie
Anonim
Image
Image
Arduino motor vertoon
Arduino motor vertoon
Arduino motor vertoon
Arduino motor vertoon

Ek het 'n ingeboude beeldskerm (OBD-II) gebaseer met 'n 7 TFT LCD van Adafruit, 'n Teensy 3.6, die Freematics OBD-II I2C-adapter en 'n paar rugsteun-sensors wat ek op Amazon gevind het. Die skerm het twee bladsye: een vir wanneer my Honda Accord in ry en een vir wanneer dit agteruit is.

As my motor in die ry is, word die omwentelinge, per uur, die motorlading, die batteryspanning, die temperatuur in die kajuit en die koelmiddeltemperatuur van die enjin vertoon (daar is verskeie ander voertuigstatistieke om te sien as u dit nie wil hê nie).

As my motor agteruit is, lees die Arduino IDE -versoenbare Teensy 3.6 'n geanimeerde bitmap -beeld van my motor wat ek aanlyn gevind het, vertoon dit en lees dan die rugsteun -sensors. Die vier sensors het elkeen hul afstand in voet plus 'n animasie agter die motor wat kleur verander na gelang van hoe naby die voorwerp aan die motor is (net groen beteken <5 voet, groen en geel beteken <2,6 voet, en groen, geel, en rooi beteken <1 voet).

Uiteindelik het ek die moontlikheid bygevoeg om die skerm snags te verdof.

Die eindresultaat lyk goed en werk baie goed in my motor. Ek het dit selfs in die middelkonsole geïnstalleer, wat 'n heel ander proses was wat ek nie in hierdie instruksies sal bespreek nie. Die lys van onderdele wat ek gebruik het om hierdie LCD -skerm te skep, is hieronder.

1) Freematics OBD -II -adapter - $ 35

2) Friends -sensors - $ 15

3) 7 TFT LCD -skerm - $ 38

4) SPI -gebaseerde LCD -skermbestuurder - $ 35

5) Teensy 3.6 - $ 30

6) Level Shifter - $ 4

7) 74HC125 Tri State Buffer IC -$ 6 vir 2 pakke (ek is seker dat u hierdie cheeper elders kan vind)

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

9) Draad, kapasitors en weerstande.

10) LP3470-2.93 Aanskakel Herstel IC - $ 2

11) (opsioneel): DS18B20 Temperatuursensor - $ 8

12) (opsioneel): OBD -II Splitter - $ 10

13) (opsioneel): Voeg 'n kringzekering by - $ 8 per pak van 5

Stap 1: Lees die rugsteun -sensors

Lees die rugsteun -sensors
Lees die rugsteun -sensors
Lees die rugsteun -sensors
Lees die rugsteun -sensors
Lees die rugsteun -sensors
Lees die rugsteun -sensors
Lees die rugsteun -sensors
Lees die rugsteun -sensors

Hierdie stap is moeilik omdat hierdie rugsteun -sensors kommunikeer met 'n transceiver en dan na 'n klein LCD, soos op die foto hierbo gesien. Ek wou 'n manier hê om van hul skerm ontslae te raak en my eie te gebruik. Met die hulp van 'n webwerf wat ek gevind het nadat ek 'n bietjie gegoogle het (Hacking reverse parking sensors), kon ek die eie kommunikasieprotokol lees wat die transceiver na die LCD -skerm stuur. Om een of ander rede is die kommunikasieprotokol nie tipies nie, soos I2C, UART, CAN, USB, ens. En die protokol verskil na gelang van die verskaffer. Ek beveel sterk aan dat u die stel koop wat ek hierbo gekoppel het as u my kode gaan gebruik, want dit is spesifiek vir die sensors geskryf.

Voordat ek die LCD wat hulle verskaf het, ontkoppel, het ek die drie drade ondersoek wat by die transceiver en die LCD aansluit. Daar was +5V rooi draad, gemaalde swart draad en 'n blou draad. Nadat ek my ossilloskoop aan die blou draad en die grond gekoppel het, het ek 'n spoor gesien wat soortgelyk is aan die foto hierbo, maar nie presies nie (ek het die prentjie gebruik van die webwerf hierbo gekoppel). My spoor het 'n HIGH langer begin begin, gevolg deur nog 17 korter duur stukkies. Die bisse 0-5 na die beginbit het nie nuttige inligting nie. Bits 6-8 stem ooreen met sensor A, B, C of D. Bits 9-16 stem ooreen met die lengte in meter. Ek het 'n Arduino IDE -skets ingesluit wat die sensors lees en die data oor die reekskonsole lewer.

Stap 2: Skep die bitmap -prent en plaas dit op 'n MicroSD -kaart

Skep die bitmap -prent en plaas dit op 'n MicroSD -kaart
Skep die bitmap -prent en plaas dit op 'n MicroSD -kaart
Skep die bitmap -prent en plaas dit op 'n MicroSD -kaart
Skep die bitmap -prent en plaas dit op 'n MicroSD -kaart

Ek het 'n gratis fotobewerkingsprogrammatuur genaamd GIMP gebruik om 'n beeld van my motor van bo af te sny en te verander. Ek het die beeld dan uitgevoer as 'n 24 -bit -bitmap -beeld met die naam "car.bmp", wat 110 pixels by 250 pixels is. Ek het dit na 'n microSD -kaart gelaai en die microSD -kaart in my Teensy 3.6 -mikrobeheerder geplaas.

Die belangrikste redes waarom ek met die Teensy 3.6 in plaas van 'n UNO gegaan het, was die snelheid waarmee die Teensy 'n SD -kaart kon lees en die beeld kon vertoon met die RA8875 -skermbestuurder. Met behulp van 'n UNO het die proses ongeveer 8 sekondes geneem, terwyl 'n Teensy 3.6 1.8 sekondes geneem het.

Stap 3: Koppel die hardeware aan

Koppel die hardeware
Koppel die hardeware

Adafruit het 'n baie mooi 7 TFT LCD -skerm wat bestuur word deur 'n IC genaamd RA8875. Ek het hierdie skerm- en skermbestuurder om twee redes gekies. Eerstens is daar uitgebreide biblioteke wat vir die skerm voorgeskryf is. Tweedens kan die skermbestuurder praat enige mikrobeheerder oor SPI, wat beteken dat daar nie so baie drade is wat die mikrobeheerder met die RA8875 verbind nie.

Daar is twee nadele van hierdie opstelling. Eerstens is daar 'n hardeware-fout met die RA8875-bord van Adafruit wat die gebruik van die 74HC125 tri-state buffer IC benodig as u 'n SPI-gebaseerde toestel soos 'n SD-kaart wil gebruik. Lees die volgende forum om die hardewarefout meer volledig te verstaan. Tweedens is die relatief lang tyd wat dit neem voordat beelde na die LCD gestuur word. Die lang tyd wat dit neem om 'n beeld na die LCD te stuur, is ook te wyte aan die SPI -verbinding, wat beperk word deur die kloksnelheid van die mikrobeheerders en die groot hoeveelheid data wat na die skermbestuurder gestuur moet word. baie min drade.

Ek het 'n Fritzing -skema gemaak sodat almal wat hierdie skerm wil skep, maklik kan lees waarmee die penne op die Teensy 3.6 aansluit. Ek het 'n.frz -lêer hieronder ingesluit. Die enigste twee komponente wat nie gemerk is nie, is die kapasitors, wat 'n 1F 16V elektrolitiese kondensator en 'n 100μF keramiek kondensator is. Ek het dit ingesluit om seker te maak dat die krag van die Teensy -mikrokontroleerder gelyk is aan DC +5V en geen spanningspieke bevat nie (dit is moontlik nie nodig nie, maar ek het dit ingesluit omdat die spanning van 'n motor vinnig kan wissel, afhangende van die las op die battery).

'N Paar dinge om op te noem oor die komponente. Eerstens neem die vlakverskakelaar enige 5V -sein en verander dit in 'n veilige spanning van 3,3V Teensy 3.6. Dit is nodig vir die OBD I2C -adapter sowel as die rugsteun -sensor -ontvanger. Tweedens benodig die I2C -lyne van die tienerjare 4,7kΩ optrekweerstands. Derdens is die vier weerstande wat die "nagtyddraad" (die verduisteringsdraad) en die "rugsteun-aansluitdraad" verbind, nodig om as 'n spanningsverdeler te dien om die 12V-13V seine tot ongeveer 2,5-3V seine af te bring.

UPDATE 7/22/18: Ek het gevind dat die interne temperatuursensor van die OBD-I2C-module baie vreemde getalle lewer. Soms sou dit werk, maar meestal het die module temperature van meer as 400 ° C afgelewer. Daarom het ek besluit om my eie temperatuursensor ds18b20 by te voeg. U is welkom om enige tipe temperatuursensor hier te gebruik, maar u moet die Arduino -kode wysig.

UPDATE 3/1/19: Teensy 3.6 begin nie as dit baie koud is nie. Ek het 'n herstartkring bygevoeg om seker te maak dat dit behoorlik opstart.

Stap 4: RA8875 -skermbestuurder en grafiese ontwerp

RA8875 Display Driver en grafiese ontwerp
RA8875 Display Driver en grafiese ontwerp

Die RA8875 -skermbestuurder het 'n biblioteek genaamd die Adafruit_RA8875, wat ek gebruik het by die skep van die vorms wat op die eerste bladsy en tweede bladsy verskyn. Die biblioteek vir die RA8875 kan slegs lyne, reghoeke, afgeronde reghoeke, driehoeke, ellipse en sirkels skep, sodat die grafika op 'n slim manier ontwerp moet word om meer komplekse vorms te skep. Byvoorbeeld, die grys ring op die eerste bladsy is eintlik 'n vol grys sirkel met 'n groter deursnee, gevolg deur 'n volledige swart sirkel met 'n kleiner deursnee. 'N Klein gedeelte van die rugsteun -sensorbladsy bevat ook twee driehoeke wat so gerangskik is dat hulle 'n veelhoek vorm. Ek het dit gedoen sodat ek die kleur van 'n individuele gedeelte van die rugsteun -sensorbladsy kon verander. Die Arduino -lêer vir die skerm bevat 'n verskeidenheid punte wat ek gebruik het om by te hou waar die driehoeke en ander vorms is.

Ek het hierdie wonderlike webwerf gebruik om RGB565-kleure te kies en in die skets te definieer, sodat ek nie-standaardkleure kon gebruik wat reeds vooraf in die Adafruit_RA8875-biblioteek was.

Wat lettertipes betref, ondersteun die Adafruit_RA8875 -biblioteek slegs een, tensy u kommentaar lewer op 'n gedeelte van die biblioteek, waarmee u die lettertipes van die Adafruit_GFX -biblioteek kan gebruik. Ek het die aangepaste Adafruit_RA8875 -biblioteek hieronder ingesluit. Ek het net 'n paar reëls kode kommentaar gelewer en kon toe die lettertipes in die Adafruit_GFX -biblioteek gebruik. Om ook die lettertipe van 7 segmente wat ek in hierdie projek gebruik het, te gebruik, moet u seker maak dat die lêer "FreeSevenSegNumFont.h" in die lettertipe -lêergids in die Adafruit_GFX -biblioteek is.

Stap 5: Laai die skets op

Laai die skets op
Laai die skets op
Laai die skets op
Laai die skets op

Om die skets na 'n Teensy 3.6 op te laai, moet u Teensyduino installeer. Dan moet u die Adafruit_RA8875- en Adafruit_GFX -biblioteke vervang in die tienerjare -biblioteek (nie u tipiese ligging in dokumente nie). Op Mac moes ek met die rechtermuisknop op die ikoon van die Arduino -toepassing in toepassings klik en dan na/Inhoud/Java/hardeware/teensy/avr/biblioteke navigeer. Op Windows is ek redelik seker dat dit onder u C -skyf is in Program -lêers x86, Arduino, en dan die hardewaremap. Sodra u dit gedoen het, moet u die sketsboek se ligging in die Arduino -toepassing verander deur dit in voorkeure te redigeer tot waar u tienerjare biblioteke is (dws /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UPDATE 7/22/16: As gevolg van die interne temperatuur sensor probleem waaroor ek vroeër gepraat het, moes ek 'n DS18B20 module temperatuur sensor installeer. U sien 4 arduino -sketse in die zip -lêer. Laai die display_code-skets op as u die interne temperatuursensor van die OBD-II I2C-module wil gebruik. Laai die display_code_with_new_temperature_sensor -skets op as u die DS18B20 -module wat ek hierbo gekoppel het, wil gebruik.

UPDATE 11/17/17: Ek het verskeie foute in die sagteware reggestel, waaronder die DS18B20 met 'n temperatuur van 185 Fahrenheit, die skerm kan glad nie aanskakel tydens koue weer nie, en pixels sit vas in die verkeerde kleur as die skerm verdof is.

Gebruik dan die prentjie wat ek hierbo het om seker te maak dat u tiener -instellings by die prentjie pas. Ek het gevind dat die teensy na 240MHz oorklok, sodat die I2C OBD-II-adapter nie met die tieners kon kommunikeer nie. Klik laastens op oplaai.

Ek het redelik uitgebreide kommentaar in die arduino -sketslêers geskryf. Kyk daar vir 'n verduideliking van hoe die sagteware werk. Kontak my gerus vir enige vrae. Ek sal probeer om hulle na die beste van my vermoë te beantwoord. Sterkte!

Stap 6: 3D -druk 'n LCD -omhulsel

3D -druk 'n LCD -omhulsel
3D -druk 'n LCD -omhulsel
3D -druk 'n LCD -omhulsel
3D -druk 'n LCD -omhulsel
3D -druk 'n LCD -omhulsel
3D -druk 'n LCD -omhulsel

Ek het 'n 3D -bedrukte LCD -bo- en onderkant gemaak om die skerm van 7 te beskerm. Ek het die. IPT uitvinders -lêers sowel as die. STL -lêers aangeheg.

Ek het ook 'n deel met die naam backup_sensor_ring.ipt ingesluit, 'n ring wat pas by die rugsteun -sensors wat ek hierbo gekoppel het. My motor het reeds vooraf geboorde rugsteun-sensorgate wat te groot was vir die rugsensors wat ek op Amazon gekoop het, so ek moes 'n ring maak wat op die rugsteun-sensors pas. As u met u meegeleverde sirkelboor in die stel in u bumper gaan boor, benodig u hierdie onderdeel nie.

Stap 7: OBD-II-poort verdeel sodat Arduino net krag het as die motor loop

OBD-II-poort verdeel sodat Arduino net krag het as die motor loop
OBD-II-poort verdeel sodat Arduino net krag het as die motor loop
OBD-II-poort verdeel sodat Arduino net krag het as die motor loop
OBD-II-poort verdeel sodat Arduino net krag het as die motor loop
OBD-II-poort verdeel sodat Arduino net krag het as die motor loop
OBD-II-poort verdeel sodat Arduino net krag het as die motor loop

Ek het kort na die installering van my skerm besef dat die skerm altyd aan was, selfs as die motor af was. As ek na die OBD-II-pinout kyk, het ek gevind dat die 12V-kraglyn na die OBD-II-aansluiting altyd direk op die battery gekoppel is.

Om dit te vermy, het ek 'n OBD-II-splitter gekoop, die draad na pen 16 op een van die twee verbindings op die splitter geknip en daarna die snydraad gekoppel aan 'n kringdraad.

Toe gaan ek met my multimeter na die lontkas van die bestuurder en toets die bestaande lont om te sien watter lont krag kry nadat die sleutel in die ontsteking gedraai is.

Uiteindelik het ek 'n kringkabel aan die lont gekoppel wat ek gevind het, sodat die skerm nou net aanskakel as my motor loop. Doen 'n bietjie navorsing oor hoe u 'n stroombaan behoorlik by u motor kan voeg. Ek het gevind dat hierdie YouTube -tutoriaal 'n goeie een is.

Aanbeveel: