Satura rādītājs:

Wifi iespējots OLED ESP32 automašīnu mērītājs: 3 soļi (ar attēliem)
Wifi iespējots OLED ESP32 automašīnu mērītājs: 3 soļi (ar attēliem)

Video: Wifi iespējots OLED ESP32 automašīnu mērītājs: 3 soļi (ar attēliem)

Video: Wifi iespējots OLED ESP32 automašīnu mērītājs: 3 soļi (ar attēliem)
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Novembris
Anonim
Image
Image
Wifi iespējots OLED ESP32 automašīnu mērītājs
Wifi iespējots OLED ESP32 automašīnu mērītājs

Ievads vispirms…

Es būvēju auto mērinstrumentus kā sava veida atkal un atkal hobiju. Divus jaunākus piemērus skatiet vietnēs https://www.instructables.com/id/Remote-Car-Monit… un https://www.instructables.com/id/Remote-Car-Monit…. Man īpaši patīk tie, kas saplūst ar oriģinālajām automašīnas detaļām. Tātad, kāpēc šis ir atšķirīgs un kas mani iedvesmoja to veidot. Atbilde ir divas lietas:

1) ESP32 - Es gribēju izmēģināt jauno kazlēnu bloka mikroshēmā, jo īpaši tāpēc, ka arduino bāzes rīku ķēde tam ir diezgan nobriedusi. Viena no interesantajām lietām, ko nodrošina ESP32, ir IOT ar iebūvētām wifi un Bluetooth iespējām. Kopiena ir uzrakstījusi vairākas bibliotēkas, lai padarītu to nedaudz vienkāršu (tīmekļa serveri, AP, wifi klienti, mDNS utt. Utt.).

2) Lēti OLED ekrāni - 2007. gadā es izveidoju mērierīci, izmantojot TFT, kas sēdēja GD (2004-2007) WRX pulksteņa vietā. TFT ir dažādas garšas. Daži strādā labāk naktī, daži labāk dienā utt. Bet neviens no viņiem nedarbojas visos apstākļos. Es neapzinājos sava ceļa kļūdu, kamēr kāds no maniem mērinstrumentiem nebija noderīgs foruma dalībnieka saulainajā trases dienā. Ievadiet OLED, kas ir lieliski piemērots automobiļu lietojumiem. Naktīs tie nav pārāk spilgti un (vēl svarīgāk) ir redzami lielākajā daļā saules staru.

Tas ir divi pret vienu pamācību, jo es visu uzrakstīju diviem kopējiem automašīnu mērītājiem - eļļas spiedienam un turbo spiedienam. Abi būtībā ir viens un tas pats: mazs formas koeficients ar animētu analogā izskata OLED displeju ar diskrētiem skaitļiem un maksimumu. Abi darbojas arī kā wifi AP un tīmekļa serveri. Kad tiek izveidots savienojums ar tiem, izmantojot datoru vai mobilo tālruni, ir redzama kustīga EKG stila diagramma (šī ir nedaudz novatoriska daļa).

Piegādes

HELTEC ESP32 modulis-iegūstiet wifi variantu

Īpašas eļļas spiediena daļas:

Eļļas spiediena sensors - es izmantoju automter 5222 Eļļas spiediena sensora savienojuma detaļas - tas atšķiras atkarībā no automašīnas un uzstādīšanas vietas. Lūdzu, iepazīstieties ar servisa rokasgrāmatām, forumiem, mehānismiem utt. Un dariet to pareizi, lai nebūtu eļļas noplūdes

Palielinājuma mērītāja īpašās daļas:

  • Gaisa spiediena sensors (tikai tad, ja vēlaties izveidot spiediena mērītāju) -
  • Gaisa šļūtene
  • T veidgabali

Nepieciešamās bibliotēkas, kuras izmantoju:

Smoothiecharts - https://smoothiecharts.org/ Lieliskas un vieglas tiešraides atjaunināšanas diagrammas. Ļoti pielāgojama un nepaļaujas uz atsauci uz js bibliotēku kaut kur citur internetā. Tas ļauj veikt “local-IOT” tipa iestatīšanu, un visa bibliotēka iekļaujas vienā virknē tīmekļa servera paziņojumam kodā!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- dara to, ko saka uz kastes, un dara to labi

ThingPulse OLED grafikas bibliotēka (dažreiz sauc par squix bibliotēku) - https://github.com/ThingPulse/esp8266-oled-ssd130… - ļoti efektīva un vienkārša grafika ESP mikroshēmām. Atļāva man veikt slinku programmēšanu un joprojām iegūt pārliecinošas animācijas.

Instrumenti/dažādi:

lodāmurs - izmanto, lai veiktu garus kabeļu savienojumus sensoriem, uzstādītu virsrakstus uz kuģa, saruktu saraušanās aptinumu utt.

skrūvgriezis/kontaktligzdas/citi automašīnas instrumenti - nepieciešami sensoru uzstādīšanai automašīnā

divpusēja līmlente - lai uzstādītu mērinstrumentus korpusos un uzstādītu korpusu automašīnā (karstā līme un citas lietas var noderēt, bet es dodu priekšroku 3M divpusējai ārējai apdares lentei. Tā labi turas un to var noņemt, nesabojājot lietas.)

šķēres - lentēm un cauruļu griešanai un rāvējslēdzējiem

rāvējslēdzēji - lietu turēšanai kopā, vadu savienošanai zem domuzīmes un motora nodalījumā, sensoru turēšanai vietā utt.

1. darbība: kods vispirms/otrā aparatūra

Kods Pirmkārt/Aparatūra Otrais
Kods Pirmkārt/Aparatūra Otrais
Kods Pirmkārt/Aparatūra Otrais
Kods Pirmkārt/Aparatūra Otrais

Kodu var lejupielādēt šeit:

Eļļas spiediens -

Palieliniet spiedienu -

Palieliniet spiedienu ar sejām, nevis analogā izskata mērītājiem -

Grafikas kods: ThingPulse bibliotēka ir tik ļoti efektīva, ka jūs varat uzzīmēt xbms tieši virs otra un iegūt pārliecinošus rezultātus!

Mērinstrumentu attēli faktiski nāca no atvērtā pirmkoda grafikas krātuves (https://thenounproject.com/). Mākslinieks Iconic, CY (https://thenounproject.com/icon/490005/).

Es izmantoju gimp, lai ģenerētu 20 dažādus rāmjus ar adatu, kas vērsta uz katru atzīmi. Smaidiņu sejas ikonas veido NOVITA ASTRI, ID, un tās ir šeit:

Pēc tam, izmantojot šo paņēmienu, es tos visus pārveidoju par konstanta uint8_t masīviem (mājiens: ja krāsas tiek apgrieztas, kad tās parādāt, vienkārši apgrieziet oriģināla krāsas): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

Tiešraides animācijas kods ir diezgan vienkāršs:

  • Lasiet no sensora
  • Mēroga nolasīšana (pozitīvajām palielinājuma vērtībām es iestatīju 1 līdz 1 un adatu pārvietojiet tikai tad, kad tā ir palielināta, nevis vakuumā)
  • Uzzīmējiet xbm un pēc tam nolieciet ciparu rakstzīmes visam pārējam.
  • noskalojiet un atkārtojiet

Sensora kods: Es atkārtoti izmantoju sensoru kodu, ko esmu izmantojis šiem diviem sensoriem dažiem citiem projektiem. Es pievienoju kādu vidējo, lai izvairītos no lecīgajiem sensoriem. Tas ietver katra "lasījuma" lasīšanu vidēji 5 lasījumos.

Palielināšanas kods (sensors dod analogo vērtību no 0 līdz 5 voltiem, ko ADC pārvērš pakāpēs no 0 līdz 1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); // pludiņš RezultātsPSI = (rboost*(. 00488)/(. 022) +20) /6.89 - atmo; // atstāt no /6.89 kpa pludiņam RezultātsPSI = ((((rboost /4095) + 0.04) /0.004) * 0.145 - atmo; // par 0,145, lai aprēķinātu psi // 4096 vērtības esp32 /*rBoost = rBoost + 1; ja (rBoost> = 20) {rBoost = 0; }*/ atgriezties (ResultPSI); }

Eļļas spiediena kods (sensors maina pretestību atkarībā no tā uztveramā spiediena, tāpēc, lai to pārvērstu spriegumā no 0 līdz 5 V, ir nepieciešams sprieguma dalītājs, skatiet: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito … [uz leju], lai iegūtu vairāk informācijas):

int getOilPSI () {float psival = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); psival = -0,0601*psival + 177,04 - 14,5; atgriešanās psival; }

Tīmekļa servera un AP funkcionalitāte: AP funkcionalitāte ir diezgan vienkārša - parafatējiet un AP objektu ar ESSID, kuru vēlaties pārraidīt, un paroli, un jums ir labi iet.

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

WiFi.softAP (ssid, parole);

Tam pat ir DHCP serveris, tāpēc jums par to nav jāuztraucas. Pēc noklusējuma IP ir 192.168.1.4 (nav ne jausmas, kāpēc, tieši to izvēlējāmies). Tīmekļa servera bits ir nedaudz sarežģītāks un prasīja nelielu izpēti. Būtībā jūs vēlaties asinhronu tīmekļa serveri, lai tas varētu iegūt atjauninātus datus. Par laimi tam ir bibliotēka. Es neesmu javascript izstrādātājs, tāpēc ķēros pie diagrammu un grafiku bibliotēku kopas, līdz paklupa smūtiju diagrammās. Lielākā daļa citu diagrammu bibliotēku ir uzrakstītas tā, ka tās pārmanto visa veida kodus no citām bibliotēkām visā tīmeklī, kas tiek dinamiski ielādētas, atveidojot lapu. Es gribēju, lai tas darbotos neatkarīgi no interneta, tāpēc tas bija liels atradums. Otrkārt, tam bija jābūt pietiekami mazam, lai tas ietilptu arduino, un, kā redzams kodā, tas ietilpst vienā simbolu masīvā.

Tīmekļa servera deklarācijas: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // to parafēt un izvēlēties portu (80 ir standarta standarts http)… server.on ("/", HTTP_GET, (AsyncWebServerRequest *pieprasījums) {request-> send (200, "text/html", "… // tīmekļa lapa + gludo diagrammu bibliotēka milzīgā rakstzīmju masīvā}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *pieprasījums) {// pirmā lapa faktiski izsauc šo ļoti mazo lapu, kas tikai atgriež vērtības pieprasījumu -> sūtīt (200, "text/html", Sboost);}); server.begin ();

2. solis: Aparatūra un elektroinstalācija

Aparatūra un elektroinstalācija
Aparatūra un elektroinstalācija
Aparatūra un elektroinstalācija
Aparatūra un elektroinstalācija
Aparatūra un elektroinstalācija
Aparatūra un elektroinstalācija

Galerijā attēloti divi manis izmantotie sensori. Lielais zelta krāsā ir eļļas spiediena sensors Autometer 2242. Šī sensora korpuss un vītne ir noslīpēti, un terminālis ir pretestības rādījums.

Autometrs jebkuram sensoram nodrošinās spiediena vai temperatūras izturības līkni. Esmu to pārveidojis par spriegumu, izmantojot sprieguma dalītāju (skatiet elektroinstalācijas shēmu).

MPX4250AP gaisa spiediena sensoram ir trīs sprieguma tapas un vairākas neizmantotas tapas. Tie ir V ieeja, zeme un sensora izeja. Tas izvada 0-5v rādījumu, ko var nolasīt mikrokontrolleris (vai šajā gadījumā mcu 0-3 volti. Tātad, sensora rādījums tiek samazināts, izmantojot sprieguma dalītāju.). Specifikācijas lapu var atrast šeit:

Ir vairāki jautājumi, samazinot loģiku no 5 V līdz 3 V. Manā gadījumā vienkāršības labad es izmantoju sprieguma dalītāju, un man bija daļas ap manu darbagaldu. Jūs ievadīsit nedaudz kļūdu rādījumos, pamatojoties uz iespējamo papildu komponentu (divu rezistoru) kļūdu. Tas dažos gadījumos var padarīt jūsu rādījumus par 10% atlaidi. Es varu dzīvot ar šo. Ja nevarat, iespējams, vēlēsities izmantot opamp un rezistorus vai loģikas līmeņa pārveidotāju (pieejams no dažādiem elektronikas piegādātājiem. Sparkfun ir tāds šeit: https://www.sparkfun.com/products/12009 Es varu pāriet uz to kā Dažreiz šajā mērierīcē tiek rādīti augsti rādījumi (patiesībā šo produktu esmu parādījis savā elektroinstalācijas shēmā).

Es baroju ESP32, izmantojot USB. Tas ietvēra tāda tiešā lādētāja pievienošanu šim: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… automašīnai un pēc tam, izmantojot USB centrmezglu, lai to sadalītu. Jūs varat redzēt, ka es izmantoju taisna leņķa USB kabeļus, lai viss darbotos nelielā vietā (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Citās fotogrāfijās redzamas vietas, kur es izgriezu caurumus vai vadīju vadu. Katra automašīna būs atšķirīga. Esiet piesardzīgs, naži un šķēres ir asas, elektrība var būt bīstama, tāpēc, lūdzu, atvienojiet akumulatoru pirms elektroinstalācijas.

3. solis: 3D drukāts korpuss

3D drukāts korpuss
3D drukāts korpuss

Šim nolūkam esmu izmantojis vairākus 3D drukātus korpusus.

  • Vispārējs liels 2 ekrānu apaļš mērinstruments. To var redzēt šīs pirmās lapas attēlos. Es noliku to blakus pulkstenim uz domuzīmes.
  • Viena gabarīta ķīļveida stils, kas iekļaujas Subaru Impreza (wrx, sti utt.) Pulksteņa zonā no aptuveni 2008. līdz 2014. gadam.
  • Divkāršs gabarīts, kas piemērots stūres rata kolonnām un citām nedaudz noapaļotām virsmām:

Jūs esat laipni aicināti tos kopēt un pārveidot atbilstoši savām vajadzībām. Neviens no tiem nav ideāls, un tiem visiem būs nepieciešama neliela pielāgošana.

Dažas piezīmes:

  • Savējo pabeidzu ar plastidipu; tā ir vēlamā slinkošanas metode.
  • Plastmasas slīpēšana rada smalkas daļiņas, kas jums neder, izmantojiet atbilstošu masku.
  • Saviem korpusiem es izmantoju PETG. ABS ir arī labs. PLA deformēsies karstā saulē uz paneļa.
IoT izaicinājums
IoT izaicinājums
IoT izaicinājums
IoT izaicinājums

Otrā balva IoT izaicinājumā

Ieteicams: