Taula de continguts:

Indicadors de cotxes OLED ESP32 habilitats per Wifi: 3 passos (amb imatges)
Indicadors de cotxes OLED ESP32 habilitats per Wifi: 3 passos (amb imatges)

Vídeo: Indicadors de cotxes OLED ESP32 habilitats per Wifi: 3 passos (amb imatges)

Vídeo: Indicadors de cotxes OLED ESP32 habilitats per Wifi: 3 passos (amb imatges)
Vídeo: How to make a LED digital counter using 7- Segment Display 2024, Desembre
Anonim
Image
Image
Indicadors de cotxes OLED ESP32 habilitats per Wifi
Indicadors de cotxes OLED ESP32 habilitats per Wifi

Introduccions primer …

Construeix mesuradors de cotxes com una mena d’afició de tornada i apagada. Consulteu https://www.instructables.com/id/Remote-Car-Monit… i https://www.instructables.com/id/Remote-Car-Monit… per obtenir dos exemples més recents. M'agraden especialment les que es combinen amb les parts originals del cotxe. Per tant, per què és diferent i què em va inspirar a construir-lo? La resposta és dues coses:

1) ESP32: volia provar el nou noi del bloc, sobretot perquè la cadena d’eines basada en arduino és bastant madura. Una de les coses interessants que permet l’ESP32 és l’IOT amb les seves funcions integrades de wifi i bluetooth. La comunitat ha escrit diverses biblioteques per fer-ho una mica senzill (servidors web, AP’s, clients wifi, mDNS, etc., etc.).

2) Pantalles OLED barates: el 2007 vaig fer un indicador amb un TFT que estava al lloc del rellotge en un GD (2004-2007) WRX. Els TFT tenen diversos sabors. Alguns funcionen millor de nit, d’altres de dia, etc. Però cap d’ells funciona en totes les condicions. No em vaig adonar de l’error dels meus camins fins que un dels indicadors que vaig fer servir va ser inútil durant el dia assolellat de pista d’un membre del fòrum. Introduïu OLED, que és increïble per a aplicacions d’automoció. No són massa brillants a la nit i (el que és més important) són visibles en la majoria de les condicions del sol.

Es tracta d’un dos per un que es pot instruir, ja que ho vaig escriure tot per a dos indicadors de cotxe habituals, la pressió d’oli i la pressió turbo. Tots dos són essencialment el mateix: un petit indicador de factor de forma amb una pantalla OLED d'aspecte analògic animat amb números i màxims discrets. Tots dos també funcionen com a AP wifi i servidors web. Quan es connecta a ells mitjançant un ordinador o un telèfon mòbil, es pot veure un gràfic de tipus EKG en moviment (aquesta és la part una mica innovadora).

Subministraments

Mòdul HELTEC ESP32: obteniu la variant wifi

Parts específiques de pressió d’oli:

Sensor de pressió d’oli: he utilitzat un component de connexió del sensor de pressió d’oli automter 5222: varia segons el cotxe i la ubicació de la instal·lació. Consulteu manuals de servei, fòrums, tècniques, etc. i feu-ho correctament perquè no hi hagi fuites d’oli

Parts específiques de l'indicador d'augment:

  • Sensor de pressió d'aire (només si voleu fer un manòmetre d'augment) -
  • Mànega d'aire
  • Accessoris T

Les biblioteques que he utilitzat eren indispensables:

Smoothiecharts - https://smoothiecharts.org/ Gràfics d'actualització en viu excel·lents i lleugers. Molt personalitzable i no depèn de fer referència a una biblioteca js en cap altre lloc d'Internet. Això permet una configuració de tipus "IOT local" i tota la biblioteca encaixa en una sola cadena per a la declaració del servidor web en codi.

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- fa el que diu a la caixa i ho fa bé

Biblioteca de gràfics OLED de ThingPulse (de vegades anomenada biblioteca de squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - gràfics molt eficients i directes per als xips ESP. Em va permetre fer una programació mandrosa i continuar obtenint animacions convincents.

Eines / misc:

soldador: s’utilitza per fer llargues tirades de cables per als sensors, instal·lar capçaleres a bord, encongir-se, etc.

tornavís / endolls / altres eines per al cotxe: necessaris per instal·lar sensors al cotxe

cinta de doble cara: per instal·lar calibres a les carcasses i instal·lar carcasses al cotxe (la cola calenta i altres coses poden funcionar, però prefereixo la cinta de recobriment exterior de doble cara 3M. Es manté bé i es pot treure sense danyar les coses).

tisores: per a cinta i tall de tubs i llaços amb cremallera

tirants amb cremallera: per mantenir les coses juntes, agrupar cables sota el tauler i al compartiment del motor, mantenir els sensors al seu lloc, etc.

Pas 1: Codi primer / Maquinari segon

Codi primer / Maquinari segon
Codi primer / Maquinari segon
Codi primer / Maquinari segon
Codi primer / Maquinari segon

El codi es pot descarregar aquí:

Pressió d’oli:

Augmentar la pressió:

Augmenteu la pressió amb cares en lloc d’indicadors d’aspecte analògics:

Codi de gràfics: la biblioteca ThingPulse és tan eficaç que podeu dibuixar xbms els uns sobre els altres i obtenir resultats convincents.

Les imatges de calibre provenien realment d’un dipòsit de gràfics de codi obert (https://thenounproject.com/). L’artista Iconic, CY (https://thenounproject.com/icon/490005/).

He utilitzat gimp per generar 20 marcs diferents amb l’agulla apuntant a cada marca. Les icones de la cara somrient són de NOVITA ASTRI, ID i són aquí:

A continuació, els he convertit en matrius const uint8_t mitjançant aquesta tècnica (suggeriment: si els colors s’inverteixen quan els mostreu, només inverteu els colors de l’original): https://blog.squix.org/2015/05/esp8266- nodemcu-ho …

El codi d'animació en directe és força senzill:

  • Obteniu la lectura des del sensor
  • Lectura de l’escala (l’he fet de 1 a 1 per obtenir valors d’augment positiu i només mou l’agulla quan està en augment, no quan està al buit)
  • Dibuixa xbm i després posa caràcters numèrics per a la resta.
  • esbandida i repeteix

Codi del sensor: reutilitzo el codi del sensor que he utilitzat per a aquests dos sensors per a alguns altres projectes. Vaig afegir una mica de mitjana per allunyar-me dels sensors saltadors. Això inclou la lectura de cada "lectura" que suposa una mitjana de 5 lectures.

Codi d’augment (el sensor proporciona un valor analògic de 0-5 volts que l’ADC converteix en passos de 0-1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36)) / 5); // Resultat flotant PSI = (rboost * (. 00488) / (. 022) +20) /6,89 - atmo; // sortida del / 6,89 per kpa flotant Resultat PSI = (((rboost / 4095) + 0,04) / 0,004) * 0,115 - atmo; // per 0.145 a calc psi // 4096 valors a esp32 / * rBoost = rBoost + 1; if (rBoost> = 20) {rBoost = 0; } * / return (ResultPSI); }

Codi de pressió d’oli (el sensor varia la seva resistència en funció de la pressió que detecta, de manera que cal un divisor de voltatge per convertir-lo en un voltatge de 0-5v. Vegeu: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito… (cap a la part inferior) per obtenir més informació):

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

Funcionalitat de servidor web i AP: la funcionalitat AP és bastant senzilla: introduïu objectes AP i instantanis amb l’ESSID que vulgueu emetre i la contrasenya i esteu bé.

const char * ssid = "boost_gauge_ap"; const char * password = "contrasenya";

WiFi.softAP (ssid, contrasenya);

Fins i tot té un servidor DHCP, de manera que no us haureu de preocupar. De manera predeterminada, la IP és 192.168.1.4 (ni idea de per què, això és el que heu escollit). El bit del servidor web és una mica més complicat i requereix una mica d’investigació. Bàsicament voleu un servidor web asíncron perquè pugui obtenir dades d’actualització en directe. Per sort, hi ha una biblioteca per a això. No sóc un desenvolupador de javascript, de manera que vaig jugar amb un munt de biblioteques de gràfics i gràfics fins que vaig ensopegar amb gràfics de batuts. La majoria de les altres biblioteques de gràfics s’escriuen de manera que hereten tot tipus de codi d’altres biblioteques de tot el web que es carreguen dinàmicament quan es representa una pàgina. Volia que això funcionés independentment d'Internet, de manera que això va ser una gran troballa. En segon lloc, havia de ser prou petit perquè encaixés en un arduino i, com podeu veure al codi, encaixa en una única matriu de caràcters.

Declaracions del servidor web: #include AsyncTCP.h #include ESPAsyncWebServer.h … Servidor AsyncWebServer (80); // instancieu-lo i trieu el port (80 és estàndard per a http) … server.on ("/", HTTP_GET, (sol·licitud AsyncWebServerRequest *) {request-> send (200, "text / html", "… // la pàgina web + la biblioteca smoothiecharts en una enorme matriu de caràcters}); server.on ("/ val", HTTP_GET, (sol·licitud AsyncWebServerRequest *) {// la primera pàgina realment crida aquesta petita pàgina que només retorna la sol·licitud de valor -> enviar (200, "text / html", Sboost);}); server.begin ();

Pas 2: maquinari i cablejat

Maquinari i cablejat
Maquinari i cablejat
Maquinari i cablejat
Maquinari i cablejat
Maquinari i cablejat
Maquinari i cablejat

A la galeria apareixen els dos sensors que faig servir. El gran color daurat és un sensor de pressió d’oli Autometer 2242. El cos i el fil d’aquest sensor estan connectats a terra i el terminal té la resistència de lectura.

L’autòmetre us proporcionarà una corba de resistència a la pressió o resistència a la temperatura per a qualsevol dels seus sensors. Ho he convertit en tensió mitjançant un divisor de tensió (vegeu el diagrama de cablejat).

El sensor de pressió d’aire MPX4250AP té tres pins actius i diversos pins no utilitzats. Són sortida d'entrada V, terra i sensor. Emet una lectura de 0-5v que pot llegir el microcontrolador (o en aquest cas 0-3 volts mcu. Per tant, la lectura del sensor es redueix mitjançant un divisor de tensió). El full d’especificacions es pot trobar aquí:

Hi ha diversos problemes en reduir la lògica de 5v a 3v. En el meu cas, he utilitzat el divisor de tensió per simplicitat i tenia les parts al voltant del meu banc de treball. Introduireu una mica d’error a les lectures en funció del possible error dels components addicionals (les dues resistències). Això podria fer que les vostres lectures tinguin un 10% de descompte en alguns casos. Puc conviure amb això. Si no podeu, és possible que vulgueu utilitzar un opamp i resistències o un convertidor de nivell lògic (disponible a diversos proveïdors d’electrònica. Sparkfun en té un aquí: https://www.sparkfun.com/products/12009 Puc canviar-hi com De vegades tinc lectures elevades en aquest indicador (de fet, he mostrat aquest producte al meu diagrama de cablejat).

Vaig alimentar els ESP32 mitjançant USB. Això incloïa connectar un carregador directe com aquest: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… al cotxe i després utilitzar un concentrador USB per dividir-lo. Podeu veure que he utilitzat cables USB d’angle recte per garantir que tot funcioni en una àrea reduïda (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Altres fotos mostren llocs on vaig tallar forats o vaig fer filferro. Cada cotxe serà diferent. Aneu amb compte, els ganivets i les tisores són esmolades, l’electricitat pot ser perillosa, així que desconnecteu la bateria abans de connectar-la.

Pas 3: habitatge imprès en 3D

Carcassa impresa en 3D
Carcassa impresa en 3D

Per a això he utilitzat diversos allotjaments impresos en 3D.

  • Un ample genèric de 2 pantalles rodones. Ho podeu veure en aquestes imatges de la primera pàgina. El vaig posar al costat del meu rellotge al tauler.
  • Un estil de falca d’un sol calibre que s’adapta a la zona del rellotge d’un subaru impreza (wrx, sti, etc.) des del 2008 fins al 2014 aproximadament.
  • Una peça de doble calibre que s’adapta a les columnes del volant i a altres superfícies lleugerament arrodonides:

Podeu copiar-los i modificar-los per adaptar-los a les vostres necessitats. Cap d’ells no és perfecte i tots necessitaran una mica d’ajust.

Algunes notes:

  • Vaig acabar la meva amb plastidip; és el mètode preferit dels mandrosos.
  • Lijar els plàstics produeix partícules fines que no us són bones, feu servir una màscara adequada.
  • Vaig utilitzar PETG per a les meves cases. L’ABS també és bo. El PLA es deformarà sota el sol calent sobre un tauler de control.
Desafiament IoT
Desafiament IoT
Desafiament IoT
Desafiament IoT

Accèssit a l'IoT Challenge

Recomanat: