Tabla de contenido:

Indicadores de coche OLED ESP32 habilitados para wifi: 3 pasos (con imágenes)
Indicadores de coche OLED ESP32 habilitados para wifi: 3 pasos (con imágenes)

Video: Indicadores de coche OLED ESP32 habilitados para wifi: 3 pasos (con imágenes)

Video: Indicadores de coche OLED ESP32 habilitados para wifi: 3 pasos (con imágenes)
Video: [Webinar] Rediseñando la ciberseguridad de las sedes remotas - Grupo Tecon y SonicWall 2024, Noviembre
Anonim
Image
Image
Indicadores de coche OLED ESP32 habilitados para wifi
Indicadores de coche OLED ESP32 habilitados para wifi

Presentaciones primero …

Construyo medidores de automóviles como una especie de pasatiempo de encendido y apagado. Consulte https://www.instructables.com/id/Remote-Car-Monit… y https://www.instructables.com/id/Remote-Car-Monit… para ver dos ejemplos más recientes. Me gustan especialmente los que combinan con las piezas originales del coche. Entonces, ¿por qué este es diferente y qué me inspiró a construirlo? La respuesta es dos cosas:

1) ESP32: quería probar el nuevo chico en el chip de bloque, especialmente porque la cadena de herramientas basada en arduino es bastante madura. Una de las cosas interesantes que permite el ESP32 es IOT con sus capacidades integradas de wifi y bluetooth. La comunidad ha escrito varias bibliotecas para que esto sea algo sencillo (servidores web, AP, clientes wifi, mDNS, etc., etc.).

2) Pantallas OLED baratas: en 2007 hice un medidor con un TFT que se encontraba en el lugar del reloj en un GD (2004-2007) WRX. Los TFT vienen en varios sabores. Algunos funcionan mejor por la noche, otros funcionan mejor durante el día, etc. Pero ninguno funciona en todas las condiciones. No me di cuenta del error de mis caminos hasta que uno de los medidores que usé fue inútil durante el día soleado en la pista de un miembro del foro. Ingrese OLED, que son increíbles para aplicaciones automotrices. No son demasiado brillantes por la noche y (lo que es más importante) son visibles en la mayoría de las condiciones de luz solar.

Este es un instructable dos por uno, ya que escribí todo para dos medidores de automóviles comunes, presión de aceite y presión de turbo. Ambos son esencialmente lo mismo: un medidor de factor de forma pequeño con una pantalla OLED de apariencia analógica animada con números discretos y máximos mostrados. Ambos también funcionan como puntos de acceso wifi y servidores web. Cuando uno se conecta a ellos a través de una computadora o teléfono celular, se puede ver un gráfico de tipo de electrocardiograma en movimiento (esta es la parte algo innovadora).

Suministros

Módulo HELTEC ESP32: obtenga la variante wifi

Piezas específicas de presión de aceite:

Sensor de presión de aceite: utilicé piezas de conexión del sensor de presión de aceite automter 5222; esto varía según el automóvil y la ubicación de la instalación. Consulte los manuales de servicio, foros, mecánicas, etc. y hágalo correctamente para que no haya fugas de aceite

Piezas específicas del medidor de impulso:

  • Sensor de presión de aire (solo si desea hacer un indicador de impulso) -
  • Manguera de aire
  • Conexiones en T

Bibliotecas que utilicé que eran indispensables:

Smoothiecharts - https://smoothiecharts.org/ Gráficos de actualización en vivo excelentes y ligeros. Muy personalizable y no depende de hacer referencia a una biblioteca js en otro lugar de Internet. Esto permite una configuración de tipo "local-IOT" y toda la biblioteca encaja en una sola cadena para la declaración del servidor web en el código.

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- hace lo que dice en la caja y lo hace bien

Biblioteca gráfica ThingPulse OLED (a veces llamada biblioteca squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - Gráficos muy eficientes y sencillos para los chips ESP. Me permitió hacer una programación perezosa y seguir obteniendo animaciones convincentes.

Herramientas / miscelánea:

soldador: se utiliza para hacer tendidos largos de cables para sensores, instalar cabezales a bordo, envoltura retráctil, etc.

destornillador / enchufes / otras herramientas de automóvil: necesario para instalar sensores en el automóvil

Cinta de doble cara: para instalar medidores en carcasas e instalar la carcasa en el automóvil (el pegamento caliente y otras cosas pueden funcionar, pero prefiero la cinta de acabado exterior de doble cara de 3M. Se sostiene bien y se puede quitar sin dañar las cosas).

tijeras - para cinta y cortar tubos y bridas

bridas - para sujetar cosas juntas, atar cables debajo del tablero y en el compartimiento del motor, mantener los sensores en su lugar, etc.

Paso 1: codifique primero / segundo hardware

Código primero / segundo hardware
Código primero / segundo hardware
Código primero / segundo hardware
Código primero / segundo hardware

El código se puede descargar aquí:

Presión de aceite:

Presión de impulso -

Aumente la presión con caras en lugar de medidores de aspecto analógico:

Código de gráficos: la biblioteca ThingPulse es tan eficiente que puede dibujar xbms uno encima del otro y obtener resultados convincentes.

Las imágenes del medidor en realidad provienen de un repositorio de gráficos de código abierto (https://thenounproject.com/). El artista Iconic, CY (https://thenounproject.com/icon/490005/).

Usé gimp para generar 20 cuadros diferentes con la aguja apuntando a cada marca de verificación. Los iconos de caritas sonrientes son de NOVITA ASTRI, ID y están aquí:

Luego, convertí todos estos en matrices const uint8_t usando esta técnica (pista: si los colores están invertidos cuando los muestra, simplemente invierta los colores en el original): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

El código de animación en vivo es bastante sencillo:

  • Obtener lectura del sensor
  • Lectura de escala (lo hice de 1 a 1 para valores de impulso positivos y solo muevo la aguja cuando está en impulso, no cuando está en vacío)
  • Dibuje xbm y luego anote los caracteres numéricos para todo lo demás.
  • enjuague y repita

Código del sensor: estoy reutilizando el código del sensor que he usado para estos dos sensores para algunos otros proyectos. Agregué un promedio para alejarme de los sensores que saltan. Esto incluye leer cada "lectura" siendo un promedio de 5 lecturas.

Código de impulso (el sensor da un valor analógico de 0-5 voltios que el ADC convierte en pasos de 0-1024):

int getBoost () {float rboost = ((analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36) + analogRead (36)) / 5); // flotar ResultPSI = (rboost * (. 00488) / (. 022) +20) /6.89 - atmo; // dejar el /6.89 para kpa float ResultPSI = (((rboost / 4095) + 0.04) / 0.004) * 0.145 - atmo; // por 0,145 para calcular psi // 4096 valores en esp32 / * rBoost = rBoost + 1; if (rBoost> = 20) {rBoost = 0; } * / return (ResultPSI); }

Código de presión de aceite (el sensor varía su resistencia en función de la presión que detecta, por lo que se requiere un divisor de voltaje para convertirlo en un voltaje de 0 a 5 V, consulte: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito… (hacia la parte inferior) para obtener más información):

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

Funcionalidad de servidor web y AP: la funcionalidad de AP es bastante simple: instancia y objeto de AP con el ESSID que desea transmitir y la contraseña y ya está listo.

const char * ssid = "boost_gauge_ap"; const char * contraseña = "contraseña";

WiFi.softAP (ssid, contraseña);

Incluso tiene un servidor DHCP para que no tenga que preocuparse por eso. De forma predeterminada, su IP es 192.168.1.4 (no tengo idea de por qué, eso es lo que eligió). El bit del servidor web es un poco más complicado y requiere un poco de investigación. Básicamente, desea un servidor web asíncrono para que pueda obtener datos de actualización en vivo. Afortunadamente hay una biblioteca para eso. No soy un desarrollador de JavaScript, así que jugué con un montón de bibliotecas de gráficos y gráficos hasta que me topé con gráficos de batidos. La mayoría de las otras bibliotecas de gráficos están escritas de manera que heredan todo tipo de código de otras bibliotecas de toda la web que se cargan dinámicamente cuando se representa una página. Quería que esto funcionara independientemente de Internet, así que fue un gran hallazgo. En segundo lugar, tenía que ser lo suficientemente pequeño como para caber en un arduino y, como puede ver en el código, cabe en una sola matriz de caracteres.

Declaraciones del servidor web: #include AsyncTCP.h #include ESPAsyncWebServer.h… AsyncWebServer server (80); // crea una instancia y elige el puerto (80 es estándar para http)… server.on ("/", HTTP_GET, (AsyncWebServerRequest * request) {request-> send (200, "text / html", "… // la página web + la biblioteca de smoothiecharts en una gran matriz de caracteres}); server.on ("/ val", HTTP_GET, (AsyncWebServerRequest * request) {// la primera página realmente llama a esta página muy pequeña que solo devuelve la solicitud de valor -> enviar (200, "texto / html", Sboost);}); server.begin ();

Paso 2: hardware y cableado

Hardware y cableado
Hardware y cableado
Hardware y cableado
Hardware y cableado
Hardware y cableado
Hardware y cableado

En la imagen de la galería están los dos sensores que utilizo. El grande de color dorado es un sensor de presión de aceite Autometer 2242. El cuerpo y la rosca de este sensor están conectados a tierra y el terminal es la lectura en resistencia.

Autometer te proporcionará una curva de resistencia a la presión o resistencia a la temperatura para cualquiera de sus sensores. He convertido esto a voltaje usando un divisor de voltaje (vea el diagrama de cableado).

El sensor de presión de aire MPX4250AP tiene tres pines vivos y varios pines sin usar. Son entrada V, tierra y salida de sensor. Produce una lectura de 0-5v que puede ser leída por el microcontrolador (o en el caso de este mcu 0-3 voltios. Entonces, la lectura del sensor se reduce usando un divisor de voltaje). La hoja de especificaciones se puede encontrar aquí:

Hay varios problemas al reducir la lógica de 5v a 3v. En mi caso, usé el divisor de voltaje por simplicidad y tenía las partes alrededor de mi mesa de trabajo. Introducirá un pequeño error en las lecturas en función del posible error de los componentes adicionales (las dos resistencias). Esto podría hacer que sus lecturas tengan un 10% de descuento en algunos casos. Puedo vivir con esto. Si no puede, puede usar un opamp y resistencias o un convertidor de nivel lógico (disponible en varios proveedores de electrónica. Sparkfun tiene uno aquí: https://www.sparkfun.com/products/12009 Puedo cambiarlo como A veces obtengo lecturas altas en este medidor (de hecho, he mostrado este producto en mi diagrama de cableado).

Encendí el ESP32 a través de USB. Esto incluyó conectar un cargador directo como este: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… al automóvil y luego usar un concentrador USB para dividirlo. Puede ver que utilicé cables USB en ángulo recto para asegurar que todo funcione en un área pequeña (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Otras fotos muestran lugares en los que hice agujeros o pasé cables. Cada auto será diferente. Tenga cuidado, los cuchillos y las tijeras son afilados, la electricidad puede ser peligrosa, así que desconecte la batería antes de realizar el cableado.

Paso 3: Carcasa impresa en 3D

Carcasa impresa en 3D
Carcasa impresa en 3D

He utilizado varias carcasas impresas en 3D para esto.

  • Un medidor redondo genérico de 2 pantallas grandes. Puedes ver esto en estas imágenes de la primera página. Lo puse junto a mi reloj en mi tablero.
  • Un estilo de cuña de un solo calibre que cabe en el área del reloj de un subaru impreza (wrx, sti, etc.) desde aproximadamente 2008 hasta 2014.
  • Una pieza de calibre doble que se adapta a las columnas del volante y otras superficies ligeramente redondeadas:

Puede copiarlos y modificarlos para adaptarlos a sus necesidades. Ninguno de ellos es perfecto y todos requerirán un poco de ajuste.

Algunas notas:

  • Terminé el mío con plastidip; es el método preferido de los perezosos.
  • Lijar plásticos produce partículas finas que no son buenas para usted, use una máscara adecuada.
  • Usé PETG para mis carcasas. El ABS también es bueno. El PLA se deformará bajo el sol ardiente en un tablero.
Desafío de IoT
Desafío de IoT
Desafío de IoT
Desafío de IoT

Segundo premio en el IoT Challenge

Recomendado: