Sommario:

Indicatori per auto OLED ESP32 abilitati Wi-Fi: 3 passaggi (con immagini)
Indicatori per auto OLED ESP32 abilitati Wi-Fi: 3 passaggi (con immagini)

Video: Indicatori per auto OLED ESP32 abilitati Wi-Fi: 3 passaggi (con immagini)

Video: Indicatori per auto OLED ESP32 abilitati Wi-Fi: 3 passaggi (con immagini)
Video: Control ESP32 and ESP8266 GPIOs from Anywhere in the World 2024, Dicembre
Anonim
Image
Image
Indicatori per auto OLED ESP32 abilitati Wi-Fi
Indicatori per auto OLED ESP32 abilitati Wi-Fi

Prima le presentazioni…

Costruisco indicatori per auto come una sorta di hobby che si accende e si spegne di nuovo. Vedi https://www.instructables.com/id/Remote-Car-Monit… e https://www.instructables.com/id/Remote-Car-Monit… per due esempi più recenti. Mi piacciono particolarmente quelli che si fondono con le parti originali dell'auto. Quindi, perché questo è diverso e cosa mi ha ispirato a costruirlo. La risposta è due cose:

1) ESP32 - Volevo provare il nuovo capretto sul chip del blocco, soprattutto perché la toolchain basata su arduino è abbastanza matura. Una delle cose interessanti che l'ESP32 abilita è IOT con le sue funzionalità Wi-Fi e Bluetooth integrate. La comunità ha scritto più librerie per renderlo in qualche modo semplice (server web, AP, client Wi-Fi, mDNS, ecc.).

2) Schermi OLED economici - Nel 2007 ho realizzato un indicatore utilizzando un TFT che si trovava al posto dell'orologio su un WRX GD (2004-2007). I TFT sono disponibili in vari gusti. Alcuni funzionano meglio di notte, alcuni funzionano meglio di giorno, ecc. Ma nessuno di loro funziona in tutte le condizioni. Non mi sono reso conto dell'errore dei miei modi fino a quando uno degli indicatori che ho usato non è stato utile durante la giornata di sole in pista di un membro del forum. Inserisci OLED, che sono fantastici per le applicazioni automobilistiche. Non sono troppo luminose di notte e (cosa più importante) sono visibili nella maggior parte delle condizioni di luce solare.

Questo è un istruibile due per uno poiché ho scritto tutto per due comuni manometri per auto, pressione dell'olio e pressione del turbo. Entrambi sono essenzialmente la stessa cosa: un piccolo indicatore del fattore di forma con un display OLED animato dall'aspetto analogico con numeri discreti e massimi visualizzati. Entrambi funzionano anche come AP wifi e server web. Quando ci si connette a loro tramite un computer o un telefono cellulare è visibile un grafico ECG in movimento (questa è la parte in qualche modo innovativa).

Forniture

Modulo HELTEC ESP32 - ottieni la variante wifi

Parti specifiche per la pressione dell'olio:

Sensore di pressione dell'olio - Ho usato un automter 5222 Parti di collegamento del sensore di pressione dell'olio - questo varia in base all'auto e al luogo di installazione. Si prega di consultare manuali di servizio, forum, meccanica, ecc. E farlo correttamente in modo che non ci siano perdite di olio

Parti specifiche dell'indicatore di potenziamento:

  • Sensore pressione aria (solo se si desidera realizzare un manometro boost) -
  • Tubo dell'aria
  • raccordi a T

Librerie che ho usato che erano indispensabili:

Smoothiecharts - https://smoothiecharts.org/ Grafici aggiornati dal vivo eccellenti e leggeri. Molto personalizzabile e non si basa sul riferimento a una libreria js da qualche altra parte su Internet. Ciò consente una configurazione di tipo "locale-IOT" e l'intera libreria si adatta a una singola stringa per l'istruzione del server Web nel codice!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- fa quello che dice sulla scatola e lo fa bene

Libreria grafica ThingPulse OLED (a volte chiamata libreria squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - grafica molto efficiente e diretta per i chip ESP. Mi ha permesso di fare un po' di programmazione pigra e di ottenere comunque animazioni convincenti.

Strumenti/varie:

saldatore - utilizzato per realizzare lunghi cavi per i sensori, installare intestazioni a bordo, termoretraibile, ecc.

cacciavite/prese/altri attrezzi per auto - necessari per installare i sensori sull'auto

nastro biadesivo - per installare gli indicatori negli alloggiamenti e installare l'alloggiamento nell'auto (colla a caldo e altre cose potrebbero funzionare, ma preferisco il nastro biadesivo esterno 3M. Tiene bene e può essere rimosso senza danneggiare le cose.)

forbici - per tagliare il nastro e tagliare tubi e fascette

fascette - per tenere insieme le cose, avvolgere i cavi sotto il cruscotto e nel vano motore, tenere in posizione i sensori, ecc.

Passaggio 1: prima il codice/secondo l'hardware

Primo codice/secondo hardware
Primo codice/secondo hardware
Primo codice/secondo hardware
Primo codice/secondo hardware

Il codice può essere scaricato qui:

Pressione dell'olio -

Aumenta la pressione -

Aumenta la pressione con i volti invece degli indicatori di aspetto analogico -

Codice grafico: la libreria ThingPulse è così efficiente che puoi disegnare xbms uno sopra l'altro e ottenere risultati convincenti!

Le immagini del calibro in realtà provenivano da un repository di grafica open source (https://thenounproject.com/). L'artista Iconic, CY (https://thenounproject.com/icon/490005/).

Ho usato gimp per generare 20 fotogrammi diversi con l'ago puntato su ogni segno di graduazione. Le icone della faccina sorridente sono di NOVITA ASTRI, ID e sono qui:

Quindi li ho convertiti tutti in array const uint8_t usando questa tecnica (suggerimento: se i colori sono invertiti quando li visualizzi, inverti semplicemente i colori sull'originale): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

Il codice dell'animazione dal vivo è piuttosto semplice:

  • Ottieni la lettura dal sensore
  • Lettura della scala (l'ho fatta da 1 a 1 per valori di boost positivi e muovi la lancetta solo quando è in boost non quando è in vuoto)
  • Disegna xbm e poi metti i caratteri numerici per tutto il resto.
  • risciacqua e ripeti

Codice sensore: sto riutilizzando il codice sensore che ho usato per questi due sensori per alcuni altri progetti. Ho aggiunto un po' di media per allontanarmi dai sensori nervosi. Ciò include la lettura di ogni "lettura" con una media di 5 letture.

Codice boost (il sensore fornisce un valore analogico da 0-5 volt che l'ADC trasforma in passi da 0-1024):

int getBoost() { float boost = ((analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36))/5); //float RisultatoPSI = (boost*(.00488)/(.022)+20)/6.89 - atmo; //lascia il /6.89 per kpa float RisultatoPSI = (((boost / 4095) + 0.04) / 0.004) * 0.145 - atmo; //di 0,145 per calcolare psi //4096 valori su esp32 /*rBoost = rBoost + 1; if (rBoost >= 20) { rBoost = 0; }*/ ritorno (ResultPSI); }

Codice pressione olio (il sensore varia la sua resistenza in base alla pressione che rileva, quindi è necessario un divisore di tensione per trasformarlo in una tensione da 0-5v vedi: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito…(verso il basso) per maggiori informazioni):

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

Funzionalità Web Server e AP: la funzionalità AP è abbastanza semplice: crea un'istanza e un oggetto AP con l'ESSID che desideri trasmettere e la password e sei a posto.

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

WiFi.softAP(ssid, password);

Ha anche un server DHCP, quindi non devi preoccuparti di questo. Per impostazione predefinita, l'IP è 192.168.1.4 (non ho idea del perché, è proprio quello che hanno scelto). Il bit del server web è un po' più complicato e ha richiesto un po' di ricerca. Fondamentalmente si desidera un server web asincrono in modo che possa ottenere dati di aggiornamento in tempo reale. Per fortuna c'è una biblioteca per questo. Non sono uno sviluppatore javascript, quindi ho armeggiato con un mucchio di grafici e librerie di grafici fino a quando non mi sono imbattuto in grafici smoothie. La maggior parte delle altre librerie di grafici sono scritte in modo tale da ereditare tutti i tipi di codice da altre librerie del Web che vengono caricate dinamicamente quando viene eseguito il rendering di una pagina. Volevo che funzionasse indipendentemente da Internet, quindi è stata una grande scoperta. In secondo luogo doveva essere abbastanza piccolo da adattarsi a un arduino e come puoi vedere nel codice si adatta a un singolo array di caratteri.

Dichiarazioni del server Web: #include AsyncTCP.h #include ESPAsyncWebServer.h … AsyncWebServer server(80); //istanzialo e seleziona la porta (80 è lo standard per http) … server.on("/", HTTP_GET, (AsyncWebServerRequest *request){ request->send(200, "text/html", "… // la pagina web + la libreria smoothiecharts in un enorme array di caratteri }); server.on("/val", HTTP_GET, (AsyncWebServerRequest *request){ //la prima pagina in realtà chiama questa pagina molto piccola che restituisce solo la richiesta di valore ->send(200, "testo/html", Sboost); }); server.begin();

Passaggio 2: hardware e cablaggio

Hardware e cablaggio
Hardware e cablaggio
Hardware e cablaggio
Hardware e cablaggio
Hardware e cablaggio
Hardware e cablaggio

Nella galleria sono raffigurati i due sensori che utilizzo. Il grande color oro è un sensore di pressione dell'olio Autometer 2242. Il corpo e il filo di questo sensore sono a terra e il terminale è la lettura in resistenza.

Autometer ti fornirà una curva di resistenza alla pressione o resistenza alla temperatura per uno qualsiasi dei suoi sensori. L'ho convertito in tensione utilizzando un partitore di tensione (vedi schema elettrico).

Il sensore di pressione dell'aria MPX4250AP ha tre pin attivi e diversi pin inutilizzati. Sono l'ingresso V, la massa e l'uscita del sensore. Emette una lettura 0-5v che può essere letta dal microcontrollore (o nel caso di questo mcu 0-3 volt. Quindi, la lettura del sensore viene ridotta utilizzando un partitore di tensione). La scheda tecnica può essere trovata qui:

Ci sono diversi problemi nel ridimensionare la logica da 5v a 3v. Nel mio caso ho usato il partitore di tensione per semplicità e avevo le parti intorno al mio banco da lavoro. Introdurrai un po' di errore nelle letture in base al possibile errore dei componenti aggiuntivi (i due resistori). Questo potrebbe rendere le tue letture scontate del 10% in alcuni casi. Posso vivere con questo. Se non puoi, potresti voler utilizzare un opamp e resistori o un convertitore di livello logico (disponibile da vari fornitori di elettronica. Sparkfun ne ha uno qui: https://www.sparkfun.com/products/12009 Potrei passare ad esso come A volte ottengo letture elevate su questo indicatore (in effetti ho mostrato questo prodotto sul mio schema elettrico).

Ho alimentato gli ESP32 tramite USB. Ciò includeva il cablaggio di un caricabatterie diretto come questo: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… all'auto e quindi l'utilizzo di un hub USB per dividerlo. Puoi vedere che ho usato cavi USB ad angolo retto per assicurarmi che tutto funzioni in una piccola area (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Altre foto mostrano luoghi in cui ho praticato buchi o fatto passare cavi. Ogni macchina sarà diversa. Prestare attenzione, coltelli e forbici sono affilati, l'elettricità può essere pericolosa, quindi scollegare la batteria prima di collegare le cose.

Passaggio 3: custodia stampata in 3D

Custodia stampata in 3D
Custodia stampata in 3D

Ho usato diversi alloggiamenti stampati in 3D per questo.

  • Un generico calibro rotondo a 2 schermi di grandi dimensioni. Potete vederlo in questa foto della prima pagina. L'ho messo vicino all'orologio sul cruscotto.
  • Un singolo calibro a cuneo che si adatta all'area dell'orologio di una subaru impreza (wrx, sti, ecc.) Dal 2008 al 2014.
  • Un pezzo a doppio calibro che si adatta alle colonne del volante e ad altre superfici leggermente arrotondate:

Siete invitati a copiarli e modificarli in base alle vostre esigenze. Nessuno di loro è perfetto e tutti richiederanno un po' di adattamento.

Alcune note:

  • Ho finito il mio con il plastidip; è il metodo preferito dei pigri.
  • La levigatura della plastica produce particolato fine che non va bene per te, usa una maschera appropriata.
  • Ho usato PETG per le mie custodie. Va bene anche l'ABS. Il PLA si deformerà sotto il sole caldo su un cruscotto.
Sfida IoT
Sfida IoT
Sfida IoT
Sfida IoT

Secondo Premio nella IoT Challenge

Consigliato: