Taula de continguts:

Pantalla del cotxe Arduino: 7 passos (amb imatges)
Pantalla del cotxe Arduino: 7 passos (amb imatges)

Vídeo: Pantalla del cotxe Arduino: 7 passos (amb imatges)

Vídeo: Pantalla del cotxe Arduino: 7 passos (amb imatges)
Vídeo: Топ 5 скрытых полезных программ Windows 10 2024, Desembre
Anonim
Image
Image
Pantalla del cotxe Arduino
Pantalla del cotxe Arduino
Pantalla del cotxe Arduino
Pantalla del cotxe Arduino

Vaig construir una pantalla basada en diagnòstic integrat (OBD-II) mitjançant una pantalla TFT LCD de 7 d'Adafruit, un Teensy 3.6, l'adaptador Freematics OBD-II I2C i alguns sensors de còpia de seguretat que vaig trobar a Amazon. La pantalla té dues pàgines: un per quan el meu Honda Accord està en marxa i un per quan està al revés.

Quan el meu cotxe està a la unitat, es mostren les RPM, MPH, el percentatge de càrrega del motor, el voltatge de la bateria, la temperatura de la cabina i la temperatura del refrigerant del motor (hi ha diverses altres estadístiques disponibles sobre el vehicle si no es volen).

Quan el meu cotxe està al revés, el Teensy 3.6 compatible amb Arduino IDE llegeix una imatge de mapa de bits animada del meu cotxe que he trobat en línia, la mostra i, a continuació, llegeix els sensors de còpia de seguretat. Els quatre sensors tenen la distància en peus més una animació darrere del cotxe que canvia de color en funció de la proximitat de l’objecte al cotxe (només verd significa <5 peus, verd i groc significa <2,6 peus i verd, groc, i vermell significa <1 peu).

Finalment, he afegit la possibilitat d’enfosquir la pantalla de nit.

El resultat final es veu molt bé i funciona molt bé al meu cotxe. Fins i tot vaig acabar instal·lant-lo a la consola central, que era tot un altre procés en el qual no podré entrar en aquest instructiu. A continuació es mostra la llista de peces que he utilitzat per crear aquesta pantalla LCD.

1) Adaptador OBD-II de Freematics: 35 dòlars

2) Sensors de còpia de seguretat: 15 USD

3) Pantalla LCD TFT de 7 : 38 USD

4) Controlador de pantalla LCD basat en SPI: 35 dòlars

5) Teensy 3,6 - 30 dòlars

6) Canviador de nivell: 4 dòlars

7) 74HC125 Tri State Buffer IC: 6 dòlars per paquet de 2 (estic segur que podríeu trobar aquest cotxe en un altre lloc)

8) Targeta MicroSD> = 1 GB - 4 $

9) Cable, condensadors i resistències.

10) LP3470-2.93 IC d’inici d’inici: 2 $

11) (opcional): sensor de temperatura DS18B20: 8 dòlars

12) (opcional): divisor OBD-II: 10 dòlars

13) (opcional): afegiu un cable de fusible de circuit: 8 dòlars per paquet de 5

Pas 1: llegir els sensors de còpia de seguretat

Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat
Lectura dels sensors de còpia de seguretat

Aquest pas és complicat perquè aquests sensors de còpia de seguretat es comuniquen a un transceptor i després a una petita pantalla LCD, tal com es veu a la imatge superior. Volia una manera de desfer-me de la pantalla i utilitzar la meva. Amb l'ajuda d'un lloc web que vaig trobar després d'unes pràctiques de Google (piratejar els sensors d'estacionament invers), vaig poder llegir el protocol de comunicació propietari que el transceptor envia a la pantalla LCD. Per alguna raó, el protocol de comunicació no és típic, com ara I2C, UART, CAN, USB, etc. i el protocol difereix segons el proveïdor. Us recomano que adquiriu el conjunt que he enllaçat anteriorment si utilitzeu el meu codi perquè estava específicament escrit per a aquests sensors.

Abans de desconnectar la pantalla LCD que proporcionaven, vaig examinar els tres cables que unien el transceptor i la pantalla LCD. Hi havia un fil vermell de + 5 V, un fil negre de terra i un fil blau. Després de connectar el meu oscil·loscopi al fil blau i a terra, vaig veure un rastre similar a la imatge que es veia a dalt però no exactament (he utilitzat la imatge del lloc web enllaçat a dalt). La meva traça tenia un bit inicial de durada MÉS ALTA, seguit de 17 bits de durada més curta. Els bits 0-5 després del bit inicial no tenien informació útil. Els bits 6-8 corresponen al sensor A, B, C o D. Els bits 9-16 corresponen a la longitud en metres. He inclòs un esbós IDE d'Arduino que llegeix els sensors i emet les dades a la consola sèrie.

Pas 2: crear la imatge de mapa de bits i col·locar-la en una targeta MicroSD

Creació de la imatge de mapa de bits i col·locació en una targeta MicroSD
Creació de la imatge de mapa de bits i col·locació en una targeta MicroSD
Creació de la imatge de mapa de bits i col·locació en una targeta MicroSD
Creació de la imatge de mapa de bits i col·locació en una targeta MicroSD

Vaig utilitzar un programari gratuït d’edició de fotos anomenat GIMP per retallar i redimensionar una imatge del meu cotxe des de la vista superior. Llavors vaig exportar la imatge com a imatge de mapa de bits de 24 bits anomenada "car.bmp", que és de 110 píxels per 250 píxels. Ho he penjat a una targeta microSD i he posat la targeta microSD al microcontrolador Teensy 3.6.

Els principals motius pels quals vaig anar amb el Teensy 3.6 en lloc d'un UNO va ser la velocitat amb què el Teensy podia llegir una targeta SD i mostrar la imatge mitjançant el controlador de pantalla RA8875. Utilitzant una UNO, el procés va trigar uns 8 segons, mentre que un Teensy 3.6 va trigar 1,8 segons.

Pas 3: Connexió del maquinari

Connexió del maquinari
Connexió del maquinari

Adafruit té un LCD TFT de 7 molt bonic que funciona amb un CI anomenat RA8875. He escollit aquesta pantalla i aquest controlador de pantalla per dos motius. En primer lloc, hi ha àmplies biblioteques prescrites per a la pantalla. En segon lloc, el controlador de pantalla pot parlar amb cap microcontrolador sobre SPI, és a dir, no hi ha tants cables que connectin el microcontrolador al RA8875.

Aquesta configuració té dos inconvenients. Primer és el fet que hi ha un error de maquinari amb la placa RA8875 d'Adafruit que requereix l'ús del CI de memòria intermèdia de tres estats 74HC125 si voleu utilitzar qualsevol dispositiu basat en SPI, com ara una targeta SD. Per entendre millor l’error de maquinari, llegiu el fòrum següent. En segon lloc, és el temps relativament llarg que es triga a enviar les imatges a la pantalla LCD. A més, la gran quantitat de temps que triga l’enviament d’una imatge a la pantalla LCD es deu a la connexió SPI, que està limitada per la velocitat de rellotge dels microcontroladors i la gran quantitat de dades que s’han d’enviar al controlador de pantalla. molt pocs cables.

He creat un esquema de Fritzing perquè qualsevol persona que vulgui crear aquesta pantalla pugui llegir fàcilment a quins connectors del Teensy 3.6 es connecten. A continuació he inclòs un fitxer.frz. Els dos únics components que no estan etiquetats són els condensadors, que són un condensador electrolític 1F 16V i un condensador ceràmic de 100μF. Vaig incloure-les per assegurar-me que l’alimentació del microcontrolador Teensy fos constant de CC + 5V i que no contenia cap pujada de tensió (pot ser que no siguin necessàries, però les vaig incloure perquè la tensió d’un cotxe pot fluctuar ràpidament en funció de la càrrega de la bateria).

Algunes coses a esmentar sobre els components. En primer lloc, el canvi de nivell pren qualsevol senyal de 5V i el converteix en un voltatge segur Teensy 3.6 de 3,3V. Això és necessari per a l'adaptador OBD I2C i per al transceptor del sensor de còpia de seguretat. En segon lloc, les línies I2C de l'adolescència requereixen resistències de 4,7 kΩ. En tercer lloc, les quatre resistències que connecten el "cable nocturn" (el cable de regulació) i el "cable de connexió de seguretat" són necessàries per servir de divisor de tensió per reduir els senyals de 12V-13V a uns senyals de 2,5-3V.

ACTUALITZACIÓ 22/07/18: he trobat que el sensor de temperatura intern del mòdul OBD-I2C genera números molt estranys. De vegades funcionaria, però la majoria de les vegades, el mòdul produïa temperatures superiors als 400 graus F. Per això, vaig decidir afegir el meu propi sensor de temperatura ds18b20. Podeu utilitzar qualsevol tipus de sensor de temperatura aquí, però haureu d’editar el codi Arduino.

ACTUALITZACIÓ 1/03/19: Teensy 3.6 no s’inicia quan fa molt fred. He afegit un circuit de reinici d’alimentació per assegurar-me que arrenca correctament.

Pas 4: disseny de gràfics i controladors de pantalla RA8875

Controlador de pantalla RA8875 i disseny de gràfics
Controlador de pantalla RA8875 i disseny de gràfics

El controlador de pantalla RA8875 té una biblioteca anomenada Adafruit_RA8875, que he utilitzat en crear les formes que es veuen a la primera pàgina i a la segona pàgina. La biblioteca del RA8875 només pot crear línies, rectangles, rectangles arrodonits, triangles, el·lipses i cercles, de manera que els gràfics s'han de dissenyar d'una manera intel·ligent per crear formes més complexes. Per exemple, l'anell gris de la primera pàgina és en realitat un cercle gris complet d'un diàmetre més gran seguit d'un cercle negre complet d'un diàmetre més petit. A més, una petita secció de la pàgina del sensor de còpia de seguretat conté 2 triangles disposats de manera que formen un polígon. Ho vaig fer per poder canviar el color d'una secció individual de la pàgina del sensor de còpia de seguretat. El fitxer Arduino de la pantalla conté una sèrie de punts que he utilitzat per fer un seguiment d’on eren els triangles i altres formes.

He utilitzat aquest fantàstic lloc web per escollir colors RGB565 i definir-los a l’esbós per poder utilitzar colors no predeterminats ja predefinits a la biblioteca Adafruit_RA8875.

Pel que fa als tipus de lletra, la biblioteca Adafruit_RA8875 només admet un tret que comenteu una secció de la biblioteca, que us permet utilitzar els tipus de lletra de la biblioteca Adafruit_GFX. A continuació he inclòs la biblioteca Adafruit_RA8875 modificada. Acabo de comentar algunes línies de codi i després he pogut utilitzar els tipus de lletra de la biblioteca Adafruit_GFX. A més, per utilitzar el tipus de lletra de 7 segments que he utilitzat en aquest projecte, assegureu-vos que el fitxer "FreeSevenSegNumFont.h" que es troba a la carpeta de tipus de lletra de la biblioteca Adafruit_GFX.

Pas 5: penjar l'esbós

Carregant l’esbós
Carregant l’esbós
Carregant l’esbós
Carregant l’esbós

Per penjar l’esbós a un Teensy 3.6, haureu d’instal·lar Teensyduino. A continuació, haureu de substituir les biblioteques Adafruit_RA8875 i Adafruit_GFX a la ubicació de la biblioteca per a adolescents (no la vostra ubicació típica als documents). A Mac, vaig haver de fer clic dret a la icona de l'aplicació Arduino a les aplicacions i després anar a / Contents / Java / maquinari / teensy / avr / biblioteques. A Windows, estic segur que es troba a la vostra unitat C als fitxers de programa x86, Arduino i, a continuació, a la carpeta de maquinari que hi ha. Un cop ho feu, haureu de canviar la ubicació del quadern de dibuixos a l'aplicació Arduino editant-la a les preferències on es trobin les biblioteques per a adolescents (és a dir, /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

ACTUALITZACIÓ 22/07/16: a causa del problema del sensor de temperatura intern de què vaig parlar anteriorment, vaig haver d’instal·lar un sensor de temperatura del mòdul DS18B20. Veureu 4 croquis arduino al fitxer zip. Si us plau, pengeu l’esbós display_code si voleu utilitzar el sensor de temperatura intern del mòdul OBD-II I2C. Si us plau, pengeu l’esbós display_code_with_new_temperature_sensor si voleu utilitzar el mòdul DS18B20 que he enllaçat anteriorment.

ACTUALITZACIÓ 17/11/17: he corregit diversos errors del programari, inclosos el DS18B20 que generava una temperatura de 185 Fahrenheit, la pantalla no s’encén del tot en temps fred i els píxels s’enganxaven en un color incorrecte quan la pantalla s’enfosqueix.

A continuació, utilitzeu la imatge que tinc a sobre per assegurar-vos que la vostra configuració per a adolescents coincideixi amb la imatge. Vaig trobar que el overclocking de l'adolescència a 240 MHz no permetia que l'adaptador OBD-II I2C es comuniqués amb l'adolescència. Finalment, només cal que feu clic a Puja.

Vaig escriure comentaris força extensos als fitxers de croquis arduino. Consulteu allà per obtenir una explicació de com funciona el programari. No dubti en posar-se en contacte amb mi per a qualsevol pregunta. Intentaré respondre-les al màxim de les meves possibilitats. Bona sort!

Pas 6: imprimeix en 3D una funda LCD

Impressió 3D d'una funda LCD
Impressió 3D d'una funda LCD
Impressió 3D d'una funda LCD
Impressió 3D d'una funda LCD
Impressió 3D d'una funda LCD
Impressió 3D d'una funda LCD

Vaig crear una coberta superior i inferior LCD impresa en 3D per protegir la pantalla de 7 . He adjuntat els fitxers de la peça inventor. IPT i els fitxers. STL.

També he inclòs una part anomenada backup_sensor_ring.ipt, que és un anell que s’adapta als sensors de còpia de seguretat que he enllaçat anteriorment. El meu cotxe ja tenia forats del sensor de còpia de seguretat prèviament foradats que eren massa grans per als sensors de còpia de seguretat que vaig comprar a Amazon, de manera que vaig haver de crear un anell que s’adaptés als sensors de còpia de seguretat. Si voleu perforar el parachoques amb la broca circular inclosa al conjunt, no necessitareu aquesta peça.

Pas 7: dividir el port OBD-II, de manera que Arduino només té energia quan el cotxe funciona

Si divideix el port OBD-II, Arduino només té energia quan el cotxe funciona
Si divideix el port OBD-II, Arduino només té energia quan el cotxe funciona
Si divideix el port OBD-II, Arduino només té energia quan el cotxe funciona
Si divideix el port OBD-II, Arduino només té energia quan el cotxe funciona
Si divideix el port OBD-II, Arduino només té energia quan el cotxe funciona
Si divideix el port OBD-II, Arduino només té energia quan el cotxe funciona

Poc després d’instal·lar la pantalla em vaig adonar que la pantalla sempre estava encesa, fins i tot quan el cotxe estava apagat. Mirant el pinout OBD-II, vaig trobar que la línia d’alimentació de 12V al connector OBD-II sempre està connectada directament a la bateria.

Per solucionar-ho, vaig comprar un divisor OBD-II, vaig tallar el cable que passava al pin 16 en un dels dos connectors del divisor i després vaig connectar aquest fil tallat a un cable addicional.

Després, amb el multímetre, vaig anar a la caixa de fusibles del conductor i vaig provar els fusibles existents per veure quin fusible tenia alimentació després que la clau es convertís en contacte.

Finalment, vaig connectar l’afegir un cable de circuit al fusible que vaig localitzar de manera que la pantalla només s’encengui quan el meu cotxe estigui en funcionament. Feu una investigació sobre com afegir correctament un circuit al vostre cotxe. He trobat que aquest tutorial de youtube és bo.

Recomanat: