Съдържание:

OLED ESP32 автомобилни измерватели с активиран Wi -Fi: 3 стъпки (със снимки)
OLED ESP32 автомобилни измерватели с активиран Wi -Fi: 3 стъпки (със снимки)

Видео: OLED ESP32 автомобилни измерватели с активиран Wi -Fi: 3 стъпки (със снимки)

Видео: OLED ESP32 автомобилни измерватели с активиран Wi -Fi: 3 стъпки (със снимки)
Видео: НЕ ПОГОДНАЯ СТАНЦИЯ 5в1 за ВЕЧЕР. 2024, Ноември
Anonim
Image
Image
OLED ESP32 автомобилни уреди с активиран Wi -Fi
OLED ESP32 автомобилни уреди с активиран Wi -Fi

Въведение първо…

Изграждам габарити за автомобили като нещо като отново и отново хоби. Вижте https://www.instructables.com/id/Remote-Car-Monit… и https://www.instructables.com/id/Remote-Car-Monit… за два по-нови примера. Особено харесвам такива, които се сливат с оригиналните части на колата. И така, защо този е различен и какво ме вдъхнови да го изградя. Отговорът е две неща:

1) ESP32 - Исках да изпробвам новото дете на блоковия чип, особено след като ардуино -базираната верига от инструменти за него е доста зряла. Едно от интересните неща, които ESP32 позволява, е IOT с вградените си wifi и bluetooth възможности. Общността е написала множество библиотеки, за да направи това донякъде просто (уеб сървъри, точки за достъп, wifi клиенти, mDNS и т.н. и т.н.).

2) Евтини OLED екрани - През 2007 г. направих манометър с помощта на TFT, който седеше на мястото на часовника на GD (2004-2007) WRX. TFT се предлагат в различни вкусове. Някои работят по -добре през нощта, други работят по -добре през деня и т.н. Но никой от тях не работи при всички условия. Не осъзнах грешката в моите начини, докато един от измервателните уреди, които използвах, беше безполезен по време на слънчевия ден на участник във форума. Въведете OLED, които са страхотни за автомобилни приложения. Те не са твърде ярки през нощта и (по -важното) са видими при повечето слънчеви условия.

Това е инструкция „две за едно“, тъй като написах всичко за два обикновени габарита на автомобила, налягане на маслото и налягане на турбото. И двете са по същество едно и също нещо: малък габарит на форм-фактора с анимиран OLED дисплей с аналогов вид с показани дискретни числа и максимуми. И двете също функционират като wifi AP и уеб сървъри. Когато човек се свърже с тях чрез компютър или мобилен телефон, може да се види движеща се таблица със стилове на ЕКГ (това е донякъде иновативна част).

Консумативи

Модул HELTEC ESP32-вземете варианта за wifi

Части, специфични за налягането на маслото:

Сензор за налягане на маслото - Използвах части за свързване на датчик за налягане на маслото 5222 - това варира в зависимост от колата и мястото на инсталиране. Моля, консултирайте се със сервизни ръководства, форуми, механика и т.н. и направете това правилно, за да няма течове на масло

Специални части на габарита за усилване:

  • Сензор за въздушно налягане (само ако искате да направите манометър за усилване) -
  • Въздушен маркуч
  • Т фитинги

Библиотеките, които използвах, бяха незаменими:

Smoothiecharts - https://smoothiecharts.org/ Отлични и леки диаграми за актуализиране на живо. Много персонализирано и не разчита на препратка към js библиотека някъде другаде в интернет. Това позволява настройка на тип „локален-IOT“и цялата библиотека се побира в един низ за изявлението на уеб сървъра в код!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- прави това, което казва на кутията и го прави добре

ThingPulse OLED графична библиотека (понякога наричайте библиотеката squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - много ефективна и ясна графика за чиповете ESP. Позволи ми да направя малко мързеливо програмиране и все пак да получа убедителни анимации.

Инструменти/различни:

поялник - използва се за направа на дълги кабелни линии за сензори, инсталиране на заглавки на борда, свиване на свиваща се обвивка и др.

отвертка/гнезда/други автомобилни инструменти - необходими за инсталиране на сензори в колата

двустранна лента - за инсталиране на габарити в корпуси и инсталиране на корпус в колата (горещо лепило и други неща може да свършат работа, но предпочитам 3M двустранна външна облицовъчна лента. Тя се държи добре и може да се издърпа, без да повреди нещата.)

ножици - за лента и рязане на тръби и връзки с цип

цип връзки - за задържане на нещата заедно, свързване на проводници под таблото и в отделението на двигателя, задържане на сензори на място и т.н.

Стъпка 1: Първо код/Втори хардуер

Код първи/Хардуер втори
Код първи/Хардуер втори
Код първи/Хардуер втори
Код първи/Хардуер втори

Кодът може да бъде изтеглен от тук:

Налягане на маслото -

Увеличете налягането -

Увеличете налягането с лица вместо аналогови манометри -

Графичен код: Библиотеката ThingPulse е толкова много ефективна, че можете да рисувате xbms един върху друг и да получите убедителни резултати!

Изображенията на габаритите всъщност идват от хранилище за графики с отворен код (https://thenounproject.com/). Изпълнителят Iconic, CY (https://thenounproject.com/icon/490005/).

Използвах gimp, за да генерирам 20 различни рамки, като иглата сочи към всяка отметка. Иконите на усмихнатото лице са от NOVITA ASTRI, ID и са тук:

След това превърнах всичко това в const uint8_t масиви, използвайки тази техника (подсказка: ако цветовете са обърнати, когато ги показвате, просто обърнете цветовете в оригинала): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

Кодът за анимация на живо е доста ясен:

  • Вземете четене от сензора
  • Мащабно четене (направих го 1 към 1 за положителни стойности на усилване и премествам иглата само когато е в усилване, а не когато е във вакуум)
  • Начертайте xbm и след това поставете числови знаци за всичко останало.
  • изплакнете и повторете

Сензорен код: Използвам повторно сензорния код, който използвах за тези два сензора за няколко други проекта. Добавих малко осредняване, за да се отърва от сензорните сензори. Това включва четене на всяко „четене“, което е средно 5 четения.

Boost код (сензорът дава аналогов вал от 0-5 волта, който ADC превръща в стъпки от 0-1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); // резултат от плаване PSI = (rboost*(. 00488)/(. 022) +20) /6.89 - Atla; // напускане на /6.89 за kpa поплавък Резултат PSI = (((rboost /4095) + 0.04) /0.004) * 0.145 - атмосфера; // с 0,145 до calc psi // 4096 стойности на esp32 /*rBoost = rBoost + 1; if (rBoost> = 20) {rBoost = 0; }*/ return (ResultPSI); }

Код за налягане на маслото (сензорът променя съпротивлението си в зависимост от налягането, което усеща, така че е необходим делител на напрежение, за да го превърне в напрежение от 0-5 V, вижте: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito…(до дъното) за повече информация):

int getOilPSI () {float psival = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36))/5); psival = -0.0601*psival + 177.04 - 14.5; обратен псивал; }

Функции на уеб сървъра и AP: Функционалността на AP е доста проста - създайте екземпляр и AP обект с ESSID, който искате да излъчите, и паролата и сте готови.

const char *ssid = "boost_gauge_ap"; const char *парола = "парола";

WiFi.softAP (ssid, парола);

Той дори има DHCP сървър, така че не е нужно да се притеснявате за това. По подразбиране IP е 192.168.1.4 (нямам представа защо, точно това е избраното). Уеб сървърът е малко по -сложен и изисква малко проучване. По принцип искате уеб сървър с асинхрон, за да може да получава актуализиращи данни на живо. За щастие има библиотека за това. Аз не съм разработчик на javascript, така че се занимавах с куп графики и графични библиотеки, докато не се натъкнах на диаграми за смутита. Повечето други библиотеки с диаграми са написани така, че да наследяват всички видове код от други библиотеки в мрежата, които се зареждат динамично при изобразяване на страница. Исках това да работи независимо от интернет, така че това беше голяма находка. Второ, той трябваше да бъде достатъчно малък, за да се побере на arduino и както можете да видите в кода, той се вписва в един масив от символи.

Декларации на уеб сървър: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer сървър (80); // инсталирайте го и изберете порт (80 е стандартен за http)… server.on ("/", HTTP_GET, (AsyncWebServerRequest *заявка) {request-> send (200, "text/html", "… // уеб страницата + библиотеката на smoothiecharts в огромен масив от символи}); server.on ("/val", HTTP_GET, (AsyncWebServerRequest *заявка) {// първата страница всъщност извиква тази много малка страница, която просто връща заявката за стойност -> изпрати (200, "текст/html", Sboost);}); server.begin ();

Стъпка 2: Хардуер и окабеляване

Хардуер и окабеляване
Хардуер и окабеляване
Хардуер и окабеляване
Хардуер и окабеляване
Хардуер и окабеляване
Хардуер и окабеляване

На снимката в галерията са двата сензора, които използвам. Големият златен цвят е сензор за налягане на маслото Autometer 2242. Корпусът и резбата на този сензор са заземени, а клемата е отчитането на съпротивлението.

Автометърът ще ви осигури крива на устойчивост на налягане или устойчивост на температура за всеки от техните сензори. Преобразувах това в напрежение с помощта на делител на напрежение (вижте електрическата схема).

Сензорът за въздушно налягане MPX4250AP има три щифта под напрежение и няколко неизползвани щифта. Те са V вход, заземяване и сензорен изход. Той извежда 0-5v отчитане, което може да бъде прочетено от микроконтролера (или в случая на този mcu 0-3 волта. Така че, отчитането на сензора се намалява с помощта на делител на напрежение.). Спецификацията за него може да бъде намерена тук:

Има няколко проблема при намаляване на логиката от 5v до 3v. В моя случай използвах делителя на напрежението за простота и имах частите около работната маса. Ще въведете малка грешка в показанията въз основа на възможната грешка на допълнителните компоненти (двата резистора). Това може да направи вашите показания 10% отстъпка в някои случаи. Мога да живея с това. Ако не можете, може да искате да използвате опампа и резистори или преобразувател на логическо ниво (предлага се от различни доставчици на електроника. Sparkfun има такъв тук: https://www.sparkfun.com/products/12009 Мога да премина към него като Понякога получавам високи показания на този габарит (всъщност показах този продукт на моята електрическа схема).

Захранвах ESP32 чрез USB. Това включваше свързване на директно зарядно устройство като това: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… към колата и след това използвайте USB хъб, за да го разделите. Можете да видите, че използвах правоъгълни USB кабели, за да гарантирам, че всичко работи на малка площ (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Други снимки показват места, на които изрязах дупки или прекарах тел. Всяка кола ще бъде различна. Внимавайте, ножовете и ножиците са остри, електричеството може да бъде опасно, така че, моля, изключете батерията, преди да окабелите нещата.

Стъпка 3: 3D отпечатани жилища

3D печатни жилища
3D печатни жилища

Използвах няколко корпуса с 3D печат за това.

  • Общ голям кръгъл габарит с 2 екрана. Можете да видите това на снимките на първата страница. Сложих го до часовника си на таблото.
  • Един клинообразен стил с един габарит, който се вписва в часовниковата област на subaru impreza (wrx, sti и т.н.) от приблизително 2008 до 2014 г.
  • Част с двоен габарит, която се побира на колони на волана и други леко заоблени повърхности:

Можете да ги копирате и модифицирате според вашите нужди. Никой от тях не е перфектен и всички ще изискват малко корекция.

Някои бележки:

  • Моето завърших с пластидип; това е предпочитаният метод за мързеливите.
  • Шлифоването на пластмаси прави фини частици, които не са добри за вас, използвайте подходяща маска.
  • Използвах PETG за моите жилища. ABS също е добър. PLA ще се изкриви на горещото слънце на таблото за управление.
IoT Challenge
IoT Challenge
IoT Challenge
IoT Challenge

Втора награда в IoT Challenge

Препоръчано: