Innholdsfortegnelse:

Wifi -aktivert OLED ESP32 bilmålere: 3 trinn (med bilder)
Wifi -aktivert OLED ESP32 bilmålere: 3 trinn (med bilder)

Video: Wifi -aktivert OLED ESP32 bilmålere: 3 trinn (med bilder)

Video: Wifi -aktivert OLED ESP32 bilmålere: 3 trinn (med bilder)
Video: Arduino ESP32 and OLED Display - Connect WiFi and Show Connection Status - with explained coding 2024, Desember
Anonim
Image
Image
WiFi aktivert OLED ESP32 bilmålere
WiFi aktivert OLED ESP32 bilmålere

Innledninger først …

Jeg bygger bilmålere som en slags på og av igjen hobby. Se https://www.instructables.com/id/Remote-Car-Monit… og https://www.instructables.com/id/Remote-Car-Monit… for to nyere eksempler. Jeg liker spesielt de som blander seg med de originale delene av bilen. Så hvorfor er denne annerledes og hva inspirerte meg til å bygge den. Svaret er to ting:

1) ESP32 - Jeg ønsket å prøve den nye gutten på blokkbrikken, spesielt siden den arduino -baserte verktøykjeden for den er ganske moden. En av de interessante tingene som ESP32 muliggjør er IOT med sine innebygde wifi- og bluetooth -funksjoner. Samfunnet har skrevet flere biblioteker for å gjøre dette litt enkelt (webservere, AP -er, wifi -klienter, mDNS, etc., etc.).

2) Billige OLED -skjermer - Tilbake i 2007 laget jeg en måler ved hjelp av en TFT som satt i stedet for klokken på en GD (2004-2007) WRX. TFT kommer i forskjellige smaker. Noen fungerer bedre om natten, noen fungerer bedre om dagen osv. Men ingen av dem fungerer under alle forhold. Jeg skjønte ikke feilen på mine måter før en av målerne jeg brukte var ubrukelig under et forummedlems solfylte spordag. Skriv inn OLED, som er fantastiske for bilapplikasjoner. De er ikke for lyse om natten og (enda viktigere) er synlige i de fleste sollysforhold.

Dette er en to for en instruerbar da jeg skrev alt for to vanlige bilmålere, oljetrykk og turbotrykk. Begge er i hovedsak det samme: en liten formfaktormåler med en animert analog OLED-skjerm med diskrete tall og maksimum som vises. Begge fungerer også som wifi AP -er og webservere. Når man kobler seg til dem via en datamaskin eller mobiltelefon, kan du se et EKG -type diagram i bevegelse (dette er den litt innovative delen).

Rekvisita

HELTEC ESP32-modul-få wifi-varianten

Oljetrykksspesifikke deler:

Oljetrykksensor - Jeg brukte en automter 5222 Oljetrykksensor tilkoblingsdeler - dette varierer etter bil og installasjonssted. Vennligst se servicehåndbøker, forum, mekanikk osv. Og gjør dette riktig slik at det ikke er oljelekkasjer

Øk måler spesifikke deler:

  • Lufttrykksensor (bare hvis du ønsker å lage en boost -måler) -
  • Luftslange
  • T beslag

Biblioteker jeg brukte som var uunnværlige:

Smoothiecharts - https://smoothiecharts.org/ Utmerkede og lette liveoppdateringskart. Veldig tilpassbar og stoler ikke på å referere til et js -bibliotek et annet sted på internett. Dette gir mulighet for et oppsett av "lokal-IOT" -type og hele biblioteket passer i én streng for webservererklæringen i kode!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- gjør det den sier på esken og gjør det bra

ThingPulse OLED grafikkbibliotek (noen ganger kaller du squix -biblioteket) - https://github.com/ThingPulse/esp8266-oled-ssd130… - veldig effektiv og grei grafikk for ESP -brikkene. Tillot meg å gjøre litt lat programmering og fremdeles få overbevisende animasjoner.

Verktøy/diverse:

loddejern - brukes til å lage lange kabelgjennomføringer for sensorer, installere hoder ombord, krympe krympeomslag etc.

skrutrekker/stikkontakter/annet bilverktøy - nødvendig for å installere sensorer på bilen

dobbeltsidig tape - for å installere målere i hus og installere hus i bil (varmt lim og andre ting kan fungere, men jeg foretrekker 3M dobbeltsidig ytre trimbånd. Den holder godt og kan trekkes av uten å skade ting.)

saks - for tape og kutting av slanger og glidelåser

glidelåser - for å holde ting sammen, binde ledninger under dashbordet og i motorrommet, holde sensorer på plass, etc.

Trinn 1: Kode først/maskinvare for det andre

Kode først/maskinvare for det andre
Kode først/maskinvare for det andre
Kode først/maskinvare for det andre
Kode først/maskinvare for det andre

Koden kan lastes ned her:

Oljetrykk -

Øk trykket -

Øk trykket med ansikter i stedet for analoge blikkmålere -

Grafikkode: ThingPulse -biblioteket er så veldig effektivt at du kan tegne xbms rett oppå hverandre og få overbevisende resultater!

Målerbildene kom faktisk fra et åpen kildekode -grafikklager (https://thenounproject.com/). Artisten Iconic, CY (https://thenounproject.com/icon/490005/).

Jeg brukte gimp til å generere 20 forskjellige rammer med nålen pekende på hvert kryss. Smilefjesikonene er av NOVITA ASTRI, ID og er her:

Deretter konverterte jeg alt til const uint8_t-matriser ved hjelp av denne teknikken (hint: hvis fargene er invertert når du viser dem, bare snu fargene på originalen): https://blog.squix.org/2015/05/esp8266- nodemcu-ho …

Live animasjonskode er ganske grei:

  • Få lesing fra sensoren
  • Skala avlesning (jeg gjorde det 1 til 1 for positive boost -verdier og bare beveger nålen når den er i boost, ikke når den er i vakuum)
  • Tegn xbm og legg deretter ned talltegn for alt annet.
  • skyll og gjenta

Sensorkode: Jeg bruker sensorkode jeg har brukt for disse to sensorene til noen få andre prosjekter. Jeg la til noen gjennomsnitt for å komme vekk fra hoppende sensorer. Dette inkluderer at hver "lesing" er gjennomsnittlig 5 avlesninger.

Boost-kode (sensor gir en analog verdi fra 0-5 volt som ADC blir til trinn fra 0-1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); // float ResultatPSI = (rboost*(. 00488)/(. 022) +20) /6,89 - atmo; // permisjon av /6,89 for kpa float ResultatPSI = (((rboost /4095) + 0,04) /0,004) * 0,145 - atmo; // med 0.145 for å beregne psi // 4096 verdier på esp32 /*rBoost = rBoost + 1; hvis (rBoost> = 20) {rBoost = 0; }*/ retur (ResultPSI); }

Oljetrykkskode (sensoren varierer motstanden basert på trykket den registrerer, så det kreves en spenningsdeler for å gjøre denne til en spenning fra 0-5v se: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito … (mot bunnen) for mer informasjon):

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

Webserver og AP -funksjonalitet: AP -funksjonalitet er ganske enkel - instantier og AP -objekt med ESSID du vil kringkaste og passordet, og du er god til å gå.

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

WiFi.softAP (ssid, passord);

Den har til og med en DHCP -server, slik at du ikke trenger å bekymre deg for det. Som standard er IP -adressen 192.168.1.4 (aner ikke hvorfor, det er akkurat det du valgte). Nettserverbiten er litt vanskeligere og krevde litt forskning. I utgangspunktet vil du ha en asynkisk webserver, slik at den kan få oppdaterte data live. Heldigvis finnes det et bibliotek for det. Jeg er ikke en javascript -utvikler, så jeg puslet med en haug med kartbibliotek til jeg snublet over smoothie -diagrammer. De fleste andre kartbiblioteker er skrevet slik at de arver alle typer kode fra andre biblioteker fra hele nettet som lastes dynamisk når en side gjengis. Jeg ville at dette skulle fungere uavhengig av internett, så dette var et stort funn. For det andre måtte den være liten nok til at den passet på en arduino, og som du kan se i koden, passer den i en enkelt røye.

Webservererklæringer: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // øyeblikkelig og velg port (80 er standard for http) … server.on ("/", HTTP_GET, (AsyncWebServerRequest *forespørsel) {request-> send (200, "text/html", "… // websiden + smoothiecharts -biblioteket i et stort char -array}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *forespørsel) {// den første siden kaller faktisk denne veldig lille siden som bare returnerer verdiforespørselen -> send (200, "text/html", Sboost);}); server.begin ();

Trinn 2: Maskinvare og ledninger

Maskinvare og ledninger
Maskinvare og ledninger
Maskinvare og ledninger
Maskinvare og ledninger
Maskinvare og ledninger
Maskinvare og ledninger

Avbildet i galleriet er de to sensorene jeg bruker. Den store gullfargede er en Autometer 2242 oljetrykksensor. Kroppen og tråden til denne sensoren er slipt og terminalen er avlesningen i motstand.

Autometer vil gi deg en kurve av motstand mot trykk eller motstand mot temperatur for noen av deres sensorer. Jeg har konvertert dette til spenning ved hjelp av en spenningsdeler (se koblingsskjema).

MPX4250AP lufttrykksensor har tre strømførende pinner og flere ubrukte pinner. De er V i, bakken og sensorutgang. Den sender ut en 0-5v avlesning som kan leses av mikrokontrolleren (eller i tilfellet med denne mcu 0-3 volt. Så blir sensoravlesningen skalert ned ved hjelp av en spenningsdeler.). Spesifikasjonsarket for det finner du her:

Det er flere problemer med å nedskalere fra 5v til 3v logikk. I mitt tilfelle brukte jeg spenningsdeleren for enkelhet, og jeg hadde delene rundt arbeidsbenken min. Du vil introdusere en liten feil i avlesningene basert på den mulige feilen i tilleggskomponentene (de to motstandene). Dette kan gjøre avlesningene dine 10% rabatt i noen tilfeller. Jeg kan leve med dette. Hvis du ikke kan, kan du bruke en opamp og motstander eller en logisk nivåomformer (tilgjengelig fra forskjellige elektronikkleverandører. Sparkfun har en her: https://www.sparkfun.com/products/12009 Jeg kan bytte til den som Noen ganger får jeg høye målinger på denne måleren (faktisk har jeg vist dette produktet på koblingsskjemaet mitt).

Jeg drev ESP32 via USB. Dette inkluderte å koble en direkte lader som denne: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… til bilen og deretter bruke en USB -hub for å dele den ut. Du kan se at jeg brukte rettvinklede usb -kabler for å sikre at alt fungerer i et lite område (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Andre bilder viser steder jeg kuttet hull eller kjørte wire. Hver bil vil være annerledes. Vær forsiktig, kniver og saks er skarpe, elektrisitet kan være farlig, så koble fra batteriet før du kobler til ting.

Trinn 3: 3D -trykt hus

3D -trykt hus
3D -trykt hus

Jeg har brukt flere 3D -trykte hus til dette.

  • En generisk stor 2 -skjerms rundmåler. Du kan se dette på disse bildene på den første siden. Jeg la den ved siden av klokken min på dashbordet.
  • En kilemåler som passer i klokkeområdet til en subaru impreza (wrx, sti, etc.) fra ca. 2008 til 2014.
  • Et stykke med to målere som passer på rattstammene og andre lett avrundede overflater:

Du er velkommen til å kopiere og endre disse for å passe dine behov. Ingen av dem er perfekte, og de vil alle kreve litt justering.

Noen notater:

  • Jeg avsluttet min med plastidip; det er den foretrukne metoden for late.
  • Sliping av plast gir fine partikler som ikke er bra for deg, bruk en passende maske.
  • Jeg brukte PETG til husene mine. ABS er også bra. PLA vil skje i den varme solen på et dashbord.
IoT -utfordring
IoT -utfordring
IoT -utfordring
IoT -utfordring

Andre pris i IoT Challenge

Anbefalt: