Sommario:
- Forniture
- Passaggio 1: prima il codice/secondo l'hardware
- Passaggio 2: hardware e cablaggio
- Passaggio 3: custodia stampata in 3D
Video: Indicatori per auto OLED ESP32 abilitati Wi-Fi: 3 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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
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
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.
Secondo Premio nella IoT Challenge
Consigliato:
Indicatori del livello dell'acqua/mangime: 10 passaggi (con immagini)
Indicatori del livello dell'acqua/mangime: in questo tutorial ti mostrerò come ho realizzato un indicatore del livello dell'acqua senza l'uso di micro processori, micro controller, Raspberry Pi, Arduino ecc. Quando si tratta di elettronica, sono un completo " manichino". Uso un po' di componenti elettronici
Stai al sicuro usando questa luce per bici con indicatori di direzione: 5 passaggi (con immagini)
Stai al sicuro usando questa luce per bici con indicatori di direzione: amo andare in bicicletta, di solito la uso per andare a scuola. In inverno, molto spesso fuori è ancora buio ed è difficile per gli altri veicoli vedere i miei indicatori di direzione. Quindi è un grosso pericolo perché i camion potrebbero non vedere che voglio
Interfaccia wireless Bluetooth per calibri e indicatori Mitutoyo: 8 passaggi (con immagini)
Interfaccia wireless Bluetooth per calibri e indicatori Mitutoyo: oggi nel mondo esistono milioni di calibri, micrometri, indicatori e altri dispositivi Mitutoyo Digimatic. Molte persone come me usano questi dispositivi per raccogliere dati direttamente in un PC. Ciò elimina la necessità di accedere e digitare a volte centinaia
Come dare a un orologio da parete lancette luminose e indicatori di intervallo di tempo: 14 passaggi (con immagini)
Come dare a un orologio da parete lancette luminose e indicatori di intervallo di tempo: volevamo un orologio da parete per camera da letto con lancette luminose e visualizzazione di intervalli di cinque minuti e quarti d'ora. Doveva essere facilmente leggibile dal letto e la luminosità doveva durare per tutta la notte. La vernice luminosa usata sugli orologi moderni tende
Indicatori luminosi di stato del bagno e interruttore automatico: 4 passaggi (con immagini)
Indicatori luminosi di stato del bagno e interruttore automatico: questo progetto utilizza interruttori di prossimità e relè per controllare una serie di indicatori luminosi. Le luci trasmettono lo stato di occupazione di due bagni. Problema: due bagni per utente singolo - in una casa in stile dormitorio - sono condivisi da più persone, ma