INHOUDSOPGAWE:

WiFi -geaktiveerde OLED ESP32 -motormeters: 3 stappe (met foto's)
WiFi -geaktiveerde OLED ESP32 -motormeters: 3 stappe (met foto's)

Video: WiFi -geaktiveerde OLED ESP32 -motormeters: 3 stappe (met foto's)

Video: WiFi -geaktiveerde OLED ESP32 -motormeters: 3 stappe (met foto's)
Video: $5 WiFi Camera Setup | ESP32 Wifi Setup view on Mobile phone 2024, November
Anonim
Image
Image
WiFi -geaktiveerde OLED ESP32 -motormeters
WiFi -geaktiveerde OLED ESP32 -motormeters

Inleidings eers …

Ek bou motormeters as 'n soort stokperdjie. Sien https://www.instructables.com/id/Remote-Car-Monit… en https://www.instructables.com/id/Remote-Car-Monit… vir nog twee onlangse voorbeelde. Ek hou veral van dié wat inpas by die oorspronklike onderdele van die motor. Waarom is hierdie een dan anders en wat het my geïnspireer om dit te bou? Die antwoord is twee dinge:

1) ESP32 - Ek wou die nuwe kind op die block chip probeer, veral omdat die arduino -gebaseerde werktuigketting daarvoor redelik volwasse is. Een van die interessante dinge wat die ESP32 moontlik maak, is IOT met sy ingeboude wifi- en bluetooth -moontlikhede. Die gemeenskap het verskeie biblioteke geskryf om dit ietwat eenvoudig te maak (webservers, AP's, wifi -kliënte, mDNS, ens.).

2) Goedkoop OLED -skerms - In 2007 het ek 'n meter gemaak met 'n TFT wat in die plek van die klok op 'n GD (2004-2007) WRX was. TFT kom in verskillende geure voor. Sommige werk beter in die nag, sommige werk beter in die dag, ens. Maar nie een van hulle werk onder alle omstandighede nie. Ek het nie die fout van my weë besef nie, totdat een van die meters wat ek gebruik het, nutteloos was tydens 'n sonnige baan van 'n forumlid. Voer OLED in, wat wonderlik is vir voertuigtoepassings. Hulle is nie te helder in die nag nie en (meer belangrik) is sigbaar in die meeste sonlig.

Dit is 'n twee -vir -een -instruksies, want ek het alles geskryf vir twee algemene motormeters, oliedruk en turbodruk. Beide is in wese dieselfde: 'n klein vormfaktormeter met 'n lewendige OLED-skerm met analoog voorkoms met diskrete getalle en maksimum getalle. Beide funksioneer ook as wifi AP’s en webservers. As 'n mens via 'n rekenaar of selfoon met hulle in verbinding tree, is 'n bewegende EKG -tipe grafiek sigbaar (dit is die ietwat vernuwende deel).

Voorrade

HELTEC ESP32-module-kry die wifi-variant

Oliedruk spesifieke dele:

Oliedruksensor - ek het 'n automter 5222 olie -druksensor -aansluitingsonderdele gebruik - dit wissel na gelang van die motor en die ligging van die installasie. Raadpleeg die dienshandleidings, forums, tegnieke, ens. En doen dit korrek, sodat daar geen olie lek nie

Versterkingsmeter spesifieke dele:

  • Lugdruksensor (slegs as u 'n hupstootmeter wil maak) -
  • Lugslang
  • T -toebehore

Biblioteke wat ek gebruik het, was onontbeerlik:

Smoothiecharts - https://smoothiecharts.org/ Uitstekende en liggewig lewendige opdateringskaarte. Baie aanpasbaar en maak nie staat op die verwysing na 'n js -biblioteek op 'n ander plek op die internet nie. Dit maak voorsiening vir 'n "local-IOT" tipe opstelling en die hele biblioteek pas in 'n enkele string vir die webbedienerverklaring in kode!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- doen wat dit op die boks sê en doen dit goed

ThingPulse OLED grafiese biblioteek (soms die squix -biblioteek genoem) - https://github.com/ThingPulse/esp8266-oled-ssd130… - baie doeltreffende en eenvoudige grafika vir die ESP -skyfies. Het my toegelaat om lui te programmeer en steeds oortuigende animasies te kry.

Gereedskap/diverse:

soldeerbout - word gebruik om lang kabellope vir sensors te maak, koppe aan boord te installeer, krimpfolie te krimp, ens.

skroewedraaier/voetstukke/ander motorgereedskap - nodig om sensors op die motor te installeer

dubbelzijdige band - om meters in die huise te plaas en om die motor in die motor te installeer (warm gom en ander goed kan werk, maar ek verkies die 3M dubbelzijdige buiteband. Dit hou goed vas en kan afgetrek word sonder om dinge te beskadig.)

skêr - vir band en sny van buise en ritsbande

ritsbande - om dinge bymekaar te hou, drade onder die dashboard en in die enjinkompartement te bondel, sensors in plek te hou, ens.

Stap 1: Kode eerste/hardeware tweede

Kode eerste/hardeware tweede
Kode eerste/hardeware tweede
Kode eerste/hardeware tweede
Kode eerste/hardeware tweede

Die kode kan hier afgelaai word:

Oliedruk -

Verhoog die druk -

Verhoog druk met gesigte in plaas van analoogmeters -

Grafiese kode: Die ThingPulse -biblioteek is so doeltreffend dat u xbms direk op mekaar kan teken en oortuigende resultate kan behaal!

Die meterbeelde kom eintlik van 'n open source grafiese bewaarplek (https://thenounproject.com/). Die kunstenaar Iconic, CY (https://thenounproject.com/icon/490005/).

Ek het gimp gebruik om 20 verskillende rame te genereer, met die naald wat na elke regmerkie wys. Die smiley -ikone is deur NOVITA ASTRI, ID en is hier:

Toe omskep ek dit alles in const uint8_t-skikkings met behulp van hierdie tegniek (wenk: as die kleure omgekeer word wanneer u dit vertoon, draai net die kleure op die oorspronklike om): https://blog.squix.org/2015/05/esp8266- nodemcu-ho …

Regstreekse animasiekode is redelik eenvoudig:

  • Lees uit die sensor
  • Skaallesing (ek het dit 1 tot 1 gemaak vir positiewe hupstootwaardes en beweeg slegs die naald as dit 'n hupstoot is, nie as dit in vakuum is nie)
  • Teken xbm en sit dan getalkarakters vir al die ander neer.
  • spoel en herhaal

Sensorkode: ek gebruik sensorkode wat ek vir hierdie twee sensors gebruik het vir 'n paar ander projekte. Ek het wel 'n bietjie gemiddeld bygevoeg om weg te kom van springende sensors. Dit sluit in dat elke "lees" gemiddeld 5 lesings is.

Boost-kode (sensor gee 'n analoog waarde van 0-5 volt, wat deur die ADC in stappe van 0-1024 verander word):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); // float ResultPSI = (rboost*(. 00488)/(. 022) +20) /6.89 - atmo; // verlof van die /6.89 vir kpa float ResultPSI = (((rboost /4095) + 0.04) /0.004) * 0.145 - atmo; // teen 0.145 om psi te bereken // 4096 waardes op esp32 /*rBoost = rBoost + 1; as (rBoost> = 20) {rBoost = 0; }*/ opgawe (ResultPSI); }

Oliedrukkode (die sensor wissel die weerstand daarvan op grond van die druk wat hy waarneem, sodat 'n spanningsverdeler nodig is om dit in 'n spanning van 0-5v te verander, sien: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito …… (onderaan) vir meer inligting):

int getOilPSI () {float psival = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); psival = -0.0601*psival + 177.04 - 14.5; terug psival; }

Webbediener en AP -funksionaliteit: AP -funksies is redelik eenvoudig - instansieer en maak AP -voorwerp met die ESSID wat u wil uitsaai en die wagwoord, en u is klaar.

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

WiFi.softAP (ssid, wagwoord);

Dit het selfs ‘n DHCP -bediener, sodat u nie daaroor hoef te bekommer nie. Standaard is die IP 192.168.1.4 (geen idee hoekom nie, dit is net wat die gekies het). Die webbediener -bietjie is 'n bietjie moeiliker en het 'n bietjie navorsing vereis. Eintlik wil u 'n asynchroniseerde webserver hê sodat dit lewendige opdateringsdata kan kry. Gelukkig is daar 'n biblioteek daarvoor. Ek is nie 'n javascript -ontwikkelaar nie, so ek het met 'n klomp kaart- en grafiese biblioteke gepeuter totdat ek op smoothie -kaarte gestruikel het. Die meeste ander kaartbiblioteke is so geskryf dat hulle allerhande kode erf van ander biblioteke van regoor die internet wat dinamies gelaai word wanneer 'n bladsy weergegee word. Ek wou hê dit moet onafhanklik van die internet werk, so dit was 'n groot vonds. Tweedens moes dit klein genoeg wees om op 'n arduino te pas, en soos u in die kode kan sien, pas dit in 'n enkele karreeks.

Webserververklarings: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // instansieer dit en kies poort (80 is standaard vir http) … server.on ("/", HTTP_GET, (AsyncWebServerRequest *versoek) {request-> send (200, "text/html", "… // die webblad + die smoothiecharts -biblioteek in 'n groot karreeks}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *versoek) {// die eerste bladsy noem eintlik hierdie baie klein bladsy wat net die waardeversoek terugstuur -> stuur (200, "text/html", Sboost);}); server.begin ();

Stap 2: Hardeware en bedrading

Hardeware en bedrading
Hardeware en bedrading
Hardeware en bedrading
Hardeware en bedrading
Hardeware en bedrading
Hardeware en bedrading

Op die foto is die twee sensors wat ek gebruik. Die groot goudkleurige een is 'n Autometer 2242 oliedruksensor. Die liggaam en draad van hierdie sensor word gemaal en die terminaal is die meting in weerstand.

'N Autometer bied 'n kromme van weerstand teen druk of weerstand teen temperatuur vir enige van hul sensors. Ek het dit met 'n spanningsverdeler in spanning omgeskakel (sien bedradingsdiagram).

Die MPX4250AP lugdruksensor het drie lewendige penne en verskeie ongebruikte penne. Hulle is V in, grond en sensor uitset. Dit lewer 'n 0-5v-lesing af wat deur die mikrobeheerder gelees kan word (of in die geval van hierdie mcu 0-3 volt. Die sensorlesing word dus afgeskaal met 'n spanningsverdeler.). Die spesifikasieblad daarvoor kan u hier vind:

Daar is verskeie probleme om af te skaal van 5v na 3v logika. In my geval het ek die spanningsverdeler vir eenvoud gebruik en ek het die onderdele om my werkbank. U sal 'n bietjie fout in die lesings invoer, gebaseer op die moontlike fout van die bykomende komponente (die twee weerstande). Dit kan u lesings in sommige gevalle 10% afslag gee. Ek kan hiermee saamleef. As u dit nie kan nie, kan u 'n opamp en weerstande of 'n logiese vlakomskakelaar gebruik (beskikbaar by verskillende elektroniese verskaffers. Sparkfun het een hier: https://www.sparkfun.com/products/12009. Ek kry soms 'n hoë lesing op hierdie meter (eintlik het ek hierdie produk op my bedradingsdiagram getoon).

Ek het die ESP32 via USB aangedryf. Dit sluit die aansluiting van 'n direkte laaier soos hierdie in: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… na die motor en gebruik dan 'n USB -hub om dit uit te deel. U kan sien dat ek usb -kabels met 'n regte hoek gebruik het om te verseker dat alles in 'n klein gebied werk (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Ander foto's wys plekke waar ek gate gesny het of draad gemaak het. Elke motor sal anders wees. Wees versigtig, messe en skêr is skerp; elektrisiteit kan gevaarlik wees, so ontkoppel die battery voordat u die kabel aansluit.

Stap 3: Behuising met 3D -drukwerk

3D -gedrukte behuising
3D -gedrukte behuising

Ek het hiervoor verskeie 3D -gedrukte omhulsels gebruik.

  • 'N Generiese groot 2 -skerm ronde meter. U kan dit sien op hierdie foto's van die eerste bladsy. Ek sit dit langs my horlosie op my dash.
  • 'N Enkele wigstyl wat pas in die klokgebied van 'n subaru impreza (wrx, sti, ens.) Van ongeveer 2008 tot 2014.
  • 'N Tweemaatstuk wat op stuurwielkolomme en ander effens afgeronde oppervlaktes pas:

U is welkom om dit na u behoeftes te kopieer en aan te pas. Nie een van hulle is perfek nie en hulle sal almal 'n bietjie aanpassing benodig.

Enkele aantekeninge:

  • Ek het myne met plastidip klaargemaak; dit is die voorkeur metode van lui.
  • Skuur plastiek maak wel fyn deeltjies wat nie goed is vir jou nie, gebruik 'n geskikte masker.
  • Ek het PETG vir my huisies gebruik. ABS is ook goed. PLA sal kronkel in die warm son op 'n paneelbord.
IoT -uitdaging
IoT -uitdaging
IoT -uitdaging
IoT -uitdaging

Tweede prys in die IoT -uitdaging

Aanbeveel: