Оглавление:
- Запасы
- Шаг 1. Сначала код, затем оборудование
- Шаг 2: оборудование и проводка
- Шаг 3: корпус, напечатанный на 3D-принтере
Видео: Автомобильные датчики OLED ESP32 с поддержкой Wi-Fi: 3 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Сначала знакомство…
Я конструирую автомобильные датчики как своего рода хобби снова и снова. См. Https://www.instructables.com/id/Remote-Car-Monit… и https://www.instructables.com/id/Remote-Car-Monit… для двух более свежих примеров. Мне особенно нравятся те, которые гармонируют с оригинальными деталями автомобиля. Итак, чем он отличается и что вдохновило меня на его создание. Ответ состоит в двух вещах:
1) ESP32 - я хотел опробовать нового ребенка на блочном чипе, тем более, что инструментальная цепочка на основе Arduino для него довольно зрелая. Одна из интересных вещей, которые поддерживает ESP32, - это IOT со встроенными возможностями Wi-Fi и Bluetooth. Сообщество написало несколько библиотек, чтобы упростить задачу (веб-серверы, точки доступа, клиенты Wi-Fi, mDNS и т. Д. И т. Д.).
2) Недорогие OLED-экраны. Еще в 2007 году я сделал датчик, используя TFT, который находился вместо часов на GD (2004-2007) WRX. TFT бывают разных вкусов. Кто-то лучше работает ночью, кто-то лучше работает днем и т. Д. Но никто из них не работает в любых условиях. Я не осознавал свою ошибку до тех пор, пока один из датчиков, который я использовал, не стал бесполезным во время солнечного трек-дня участника форума. Откройте для себя OLED, которые отлично подходят для автомобильных приложений. Ночью они не слишком яркие и (что еще более важно) видны в большинстве случаев солнечного света.
Это поучительно два к одному, поскольку я написал все для двух обычных автомобильных манометров, давления масла и турбонаддува. По сути, это одно и то же: датчик небольшого форм-фактора с анимированным OLED-дисплеем аналогового вида с дискретными числами и максимумами. Оба они также работают как точки доступа Wi-Fi и веб-серверы. Когда к ним подключаешься через компьютер или мобильный телефон, становится видна движущаяся диаграмма типа ЭКГ (это несколько новаторская часть).
Запасы
Модуль HELTEC ESP32 - получите вариант Wi-Fi
Детали, относящиеся к давлению масла:
Датчик давления масла - я использовал автомобильные детали 5222 для подключения датчика давления масла - это зависит от автомобиля и места установки. Пожалуйста, обратитесь к руководствам по обслуживанию, форумам, механикам и т. Д. И делайте это правильно, чтобы не было утечек масла
Детали датчика повышения давления:
- Датчик давления воздуха (только если хотите сделать манометр наддува) -
- Воздушный шланг
- Т-образные фитинги
Библиотеки, которые я использовал, без которых не обойтись:
Smoothiecharts - https://smoothiecharts.org/ Превосходные и легкие графики, обновляемые в режиме реального времени. Очень настраиваемый и не требует ссылки на библиотеку js где-то еще в Интернете. Это позволяет настроить тип «local-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 чтений.
Код повышения (датчик выдает аналоговое значение от 0 до 5 вольт, которое АЦП преобразует в шаги от 0 до 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; // оставить /6,89 для кПа float ResultPSI = (((rboost / 4095) + 0,04) / 0,004) * 0,145 - атмо; // на 0,145 для расчета psi // 4096 значений на esp32 / * rBoost = rBoost + 1; если (rBoost> = 20) {rBoost = 0; } * / return (ResultPSI); }
Код давления масла (датчик меняет свое сопротивление в зависимости от давления, которое он ощущает, поэтому для преобразования его в напряжение от 0 до 5 В требуется делитель напряжения, см.: https://electronics.stackexchange.com/questions/3 … https://electronics.stackexchange.com/questions/3 … /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 * password = "пароль";
WiFi.softAP (ssid, пароль);
У него даже есть DHCP-сервер, так что вам не о чем беспокоиться. По умолчанию это IP 192.168.1.4 (не знаю почему, это именно то, что было выбрано). Веб-сервер немного сложнее и требует небольшого исследования. В основном вам нужен асинхронный веб-сервер, чтобы он мог получать данные обновления в реальном времени. К счастью, для этого есть библиотека. Я не разработчик javascript, поэтому возился с кучей диаграмм и графических библиотек, пока не наткнулся на диаграммы для смузи. Большинство других графических библиотек написаны таким образом, что они наследуют все виды кода из других библиотек из Интернета, которые динамически загружаются при визуализации страницы. Я хотел, чтобы это работало независимо от Интернета, поэтому это была большая находка. Во-вторых, он должен быть достаточно маленьким, чтобы поместиться на Arduino, и, как вы можете видеть в коде, он умещается в одном массиве символов.
Объявления веб-сервера: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // создаем его экземпляр и выбираем порт (80 стандартно для http)… server.on ("/", HTTP_GET, (AsyncWebServerRequest * request) {request-> send (200, "text / html", "… // веб-страница + библиотека smoothiecharts в огромном массиве символов}); server.on ("/ val", HTTP_GET, (AsyncWebServerRequest * request) {// первая страница фактически вызывает эту очень маленькую страницу, которая просто возвращает запрос значения -> send (200, "текст / html", Sboost);}); server.begin ();
Шаг 2: оборудование и проводка
В галерее изображены два датчика, которые я использую. Большой золотой цвет - это датчик давления масла Autometer 2242. Корпус и резьба этого датчика заземлены, а клемма - это сопротивление.
Автометр предоставит вам кривую сопротивления давлению или сопротивления температуре для любого из своих датчиков. Я преобразовал его в напряжение с помощью делителя напряжения (см. Схему подключения).
Датчик давления воздуха MPX4250AP имеет три активных контакта и несколько неиспользуемых контактов. Это V вход, земля и выход датчика. Он выводит показание 0-5 В, которое может быть считано микроконтроллером (или, в случае этого микроконтроллера, 0-3 В. Таким образом, показания датчика уменьшаются с помощью делителя напряжения). Спецификации для него можно найти здесь:
Есть несколько проблем при уменьшении логики с 5 до 3 В. В моем случае я использовал делитель напряжения для простоты, и у меня были детали вокруг моего рабочего места. Вы внесете небольшую ошибку в показания на основе возможной ошибки дополнительных компонентов (двух резисторов). В некоторых случаях это может снизить ваши показания на 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-принтере.
- Стандартный круглый датчик с двумя экранами. Вы можете увидеть это на картинках на первой странице. Я кладу его рядом с часами на приборную панель.
- Одномерный клин, который подходит для часов Subaru Impreza (wrx, sti и т. Д.) Примерно с 2008 по 2014 год.
- Двойной датчик, который подходит для колонок рулевого колеса и других слегка закругленных поверхностей:
Вы можете скопировать и изменить их в соответствии со своими потребностями. Ни один из них не идеален, и все они потребуют небольшой корректировки.
Некоторые примечания:
- Я закончил свою пластидипом; это предпочтительный метод для ленивых.
- При шлифовке пластика образуются мелкие частицы, которые вам не подходят, используйте подходящую маску.
- Я использовал PETG для своих корпусов. АБС тоже хорошо. PLA покоробится под палящим солнцем на приборной панели.
Второй приз в конкурсе IoT Challenge
Рекомендуемые:
Автомобильные взломы с использованием Arduino: 4 шага
Взлом автомобилей с использованием Arduino: В этой документации представлен простой и экономичный способ взлома OBD-потока автомобиля. В этом я пытаюсь показать общий способ получения информации OBD. Здесь я использую Arduino UNO, экран CAN-Bus (1.2), кабель DB9 для подключения к порту OBD и
Мини-автомобильные ворота с Arduino: 3 шага
Мини-автомобильные ворота с Arduino: Эй, посмотри! Итак, вы знаете, как когда вы въезжаете на стоянку или в гараж и вам нужно остановиться у ворот? Ну, это мини-версия ворот для машинок со спичечными коробками или, может быть, немного больше, как будто я использовал маленький грузовик. Чтобы управлять этими воротами
Усовершенствованные датчики Makeblock (сделай сам): 32 шага (с изображениями)
Усовершенствованные датчики Makeblock (DIY): платформа Makeblock содержит все виды механических деталей и электроники для создания роботов. Makeblock продает этих роботов как часть своей образовательной платформы STEM. А с помощью языка Scratch дети могут приобрести базовые навыки программирования
Дешевые датчики удара для роботов Arduino: 4 шага (с изображениями)
Дешевые датчики ударов для роботов Arduino: нужны дешевые датчики ударов, которые легко получить, для захвата вашего робота - я имею в виду проект Arduino? Эти небольшие датчики просты в использовании, просты в изготовлении и удобны для кошелька (17 центов за штуку!), А также отлично работает для простого обнаружения препятствий на микроконтроллере-ба
Грубая метеостанция с поддержкой Wi-Fi: 3 шага (с изображениями)
Грубая метеостанция с поддержкой Wi-Fi: сегодня вы узнаете, как создать простую метеостанцию с поддержкой Wi-Fi, которая отправляет вам данные о температуре и влажности с помощью IFTTT прямо на вашу электронную почту. Детали, которые я использовал, можно найти на kumantech.com