{"id":49,"date":"2026-04-17T16:25:08","date_gmt":"2026-04-17T14:25:08","guid":{"rendered":"http:\/\/christoams.hd.free.fr\/wordpress\/?p=49"},"modified":"2026-04-26T16:26:00","modified_gmt":"2026-04-26T14:26:00","slug":"%f0%9f%95%b9%ef%b8%8f-simulateur-2dof-diy-diy-domochris-fr-06-02-2026-projet-open-source","status":"publish","type":"post","link":"https:\/\/christoams.hd.free.fr\/wordpress\/2026\/04\/%f0%9f%95%b9%ef%b8%8f-simulateur-2dof-diy-diy-domochris-fr-06-02-2026-projet-open-source\/","title":{"rendered":"\ud83d\udd79\ufe0f SIMULATEUR 2DOF\u2013DIY DIY @domochris.fr 06\/02\/2026 Projet open source"},"content":{"rendered":"\n<p><strong>&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1016\" height=\"957\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/1.png\" alt=\"\" class=\"wp-image-51\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/1.png 1016w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/1-300x283.png 300w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/1-768x723.png 768w\" sizes=\"(max-width: 1016px) 100vw, 1016px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Cout :<\/strong><br>-Moteurs :100\u20ac ici&nbsp;smolka&nbsp;120w mais des moteurs de fauteuil roulant 250w 75&nbsp;rpm&nbsp;serais mieux.<br>-ESP32 : 5\u20ac<\/p>\n\n\n\n<p class=\"has-text-align-center\">-AS5600 : 5\u20ac<\/p>\n\n\n\n<p class=\"has-text-align-center\">-Drivers : 20\u20ac&nbsp;Motomonster&nbsp;BTS7960 (j\u2019en ai cram\u00e9 3&nbsp;!) ou&nbsp;sabertooth&nbsp;2&#215;32 135\u20ac (mais bien meilleur, il faudra adapter le code)<\/p>\n\n\n\n<p class=\"has-text-align-center\">-Alimentation : 60\u20ac<br>-Siege Baquet : 180\u20ac<br>-Bois ferraille&nbsp;visserie : 200\u20ac<br>-Volant&nbsp;Logetch&nbsp;g29&nbsp;: 230\u20ac<\/p>\n\n\n\n<p class=\"has-text-align-center\">-Ceinture 4 points&nbsp;: 38\u20ac<\/p>\n\n\n\n<p class=\"has-text-align-center\">-manette simulateur de vol&nbsp;: 80\u20ac<\/p>\n\n\n\n<p class=\"has-text-align-center\">&#8211;<br>Total&nbsp;: 920\u20ac mais avec de&nbsp;la r\u00e9cup&nbsp;et des dons il m\u2019a cout\u00e9 480\u20ac, merci Patrice pour le volant, merci Nico pour&nbsp;ventilot\/alim et merci la communaut\u00e9 qui m\u2019a aid\u00e9 pour les aspect technique\u2026&nbsp;\ud83d\ude0a&nbsp;et pour \u00eatre honn\u00eate un peu d\u2019IA pour la partie programmation.<\/p>\n\n\n\n<p class=\"has-text-align-center\">Petite&nbsp;video&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Simulateur dynamique 2 DOF DIY#simracing\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/-vhKbK3Xneo?start=2&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>1\ufe0f<\/strong><strong>\u20e3&nbsp;ARCHITECTURE G\u00c9N\u00c9RALE<\/strong><\/p>\n\n\n\n<p><strong>Principe<\/strong><\/p>\n\n\n\n<ul><li>Les informations des forces d\u2019une voiture sont extraites d\u2019un jeux vid\u00e9o<\/li><li>SimTools&nbsp;calcule les forces&nbsp;<strong>Roll \/ Pitch (etc\u2026)<\/strong><\/li><li>Envoie deux valeurs&nbsp;<strong>position cible<\/strong>&nbsp;via USB (s\u00e9rie)<\/li><li>ESP32(microcontr\u00f4leur) :<ul><li>lit&nbsp;la position r\u00e9elle (AS5600)<\/li><li>compare&nbsp;avec la cible<\/li><li>commande&nbsp;les moteurs via BTS7960<\/li><\/ul><\/li><li>Le si\u00e8ge se d\u00e9place autour d\u2019un&nbsp;<strong>pivot avant<\/strong><\/li><\/ul>\n\n\n\n<p>\ud83c\udfaf&nbsp;Type :&nbsp;<strong>2DOF\u2013 moteurs \u00e0 l\u2019arri\u00e8re<\/strong><\/p>\n\n\n\n<p><strong>2\ufe0f\u20e3&nbsp;\u00c9LECTRONIQUE (BRANCHEMENTS)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"531\" height=\"653\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/2.png\" alt=\"\" class=\"wp-image-54\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/2.png 531w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/2-244x300.png 244w\" sizes=\"(max-width: 531px) 100vw, 531px\" \/><\/figure>\n\n\n\n<p><strong>Mat\u00e9riel<\/strong><\/p>\n\n\n\n<p>-2 moteurs essuie-glace de camion 120w (ici&nbsp;smolka) mais des moteurs de fauteuil roulant de 250w serait encore mieux<\/p>\n\n\n\n<p>-2 AS5600 capteur angulaire magn\u00e9tique utilis\u00e9 avec le bus I2C (attention les AS5600 ont des adresses fix que l\u2019on ne peut pas changer, il faut donc avoir 2 bus i2c, les EPS32 ont plusieurs bus mais les&nbsp;arduino&nbsp;uno&nbsp;qu\u2019un seul)<\/p>\n\n\n\n<p>-2 drivers de puissance moto Monster BTS7960 capable de fournir jusqu\u2019\u00e0 43A sous 24v (tr\u00e8s sensible au d\u00e9faut de masse, j\u2019\u2019en ai cram\u00e9 3 dans mes tests, la&nbsp;sabertooth&nbsp;2&#215;32 est un meilleur choix (plus cher) mais il faudra adapter le code du microcontr\u00f4leur.<\/p>\n\n\n\n<p>&#8211; un ESP32<\/p>\n\n\n\n<p>-une alimentation 24v 50A 1000w (ou 2 de 12v mis en s\u00e9rie)<\/p>\n\n\n\n<p><strong>\ud83d\udd0b&nbsp;Alimentation<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>\u00c9l\u00e9ment<\/strong><\/td><td><strong>Tension<\/strong><\/td><\/tr><\/thead><tbody><tr><td>ESP32<\/td><td>5 V (Vin&nbsp;ou&nbsp;&nbsp;USB)<\/td><\/tr><tr><td>AS5600<\/td><td>3 V<\/td><\/tr><tr><td>BTS7960 logique<\/td><td>3 V<\/td><\/tr><tr><td>BTS7960 moteur<\/td><td>24 V (s\u00e9par\u00e9)<\/td><\/tr><tr><td>&nbsp;<\/td><td>&nbsp;<\/td><\/tr><tr><td>ALIM 24V+24V \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&nbsp;BTS7960 #1 B+\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 BTS7960 #2 B+&nbsp;GND&nbsp;&nbsp;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&nbsp;BTS7960 #1 B-\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500&nbsp;BTS7960 #2 B-\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 GND ESP32<\/td><td>&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u26a0\ufe0f&nbsp;<strong>MASSE COMMUNE OBLIGATOIRE<\/strong><\/p>\n\n\n\n<p><strong>\ud83d\udd0c&nbsp;BTS7960 (par moteur)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>BTS7960<\/strong><\/td><td><strong>ESP32<\/strong><\/td><\/tr><tr><td><\/td><td><\/td><\/tr><\/thead><tbody><tr><td>RPWM<\/td><td>RPWMx<\/td><\/tr><tr><td>LPWM<\/td><td>LPWMx<\/td><\/tr><tr><td>R_EN<\/td><td>RENx<\/td><\/tr><tr><td>L_EN<\/td><td>LENx<\/td><\/tr><tr><td>GND<\/td><td>GND<\/td><\/tr><tr><td>VCC<\/td><td>5 V<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>\ud83e\udded&nbsp;AS5600<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><td><strong>AS5600<\/strong><\/td><td><strong>ESP32<\/strong><\/td><\/tr><\/thead><tbody><tr><td>VCC<\/td><td>3 V<\/td><\/tr><tr><td>GND<\/td><td>GND<\/td><\/tr><tr><td>SDA<\/td><td>SDAx<\/td><\/tr><tr><td>SCL<\/td><td>SCLx<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Aimant centr\u00e9 sur l\u2019axe moteur&nbsp;\u26a0\ufe0f<br>Distance typique entre l\u2019aimant et l\u2019AS5600:&nbsp;<strong>1\u20132 mm<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"239\" height=\"317\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/3.jpg\" alt=\"\" class=\"wp-image-55\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/3.jpg 239w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/3-226x300.jpg 226w\" sizes=\"(max-width: 239px) 100vw, 239px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"513\" height=\"385\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/4.jpg\" alt=\"\" class=\"wp-image-56\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/4.jpg 513w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/4-300x225.jpg 300w\" sizes=\"(max-width: 513px) 100vw, 513px\" \/><\/figure>\n\n\n\n<p>Un support a \u00e9t\u00e9 fait via une imprimante 3D pour l\u2019AS5600 avec d\u2019un c\u00f4t\u00e9 l\u2019aimant reli\u00e9 \u00e0 l\u2019axe du moteur et de l\u2019autre le capteur AS5600. Le support pourra se tourner manuellement pour r\u00e9gler le centre du simulateur.<\/p>\n\n\n\n<p>Banc de test avec une planche \u00e0 pain (attention aux masses du driver BTS7960, c\u2019est tr\u00e8s sensible et risque de cramer le driver si pas pr\u00e9sente)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"512\" height=\"384\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/5.jpg\" alt=\"\" class=\"wp-image-57\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/5.jpg 512w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/5-300x225.jpg 300w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/5-510x384.jpg 510w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure>\n\n\n\n<p>Patte thermique \u00e0 mettre sur les drivers car pas pr\u00e9sent<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"406\" height=\"540\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/6.jpg\" alt=\"\" class=\"wp-image-58\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/6.jpg 406w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/6-226x300.jpg 226w\" sizes=\"(max-width: 406px) 100vw, 406px\" \/><\/figure>\n\n\n\n<p>Montage au propre des composants \u00e9lectronique avec des nappes<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"278\" height=\"209\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/7.jpg\" alt=\"\" class=\"wp-image-59\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"158\" height=\"211\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/7-1.jpg\" alt=\"\" class=\"wp-image-60\"\/><\/figure>\n\n\n\n<p>Mise en place de 2 alimentations 12v en s\u00e9rie de serveur pour avoir du 24v, si vous utilisez ce genre d\u2019alim il faut souder un fil entre 2 pattes pour que l\u2019alim d\u00e9marre (cela d\u00e9pend de l\u2019alimentation)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"376\" height=\"497\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/8.jpg\" alt=\"\" class=\"wp-image-61\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/8.jpg 376w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/8-227x300.jpg 227w\" sizes=\"(max-width: 376px) 100vw, 376px\" \/><\/figure>\n\n\n\n<p>On range tout le monde ensemble et mise en place d\u2019un ventilateur au-dessus des drivers pour extraire la chaleur avec un disjoncteur pour pouvoir couper la puissance, il manque encore des fusibles \u00e0 mettre sur les alimentations des drivers et un coup de point d\u2019arr\u00eat d\u2019urgence.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"566\" height=\"755\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/9.jpg\" alt=\"\" class=\"wp-image-62\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/9.jpg 566w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/9-225x300.jpg 225w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/figure>\n\n\n\n<p><strong>3\ufe0f<\/strong><strong>\u20e3&nbsp;PROGRAMMATION (EXPLICATION DU CODE)<\/strong><\/p>\n\n\n\n<p>Attention, j\u2019ai moi-m\u00eame d\u00e9velopp\u00e9 le&nbsp;firmware&nbsp;pour le microcontr\u00f4leur esp32, cela fonctionne bien pour moi mais je ne peux pas garantir qu\u2019il n\u2019y&nbsp;ai&nbsp;pas de bug \/ am\u00e9lioration&nbsp;a&nbsp;faire.<\/p>\n\n\n\n<p>La programmation s\u2019effectue via l\u2019IDE de&nbsp;l\u2019arduino, bien s\u00e9lectionner la carte esp32 et le bon port com, explication du programme inject\u00e9 dans l\u2019ESP32 (attention, j\u2019ai fait le code mais je ne garantit pas qu\u2019il n\u2019y ai pas de bug\u2026)&nbsp;:<\/p>\n\n\n\n<p><strong>\ud83d\udcda<\/strong><strong>&nbsp;Librairies<\/strong><\/p>\n\n\n\n<p>#include&nbsp;&lt;Arduino.h&gt;<\/p>\n\n\n\n<p>#include &lt;Wire.h&gt;<\/p>\n\n\n\n<ul><li>Wire : communication I\u00b2C avec les AS5600<\/li><li>Arduino.h&nbsp;: fonctions ESP32<\/li><\/ul>\n\n\n\n<p><strong>\ud83d\udd0c&nbsp;PINOUT<\/strong><\/p>\n\n\n\n<p><strong>Moteur 1 \u2013 ROLL (gauche) (branchement)<\/strong><\/p>\n\n\n\n<p>RPWM1 = 18&nbsp;&nbsp;&nbsp;\/\/ PWM sens +<\/p>\n\n\n\n<p>LPWM1 = 5&nbsp;&nbsp;&nbsp;&nbsp;\/\/ PWM sens &#8211;<\/p>\n\n\n\n<p>REN1&nbsp;&nbsp;=&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Enable droite<\/p>\n\n\n\n<p>LEN1&nbsp;&nbsp;=&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Enable gauche<\/p>\n\n\n\n<p><strong>Moteur 2 \u2013 PITCH (droite)<\/strong><\/p>\n\n\n\n<p>RPWM2 = 19<\/p>\n\n\n\n<p>LPWM2 = 23<\/p>\n\n\n\n<p>REN2&nbsp;&nbsp;=&nbsp;32<\/p>\n\n\n\n<p>LEN2&nbsp;&nbsp;=&nbsp;33<\/p>\n\n\n\n<p>\ud83d\udc49&nbsp;Les pins PWM sont&nbsp;<strong>compatibles LEDC ESP32<\/strong><br>\ud83d\udc49&nbsp;REN\/LEN servent de&nbsp;<strong>s\u00e9curit\u00e9 mat\u00e9rielle (enable\/disable)<\/strong><\/p>\n\n\n\n<p><strong>\ud83e\udded&nbsp;Capteurs AS5600 (position absolue)<\/strong><\/p>\n\n\n\n<p>SDA1 \/ SCL1 \u2192 AS5600 moteur 1<\/p>\n\n\n\n<p>SDA2 \/ SCL2 \u2192 AS5600 moteur 2<\/p>\n\n\n\n<p>Deux bus I\u00b2C s\u00e9par\u00e9s \u2192&nbsp;<strong>aucun conflit d\u2019adresse<\/strong><\/p>\n\n\n\n<p><strong>\u2699\ufe0f&nbsp;Param\u00e8tres importants<\/strong><\/p>\n\n\n\n<p>#define MIN_POS&nbsp;&nbsp;200<\/p>\n\n\n\n<p>#define MAX_POS&nbsp;&nbsp;3900<\/p>\n\n\n\n<p>\u27a1\ufe0f&nbsp;Prot\u00e8ge m\u00e9caniquement (pas de but\u00e9e)<\/p>\n\n\n\n<p>#define DEADZONE 15<\/p>\n\n\n\n<p>\u27a1\ufe0f&nbsp;\u00c9vite les oscillations autour de la cible<\/p>\n\n\n\n<p>#define TIMEOUT 300<\/p>\n\n\n\n<p>\u27a1\ufe0f&nbsp;Si&nbsp;SimTools&nbsp;s\u2019arr\u00eate \u2192 moteurs coup\u00e9s<\/p>\n\n\n\n<p><strong>\ud83c\udf9b\ufe0f&nbsp;PID (R\u00e9gulateur)&nbsp;<\/strong>organe de contr\u00f4le permettant d\u2019effectuer une r\u00e9gulation en boucle ferm\u00e9e<\/p>\n\n\n\n<p>float&nbsp;Kp&nbsp;= 1.4;&nbsp;&nbsp;&nbsp;\/\/ force<\/p>\n\n\n\n<p>float&nbsp;Kd&nbsp;= 0.25;&nbsp;&nbsp;\/\/ amortissement<\/p>\n\n\n\n<ul><li><strong>Pas de Ki<\/strong>&nbsp;\u2192 plus stable m\u00e9caniquement<\/li><li>R\u00e9glage parfait pour moteurs essuie-glace<\/li><li><\/li><\/ul>\n\n\n\n<p><strong>\ud83d\udcd0<\/strong><strong>&nbsp;Lecture AS5600<\/strong><\/p>\n\n\n\n<p>uint16_t readAS5600(TwoWire&nbsp;&amp;bus)<\/p>\n\n\n\n<ul><li>Lecture brute 0\u20134095<\/li><li>Position absolue<\/li><li>Si erreur \u2192 retour au centre (2048)<\/li><\/ul>\n\n\n\n<p>\ud83d\udc49&nbsp;S\u00e9curit\u00e9 logicielle int\u00e9gr\u00e9e<\/p>\n\n\n\n<p><strong>\u26a1&nbsp;Commande moteur<\/strong><\/p>\n\n\n\n<p>setMotor(rpwm,&nbsp;lpwm, valeur);<\/p>\n\n\n\n<p>Fonctionnement :<\/p>\n\n\n\n<ul><li>valeur&nbsp;&gt; 0 \u2192 sens 1<\/li><li>valeur&nbsp;&lt; 0 \u2192 sens 2<\/li><li>petite&nbsp;valeur \u2192 moteur arr\u00eat\u00e9<\/li><\/ul>\n\n\n\n<p>Zone morte PWM :<\/p>\n\n\n\n<p>if&nbsp;(abs(val) &lt; 5)<\/p>\n\n\n\n<p><strong>\ud83d\udd04&nbsp;Boucle principale<\/strong><\/p>\n\n\n\n<ol type=\"1\"><li>Lecture position r\u00e9elle<\/li><li>Lecture cible&nbsp;SimTools<\/li><li>V\u00e9rification timeout<\/li><li>Calcul erreur<\/li><li>PID (a&nbsp;param\u00e9trer en fonction du simu)<\/li><li>Envoi PWM moteurs<\/li><\/ol>\n\n\n\n<p>\u23f1\ufe0f&nbsp;Boucle \u2248&nbsp;<strong>200 Hz<\/strong>&nbsp;(delay&nbsp;5 ms)<\/p>\n\n\n\n<p><strong>\ud83d\udd04&nbsp;Le code<\/strong><\/p>\n\n\n\n<p>Pensez&nbsp;a&nbsp;bien s\u00e9lectionner la bonne carte dans l\u2019IDE ainsi que&nbsp;le &nbsp;bon&nbsp;port&nbsp;com:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"923\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/10-1024x923.jpg\" alt=\"\" class=\"wp-image-63\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/10-1024x923.jpg 1024w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/10-300x271.jpg 300w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/10-768x693.jpg 768w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/10.jpg 1150w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Le code (\u00e0 recopier dans l\u2019IDE&nbsp;arduino&nbsp;puis a t\u00e9l\u00e9verser dans l\u2019esp32)&nbsp;:<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\/*********************************************************************<br>SIMULATEUR 2DOF \u2013 VERSION COCKPIT FINALE cablage definitif<br>@Domochris.fr<br>ESP32 WROOM + 2x BTS7960 + 2x AS5600 + SimTools v3<br><br>\u2714 Pas de shutdown SimTools<br>\u2714 Pas de coup de poing logiciel<br>\u2714 Position absolue limit\u00e9e<br>\u2714 PID simple (P + D)<br>\u2714 Timeout s\u00e9curit\u00e9<br>*********************************************************************\/<br><br>#include &lt;Arduino.h&gt;<br>#include &lt;Wire.h&gt;<br><br>\/*********************************************************************<br>PINOUT<br>*********************************************************************\/<br><br>\/\/ ===== MOTEUR 1 \u2013 ROLL (gauche) =====<br>#define RPWM1 18<br>#define LPWM1 5<br>#define REN1 &nbsp;2<br>#define LEN1 &nbsp;4<br><br>\/\/ ===== MOTEUR 2 \u2013 PITCH (droite) =====<br>#define RPWM2 19<br>#define LPWM2 23<br>#define REN2 &nbsp;32<br>#define LEN2 &nbsp;33<br><br>\/\/ ===== AS5600 =====<br>#define SDA1 16<br>#define SCL1 17<br>#define SDA2 21<br>#define SCL2 22<br><br>\/*********************************************************************<br>PARAM\u00c8TRES<br>*********************************************************************\/<br><br>\/\/ Limites m\u00e9caniques (\u00e0 ajuster)<br>#define MIN_POS &nbsp;200<br>#define MAX_POS &nbsp;3900<br><br>\/\/ Zone morte position<br>#define DEADZONE 15<br><br>\/\/ Timeout communication SimTools (ms)<br>#define TIMEOUT 300<br><br>\/\/ PID (valeurs s\u00fbres)<br>float Kp = 1.4;<br>float Kd = 0.25;<br><br>\/*********************************************************************<br>VARIABLES<br>*********************************************************************\/<br><br>TwoWire I2C_1 = TwoWire(0);<br>TwoWire I2C_2 = TwoWire(1);<br><br>float pos1, pos2;<br>float target1 = 2048;<br>float target2 = 2048;<br><br>float err1, err2;<br>float lastErr1 = 0, lastErr2 = 0;<br><br>float pid1, pid2;<br>unsigned long lastSerial = 0;<br><br>\/*********************************************************************<br>LECTURE AS5600<br>*********************************************************************\/<br>uint16_t readAS5600(TwoWire &amp;bus)<br>{<br>bus.beginTransmission(0x36);<br>bus.write(0x0C);<br>if (bus.endTransmission(false) != 0) return 2048;<br><br>if (bus.requestFrom(0x36, 2) != 2) return 2048;<br><br>uint16_t hi = bus.read();<br>uint16_t lo = bus.read();<br>return ((hi &lt;&lt; 8) | lo) &amp; 0x0FFF;<br>}<br><br>\/*********************************************************************<br>COMMANDE MOTEUR<br>*********************************************************************\/<br>void setMotor(int rpwm, int lpwm, float val)<br>{<br>val = constrain(val, -255, 255);<br><br>\/\/ Zone morte PWM<br>if (abs(val) &lt; 5)<br>{<br>ledcWrite(rpwm, 0);<br>ledcWrite(lpwm, 0);<br>return;<br>}<br><br>if (val &gt; 0)<br>{<br>ledcWrite(rpwm, val);<br>ledcWrite(lpwm, 0);<br>}<br>else<br>{<br>ledcWrite(rpwm, 0);<br>ledcWrite(lpwm, -val);<br>}<br>}<br><br>\/*********************************************************************<br>SETUP<br>*********************************************************************\/<br>void setup()<br>{<br>Serial.begin(115200);<br><br>\/\/ I2C AS5600<br>I2C_1.begin(SDA1, SCL1, 400000);<br>I2C_2.begin(SDA2, SCL2, 400000);<br><br>\/\/ Enable BTS7960<br>pinMode(REN1, OUTPUT); pinMode(LEN1, OUTPUT);<br>pinMode(REN2, OUTPUT); pinMode(LEN2, OUTPUT);<br><br>digitalWrite(REN1, LOW); digitalWrite(LEN1, LOW);<br>digitalWrite(REN2, LOW); digitalWrite(LEN2, LOW);<br><br>\/\/ PWM ESP32 \u2013 20 kHz \/ 8 bits<br>ledcAttach(RPWM1, 20000, 8);<br>ledcAttach(LPWM1, 20000, 8);<br>ledcAttach(RPWM2, 20000, 8);<br>ledcAttach(LPWM2, 20000, 8);<br>}<br><br>\/*********************************************************************<br>LOOP<br>*********************************************************************\/<br>void loop()<br>{<br>\/\/ Lecture position<br>pos1 = readAS5600(I2C_1);<br>pos2 = readAS5600(I2C_2);<br><br>\/\/ Lecture SimTools<br>if (Serial.available())<br>{<br>target1 = Serial.parseFloat();<br>target2 = Serial.parseFloat();<br><br>target1 = constrain(target1, MIN_POS, MAX_POS);<br>target2 = constrain(target2, MIN_POS, MAX_POS);<br><br>lastSerial = millis();<br>}<br><br>\/\/ Timeout s\u00e9curit\u00e9<br>if (millis() &#8211; lastSerial &gt; TIMEOUT)<br>{<br>digitalWrite(REN1, LOW); digitalWrite(LEN1, LOW);<br>digitalWrite(REN2, LOW); digitalWrite(LEN2, LOW);<br>setMotor(RPWM1, LPWM1, 0);<br>setMotor(RPWM2, LPWM2, 0);<br>return;<br>}<br><br>\/\/ Calcul erreur<br>err1 = target1 &#8211; pos1;<br>err2 = target2 &#8211; pos2;<br><br>\/\/ Zone morte position<br>if (abs(err1) &lt; DEADZONE &amp;&amp; abs(err2) &lt; DEADZONE)<br>{<br>digitalWrite(REN1, LOW); digitalWrite(LEN1, LOW);<br>digitalWrite(REN2, LOW); digitalWrite(LEN2, LOW);<br>setMotor(RPWM1, LPWM1, 0);<br>setMotor(RPWM2, LPWM2, 0);<br>return;<br>}<br><br>\/\/ Activer drivers<br>digitalWrite(REN1, HIGH); digitalWrite(LEN1, HIGH);<br>digitalWrite(REN2, HIGH); digitalWrite(LEN2, HIGH);<br><br>\/\/ PID<br>pid1 = Kp * err1 + Kd * (err1 &#8211; lastErr1);<br>pid2 = Kp * err2 + Kd * (err2 &#8211; lastErr2);<br><br>lastErr1 = err1;<br>lastErr2 = err2;<br><br>\/\/ Commande moteurs<br>setMotor(RPWM1, LPWM1, pid1);<br>setMotor(RPWM2, LPWM2, pid2);<br><br>delay(5);<br>}<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>4\ufe0f<\/strong><strong>\u20e3&nbsp;M\u00c9CANIQUE (POINT CRUCIAL)<\/strong><\/p>\n\n\n\n<p>Le simulateur doit \u00eatre bien rigide, le centrage de la partie haute du simulateur se fait avec le pilote sur le si\u00e8ge et un tube gliss\u00e9 en dessous pour trouver le point pivot (pour que les moteurs ne force pas trop). Je suis partie avec le haut fait en tube carr\u00e9 de 25mm soud\u00e9 et une croix pour fixer le cardan.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"416\" height=\"555\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/11.jpg\" alt=\"\" class=\"wp-image-64\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/11.jpg 416w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/11-225x300.jpg 225w\" sizes=\"(max-width: 416px) 100vw, 416px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"470\" height=\"352\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/12.jpg\" alt=\"\" class=\"wp-image-65\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/12.jpg 470w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/12-300x225.jpg 300w\" sizes=\"(max-width: 470px) 100vw, 470px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"578\" height=\"434\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/13.jpg\" alt=\"\" class=\"wp-image-66\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/13.jpg 578w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/13-300x225.jpg 300w\" sizes=\"(max-width: 578px) 100vw, 578px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"578\" height=\"433\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/14.jpg\" alt=\"\" class=\"wp-image-67\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/14.jpg 578w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/14-300x225.jpg 300w\" sizes=\"(max-width: 578px) 100vw, 578px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"423\" height=\"565\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/15.jpg\" alt=\"\" class=\"wp-image-68\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/15.jpg 423w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/15-225x300.jpg 225w\" sizes=\"(max-width: 423px) 100vw, 423px\" \/><\/figure>\n\n\n\n<p><strong>4\ufe0f<\/strong><strong>\u20e3&nbsp;Quelques \u00e9tapes&nbsp;:<\/strong><\/p>\n\n\n\n<p>D\u00e9coupe des barres de fers \u00e0 45\u00b0<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"221\" height=\"294\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/16.jpg\" alt=\"\" class=\"wp-image-69\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"320\" height=\"425\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/17.jpg\" alt=\"\" class=\"wp-image-70\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/17.jpg 320w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/17-226x300.jpg 226w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/figure>\n\n\n\n<p>On fait gaffe a ses&nbsp;p\u2019tits&nbsp;doigts&nbsp;!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"343\" height=\"458\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/18.jpg\" alt=\"\" class=\"wp-image-71\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/18.jpg 343w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/18-225x300.jpg 225w\" sizes=\"(max-width: 343px) 100vw, 343px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"395\" height=\"296\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/19.jpg\" alt=\"\" class=\"wp-image-72\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/19.jpg 395w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/19-300x225.jpg 300w\" sizes=\"(max-width: 395px) 100vw, 395px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"378\" height=\"285\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/20.jpg\" alt=\"\" class=\"wp-image-73\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/20.jpg 378w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/20-300x226.jpg 300w\" sizes=\"(max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"258\" height=\"345\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/21.jpg\" alt=\"\" class=\"wp-image-74\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/21.jpg 258w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/21-224x300.jpg 224w\" sizes=\"(max-width: 258px) 100vw, 258px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"391\" height=\"523\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/22.jpg\" alt=\"\" class=\"wp-image-75\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/22.jpg 391w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/22-224x300.jpg 224w\" sizes=\"(max-width: 391px) 100vw, 391px\" \/><\/figure>\n\n\n\n<p>Le support du bas a \u00e9t\u00e9 fait en bois avec une planche, une poutre ou est reli\u00e9 le cardan et des jambes de force pour supporter l\u2019efforts<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"368\" height=\"490\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/23.jpg\" alt=\"\" class=\"wp-image-76\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/23.jpg 368w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/23-225x300.jpg 225w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"368\" height=\"490\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/24.jpg\" alt=\"\" class=\"wp-image-77\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/24.jpg 368w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/24-225x300.jpg 225w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><\/figure>\n\n\n\n<p><strong>\u2699\ufe0f&nbsp;Cin\u00e9matique moteurs<\/strong><\/p>\n\n\n\n<p><strong>MOTEUR 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOTEUR 2<\/strong><\/p>\n\n\n\n<p><strong>(Roll&nbsp;gauche)&nbsp;&nbsp;&nbsp;(Roll droite)<\/strong><\/p>\n\n\n\n<p><strong>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<\/strong><\/p>\n\n\n\n<p><strong>Bras 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bras 2<\/strong><\/p>\n\n\n\n<p><strong>\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/<\/strong><\/p>\n\n\n\n<p><strong>\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/<\/strong><\/p>\n\n\n\n<p><strong>[ SI\u00c8GE<\/strong><strong>&nbsp;]<\/strong><\/p>\n\n\n\n<p><strong>|<\/strong><\/p>\n\n\n\n<p><strong>PIVOT<\/strong><\/p>\n\n\n\n<p><strong>|<\/strong><\/p>\n\n\n\n<p><strong>BASE<\/strong><\/p>\n\n\n\n<p><strong>\u2699\ufe0f&nbsp;G\u00e9om\u00e9trie<\/strong><\/p>\n\n\n\n<ul><li>Pivot avant (cardan \/ rotule)<\/li><li>Moteurs \u00e0 l\u2019arri\u00e8re<\/li><li>Bras moteurs \u2192 biellettes \u2192 ch\u00e2ssis si\u00e8ge<\/li><\/ul>\n\n\n\n<p><strong>\ud83d\udccf&nbsp;Longueur des bras moteurs<\/strong><\/p>\n\n\n\n<p>\u2705&nbsp;<strong>Recommand\u00e9 : 45 \u00e0 55 mm<\/strong><br>\ud83c\udfaf&nbsp;<strong>Id\u00e9al : 50 mm (axe \u2192 rotule)<\/strong><\/p>\n\n\n\n<p><strong>Poids total Longueur<\/strong><\/p>\n\n\n\n<p>&lt; 80 kg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55 mm<\/p>\n\n\n\n<p>80\u2013100 kg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45\u201350 mm<\/p>\n\n\n\n<p>&gt; 100 kg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40\u201345 mm<\/p>\n\n\n\n<p><strong>\ud83d\udcd0&nbsp;Position neutre<\/strong><\/p>\n\n\n\n<ul><li>Bras moteur&nbsp;<strong>horizontal<\/strong><\/li><li>Biellettes&nbsp;<strong>verticales&nbsp;<\/strong>(angle a 90\u00b0 entre le bras et les biellettes)<\/li><li>AS5600 \u2248&nbsp;<strong>2048<\/strong><\/li><\/ul>\n\n\n\n<p>\u26a0\ufe0f&nbsp;Jamais en but\u00e9e au repos<\/p>\n\n\n\n<p><strong>\ud83d\udd29&nbsp;Mat\u00e9riel conseill\u00e9<\/strong><\/p>\n\n\n\n<ul><li>Rotules de quad utilis\u00e9 ou cardan int\u00e9rieur de voiture<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"211\" height=\"282\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/26.jpg\" alt=\"\" class=\"wp-image-78\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"214\" height=\"285\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/27.jpg\" alt=\"\" class=\"wp-image-79\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"222\" height=\"296\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/28.jpg\" alt=\"\" class=\"wp-image-80\"\/><\/figure>\n\n\n\n<p>Ch\u00e2ssis rigide (z\u00e9ro flexion)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"138\" height=\"184\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/29.jpg\" alt=\"\" class=\"wp-image-81\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"167\" height=\"222\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/30.jpg\" alt=\"\" class=\"wp-image-82\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"191\" height=\"254\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/31.jpg\" alt=\"\" class=\"wp-image-83\"\/><\/figure>\n\n\n\n<p>Les moteurs sont mont\u00e9s sur 2 \u00e9querres, le bras de levier fait 5cm entre axes pour une courses de 5,5 cm, en g\u00e9n\u00e9ral on a un d\u00e9battement de 7 a10\u00b0 soit 14 \u00e0 20\u00b0 au total<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"191\" height=\"426\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/32.png\" alt=\"\" class=\"wp-image-84\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/32.png 191w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/32-135x300.png 135w\" sizes=\"(max-width: 191px) 100vw, 191px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"329\" height=\"439\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/33.jpg\" alt=\"\" class=\"wp-image-85\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/33.jpg 329w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/33-225x300.jpg 225w\" sizes=\"(max-width: 329px) 100vw, 329px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"346\" height=\"462\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/34.jpg\" alt=\"\" class=\"wp-image-86\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/34.jpg 346w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/34-225x300.jpg 225w\" sizes=\"(max-width: 346px) 100vw, 346px\" \/><\/figure>\n\n\n\n<p>Le bras de levier (de 5cm) est perc\u00e9 en biseau pour marquer le striage de l\u2019axe du moteur et s\u00e9r\u00e9 en force<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"326\" height=\"437\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/35.jpg\" alt=\"\" class=\"wp-image-88\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/35.jpg 326w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/35-224x300.jpg 224w\" sizes=\"(max-width: 326px) 100vw, 326px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"255\" height=\"335\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/36.jpg\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/36.jpg 255w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/36-228x300.jpg 228w\" sizes=\"(max-width: 255px) 100vw, 255px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"326\" height=\"435\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/37.jpg\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/37.jpg 326w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/37-225x300.jpg 225w\" sizes=\"(max-width: 326px) 100vw, 326px\" \/><\/figure>\n\n\n\n<p><strong>\ud83d\udd29&nbsp;Ceinture 4 points<\/strong><\/p>\n\n\n\n<p>Petit rajout de derni\u00e8re minute car la s\u00e9curit\u00e9 c\u2019est important&nbsp;!!! j\u2019ai rajout\u00e9 une ceinture 4 points qui se serre lorsque l\u2019on frein (on peut m\u00eame rajouter 2 moteurs qui tendront un cot\u00e9 ou l\u2019autre en fonction de la voiture).<\/p>\n\n\n\n<p>La ceinture 4 points s\u2019accrocher&nbsp;a&nbsp;une partie fixe du b\u00e2tis (arri\u00e8re) tandis que l\u2019autre partie s\u2019accroche au niveau du&nbsp;siege&nbsp;qui lui bouge avec le pilote pour que lorsque l\u2019on frein la ceinture se resserre sur nous<\/p>\n\n\n\n<p>Cela rajoute pas mal au r\u00e9alisme.<br>Ceinture 1<sup>er<\/sup>&nbsp;prix (que je d\u00e9conseille pour une vraie voiture\u2026)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"778\" height=\"583\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/38.jpg\" alt=\"\" class=\"wp-image-91\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/38.jpg 778w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/38-300x225.jpg 300w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/38-768x576.jpg 768w\" sizes=\"(max-width: 778px) 100vw, 778px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"768\" height=\"1024\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/39-768x1024.jpg\" alt=\"\" class=\"wp-image-92\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/39-768x1023.jpg 768w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/39-225x300.jpg 225w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/39.jpg 782w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p>La ceinture est accroch\u00e9 au bati du simulateur via un gros ressort (histoire de pas mourir etouff\u00e9&nbsp;!) et tendra la ceinture d\u00e9s que l\u2019on freinera et que le simulateur penchera en avant.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"767\" height=\"1024\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/40-1-767x1024.jpg\" alt=\"\" class=\"wp-image-94\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/40-1-767x1024.jpg 767w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/40-1-225x300.jpg 225w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/40-1-768x1025.jpg 768w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/40-1.jpg 783w\" sizes=\"(max-width: 767px) 100vw, 767px\" \/><\/figure>\n\n\n\n<p><strong>5\ufe0f<\/strong><strong>\u20e3&nbsp;PARAM\u00c9TRAGE SIMTOOLS V3<\/strong><\/p>\n\n\n\n<p>Dans&nbsp;simtools&nbsp;v3, il faut en 1<sup>er<\/sup>&nbsp;t\u00e9l\u00e9charger le&nbsp;pluging&nbsp;s\u00e9rial puis le param\u00e9trer&nbsp;:<br>choisir le bon port com, vitesse 115200, 8bit de donn\u00e9es, pas de parit\u00e9 et un bit de stop.<br>On met une r\u00e9solution de 10 bits (rapport a l\u2019AS5600 qui utilise une plage de 0 \u00e0 4096)<\/p>\n\n\n\n<p>Dans interface Output on extrait les 2 1<sup>er<\/sup>&nbsp;axes (2 DOF) du jeu&nbsp;: &lt;Axis1a&gt;,&lt;Axis2a&gt; toutes les 10 ms<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"628\" height=\"343\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/41.jpg\" alt=\"\" class=\"wp-image-97\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/41.jpg 628w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/41-300x164.jpg 300w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><\/figure>\n\n\n\n<p>Il faut aussi t\u00e9l\u00e9charger le plugin \u00ab&nbsp;Generic&nbsp;2D Advanced&nbsp;\u00bb<\/p>\n\n\n\n<p>Apr\u00e8s avoir t\u00e9l\u00e9charger les plugins du jeu que l\u2019on souhaite, on fait le param\u00e9trage (en n\u2019oubliant pas d\u2019inverser&nbsp;quelques commandes moteurs&nbsp;et d\u2019avoir mis aussi des param\u00e8tres dans \u00ab&nbsp;Flt&nbsp;\u00bb puis apr\u00e8s avoir sauv\u00e9 le param\u00e9trage on peut tester via le bouton Test setting, si \u00e7a bouge c\u2019est bien&nbsp;! si le mouvement effectu\u00e9 (Pitch&nbsp;Surge&nbsp;Sway etc\u2026) va dans le bon sens c\u2019est encore mieux&nbsp;!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"636\" height=\"349\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/42.jpg\" alt=\"\" class=\"wp-image-100\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/42.jpg 636w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/42-300x165.jpg 300w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><\/figure>\n\n\n\n<p>Essayez de ne pas d\u00e9passer 120 \/130% dans l\u2019Axis Total<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"758\" height=\"568\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/43.jpg\" alt=\"\" class=\"wp-image-101\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/43.jpg 758w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/43-300x225.jpg 300w\" sizes=\"(max-width: 758px) 100vw, 758px\" \/><\/figure>\n\n\n\n<ul><li>Output type :&nbsp;<strong>Serial<\/strong><\/li><li>Valeurs envoy\u00e9es :&nbsp;<strong>200 \u2192 3900<\/strong><\/li><li>Sway \/ Surge \/ Heave&nbsp;\/Roll&nbsp;\/&nbsp;Pitch :<ul><li>Augmenter progressivement<\/li><\/ul><\/li><li>Smoothing&nbsp;faible<\/li><\/ul>\n\n\n\n<p>J\u2019utilise aussi un dernier plugin (Game Plugin&nbsp;Builder&nbsp;)&nbsp;qui visuellement va faire bouger une repr\u00e9sentation de la voiture en fonction des forces (il ne fonctionnera&nbsp;que en&nbsp;cour&nbsp;de jeux) il vaut mieux avoir un 2eme \u00e9cran pour pouvoir l\u2019afficher et modifier&nbsp;a&nbsp;la voler&nbsp;des r\u00e9glage&nbsp;dans&nbsp;simtools<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1023\" height=\"605\" src=\"http:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/44.jpg\" alt=\"\" class=\"wp-image-102\" srcset=\"https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/44.jpg 1023w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/44-300x177.jpg 300w, https:\/\/christoams.hd.free.fr\/wordpress\/wp-content\/uploads\/2026\/04\/44-768x454.jpg 768w\" sizes=\"(max-width: 1023px) 100vw, 1023px\" \/><\/figure>\n\n\n\n<p><strong>6\ufe0f<\/strong><strong>\u20e3&nbsp;CHECK-LIST AVANT UTILISATION<\/strong><\/p>\n\n\n\n<p>\u2705&nbsp;Moteurs arr\u00eat\u00e9s si&nbsp;SimTools&nbsp;stop<br>\u2705&nbsp;Pas de mouvement au d\u00e9marrage<br>\u2705&nbsp;Bras jamais en but\u00e9e<br>\u2705&nbsp;Timeout fonctionnel<br>\u2705&nbsp;Pas d\u2019oscillation au centre<\/p>\n\n\n\n<p><strong>7\ufe0f<\/strong><strong>\u20e3&nbsp;AM\u00c9LIORATIONS POSSIBLES (OPTIONNEL)<\/strong><\/p>\n\n\n\n<p>\ud83d\udd39&nbsp;Coup de poing mat\u00e9riel (coupe alim moteurs)<br>\ud83d\udd39&nbsp;Filtrage vitesse (acc\u00e9l\u00e9ration progressive)<br>\ud83d\udd39&nbsp;EEPROM pour sauvegarder centre<\/p>\n\n\n\n<p><strong>\ud83c\udfc6&nbsp;CONCLUSION<\/strong><\/p>\n\n\n\n<p>\ud83d\udc49&nbsp;On a maintenant un simulateur fonctionnel, f\u00e9licitation&nbsp;!<\/p>\n\n\n\n<p>On peut rajouter&nbsp;:<\/p>\n\n\n\n<p>-Rajouter un moteur avec une masselotte d\u00e9sax\u00e9 pour simuler les vibrations du moteur, rajouter un casque de r\u00e9alit\u00e9 virtuel (attention au mal des transport\u2026)<\/p>\n\n\n\n<p>-bass&nbsp;shakers pour la p\u00e9dale de frein, ainsi que pour simuler les vibreurs, et&nbsp;vibration moteur<\/p>\n\n\n\n<p>-tensionneur&nbsp;de harnais<\/p>\n\n\n\n<p>-Wind simulator pour la sensation de vitesse<\/p>\n\n\n\n<p>-frein \u00e0 main&nbsp;rally<\/p>\n\n\n\n<p>-clavier magn\u00e9tique pour virer souris, clavier et \u00e0 dispo une fois install\u00e9<\/p>\n\n\n\n<p>-boutons pour les fonctions du v\u00e9hicule (d\u00e9marrer, essuis glaces, traction control,&nbsp;etc&#8230;)<\/p>\n\n\n\n<p>-3eme DOF pour sentir la voiture chasser ou carr\u00e9ment 6 DOF\u2026<\/p>\n\n\n\n<p>Les&nbsp;modif&nbsp;sont infinis&nbsp;\ud83d\ude0a<\/p>\n\n\n\n<p>Bon bricolage<\/p>\n\n\n\n<p>@Domochris.fr<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Simracing, championnat du monde \ud83d\ude05\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/r7xx_dsZrkE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Cout :-Moteurs :100\u20ac ici&nbsp;smolka&nbsp;120w mais des moteurs de fauteuil roulant 250w 75&nbsp;rpm&nbsp;serais mieux.-ESP32 : 5\u20ac -AS5600 : 5\u20ac -Drivers : 20\u20ac&nbsp;Motomonster&nbsp;BTS7960 (j\u2019en ai cram\u00e9 3&nbsp;!) ou&nbsp;sabertooth&nbsp;2&#215;32 135\u20ac (mais bien meilleur, il faudra adapter le code) -Alimentation : 60\u20ac-Siege Baquet : 180\u20ac-Bois ferraille&nbsp;visserie : 200\u20ac-Volant&nbsp;Logetch&nbsp;g29&nbsp;: 230\u20ac -Ceinture 4 points&nbsp;: 38\u20ac -manette simulateur de vol&nbsp;: 80\u20ac [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":51,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/posts\/49"}],"collection":[{"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=49"}],"version-history":[{"count":9,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/posts\/49\/revisions"}],"predecessor-version":[{"id":130,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/posts\/49\/revisions\/130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/media\/51"}],"wp:attachment":[{"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=49"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=49"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/christoams.hd.free.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}