Turinys:

„Wi -Fi“įgalintas OLED ESP32 automobilių matuoklis: 3 žingsniai (su nuotraukomis)
„Wi -Fi“įgalintas OLED ESP32 automobilių matuoklis: 3 žingsniai (su nuotraukomis)

Video: „Wi -Fi“įgalintas OLED ESP32 automobilių matuoklis: 3 žingsniai (su nuotraukomis)

Video: „Wi -Fi“įgalintas OLED ESP32 automobilių matuoklis: 3 žingsniai (su nuotraukomis)
Video: Bulletproofing IT: Secured-core Technology in Windows 11 and Server 2022. 2024, Lapkritis
Anonim
Image
Image
„Wi -Fi“įgalintas OLED ESP32 automobilių matuoklis
„Wi -Fi“įgalintas OLED ESP32 automobilių matuoklis

Pirmiausia įvadas…

Aš gaminu automobilių matuoklius kaip įjungimo ir vėl išjungimo pomėgį. Dar du pavyzdžius rasite https://www.instructables.com/id/Remote-Car-Monit… ir https://www.instructables.com/id/Remote-Car-Monit…. Man ypač patinka tie, kurie dera su originaliomis automobilio dalimis. Taigi, kodėl šis yra kitoks ir kas mane įkvėpė jį kurti. Atsakymas yra du dalykai:

1) ESP32 - norėjau išbandyti naują vaiką bloko mikroschemoje, ypač todėl, kad arduino pagrindu sukurta įrankių grandinė yra gana subrendusi. Vienas iš įdomių dalykų, kurį įgalina ESP32, yra IOT su integruotomis „Wi -Fi“ir „Bluetooth“galimybėmis. Bendruomenė parašė kelias bibliotekas, kad tai būtų šiek tiek paprasta (žiniatinklio serveriai, AP, „Wi -Fi“klientai, mDNS ir kt. Ir tt).

2) Pigūs OLED ekranai - dar 2007 m. Aš padariau matuoklį, naudodamas TFT, kuris sėdėjo GD (2004-2007) WRX laikrodžio vietoje. TFT yra įvairių skonių. Kai kurie dirba geriau naktį, kai kurie - dieną ir pan. Tačiau nė vienas iš jų neveikia visomis sąlygomis. Aš nesupratau savo klaidų, kol vienas iš mano naudojamų matuoklių buvo nenaudingas forumo nario saulėtos trasos dienos metu. Įveskite OLED, kurie puikiai tinka automobilių reikmėms. Naktį jie nėra pernelyg ryškūs ir (dar svarbiau) yra matomi daugelyje saulės spindulių.

Tai du du vienai pamoka, nes viską parašiau dviem įprastiems automobilio matuokliams - alyvos slėgiui ir turbo slėgiui. Abu iš esmės yra tas pats dalykas: mažas formos koeficientas su animaciniu analoginės išvaizdos OLED ekranu, kuriame rodomi atskiri skaičiai ir maksimumai. Abu jie taip pat veikia kaip „wifi AP“ir žiniatinklio serveriai. Kai prie jų prisijungiama per kompiuterį ar mobilųjį telefoną, matoma judanti EKG stiliaus diagrama (tai šiek tiek novatoriška dalis).

Prekės

HELTEC ESP32 modulis-įsigykite „Wi-Fi“variantą

Specialios alyvos slėgio dalys:

Alyvos slėgio jutiklis - naudojau „5222“alyvos slėgio jutiklio prijungimo dalis - tai priklauso nuo automobilio ir montavimo vietos. Prašome perskaityti techninės priežiūros vadovus, forumus, technikos ir kt. Ir tai padaryti teisingai, kad nebūtų alyvos nuotėkio

Konkrečios padidinimo matuoklio dalys:

  • Oro slėgio jutiklis (tik jei norite atlikti padidinimo matuoklį) -
  • Oro žarna
  • T jungiamosios detalės

Mano naudojamos bibliotekos buvo būtinos:

„Smoothiecharts“- https://smoothiecharts.org/ Puikios ir lengvos tiesioginio atnaujinimo diagramos. Labai pritaikoma ir nesiremia nuoroda į js biblioteką kitur internete. Tai leidžia atlikti „local-IOT“tipo sąranką ir visa biblioteka telpa į vieną eilutę žiniatinklio serverio teiginyje kodu!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- daro tai, ką sako ant dėžutės, ir tai daro gerai

„ThingPulse OLED“grafikos biblioteka (kartais vadinama „squix“biblioteka) - https://github.com/ThingPulse/esp8266-oled-ssd130… - labai efektyvi ir paprasta ESP mikroschemų grafika. Leido man programuoti tingiai ir vis tiek gauti įtikinamų animacijų.

Įrankiai/įvairūs:

lituoklis - naudojamas ilgiems jutiklių kabeliams nutiesti, ant laivo sumontuoti antraštes, susitraukti susitraukiančią plėvelę ir kt.

atsuktuvas/kištukiniai lizdai/kiti automobilio įrankiai - būtini jutikliams įmontuoti į automobilį

dvipusė juosta - matuoklių montavimui į korpusus ir korpuso įrengimui automobilyje (gali būti naudojami karšti klijai ir kiti dalykai, bet man labiau patinka 3M dvipusė išorinė apdailos juosta. Ji gerai laikosi ir gali būti ištraukta nepažeidžiant daiktų.)

žirklės - juostoms ir vamzdžių bei užtrauktukų pjovimui

užtrauktukai - daiktų laikymui kartu, laidų sujungimui po brūkšniu ir variklio skyriuje, jutiklių laikymui vietoje ir kt.

1 žingsnis: pirmasis kodas/antra aparatinė įranga

Pirmas kodas/antra aparatinė įranga
Pirmas kodas/antra aparatinė įranga
Pirmas kodas/antra aparatinė įranga
Pirmas kodas/antra aparatinė įranga

Kodą galima atsisiųsti čia:

Alyvos slėgis -

Padidinkite slėgį -

Padidinkite slėgį naudodami veidus, o ne analoginius išvaizdos matuoklius -

Grafikos kodas: „ThingPulse“biblioteka yra tokia efektyvi, kad galite piešti xbms tiesiai viena ant kitos ir gauti įtikinamų rezultatų!

Matavimo vaizdai iš tikrųjų buvo gauti iš atvirojo kodo grafikos saugyklos (https://thenounproject.com/). Menininkas Iconic, CY (https://thenounproject.com/icon/490005/).

Naudojau „gimp“, kad sugeneruočiau 20 skirtingų rėmelių su adata, nukreipta į kiekvieną varnelės ženklą. Šypsenėlės veido piktogramas sukūrė NOVITA ASTRI, ID ir yra čia:

Tada aš visa tai konvertavau į „Const uint8_t“masyvus, naudodamas šią techniką (užuomina: jei spalvos yra apverstos, kai jas rodote, tiesiog apverskite originalo spalvas): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

Tiesioginės animacijos kodas yra gana paprastas:

  • Gaukite skaitymą iš jutiklio
  • Skalės rodmenys (teigiamoms padidinimo vertėms padariau 1: 1 ir adatą judinkite tik tada, kai ji yra padidinta, o ne vakuume)
  • Nubrėžkite xbm ir tada įdėkite skaičių simbolius viskam kitam.
  • nuplaukite ir pakartokite

Jutiklio kodas: aš dar kartą naudoju jutiklio kodą, kurį naudojau šiems dviem jutikliams keliems kitiems projektams. Aš pridėjau šiek tiek vidurkio, kad išvengčiau šokinančių jutiklių. Tai reiškia, kad kiekvienas „skaitymas“yra vidutiniškai 5 skaitymai.

Padidinimo kodas (jutiklis suteikia analoginę vertę nuo 0 iki 5 voltų, kurią ADC paverčia žingsniais nuo 0 iki 1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); // float ResultPSI = (rboost*(. 00488)/(. 022) +20)/6.89 - atmo; // paliekant /6.89 kpa plūdei ResultPSI = ((((rboost /4095) + 0.04) /0.004) * 0.145 - atmo; // iki 0,145 apskaičiuoti psi // 4096 reikšmės esp32 /*rBoost = rBoost + 1; jei (rBoost> = 20) {rBoost = 0; }*/ return (ResultPSI); }

Alyvos slėgio kodas (jutiklis keičia savo pasipriešinimą, atsižvelgdamas į jaučiamą slėgį, todėl norint pakeisti įtampą nuo 0 iki 5 V, reikalingas įtampos skirstytuvas, žr.: Https://electronics.stackexchange.com/questions/3… /www.instructables.com/id/Remote-Car-Monito … [į apačią], jei norite gauti daugiau informacijos):

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

Žiniatinklio serverio ir prieigos taško funkcijos: AP funkcijos yra gana paprastos - sugeneruokite ir AP objektą su ESSID, kurį norite transliuoti, ir slaptažodžiu, ir viskas gerai.

const char *ssid = "boost_gauge_ap"; const char *slaptažodis = "slaptažodis";

WiFi.softAP (ssid, slaptažodis);

Jis netgi turi DHCP serverį, todėl jums nereikia dėl to jaudintis. Pagal numatytuosius nustatymus tai IP yra 192.168.1.4 (neįsivaizduoju kodėl, būtent tai ir pasirinkome). Tinklalapio serverio dalis yra šiek tiek sudėtingesnė ir reikalauja šiek tiek tyrimų. Iš esmės norite asinchroninio žiniatinklio serverio, kad jis galėtų tiesiogiai atnaujinti duomenis. Laimei, tam yra biblioteka. Nesu „JavaScript“kūrėjas, todėl galvojau apie daugybę diagramų ir grafikų bibliotekų, kol suradau kokteilių diagramas. Dauguma kitų diagramų sudarymo bibliotekų yra parašytos taip, kad paveldi visų rūšių kodus iš kitų bibliotekų iš viso žiniatinklio, kurios dinamiškai įkeliamos, kai pateikiamas puslapis. Norėjau, kad tai veiktų nepriklausomai nuo interneto, todėl tai buvo didelis atradimas. Antra, jis turėjo būti pakankamai mažas, kad tilptų ant arduino ir, kaip matote kode, telpa į vieną simbolių masyvą.

Tinklalapio serverio deklaracijos: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // sugeneruoti ir pasirinkti prievadą (80 yra standartinis http)… server.on ("/", HTTP_GET, (AsyncWebServerRequest *užklausa) {request-> send (200, "text/html", "… // tinklalapis + „smoothiecharts“biblioteka didžiuliame simbolių masyve}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *užklausa) {// pirmasis puslapis iš tikrųjų vadina šį labai mažą puslapį, kuris tik grąžina vertės užklausą -> siųsti (200, "text/html", Sboost);}); server.begin ();

2 žingsnis: Aparatūra ir laidai

Techninė įranga ir laidai
Techninė įranga ir laidai
Techninė įranga ir laidai
Techninė įranga ir laidai
Techninė įranga ir laidai
Techninė įranga ir laidai

Galerijoje pavaizduoti du mano naudojami jutikliai. Didelis aukso spalvos yra „Autometer 2242“alyvos slėgio jutiklis. Šio jutiklio korpusas ir sriegis yra įžeminti, o gnybtas yra varžos rodmuo.

Autometras suteiks jums bet kurio jutiklio atsparumo slėgiui ar atsparumo temperatūrai kreivę. Aš tai konvertavau į įtampą, naudodamas įtampos skirstytuvą (žr. Laidų schemą).

MPX4250AP oro slėgio jutiklis turi tris įtemptus kaiščius ir kelis nenaudojamus kaiščius. Jie yra V įėjimas, įžeminimas ir jutiklio išėjimas. Jis išleidžia 0-5v rodmenį, kurį gali nuskaityti mikrovaldiklis (arba šio mcu atveju-0-3 voltai. Taigi, jutiklio rodmenys sumažinami naudojant įtampos daliklį.). Jo specifikacijų lapą rasite čia:

Sumažinus nuo 5 V iki 3 V logikos, kyla keletas problemų. Mano atveju paprastumui naudoti įtampos skirstytuvą, o dalys buvo aplink mano darbastalį. Jūs įvesite šiek tiek klaidų į rodmenis, atsižvelgdami į galimą papildomų komponentų (dviejų rezistorių) klaidą. Kai kuriais atvejais jūsų rodmenys gali būti 10% nuolaida. Aš galiu su tuo gyventi. Jei negalite, galbūt norėsite naudoti opampą ir rezistorius arba loginio lygio keitiklį (galima įsigyti iš įvairių elektronikos pardavėjų. „Sparkfun“tokį turi čia: https://www.sparkfun.com/products/12009 Galiu pereiti prie jo kaip Šiuo matuokliu kartais gaunu aukštus rodmenis (iš tikrųjų aš parodžiau šį gaminį savo laidų schemoje).

Aš maitinau ESP32 per USB. Tai apima tiesioginio įkroviklio prijungimą, kaip šis: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… prie automobilio, o tada jį naudojant padalinti naudojant USB šakotuvą. Matote, kad aš naudoju stačiakampius USB kabelius, kad viskas veiktų nedideliame plote (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Kitos nuotraukos rodo vietas, kuriose aš pjaustau skyles ar vedžiau vielą. Kiekvienas automobilis bus kitoks. Būkite atsargūs, peiliai ir žirklės yra aštrūs, elektros srovė gali būti pavojinga, todėl prieš prijungdami daiktus, atjunkite akumuliatorių.

3 žingsnis: 3D spausdintas korpusas

3D spausdintas korpusas
3D spausdintas korpusas

Tam naudoju keletą 3D spausdintų korpusų.

  • Bendras didelis 2 ekranų apvalus matuoklis. Tai galite pamatyti šioje pirmojo puslapio nuotraukose. Padėjau jį šalia laikrodžio ant brūkšnio.
  • Vieno matuoklio pleišto stilius, kuris tinka maždaug 2008–2014 m. „Subaru Impreza“(wrx, sti ir kt.) Laikrodžio srityje.
  • Dvigubo skersmens gabalas, kuris tinka ant vairo kolonų ir kitų šiek tiek suapvalintų paviršių:

Kviečiame nukopijuoti ir pakeisti juos pagal savo poreikius. Nė vienas iš jų nėra tobulas, ir juos visus reikės šiek tiek pakoreguoti.

Kai kurios pastabos:

  • Aš baigiau savo plastidip; tai yra tinkamiausias tinginių metodas.
  • Šlifuojant plastiką susidaro smulkių dalelių, kurios jums netinka, naudokite tinkamą kaukę.
  • Savo korpusams naudojau PETG. ABS taip pat gerai. PLA deformuojasi karštoje saulėje prietaisų skydelyje.
IoT iššūkis
IoT iššūkis
IoT iššūkis
IoT iššūkis

Antrasis prizas „IoT Challenge“

Rekomenduojamas: