-------Ici------- Pas de cookies Rien à accepter Pas de pop-up Pas de pub |
|
|
  |
Je pense que vous connaissez les véhicules Car-Faller. Des bus et des camions qui roulent en suivant un fil de fer. Pour l'instant la seule action que l'on peut faire c'est de modifier l'itinéraire du véhicule en actionnant un aiguillage placé dans la route. Pour agir sur le véhicule, il faut lui installer un décodeur. Il y a bien l'Open DCC car, mais pour moi, les soudures à faire sont trop petites et trop rapprochées. Je me suis penché sur le problème pour faire assez petit pour rentrer dans un bus ou une remorque de camion, mais assez grand pour ne pas rater les soudures.
Je me suis rendu compte que je pouvais utiliser un ESP12
Mon article n'a pas pour objet de vous donner un projet "clé en main" mais de vous faire part des mes essais. Je vous rassure le véhicule roule bien.
Voici un peu en vrac toutes les possibilités :
- L'ESP12 est un module WIFI, donc on pilote le véhicule avec son smartphone. Les pages HTML sont dans votre programme.
- Tous les paramètres des CV sont modifiables en live. Vous pouvez passer à tout moment dans la page CV pour modifier des paramètres.
- Les mises à jour du programme se font en OTA (c'est à dire via le wifi....pratique, rien à démonter);
- On peut accélérer, freiner et stopper le véhicule.
- Tous ces mouvements se font avec un taux d'accélération et un taux de décélération pour plus de réalisme.
- Quand on ralentit de trop, les feux de stop s'allument.
- Clignotant gauche et droit, warning, phares, appel de phare, sont des fonctionnalités pilotées par votre smartphone.
- Vous disposez de 3 sorties pour leds initialement appelées L1, L2 et L3, que vous pouvez renommer (plafonnier, longue portée......)
- Ces 3 options peuvent être regroupées pour une action commune.
- Sytème anti-collision (débrayable).
- Système à deux stops (débrayable).
- Système d'allumage automatique des feux (débrayable).
- Option d'effets pour les leds (on/off, gyrophare, clignotement) et timing des clignotants modifiables (long, court, rapide, flash...)
Le système anti-collision
C'est un système qui permet de faire ralentir le véhicule pour qu'il ne heurte pas le véhicule devant lui. Chaque véhicule a une diode IR à l'arrière et un photo-transistor à l'avant. La diode IR est toujours active. Lorsque le photo-transistor capte l'IR du véhicule de devant, cela fait ralentir ....jusqu'à l'arrèter. Ce dispositif est débrayable "en live" car un peu trop de soleil empèche le véhicule de fonctionner.
Le système de stop
C'est un système qui permet de ralentir, voire d'arrèter le véhicule. Il y a un photo-transitor sous le véhicule qui capte des diodes IR dans la route. C'est un système à deux stops. La première diode IR (dans la route) rallentit le véhicule (valeur en CV) et s'il n'y a pas une deuxième IR en 5 secondes (Valeur en CV) le véhicule reprend sa vitesse initiale. S'il rencontre une deuxième IR dans les 5 secondes, il stoppe. Concrètement, vous mettez une diode IR dans la route avant un virage, le véhicule ralentira pour passer le virage. Pour un passage à niveau, la première IR (à 50cm du passage) ralentit le véhicule. La deuxième IR, pilotée par la gestion du passage à niveau, stoppe ou laisse passer le véhicule. Je suis content c'est assez réaliste. Ce dispositif est débrayable. Vous aurez peut-être à modifier la valeur de la résistance, c'est le seul moyen de jouer sur la sensibilité, puisque l'on est sur une entrée digitale.
Le système d'allumage automatique des feux
Une photo-résistance permet d'allumer ou d'éteindre les feux avant et arrière du véhicule. Même remarque que pour le système de stop, on est sur une entrée digitale, la sensibilité se règle donc avec la valeur de la résistance. C'est un dispositif débrayable.
ESP12
L'ESP12 est un module wifi qui se programme dans l'IDE arduino. Comment faire? je ne vais pas réécrire des pages qui existent déjà Intégrer ESP dans IDE arduino . Il existe différents ESP. J'utilise l'ESP12F (ou ESP12E). Vous pouvez le trouver pour moins de 1 euro. Tout le décodeur vous revient aux alentours de 5 euros.
On peut récupérer 11 GPIO (entrées/sorties) et 1 convertisseur analogique, ce qui est suffisant pour ce projet. Il fonctionne en 3.3V. On peut consommer jusqu'à 20 ma par sortie en + commun ( mais que 12 ma en masse commune). Je mets des résistances de 1K, qui procurent une luminosité satisfaisante et limitent la consommation d'une led à 1.5 ma. J'ai branché 16 leds sans problème.
L'ESP12F est un peu particulier. Il démarre sous différrents modes en fonction de l'alimentation de certaines pins. On peut consacrer une page entière pour expliquer ces modes de démarrage.
Pour me simplifier la vie j'utilise une platine que voici . Tant que l'ESP12 est dans ce module, on peut téléverser le programme et le tester.
Une fois sur votre circuit imprimé, il faudra pour qu'il démarre sur votre programme que :
- La pin 15 soit à la masse via une résistance de 10K
- La pin 2 soit au 3.3V via une résistance de 10K
- La pin 0 soit au 3.3v via une résistance de 10K
- La pin EN soit au 3.3v directement
Il y a d'autres restrictions, qui ne nous gènent pas dans ce projet (comme le TX à la masse).
J'alimente le véhicule par une batterie lipo de 3.7V. Il faut abaisser ce voltage par un régulateur de type LDO. J'utilisais pour mes premiers essais un AMS1117 mais après quelques recherches le HT7333 est plus performant.
Voici le plan minimum pour qu'un ESP12F puisse démarrer sur le programme que vous lui avez téléversé.
Je vous préviens je ne suis pas électronicien. Il est fort possible que vous rencontriez des bizarreries.. Pour vous donner une idée voila sur quoi j'ai travaillé pendant un mois (soudures sur soudures)
ESP12-Car schéma de principe
Explications des pins colonne de gauche puis colonne de droite.
- Pour l'alimentation, j'utilise un HT7333 qui tolère une différence de voltage entre le IN et le OUT très faible.
- RST (reset), cette pin reste en l'air, je ne la soude pas.
- EN (enable) doit être au 3.3V
- ADC est la seule entrée analogique de l'ESP. Je l'utilise pour le sytème anti collision.
- CSO, MISO GPIO9, GPIO10, MOSI et SCLK servent pour le bus SPI.. dont je ne me sers pas. GPIO9 et GPIO10 sont des broches inaccessibles en GPIO (il faut démonter l'ESP et faire des soudures)
- GPIO0, doit être reliée au 3.3V par une résistance de 10K pour que l'ESP puisse booter sur votre programme. Une autre résistance de 1K permet l'allumage des clignotants gauches.
- GPIO1, (TX en réalité) Une commande permet de transformer TX en GPIO1 (vous n'avez plus de "sérial") . Avec une résistance de 1K cela permet l'allumage de L1.
- GPIO2, doit être reliée au 3.3V par une résistance de 10K pour que l'ESP puisse booter sur votre programme. Une autre résistance de 1K permet l'allumage des clignotants droits.
- GPIO3, (RX en réalité) Une commande permet de transformer RX en GPIO3 (vous n'avez plus de "sérial") . Avec une résistance de 1K cela permet l'allumage de L2.
- GPIO4, Avec une résistance de 1K cela permet l'allumage des feux avant.
- GPIO5, Avec une résistance de 1K cela permet l'allumage de L3.
- GPIO12, Avec un photo-transitor, cela permet la création du système stop. (voir explications de mes "systèmes")
- GPIO13, Avec une résistance de 1K cela permet l'allumage des feux de stop.
- GPIO14, Avec une résistance de 1K cela permet l'allumage des feux arrière.
- GPIO15, doit être reliée au GND par une résistance de 10K pour que l'ESP puisse booter sur votre programme. Elle attaque un MOSFET de type BS170 pour pouvoir alimenter le moteur de traction du véhicule.
- GPIO16, Reliée à une photo-résistance cela permet la création du système d'allumage automatique des feux.
Les résistances des diodes leds sont de 1K. Vous pouvez abaisser légèrement cette valeur. Les diodes leds sont montées en 3.7V commun, cela permet de disposer de 20 ma par sortie. L'allumage de la led se fait par un digitalWrite(xx, LOW). La résistance de RX (GPIO3) est plus faible (680 ohm) car il y a déjà une résistance dans l'ESP. Toutes mes résistances sont au format 805. Je peux souder des 603 mais ce n'est pas nécessaire....malgré la taille du décodeur, il reste de la place.
J'utilise KIDCAD....Vous pouvez downloader mon projet, mais je vous préviens, il n'y a rien dans "les règles de l'art". Par exemple, pour le typon je n'ai jamais réussi à faire qu'un seul trait (à l'anglaise je crois) alors je n'utilise pas les couches F.Cu et B.Cu mais Eco2.User pour les traits et Edge.Cut pour le contour. Je fais des traits de 0.01 mm ce qui fait que ma CNC3018 passe au même endroit (j'ai honte mais ça marche)
Pour comprendre, l'ESP12 est soudé à l'envers, de l'autre côté de la plaque. Ceci me permet d'avoir une dimension de 25 sur 27.5mm, avec de "grandes surfaces" pour souder les fils des leds. Cette plaque peut se placer sans problème dans les bus, camions et remorques (de semi-remorques).
On peut voir que je n'ai pas trouvé les bonnes empreintes
Suit un autre dessin avec les composants. Je soude des petites tiges de fer (celles des résistances par exemple) afin de pouvoir souder l'ESP12 de l'autre coté de la plaque. On remarque que j'ai deux straps pour distribuer le GND de part et d'autre de la plaque. (Une version double face arrivera peut-être un jour)
Je fais ma plaque avec un graveur PCB, une CNC3018. Pour cela j'utilise trois logiciels :
- KIDCAD pour créer le circuit électronique et les fichiers gerber et excellon.
- FLATCAM pour créer les fichiers gcode à partir des fichiers gerber et excellon
- GRBLCONTROL pour graver le PCB à partir des fichiers gcode et piloter ma CNC3018
Dans FLATCAM, le paramètre de profondeur de gravage est de 0.1 mm (avec une mèche en biseau)
J'ai retrouvé une ancienne plaque, il y a quelques différences avec la dernière en date. Sur l'autre photo j'ai retourné la plaque pour y placer l'ESP à son emplacement (presque)
En route pour la partie logiciel
|