Indholdsfortegnelse:

Wifi -aktiveret OLED ESP32 bilmålere: 3 trin (med billeder)
Wifi -aktiveret OLED ESP32 bilmålere: 3 trin (med billeder)

Video: Wifi -aktiveret OLED ESP32 bilmålere: 3 trin (med billeder)

Video: Wifi -aktiveret OLED ESP32 bilmålere: 3 trin (med billeder)
Video: ESP32 TFT Clock using auto select open WiFi and NTP to sync 2024, November
Anonim
Image
Image
Wifi aktiveret OLED ESP32 bilmålere
Wifi aktiveret OLED ESP32 bilmålere

Introduktioner først …

Jeg bygger bilmålere som en slags til igen og igen. Se https://www.instructables.com/id/Remote-Car-Monit… og https://www.instructables.com/id/Remote-Car-Monit… for to nyere eksempler. Jeg kan især godt lide dem, der passer ind i bilens originaldele. Så hvorfor er denne anderledes, og hvad inspirerede mig til at bygge den. Svaret er to ting:

1) ESP32 - Jeg ville prøve det nye barn på blokchippen, især da den arduino -baserede værktøjskæde til den er temmelig moden. En af de interessante ting, som ESP32 muliggør, er IOT med dens indbyggede wifi- og bluetooth -funktioner. Fællesskabet har skrevet flere biblioteker for at gøre dette noget ligetil (webservere, AP’er, wifi -klienter, mDNS osv.).

2) Billige OLED -skærme - Tilbage i 2007 lavede jeg en måler ved hjælp af en TFT, der sad på urets sted på en GD (2004-2007) WRX. TFT findes i forskellige varianter. Nogle fungerer bedre om natten, nogle fungerer bedre om dagen osv. Men ingen af dem fungerer under alle forhold. Jeg var ikke klar over fejlen på mine måder, før en af de målere, jeg brugte, var ubrugelig under et forummedlems solrige spordag. Indtast OLED, som er fantastiske til bilapplikationer. De er ikke for lyse om natten og (vigtigere) er synlige under de fleste sollysforhold.

Dette er en to for en instruerbar, da jeg skrev alt til to almindelige bilmålere, olietryk og turbotryk. Begge er i det væsentlige det samme: en lille formfaktormåler med et animeret OLED-display med analogt udseende med diskrete tal og maksimum vises. Begge fungerer også som wifi AP’er og webservere. Når man opretter forbindelse til dem via en computer eller mobiltelefon, kan der ses et bevægeligt EKG -type -diagram (dette er den lidt innovative del).

Forbrugsvarer

HELTEC ESP32-modul-få wifi-varianten

Olietryk specifikke dele:

Olietryk sensor - Jeg brugte en automter 5222 Olietryk sensor tilslutning dele - dette varierer efter bil og placering af installationen. Se venligst servicemanualer, fora, teknikere osv. Og gør dette korrekt, så der ikke er olieudslip

Boost gauge specifikke dele:

  • Lufttrykssensor (kun hvis du ønsker at lave en boost -måler) -
  • Luftslange
  • T fittings

Biblioteker, jeg brugte, var uundværlige:

Smoothiecharts - https://smoothiecharts.org/ Fremragende og lette live opdateringskort. Meget tilpasselig og er ikke afhængig af at henvise til et js -bibliotek et andet sted på internettet. Dette giver mulighed for en "lokal-IOT" type opsætning og hele biblioteket passer i en enkelt streng til webservererklæringen i kode!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- gør hvad der står på boksen og gør det godt

ThingPulse OLED grafikbibliotek (kald nogle gange squix -biblioteket) - https://github.com/ThingPulse/esp8266-oled-ssd130… - meget effektiv og ligetil grafik til ESP -chips. Tillod mig at lave lidt doven programmering og stadig få overbevisende animationer.

Værktøjer/diverse:

loddejern - bruges til at lave lange kabelløb til sensorer, installere overskrifter om bord, krympe krympevik osv.

skruetrækker/fatninger/andet bilværktøj - nødvendigt for at installere sensorer på bilen

dobbeltsidet tape - for at installere måleinstrumenter i huse og installere hus i bil (varm lim og andre ting kan virke, men jeg foretrækker 3M dobbeltsidet udvendig trimbånd. Den holder godt og kan trækkes af uden at beskadige ting.)

saks - til tape og skæring af slanger og lynlåse

lynlåse - til at holde tingene sammen, bundte ledninger under bindestreg og i motorrum, holde sensorer på plads osv.

Trin 1: Kode først/hardware andet

Kode først/hardware andet
Kode først/hardware andet
Kode først/hardware andet
Kode først/hardware andet

Koden kan downloades her:

Olietryk -

Boost Pressure -

Forøg tryk med ansigter i stedet for analoge lookmålere -

Grafikkode: ThingPulse -biblioteket er så meget effektivt, at du kan tegne xbms lige oven på hinanden og få overbevisende resultater!

Målerbillederne kom faktisk fra et open source grafiklager (https://thenounproject.com/). Kunstneren Iconic, CY (https://thenounproject.com/icon/490005/).

Jeg brugte gimp til at generere 20 forskellige rammer med nålen pegende på hvert kryds. Ikoner for smiley -ansigtet er af NOVITA ASTRI, ID og er her:

Derefter konverterede jeg alt dette til const uint8_t-arrays ved hjælp af denne teknik (tip: hvis farverne er omvendt, når du viser dem, skal du bare vende farverne på originalen): https://blog.squix.org/2015/05/esp8266- nodemcu-ho …

Live animationskode er ret ligetil:

  • Få læsning fra sensoren
  • Skalalæsning (jeg gjorde det til 1 til 1 for positive boostværdier og bevægede kun nålen, når den er i boost, ikke når den er i vakuum)
  • Tegn xbm og sæt derefter taltegn ned for alt andet.
  • skyl og gentag

Sensorkode: Jeg genbruger sensorkode, jeg har brugt til disse to sensorer til et par andre projekter. Jeg tilføjede et gennemsnit for at komme væk fra spændende sensorer. Dette inkluderer læsning af hver "læsning" som et gennemsnit på 5 aflæsninger.

Boost-kode (sensor giver en analog værdi fra 0-5 volt, som ADC'en omdanner til trin 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; // forlade /6,89 for kpa float ResultatPSI = (((rboost /4095) + 0,04) /0,004) * 0,145 - atmo; // med 0,145 til beregning af psi // 4096 værdier på esp32 /*rBoost = rBoost + 1; hvis (rBoost> = 20) {rBoost = 0; }*/ return (ResultPSI); }

Olietrykskode (sensoren varierer sin modstand baseret på det tryk, den registrerer, så en spændingsdeler er påkrævet for at omdanne denne til en spænding fra 0-5v se: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito … (mod bunden) for mere information):

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

Webserver og AP -funktionalitet: AP -funktionalitet er ret enkel - instantier og AP -objekt med det ESSID, du vil sende og adgangskoden, og du er god til at gå.

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

WiFi.softAP (ssid, adgangskode);

Det har endda en DHCP -server, så du behøver ikke bekymre dig om det. Som standard er IP'en 192.168.1.4 (aner ikke hvorfor, det er lige hvad de valgte). Webserverbitten er lidt vanskeligere og krævede lidt research. Grundlæggende vil du have en asynkron webserver, så den kan få liveopdateringsdata. Heldigvis er der et bibliotek til det. Jeg er ikke en javascript -udvikler, så jeg pillede med en masse kortlægnings- og grafbiblioteker, indtil jeg faldt over smoothie -diagrammer. De fleste andre kortlægningsbiblioteker er skrevet sådan, at de arver alle former for kode fra andre biblioteker fra hele internettet, der indlæses dynamisk, når en side gengives. Jeg ville have, at dette skulle fungere uafhængigt af internettet, så dette var et stort fund. For det andet skulle den være lille nok til, at den passede på en arduino, og som du kan se i koden, passer den i et enkelt char -array.

Webservererklæringer: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // instantier det og vælg port (80 er standard for http) … server.on ("/", HTTP_GET, (AsyncWebServerRequest *anmodning) {request-> send (200, "text/html", "… // websiden + smoothiecharts -biblioteket i et stort char array}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *anmodning) {// den første side kalder faktisk denne meget lille side, der bare returnerer værdianmodningen -> send (200, "tekst/html", Sboost);}); server.begin ();

Trin 2: Hardware og ledninger

Hardware og ledninger
Hardware og ledninger
Hardware og ledninger
Hardware og ledninger
Hardware og ledninger
Hardware og ledninger

På billedet i galleriet ses de to sensorer, jeg bruger. Den store guldfarvede er en Autometer 2242 olietrykssensor. Denne sensors krop og tråd er slebet, og terminalen er aflæsningen i modstand.

Autometer giver dig en kurve for modstandsdygtighed over for tryk eller modstand mod temperatur for enhver af deres sensorer. Jeg har konverteret dette til spænding ved hjælp af en spændingsdeler (se ledningsdiagram).

MPX4250AP lufttrykssensoren har tre strømførende ben og flere ubrugte ben. De er V i, jord og sensor output. Det udsender en 0-5v aflæsning, der kan aflæses af mikrokontrolleren (eller i tilfælde af denne mcu 0-3 volt. Så skaleres sensoraflæsning ned ved hjælp af en spændingsdeler.). Specifikationsarket til det findes her:

Der er flere problemer med at nedskalere fra 5v til 3v logik. I mit tilfælde brugte jeg spændingsdeleren for enkelhed, og jeg havde delene omkring mit arbejdsbord. Du vil introducere en lille smule fejl i målingerne baseret på den mulige fejl i de ekstra komponenter (de to modstande). Dette kan i nogle tilfælde gøre dine aflæsninger 10% rabat. Jeg kan leve med dette. Hvis du ikke kan, kan du bruge en opamp og modstande eller en logisk niveauomformer (fås hos forskellige elektronikleverandører. Sparkfun har en her: https://www.sparkfun.com/products/12009 Jeg kan skifte til den som Jeg får nogle gange høje aflæsninger på denne måler (faktisk har jeg vist dette produkt på mit ledningsdiagram).

Jeg drev ESP32'erne via USB. Dette omfattede tilslutning af en direkte oplader som denne: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… til bilen og derefter bruge en USB -hub til at dele den op. Du kan se, at jeg brugte retvinklede usb -kabler til at sikre, at alt fungerer i et lille område (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Andre fotos viser steder, hvor jeg skar huller eller løb tråd. Hver bil vil være anderledes. Vær forsigtig, knive og saks er skarpe, elektricitet kan være farlig, så afbryd venligst batteriet, før du tilslutter tingene.

Trin 3: 3D -trykt hus

3D -trykt hus
3D -trykt hus

Jeg har brugt flere 3D -printede huse til dette.

  • En generisk stor 2 skærm rund måler. Du kan se dette på disse billeder på den første side. Jeg satte det ved siden af mit ur på mit instrumentbræt.
  • En kilometer-stil med en enkelt måler, der passer i urområdet på en subaru impreza (wrx, sti osv.) Fra ca. 2008 til 2014.
  • En dobbeltmåler, der passer på rattstænger og andre let afrundede overflader:

Du er velkommen til at kopiere og ændre disse, så de passer til dine behov. Ingen af dem er perfekte, og de vil alle kræve lidt justering.

Nogle noter:

  • Jeg afsluttede mit med plastidip; det er den foretrukne metode til dovne.
  • Slibning af plast gør fine partikler, der ikke er gode for dig, brug en passende maske.
  • Jeg brugte PETG til mine huse. ABS er også godt. PLA vil skæve i den varme sol på et instrumentbræt.
IoT -udfordring
IoT -udfordring
IoT -udfordring
IoT -udfordring

Anden pris i IoT Challenge

Anbefalede: