Cuprins:

Wifi activat OLED ESP32 Indicatoare auto: 3 pași (cu imagini)
Wifi activat OLED ESP32 Indicatoare auto: 3 pași (cu imagini)

Video: Wifi activat OLED ESP32 Indicatoare auto: 3 pași (cu imagini)

Video: Wifi activat OLED ESP32 Indicatoare auto: 3 pași (cu imagini)
Video: How to add WiFi Control to any project || ESP32 Beginner's Guide 2024, Decembrie
Anonim
Image
Image
Wifi activat OLED ESP32 Indicatoare auto
Wifi activat OLED ESP32 Indicatoare auto

Introduceri mai întâi …

Construiesc indicatoare auto ca un fel de hobby din nou și din nou. Consultați https://www.instructables.com/id/Remote-Car-Monit… și https://www.instructables.com/id/Remote-Car-Monit… pentru două exemple mai recente. Îmi plac în special cele care se amestecă cu piesele originale ale mașinii. Deci, de ce este acesta diferit și ce m-a inspirat să-l construiesc. Răspunsul este două lucruri:

1) ESP32 - Am vrut să încerc noul copil pe cipul bloc, mai ales că lanțul de instrumente bazat pe arduino pentru acesta este destul de matur. Unul dintre lucrurile interesante pe care ESP32 le permite este IOT, cu capacitățile sale integrate wifi și bluetooth. Comunitatea a scris mai multe biblioteci pentru a face acest lucru oarecum simplu (servere web, AP-uri, clienți wifi, mDNS etc.).

2) Ecrane OLED ieftine - În 2007 am făcut un indicator folosind un TFT care stătea în locul ceasului pe un GD (2004-2007) WRX. TFT-ul vine în diferite arome. Unii funcționează mai bine noaptea, alții lucrează mai bine ziua, etc. Dar niciunul nu funcționează în toate condițiile. Nu mi-am dat seama de eroarea căilor mele până când unul dintre indicatoarele pe care le-am folosit a fost inutil în timpul zilei însorite a unui membru al forumului. Introduceți OLED, care sunt minunate pentru aplicațiile auto. Nu sunt prea strălucitoare noaptea și (mai important) sunt vizibile în majoritatea condițiilor de soare.

Acesta este un dosar pentru unul instructiv, deoarece am scris totul pentru două manometre comune, presiunea uleiului și presiunea turbo. Ambele sunt în esență același lucru: un mic indicator de factor de formă cu un afișaj OLED cu aspect analogic animat, cu numere discrete și maxime afișate. Ambele funcționează și ca puncte de acces WiFi și servere web. Când cineva se conectează la ei prin intermediul unui computer sau telefon mobil, este vizibilă o diagramă de tip EKG în mișcare (aceasta este partea oarecum inovatoare).

Provizii

Modulul HELTEC ESP32 - obțineți varianta wifi

Piese specifice presiunii uleiului:

Senzor de presiune ulei - Am folosit un automator 5222 piese de conectare a senzorului de presiune ulei - acesta variază în funcție de mașină și de locația instalării. Vă rugăm să consultați manualele de service, forumurile, tehnica etc. și faceți acest lucru corect pentru a nu exista scurgeri de ulei

Piese specifice ecartamentului de amplificare:

  • Senzor de presiune a aerului (numai dacă doriți să faceți un manometru de impuls) -
  • Furtun de aer
  • Fitinguri T

Bibliotecile pe care le-am folosit, care erau indispensabile:

Smoothiecharts - https://smoothiecharts.org/ Diagramele de actualizare live excelente și ușoare. Foarte personalizabil și nu se bazează pe trimiterea la o bibliotecă js în altă parte pe internet. Acest lucru permite o configurare de tip „local-IOT” și întreaga bibliotecă se potrivește într-un singur șir pentru declarația serverului web în cod!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- face ceea ce spune pe cutie și o face bine

Biblioteca grafică OLED ThingPulse (uneori numită biblioteca squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - grafică foarte eficientă și simplă pentru cipurile ESP. Mi-a permis să fac niște programe leneșe și să primesc în continuare animații convingătoare.

Instrumente / misc:

fier de lipit - folosit pentru realizarea de cabluri lungi pentru senzori, instalarea anteturilor la bord, folie termocontractabilă etc.

șurubelniță / prize / alte unelte auto - necesare pentru instalarea senzorilor pe mașină

bandă dublă - pentru a instala manometre în carcase și a instala carcase în mașină (lipiciul fierbinte și alte lucruri ar putea funcționa, dar prefer banda adezivă exterioară dublă 3M. Se ține bine și poate fi scoasă fără a deteriora lucrurile.)

foarfece - pentru bandă și tăierea tuburilor și a cravatelor cu fermoar

cravate cu fermoar - pentru a ține lucrurile împreună, a lega fire sub bord și în compartimentul motorului, a ține senzorii în poziție etc.

Pasul 1: Code First / Hardware Second

Code First / Hardware Second
Code First / Hardware Second
Code First / Hardware Second
Code First / Hardware Second

Codul poate fi descărcat de aici:

Presiunea uleiului -

Boost Pressure -

Sporiți presiunea cu fețe în loc de indicatoare analogice -

Cod grafic: Biblioteca ThingPulse este atât de eficientă încât puteți desena xbms unul peste altul și puteți obține rezultate convingătoare!

Imaginile gabaritului au venit de fapt dintr-un depozit grafic open source (https://thenounproject.com/). Artistul Iconic, CY (https://thenounproject.com/icon/490005/).

Am folosit gimp pentru a genera 20 de cadre diferite cu acul îndreptat către fiecare bifă. Icoanele cu fața zâmbitoare sunt de NOVITA ASTRI, ID și sunt aici:

Apoi le-am convertit pe toate în tablouri const uint8_t folosind această tehnică (indiciu: dacă culorile sunt inversate când le afișați, inversați doar culorile din original): https://blog.squix.org/2015/05/esp8266- nodemcu-ho …

Codul de animație live este destul de simplu:

  • Citiți de la senzor
  • Citirea la scară (am făcut 1 la 1 pentru valori pozitive de creștere și mișcați acul numai când este în creștere, nu când este în vid)
  • Desenați xbm și apoi puneți caractere numerice pentru orice altceva.
  • clătiți și repetați

Cod senzor: reutilizez codul senzorului pe care l-am folosit pentru acești doi senzori pentru alte câteva proiecte. Am adăugat o medie pentru a scăpa de senzorii săritori. Aceasta include citirea fiecărei „lecturi” fiind o medie de 5 citiri.

Cod de impuls (senzorul oferă o valoare analogică de la 0-5 volți pe care ADC o transformă în pași de la 0-1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36)) / 5); // float Rezultat PSI = (rboost * (. 00488) / (. 022) +20) /6.89 - atmo; // plecarea din /6,89 pentru kpa float Rezultat PSI = (((rboost / 4095) + 0,04) / 0,004) * 0,115 - atmo; // cu 0.145 până la calc psi // 4096 valori pe esp32 / * rBoost = rBoost + 1; if (rBoost> = 20) {rBoost = 0; } * / return (ResultPSI); }

Codul presiunii uleiului (senzorul își variază rezistența în funcție de presiunea pe care o simte, astfel încât este necesar un divizor de tensiune pentru a transforma aceasta într-o tensiune de la 0-5v a se vedea: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito… (spre partea de jos) pentru mai multe informații):

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

Funcționalitate Server Web și AP: funcționalitatea AP este destul de simplă - creați instantanee și faceți obiectul AP cu ESSID pe care doriți să îl difuzați și parola și sunteți bine să mergeți.

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

WiFi.softAP (ssid, parolă);

Are chiar și un server DHCP, deci nu trebuie să vă faceți griji cu privire la asta. În mod implicit, IP-ul este 192.168.1.4 (nici o idee de ce, tocmai asta ați ales). Bitul serverului web este puțin mai complicat și a necesitat un pic de cercetare. Practic doriți un server web asincron, astfel încât să poată obține date de actualizare live. Din fericire există o bibliotecă pentru asta. Nu sunt un dezvoltator javascript, așa că am jucat cu o grămadă de biblioteci de diagrame și grafice până când am dat peste diagrame de smoothie. Majoritatea celorlalte biblioteci de grafice sunt scrise astfel încât să moștenească toate tipurile de cod de la alte biblioteci de pe web care sunt încărcate dinamic atunci când o pagină este redată. Am vrut ca acest lucru să funcționeze independent de internet, așa că a fost o descoperire importantă. În al doilea rând, trebuia să fie suficient de mic încât să se potrivească pe un arduino și, după cum puteți vedea în cod, se potrivește într-o singură matrice de caractere.

Declarații server web: #include AsyncTCP.h #include ESPAsyncWebServer.h … Server AsyncWebServer (80); // instanțați-l și alegeți portul (80 este standard pentru http) … server.on ("/", HTTP_GET, (cerere AsyncWebServerRequest *) {request-> send (200, "text / html", "… // pagina web + biblioteca smoothiecharts dintr-o imensă matrice de caractere}); server.on ("/ val", HTTP_GET, (cerere AsyncWebServerRequest *) {// prima pagină apelează de fapt această pagină foarte mică care returnează doar cererea de valoare -> send (200, "text / html", Sboost);}); server.begin ();

Pasul 2: Hardware și cablare

Hardware și cablare
Hardware și cablare
Hardware și cablare
Hardware și cablare
Hardware și cablare
Hardware și cablare

În galerie sunt prezentați cei doi senzori pe care îi folosesc. Cel mare de culoare aurie este un senzor de presiune a uleiului Autometer 2242. Corpul și firul acestui senzor sunt împământate, iar terminalul este citirea în rezistență.

Autometrul vă va oferi o curbă de rezistență la presiune sau rezistență la temperatură pentru oricare dintre senzorii lor. Am transformat acest lucru în tensiune folosind un divizor de tensiune (a se vedea schema de cablare).

Senzorul de presiune a aerului MPX4250AP are trei pini sub tensiune și mai mulți pini neutilizați. Acestea sunt intrare V, masă și senzor. Se afișează o citire 0-5v care poate fi citită de microcontroler (sau în cazul acestui mcu 0-3 volți. Deci, citirea senzorului este redusă cu ajutorul unui divizor de tensiune.). Foaia de specificații pentru acesta poate fi găsită aici:

Există mai multe probleme în ceea ce privește reducerea logicii de la 5v la 3v. În cazul meu, am folosit divizorul de tensiune pentru simplitate și aveam piesele din jurul bancului meu de lucru. Veți introduce un pic de eroare în citiri pe baza posibilei erori a componentelor suplimentare (cele două rezistențe). Acest lucru ar putea reduce citirile cu 10% în unele cazuri. Pot trăi cu asta. Dacă nu puteți, vă recomandăm să utilizați un opamp și rezistențe sau un convertor de nivel logic (disponibil de la diferiți furnizori de electronice. Sparkfun are unul aici: https://www.sparkfun.com/products/12009 Aș putea trece la acesta ca Uneori am citiri mari pe acest indicator (de fapt, am arătat acest produs pe schema de cabluri).

Am alimentat ESP32-urile prin USB. Aceasta a inclus cablarea unui încărcător direct ca acesta: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… la mașină și apoi utilizarea unui hub USB pentru a-l împărți. Puteți vedea că am folosit cabluri USB cu unghi drept pentru a vă asigura că totul funcționează într-o zonă mică (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Alte fotografii arată locuri în care am tăiat găuri sau am făcut sârmă. Fiecare mașină va fi diferită. Aveți grijă, cuțitele și foarfecele sunt ascuțite, electricitatea poate fi periculoasă, deci deconectați bateria înainte de a conecta lucrurile.

Pasul 3: Carcasă imprimată 3D

Carcasă imprimată 3D
Carcasă imprimată 3D

Pentru aceasta am folosit mai multe carcase imprimate 3D.

  • Un ecartament generic rotund cu 2 ecrane. Puteți vedea acest lucru pe imaginile din prima pagină. Am pus-o lângă ceas pe bord.
  • Un stil de pană cu un singur ecartament care se potrivește în zona de ceas a unui subaru impreza (wrx, sti etc.) din aprox. 2008 până în 2014.
  • O piesă cu ecartament dublu care se potrivește pe coloanele volanului și pe alte suprafețe ușor rotunjite:

Sunteți binevenit să le copiați și să le modificați pentru a se potrivi nevoilor dvs. Niciunul dintre ei nu este perfect și toate vor necesita un pic de ajustare.

Câteva note:

  • Am terminat-o pe a mea cu plastidip; este metoda preferată a leneșilor.
  • Șlefuirea materialelor plastice produce particule fine care nu sunt bune pentru dvs., utilizați o mască adecvată.
  • Am folosit PETG pentru carcasele mele. ABS este, de asemenea, bun. PLA se va deforma în soarele fierbinte pe un tablou de bord.
Provocarea IoT
Provocarea IoT
Provocarea IoT
Provocarea IoT

Premiul II la IoT Challenge

Recomandat: