Índice:

Medidores de carro OLED ESP32 habilitados para Wi-Fi: 3 etapas (com imagens)
Medidores de carro OLED ESP32 habilitados para Wi-Fi: 3 etapas (com imagens)

Vídeo: Medidores de carro OLED ESP32 habilitados para Wi-Fi: 3 etapas (com imagens)

Vídeo: Medidores de carro OLED ESP32 habilitados para Wi-Fi: 3 etapas (com imagens)
Vídeo: Cockpit Caseiro - Painel de Instrumentos de Caminhão adaptado para o Euro Truck Simulator 2 ETS2 2024, Novembro
Anonim
Image
Image
Medidores de carro OLED ESP32 com Wi-Fi habilitado
Medidores de carro OLED ESP32 com Wi-Fi habilitado

Apresentações primeiro …

Eu construo medidores de carro como uma espécie de passatempo de ligar e desligar novamente. Consulte https://www.instructables.com/id/Remote-Car-Monit… e https://www.instructables.com/id/Remote-Car-Monit… para mais dois exemplos recentes. Gosto especialmente daqueles que combinam com as peças originais do carro. Então, por que esse é diferente e o que me inspirou a construí-lo. A resposta é duas coisas:

1) ESP32 - Eu queria experimentar o novo garoto no chip de bloco, especialmente porque o conjunto de ferramentas baseado em arduino para ele é bastante maduro. Uma das coisas interessantes que o ESP32 permite é o IOT com seus recursos integrados de wi-fi e bluetooth. A comunidade escreveu várias bibliotecas para tornar isso um tanto simples (servidores da web, APs, clientes wi-fi, mDNS, etc, etc.).

2) Telas OLED baratas - Em 2007 fiz um medidor usando um TFT que ficava no lugar do relógio em um GD (2004-2007) WRX. TFT vem em vários sabores. Alguns trabalham melhor à noite, outros trabalham melhor durante o dia, etc. Mas nenhum deles funciona em todas as condições. Eu não percebi os meus erros até que um dos medidores que usei se tornou inútil durante o dia ensolarado de corrida de um membro do fórum. Digite OLED, que é incrível para aplicações automotivas. Eles não são muito brilhantes à noite e (mais importante) são visíveis na maioria das condições de luz solar.

Este é um dois por um instrutível, pois escrevi tudo para dois medidores de carro comuns, pressão do óleo e pressão do turbo. Ambos são essencialmente a mesma coisa: um medidor de fator de forma pequeno com uma tela OLED de aparência analógica animada com números discretos e máximos exibidos. Ambos também funcionam como APs wi-fi e servidores da web. Quando alguém se conecta a eles por meio de um computador ou telefone celular, um gráfico de tipo de EKG móvel pode ser visualizado (esta é a parte um tanto inovadora).

Suprimentos

Módulo HELTEC ESP32 - obtenha a variante wi-fi

Peças específicas de pressão de óleo:

Sensor de pressão de óleo - usei um automter 5222 peças de conexão do sensor de pressão de óleo - varia de acordo com o carro e o local de instalação. Consulte os manuais de serviço, fóruns, mecânica, etc. e faça isso corretamente para que não haja vazamentos de óleo

Peças específicas do medidor de reforço:

  • Sensor de pressão de ar (apenas se você deseja fazer um medidor de aumento) -
  • Mangueira de ar
  • Acessórios T

Bibliotecas que usei que eram indispensáveis:

Smoothiecharts - https://smoothiecharts.org/ Gráficos de atualização ao vivo excelentes e leves. Muito personalizável e não depende da referência a uma biblioteca js em outro lugar da internet. Isso permite uma configuração do tipo “local-IOT” e toda a biblioteca se ajusta em uma única string para a instrução do servidor da web no código!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- faz o que diz na caixa e faz bem

Biblioteca gráfica ThingPulse OLED (às vezes chamada de biblioteca squix) - https://github.com/ThingPulse/esp8266-oled-ssd130 … - gráficos muito eficientes e simples para os chips ESP. Permitiu-me fazer alguma programação preguiçosa e ainda obter animações convincentes.

Ferramentas / misc:

ferro de solda - usado para fazer longos cabos para sensores, instalar coletores a bordo, encolher plástico etc.

chave de fenda / soquetes / outras ferramentas do carro - necessário para instalar sensores no carro

Fita dupla-face - para instalar medidores em caixas e instalar caixa no carro (cola quente e outras coisas podem funcionar, mas eu prefiro a fita de acabamento externa dupla-face 3M. Ela segura bem e pode ser puxada sem danificar coisas).

tesoura - para fita e corte de tubos e laços zip

laços zip - para manter as coisas juntas, amarrar os fios sob o painel e no compartimento do motor, manter os sensores no lugar, etc.

Etapa 1: Código primeiro / Hardware em segundo

Código primeiro / Hardware em segundo
Código primeiro / Hardware em segundo
Código primeiro / Hardware em segundo
Código primeiro / Hardware em segundo

O código pode ser baixado aqui:

Pressão do óleo -

Aumente a pressão -

Aumente a pressão com faces em vez de medidores de aparência analógica -

Código gráfico: a biblioteca ThingPulse é tão eficiente que você pode desenhar xbms um em cima do outro e obter resultados convincentes!

As imagens do medidor, na verdade, vieram de um repositório gráfico de código aberto (https://thenounproject.com/). O artista Iconic, CY (https://thenounproject.com/icon/490005/).

Usei o gimp para gerar 20 quadros diferentes com a agulha apontando para cada marca de seleção. Os ícones de rosto sorridente são de NOVITA ASTRI, ID e estão aqui:

Então eu converti tudo isso em arrays const uint8_t usando esta técnica (dica: se as cores são invertidas quando você as exibe, basta inverter as cores no original): https://blog.squix.org/2015/05/esp8266- nodemcu-ho …

O código de animação ao vivo é bastante simples:

  • Obtenha a leitura do sensor
  • Leitura da escala (fiz 1 para 1 para valores de aumento positivos e só movo a agulha quando ela está em impulso, não quando está no vácuo)
  • Desenhe xbm e, em seguida, insira caracteres numéricos para todo o resto.
  • enxague e repita

Código do sensor: estou reutilizando o código do sensor que usei para esses dois sensores em alguns outros projetos. Eu adicionei alguma média para me afastar dos sensores instáveis. Isso inclui a leitura de cada "leitura" sendo uma média de 5 leituras.

Código de reforço (o sensor fornece uma válvula analógica de 0 a 5 volts que o ADC transforma em etapas de 0 a 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; // sair de /6,89 para kpa float ResultPSI = (((rboost / 4095) + 0,04) / 0,004) * 0,145 - atmo; // por 0,145 para calcular psi // 4096 valores em esp32 / * rBoost = rBoost + 1; if (rBoost> = 20) {rBoost = 0; } * / return (ResultPSI); }

Código de pressão do óleo (o sensor varia sua resistência com base na pressão que detecta, então um divisor de tensão é necessário para transformá-lo em uma tensão de 0-5v, consulte: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito…(para a parte inferior) para obter mais informações):

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; }

Servidor Web e funcionalidade AP: a funcionalidade AP é bastante simples - instancie um objeto AP com o ESSID que você deseja transmitir e a senha e pronto.

const char * ssid = "boost_gauge_ap"; const char * password = "senha";

WiFi.softAP (ssid, senha);

Ele ainda tem um servidor DHCP, então você não precisa se preocupar com isso. Por padrão, o IP é 192.168.1.4 (não tenho ideia do motivo, foi exatamente isso que ele escolheu). O bit do servidor web é um pouco mais complicado e requer um pouco de pesquisa. Basicamente, você deseja um servidor web assíncrono para que possa obter dados de atualização em tempo real. Felizmente, existe uma biblioteca para isso. Eu não sou um desenvolvedor de javascript, então eu mexi em um monte de gráficos e bibliotecas de gráficos até que me deparei com gráficos smoothie. A maioria das outras bibliotecas de gráficos são escritas de forma que herdam todos os tipos de código de outras bibliotecas da web que são carregados dinamicamente quando uma página é renderizada. Eu queria que isso funcionasse independente da internet, então esse foi um grande achado. Em segundo lugar, ele tinha que ser pequeno o suficiente para caber em um arduino e, como você pode ver no código, ele se encaixa em um único array char.

Declarações do servidor da Web: #include AsyncTCP.h #include ESPAsyncWebServer.h… servidor AsyncWebServer (80); // instancie-o e escolha a porta (80 é o padrão para http)… server.on ("/", HTTP_GET, (AsyncWebServerRequest * request) {request-> send (200, "text / html", "… // a página da web + a biblioteca smoothiecharts em uma enorme matriz de caracteres}); server.on ("/ val", HTTP_GET, (AsyncWebServerRequest * request) {// a primeira página realmente chama esta página muito pequena que apenas retorna a solicitação de valor -> enviar (200, "text / html", Sboost);}); server.begin ();

Etapa 2: Hardware e fiação

Hardware e fiação
Hardware e fiação
Hardware e fiação
Hardware e fiação
Hardware e fiação
Hardware e fiação

Retratados na galeria estão os dois sensores que uso. O grande dourado é um sensor de pressão de óleo Autometer 2242. O corpo e a rosca deste sensor são aterrados e o terminal é a leitura em resistência.

O Autometer fornecerá uma curva de resistência à pressão ou resistência à temperatura para qualquer um de seus sensores. Eu converti isso em tensão usando um divisor de tensão (consulte o diagrama de fiação).

O sensor de pressão de ar MPX4250AP possui três pinos ativos e vários pinos não utilizados. Eles são V entrada, aterramento e saída do sensor. Ele produz uma leitura de 0-5v que pode ser lida pelo microcontrolador (ou no caso deste mcu 0-3 volts. Portanto, a leitura do sensor é reduzida usando um divisor de tensão). A folha de especificações pode ser encontrada aqui:

Existem vários problemas na redução da lógica de 5v para 3v. No meu caso, usei o divisor de tensão para simplificar e coloquei as peças em volta da minha bancada. Você introduzirá um pequeno erro nas leituras com base no possível erro dos componentes adicionais (os dois resistores). Isso pode diminuir suas leituras em 10% em alguns casos. Eu posso viver com isso. Se você não puder, você pode querer usar um opamp e resistores ou um conversor de nível lógico (disponível em vários fornecedores de eletrônicos. Sparkfun tem um aqui: https://www.sparkfun.com/products/12009 Eu posso mudar para ele como Às vezes, obtenho leituras altas neste medidor (na verdade, mostrei este produto no meu diagrama de fiação).

Liguei o ESP32 via USB. Isso incluiu a fiação de um carregador direto como este: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… para o carro e, em seguida, o uso de um hub USB para separá-lo. Você pode ver que usei cabos usb em ângulo reto para garantir que tudo funcione em uma pequena área (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Outras fotos mostram lugares onde fiz buracos ou passei fios. Cada carro será diferente. Tenha cuidado, as facas e as tesouras são afiadas, a eletricidade pode ser perigosa, portanto, desconecte a bateria antes de fazer a fiação.

Etapa 3: Caixa impressa em 3D

Caixa impressa em 3D
Caixa impressa em 3D

Usei várias caixas impressas em 3D para isso.

  • Um medidor redondo genérico de 2 telas grandes. Você pode ver isso nas fotos da primeira página. Eu coloquei ao lado do meu relógio no meu painel.
  • Um estilo de cunha de medidor único que se encaixa na área do relógio de um subaru impreza (wrx, sti, etc.) de aproximadamente 2008 a 2014.
  • Uma peça de bitola dupla que se encaixa nas colunas do volante e outras superfícies ligeiramente arredondadas:

Você está convidado a copiar e modificar estes para atender às suas necessidades. Nenhum deles é perfeito e todos exigirão alguns ajustes.

Algumas notas:

  • Terminei o meu com plastidip; é o método preferido do preguiçoso.
  • Lixar plásticos produz partículas finas que não são boas para você, use uma máscara apropriada.
  • Usei PETG para minhas caixas. ABS também é bom. PLA vai deformar sob o sol quente em um painel.
Desafio IoT
Desafio IoT
Desafio IoT
Desafio IoT

Segundo prêmio no Desafio de IoT

Recomendado: