Table des matières:

Jauges de voiture OLED ESP32 compatibles Wifi : 3 étapes (avec photos)
Jauges de voiture OLED ESP32 compatibles Wifi : 3 étapes (avec photos)

Vidéo: Jauges de voiture OLED ESP32 compatibles Wifi : 3 étapes (avec photos)

Vidéo: Jauges de voiture OLED ESP32 compatibles Wifi : 3 étapes (avec photos)
Vidéo: Новые продукты от 02.09.20 с LC709203F LiPoly/LiIon датчиком уровня топлива и монитором аккумулятора — STEMMA JST! 2024, Novembre
Anonim
Image
Image
Jauges de voiture OLED ESP32 compatibles Wifi
Jauges de voiture OLED ESP32 compatibles Wifi

Présentations d'abord…

Je construis des jauges de voiture comme une sorte de passe-temps encore et encore. Voir https://www.instructables.com/id/Remote-Car-Monit… et https://www.instructables.com/id/Remote-Car-Monit… pour deux exemples plus récents. J'aime particulièrement ceux qui se fondent dans les pièces d'origine de la voiture. Alors, pourquoi celui-ci est-il différent et qu'est-ce qui m'a inspiré pour le construire. La réponse est deux choses:

1) ESP32 - Je voulais essayer le petit nouveau sur la puce de bloc, d'autant plus que la chaîne d'outils basée sur Arduino est assez mature. L'une des choses intéressantes que permet l'ESP32 est l'IOT avec ses capacités wifi et bluetooth intégrées. La communauté a écrit plusieurs bibliothèques pour rendre cela quelque peu simple (serveurs Web, points d'accès, clients wifi, mDNS, etc.).

2) Écrans OLED bon marché - En 2007, j'ai fait une jauge à l'aide d'un TFT qui se trouvait à la place de l'horloge sur une WRX GD (2004-2007). Les TFT sont disponibles en différentes saveurs. Certains fonctionnent mieux la nuit, d'autres le jour, etc. Mais aucun ne fonctionne dans toutes les conditions. Je n'ai pas réalisé l'erreur de mes manières jusqu'à ce que l'une des jauges que j'ai utilisées soit inutile lors de la journée ensoleillée d'un membre du forum. Entrez OLED, qui sont géniaux pour les applications automobiles. Ils ne sont pas trop lumineux la nuit et (plus important encore) sont visibles dans la plupart des conditions d'ensoleillement.

Il s'agit d'un deux pour un instructable car j'ai tout écrit pour deux jauges de voiture communes, pression d'huile et pression turbo. Les deux sont essentiellement la même chose: une petite jauge de facteur de forme avec un écran OLED animé d'aspect analogique avec des nombres discrets et des maximums affichés. Les deux fonctionnent également comme des points d'accès wifi et des serveurs Web. Lorsqu'on s'y connecte via un ordinateur ou un téléphone portable, un graphique de type ECG en mouvement est visible (c'est la partie quelque peu innovante).

Fournitures

Module HELTEC ESP32 - obtenez la variante wifi

Pièces spécifiques à la pression d'huile:

Capteur de pression d'huile - J'ai utilisé un automter 5222 Pièces de raccordement du capteur de pression d'huile - cela varie selon la voiture et l'emplacement d'installation. Veuillez consulter les manuels d'entretien, les forums, la mécanique, etc. et le faire correctement afin qu'il n'y ait pas de fuites d'huile

Pièces spécifiques à la jauge de suralimentation:

  • Capteur de pression d'air (uniquement si vous souhaitez faire une jauge de suralimentation) -
  • Tuyau d'air
  • raccords en T

Les bibliothèques que j'ai utilisées et qui étaient indispensables:

Smoothiecharts - https://smoothiecharts.org/ Graphiques de mise à jour en direct excellents et légers. Très personnalisable et ne repose pas sur le référencement d'une bibliothèque js ailleurs sur Internet. Cela permet une configuration de type "local-IOT" et toute la bibliothèque tient dans une seule chaîne pour la déclaration du serveur Web dans le code !

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- fait ce qu'il dit sur la boîte et le fait bien

Bibliothèque graphique ThingPulse OLED (appelée parfois la bibliothèque squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - graphiques très efficaces et simples pour les puces ESP. M'a permis de faire de la programmation paresseuse et d'obtenir toujours des animations convaincantes.

Outils/divers:

fer à souder - utilisé pour faire de longs chemins de câbles pour les capteurs, installer des en-têtes à bord, rétrécir le film rétractable, etc.

Tournevis/prises/autres outils de voiture - nécessaire pour installer des capteurs sur la voiture

Ruban adhésif double face - pour installer des jauges dans les boîtiers et installer le boîtier dans la voiture (la colle chaude et d'autres choses peuvent fonctionner, mais je préfère le ruban de garniture extérieure double face 3M. Il tient bien et peut être retiré sans endommager les choses.)

ciseaux - pour le ruban adhésif et couper les tubes et les attaches zippées

attaches zippées - pour maintenir les choses ensemble, regrouper les fils sous le tableau de bord et dans le compartiment moteur, maintenir les capteurs en place, etc.

Étape 1: Coder d'abord/Matériel ensuite

Code d'abord/Matériel d'abord
Code d'abord/Matériel d'abord
Code d'abord/Matériel d'abord
Code d'abord/Matériel d'abord

Le code peut être téléchargé ici:

Pression d'huile -

Pression de suralimentation -

Boost Pressure avec des visages au lieu de manomètres analogiques -

Code graphique: La bibliothèque ThingPulse est si efficace que vous pouvez dessiner des xbms les uns sur les autres et obtenir des résultats convaincants !

Les images de la jauge provenaient en fait d'un référentiel graphique open source (https://thenounproject.com/). L'artiste Iconic, CY (https://thenounproject.com/icon/490005/).

J'ai utilisé gimp pour générer 20 images différentes avec l'aiguille pointant vers chaque coche. Les icônes du smiley sont de NOVITA ASTRI, ID et sont ici:

Ensuite, j'ai converti tout cela en tableaux const uint8_t en utilisant cette technique (indice: si les couleurs sont inversées lorsque vous les affichez, inversez simplement les couleurs sur l'original): https://blog.squix.org/2015/05/esp8266- nœudmcu-ho…

Le code d'animation en direct est assez simple:

  • Obtenir la lecture du capteur
  • Lecture de l'échelle (je l'ai fait de 1 à 1 pour les valeurs de boost positives et ne déplace l'aiguille que lorsqu'elle est en boost et non lorsqu'elle est sous vide)
  • Dessinez xbm, puis écrivez des caractères numériques pour tout le reste.
  • rincer et répéter

Code du capteur: je réutilise le code du capteur que j'ai utilisé pour ces deux capteurs pour quelques autres projets. J'ai ajouté une moyenne pour m'éloigner des capteurs nerveux. Cela comprend la lecture de chaque "lecture" étant une moyenne de 5 lectures.

Code Boost (le capteur donne une valeur analogique de 0 à 5 volts que l'ADC transforme en pas de 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; // part du /6.89 pour kpa float ResultPSI = (((rboost / 4095) + 0.04) / 0.004) * 0.145 - atmo; //par 0,145 pour calc psi //4096 valeurs sur esp32 /*rBoost = rBoost + 1; if (rBoost >= 20) { rBoost = 0; }*/ return (ResultPSI); }

Code de pression d'huile (le capteur fait varier sa résistance en fonction de la pression qu'il détecte, un diviseur de tension est donc nécessaire pour la transformer en une tension de 0 à 5 V, voir: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito… (vers le bas) pour plus d'informations):

int getOilPSI() { float psival = ((analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36))/5); psival = -0,0601*psival + 177,04 - 14,5; retour psival; }

Serveur Web et fonctionnalité AP: la fonctionnalité AP est assez simple - instanciez et objet AP avec l'ESSID que vous souhaitez diffuser et le mot de passe et vous êtes prêt à partir.

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

WiFi.softAP(ssid, mot de passe);

Il dispose même d'un serveur DHCP, vous n'avez donc pas à vous en soucier. Par défaut, son IP est 192.168.1.4 (aucune idée pourquoi, c'est exactement ce que l'on a choisi). Le serveur Web est un peu plus délicat et a nécessité un peu de recherche. Fondamentalement, vous voulez un serveur Web asynchrone afin qu'il puisse obtenir des données de mise à jour en direct. Heureusement, il y a une bibliothèque pour ça. Je ne suis pas un développeur javascript, j'ai donc bricolé un tas de bibliothèques de graphiques et de graphiques jusqu'à ce que je tombe sur des graphiques de smoothie. La plupart des autres bibliothèques de graphiques sont écrites de telle sorte qu'elles héritent de toutes sortes de code d'autres bibliothèques du Web qui sont chargées dynamiquement lorsqu'une page est rendue. Je voulais que cela fonctionne indépendamment d'Internet, donc c'était une grande trouvaille. Deuxièmement, il devait être suffisamment petit pour tenir sur un arduino et, comme vous pouvez le voir dans le code, il tient dans un seul tableau de caractères.

Déclarations du serveur Web: #include AsyncTCP.h #include ESPAsyncWebServer.h … AsyncWebServer server(80); // instanciez-le et choisissez le port (80 est standard pour http) … server.on("/", HTTP_GET, (AsyncWebServerRequest *request){ request->send(200, "text/html", "… // la page Web + la bibliothèque smoothiecharts dans un énorme tableau de caractères }); server.on("/val", HTTP_GET, (AsyncWebServerRequest *request){ //la première page appelle en fait cette très petite page qui renvoie simplement la demande de valeur ->send(200, "text/html", Sboost); }); server.begin();

Étape 2: Matériel et câblage

Matériel et câblage
Matériel et câblage
Matériel et câblage
Matériel et câblage
Matériel et câblage
Matériel et câblage

Les deux capteurs que j'utilise sont illustrés dans la galerie. Le grand de couleur or est un capteur de pression d'huile Autometer 2242. Le corps et le filetage de ce capteur sont mis à la terre et la borne est la lecture en résistance.

Autometer vous fournira une courbe de résistance à la pression ou de résistance à la température pour l'un de leurs capteurs. J'ai converti cela en tension à l'aide d'un diviseur de tension (voir schéma de câblage).

Le capteur de pression d'air MPX4250AP a trois broches actives et plusieurs broches inutilisées. Il s'agit de l'entrée V, de la masse et de la sortie du capteur. Il délivre une lecture de 0-5v qui peut être lue par le microcontrôleur (ou dans le cas de ce mcu 0-3 volts. Ainsi, la lecture du capteur est réduite à l'aide d'un diviseur de tension.). La fiche technique de celui-ci peut être trouvée ici:

La réduction de la logique 5v à 3v pose plusieurs problèmes. Dans mon cas, j'ai utilisé le diviseur de tension pour plus de simplicité et j'avais les pièces autour de mon établi. Vous allez introduire un peu d'erreur dans les lectures en fonction de l'erreur possible des composants supplémentaires (les deux résistances). Cela pourrait réduire vos lectures de 10 % dans certains cas. Je peux vivre avec cela. Si vous ne pouvez pas, vous pouvez utiliser un amplificateur opérationnel et des résistances ou un convertisseur de niveau logique (disponible auprès de divers fournisseurs d'électronique. Sparkfun en a un ici: https://www.sparkfun.com/products/12009 J'obtiens parfois des lectures élevées sur cette jauge (en fait, j'ai montré ce produit sur mon schéma de câblage).

J'ai alimenté les ESP32 via USB. Cela comprenait le câblage d'un chargeur direct comme celui-ci: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… à la voiture, puis l'utilisation d'un concentrateur USB pour le séparer. Vous pouvez voir que j'ai utilisé des câbles USB à angle droit pour que tout fonctionne dans une petite zone (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

D'autres photos montrent des endroits où j'ai coupé des trous ou fait passer du fil. Chaque voiture sera différente. Soyez prudent, les couteaux et les ciseaux sont tranchants, l'électricité peut être dangereuse, veuillez donc débrancher la batterie avant de câbler les choses.

Étape 3: boîtier imprimé en 3D

Boîtier imprimé en 3D
Boîtier imprimé en 3D

J'ai utilisé plusieurs boîtiers imprimés en 3D pour cela.

  • Une jauge ronde générique à 2 écrans. Vous pouvez le voir sur ces photos de la première page. Je l'ai mis à côté de mon horloge sur mon tableau de bord.
  • Un style de coin à jauge unique qui s'adapte à la zone d'horloge d'une subaru impreza (wrx, sti, etc.) d'environ 2008 à 2014.
  • Une pièce à double jauge qui s'adapte sur les colonnes de volant et autres surfaces légèrement arrondies:

Vous pouvez les copier et les modifier en fonction de vos besoins. Aucun d'entre eux n'est parfait et ils nécessiteront tous un peu d'ajustement.

Quelques notes:

  • J'ai fini le mien avec du plastidip; c'est la méthode préférée des paresseux.
  • Le ponçage des plastiques produit des particules fines qui ne sont pas bonnes pour vous, utilisez un masque approprié.
  • J'ai utilisé du PETG pour mes boîtiers. L'ABS est également bon. Le PLA se déformera sous le soleil brûlant sur un tableau de bord.
Défi IdO
Défi IdO
Défi IdO
Défi IdO

Deuxième prix de l'IoT Challenge

Conseillé: