Toujours en recherche d'animations pour nos bateaux, je suis tombé sur une carte à base d'ESP32, multi fonctions.
L'auteur "CROKY B", c'est inspiré du travail de "DIY999" prévu pour des camions RC et modifié pour des bateaux RC.
Au final, C'est une gestion complète du bateau très poussée avec configuration adaptée aux divers protocoles radio, SBUS, PPM SUM, PWM.
Le gros plus, c'est un choix énorme de divers sons diesel, de divers sons bateaux, jusqu'a trois variateurs moteurs et mixages et nombreuses animations "LED".
Il seras également possible d'ajouter vos propres sons.
L'auteur a concocté deux versions pour cette carte MAXI et MINI selon vos besoin et votre radio.
Un clic sur les images permet de les agrandir.
github.com=La source code (system MAXI) et carte, etc..
github.com=La source code (system MINI) et carte, etc..
github.com=La source code pour le projet d'origine (TheDIYGuy999/Rc_Engine_Sound).
vintage-rc.net=Unité de contrôle gérant le son , les lumières etc... Le tout sous une carte esp32 par l'auteur de ce projet.
laroyale-modelisme.net=La meme carte multi-fonctions.
jlcpcb.com=Le fabricant de circuit imprimé à qui vous pourrez envoyer vos fichiers GERBER.
culture-maritime.com=Signaux sonores en navigation.
youtube.com=Vidéo signaux sonores en navigation.
admad-penerf.fr=Feux et marques des navires.
electroniqueamateur.blogspot.com=Programmer l'ESP32 avec l'IDE Arduino (premiers pas).
locoduino.org=La bibliothèque ScheduleTable qui servira à gérer les ACTIONS.
docs.espressif.com=Le module RMT (Remote Control) utilisé pour recevoir les signaux.
nitrathor.fr=Fiches sur l'ESP32 NodeMCU.
sitakiki.fr=Un code pour lire des signaux RC PWM avec ESP32(à utiliser seul), lecture dans le moniteur série.
vous pouvez télécharger le.INO correspondant en faisant "clic droit" => enregistrer le lien sous... : esp32readpwm.ino.
Pour un premier essai, je me suis procuré un ESP32 pour tester ce projet que je vais réaliser dans un premier temps sur un "breadboard".
Ce projet n'utilise pas le WiFi de l'esp32 mais sa rapidité de calcul et le nombre de ses pins plus nombreux que sur un Arduino.
Par contre ce microcontoleur est en 3 volts et ses gpio (les entrées/sorties) devront donc etre reliés via des résistances 330 ohms aux différents signaux.
Ayant un récepteur FrSky ancienne génération, je raccorderais quatre voies (via les résistances) pour un premier essai.
Dans l'ordre: ch1=D13, ch2=D12, ch3=D14, ch4=D27.
L'ampli audio (PAM8403) sur les GPIO D25 et D26.
Le récepteur est alimenté par un accu 4,8 volts.
L'ESP32 est alimenté par le port USB du PC.
L'ampli audio (PAM8403)est alimenté par un accu 4,8 volts..
Tout les "moins" sont reliés ensemble (ESP32, récepteur, ampli).
Le code seras téléchargé à partir du "GITHUB" voir lien ci-dessus.
Pour fonctionner tous les fichiers devront etre dézippé dans un même répertoire, via l'environnement (IDE) ARDUINO pour moi la version1.8.13.
Les librairies présentes dans ce github seront installées dans le répertoire "librairie" de votre ARDUINO.
Il vous restera à définir votre "setup" à partir de la page html "Config_Croky_b".
Répertoire contenant vos fichiers dézippés
Fichiers du répertoire "Boat_Engine_system_MAXIVer5_5
En ouvrant le fichier: "Boat_Engine_system_MAXIVer5_5.ino", vous ouvrez tout les autres fichiers nécessaire dans l'IDE ARDUINO
Configurateur "SETUP" (html)
Choix carte ESP32 dans onglet "outil" (attention au schéma partition mémoire).
Attention, pour ceux qui utilise Sbus, le signal passe déja par un transistor avant de rejoindre D39.
Aperçu gerber board maxi
Carte avec extension 16 voies SX1509 par Croky B (version MAXI).
Pinboard de la carte Croky B.
carte version mini par Croky B.
Listing composants hors connectique.
fr.aliexpress.com=ESP32 DEVKIT V1 30 pins.
amazon.fr=pins header male et femelle (barette sécable).
amazon.fr=transistor BC337-25.
amazon.fr=Transistor MOSFET IRLZ44N.
amazon.fr=Ampli audio PAM8403.
fr.aliexpress.com=Régulateur tension 7805.
fr.aliexpress.com=Condensateur électrochimique polarisé 1000UF 16v.
fr.aliexpress.com=Carte SX1509.
Le PCB carte MAXI fabriqué par JLCPCB.
Le PCB carte MINI fabriqué par JLCPCB.
Avec l'ampli audio "PAM8403" le son est déjà bien.
Pour un son plus puissant, qui s'entendent plus loin sur l'eau, je vais utiliser un ampli 10 watts en 12 volts.
Je ne vais donc pas installer le PAM8403 sur la carte mais raccorder un ampli externe sur les Pin prévus sur le schéma ci-dessus.
L'ampli stéréo 12 volts 2 x 10 watts de chez Amazon.
amazon.fr=ampli stéréo 12v 10w.
Pour l'ampli, voici les connections.
Les 2 HP 2 x 5 watts 8 ohms de chez Amazon.
amazon.fr=2x hp 5w 8 ohms.
Quand l'action 1 est active
Les Leds sont allumées
Flash=Led clignotante
ONTIME = Temps en millisecondes ou la led sera allumée
OFFTIME = Temps en millisecondes ou la led sera Eteinte
Na= Non utilisée pour cette action
Commande de l'action, un interrupteur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupteur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Quand l'action 2 est active
mise en route du moteur de l'ancre pour la descente
Quand l'action 1 est inactive
mise en route du moteur de l'ancre pour la montée
Choix du type de bateau
son diffrent lors du mode "brume"
-20m son : Court long court +20m cloche
Temps Ancre: temps d'activation du moteur
Commande de l'action
un interrupteur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupetur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Mode "BRUME" est actif
Allumage des leds
Sons "visibilité réduite" actif, toutes les 2mins, sauf mouillage toute les min
Bateau avec erre, Son long, Bateau sans erre,2 sons longs
Choix du type de bateau
Remorqueur et peche : qand l'action 1 est active, Son long deux courts
Pilote: 4 sons courts
autres: qand l'action 1 est active = Navire remorqué: Long 3 courts
Commande de l'action
un interrupetur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupetur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Mode "Manoeuvre" est actif
Sons "Manoeuvre" actif
Possibilité de mettre une lampe qui clignotera sur le même rythme que les sons
les sons sont commandes par la voie "derive" et "gaz"
Vire a babord: 2 sons courts, Vire a tribord: Son court
battre en arriere: 3 sons courts
Commande de l'action
un interrupetur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupetur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Mode "Avertissement" est actif
Sons "avertissement" actif
Possibilité de mettre une lampe qui clignotera sur le même rythme que les sons
Même led que l'action4
les sons sont commandes par la voie "Aillerons" et "profondeur"
Lorsque le mode "avertissement" est actif, le mode manuel on/off du moteur est temporairement desactivé
Rattrape par babord: 1 son long et 2 sons courts
Rattrape par tribord: 1 son long et 1 Son court
Acceptation: Long court Long court
Commande de l'action
un interrupetur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupteur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Mode "Mitraillette" est actif
Sons "mitraillette" actif
Possibilité de mettre une lampe qui clignotera sur le même rythme que les sons pour simuler le flash du canon
Servo 3 actif: rotation de la tourelle
Commande de l'action
un interrupetur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupteur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Mode "canon" est actif
Sons "canon" actif
Possibilité de mettre une lampe qui clignotera sur le même rythme que les sons pour simuler le flash du canon
Servo 1 et 2 actif: elevation du canon et rotation
Commande de l'action
un interrupetur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupteur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Active le son "Alarme"
Choix des leds (flash)
ONTIME = Temps en millisecondes ou la led sera allumée
OFFTIME = Temps en millisecondes ou la led sera éteinte
Commande de l'action
un interrupteur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupetur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Si Auto Light est coché: les leds sont automatiquement allumées lorsque le moteur démarre
sinon elles sont pilotées par la voie choisie ( mais elles ne seront allumées que quand le moteur aura demarré)
Choix des leds et flash
ONTIME = Temps en millisecondes ou la led sera allumée
OFFTIME = Temps en millisecondes ou la led sera Eteinte
Commande de l'action
un interrupetur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupetur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Les Leds sont pilotées par la voie choisie ( mais elles ne seront allumées que quand le moteur aura demarré)
Choix des leds et flash
ONTIME = Temps en millisecondes ou la led sera allumée
OFFTIME = Temps en millisecondes ou la led sera Eteinte
Commande de l'action
un interrupteur 3 positions, HIGH/OFF/LOW
Sur un interrupteur 3 Positions, on peut mettre 2 actions
ON(action1)/OFF/Na
Na/OFF/ON(action2)
un interrupetur 2 positions, HIGH/LOW
Sur un interrupteur 2 Positions, on peut mettre 1 action
ON(action1)/Na/OFF
Mode "Play Sound est actif
Action 11A Active
Sons "perso" actif
Action 11B Active
Sons "perso" actif
Action 11C Active
Sons "perso" actif
Action 11D Active
Sons "perso" actif
Momentray switch Servo
Toggle short : Switch servo/ action1 led
Toggle long : Action servo
2 Sequences Servo et led
Pour les sequences la position de départ des servos est définie dans l'action 12
2 Sequences Servo et led
Pour les sequences la position de départ des servos est définie dans l'action 12
Ces nouveaux dévellopements concerne les "Actions" accessible avec le configurateur "html".
Pour des séquences automatique vous pouvez regarder ce qui est fait pour l'action 7.
le canon se lève , puis pivote, et puis tire et quand c'est fini ,pause de 5 sec , il re pivote et se baisse .
Le servo 1 bouge a 1 ( corespond a 180°) quand il a finit le servo 2 bouge a 1 ( 180°) quand l'action est finie.
Le servo 2 bouge a 0 et quand il est arrivé le servo 1 va a zero.
Sequence7Servo.at(1000,Sequence7Part1);
Sequence7Servo.at(3000,Sequence7Part2);
Sequence7SoundPart1.at(8000,Seq7SoundPart1On);
Sequence7SoundPart1.at(12000,Seq7SoundPart1Off);
Sequence7BServo.at(1000,Sequence7BPart1);
Sequence7BServo.at(3000,Sequence7BPart2);
Ce type de séquence pourrait s'appliquer à une mise à l'eau d'annexe ou une grue.
Dans la dernière version les sequences sont gérées par "ScheduleTable" (une librairie) avec création de fichiers "INO" correspondant.
locoduino.org=La bibliothèque ScheduleTable.
vous pouvez télécharger Pompier.mp3 en faisant "clic droit => enregistrer le lien sous..." : Pompier.mp3.
vous pouvez télécharger Pompier.h en faisant "clic droit => enregistrer le lien sous..." : Pompier.h.
vous pouvez télécharger Pompier2.mp3 en faisant "clic droit => enregistrer le lien sous..." : Pompier2.mp3.
vous pouvez télécharger Pompier2.h en faisant "clic droit => enregistrer le lien sous..." : Pompier2.h.
vous pouvez télécharger Pompier3.mp3 en faisant "clic droit => enregistrer le lien sous..." : Pompier3.mp3.
vous pouvez télécharger Pompier3.h en faisant "clic droit => enregistrer le lien sous..." : Pompier3.h.
vous pouvez télécharger Pompe.wav en faisant "clic droit => enregistrer le lien sous..." : Pompe.wav.
vous pouvez télécharger Pompe.h en faisant "clic droit => enregistrer le lien sous..." : Pompe.h.
vous pouvez télécharger Horn1.mp3 en faisant "clic droit => enregistrer le lien sous..." : Horn1.mp3.
vous pouvez télécharger Horn1.h en faisant "clic droit => enregistrer le lien sous..." : Horn1.h.
vous pouvez télécharger Horn2.mp3 en faisant "clic droit => enregistrer le lien sous..." : Horn2.mp3.
vous pouvez télécharger Horn2.h en faisant "clic droit => enregistrer le lien sous..." : Horn2.h.
vous pouvez télécharger Horn3.wav en faisant "clic droit => enregistrer le lien sous..." : Horn3.wav.
vous pouvez télécharger Horn3.h en faisant "clic droit => enregistrer le lien sous..." : Horn3.h.
vous pouvez télécharger Horn4.wav en faisant "clic droit => enregistrer le lien sous..." : Horn4.wav.
vous pouvez télécharger Horn4.h en faisant "clic droit => enregistrer le lien sous..." : Horn4.h.
Pour créer vos fichiers sons (.h) il faut convertir vos fichiers .mp3 en .wav 8 bits , mono, unsigned, 22050hz.
Pour travaillez vos fichiers sons vous pouvez utiliser "AUDACITY" : audacity.fr.
vous pouvez convertir en ligne gratuitement avec : audio.online-convert.com.
Il ne reste plus qu'a convertir .wav en fichier "header" (.h) avec le "SoundConverter" présent sur le configurateur html "Croky_b Setup Config Ver.5.5".
Ma carte maxi est en voie d'achèvement, manque plus que l'extension "SX1509" (en attente de livraison).
Il est quand meme possible de tester les entrées avec l'ESP32 en place.
A ce stade, une petite réflexion sur l'alimentation s'impose.
les masses des alimentations sont communes et c'est toute la face du dessous de la carte.
Voici un schéma réalisé par Sébastien qui à testé ce projet pour un loco tracteur, ici raccordement 4 ch pour essai "sons".
Ma carte maxi pilotera les fonctions de mon bateau pompe "DUSSELDORF" avec une radio futaba 8 voies.
J'ai équipé cette radio d'un module 2,4 ghz "FrSky".
Le récepteur est aussi un "FrSky" ancienne génération avec huit voies PWM.
il me faut donc cabler ces 8 ch. sur la carte ESP32.
J'aurais donc à ma disposition: 1 voie pour les gaz, 1 voie pour la direction, 1 voie pour démarrage moteur, 1 voie avec 8 boutons poussoir et le reste disponible selon besoin.
Je reviendrais plus bas sur l'affectation précise de tout ça.
La radio modifiée.
Le boitier 8 boutons remplace le potentiomètre de la voie huit
Le schéma de cablage des huit boutons
Il faut utiliser des boutons de ce type:Mini Momentary Push Button Switch SPDT NO NC 3 pins
La gestion des huits boutons se fait dans l'action 8 avec pour l'instant 4 sons sur la voie 8.
J'ai aussi voulu tester un switch 3 positions (E)avec 2 sons dans l'action 3 sur la voie 7.
J'ai modifié quelques lignes de code et la librairie PWMTRIGGER pour parvenir à faire fonctionner cet essai.
Attention j'ai généré ce code pour une radio "PWM"
vous pouvez télécharger l'ensemble de ce code d'essai en faisant "clic droit => enregistrer le lien sous... : essai.rar.
A notre essai, j'ai rajouté le test d'une séquence avec trois servos.
La séquence est activé par un switch 3 positions dans l'action 6 et la voie 6 de la radio.
Dans un premier temps pas de sons de mitrailette, ni de led.
Dans le configurateur Croky_B, il faut définir cette séquence (voir ci-dessous) et ne pas oublier de générer le point INO.
Ensuite remplacer le"sequences.ino" d'origine dans le sketch par celui ci.
Pour que ça fonctionne avec mon switch 3 positions, j'ai du modifier le "setup.h" dans l'action6 (voir ci-dessous)
vous pouvez télécharger l'ensemble de ce code de test en faisant "clic droit => enregistrer le lien sous... : test.rar.
sequence 3 servos.
action 6
Enfin, ma carte SX1509 est arrivée je vais pouvoir continuer.
Attention, il faut souder cette dernière à l'envers comme sur cette photo.
Action 1
.
Il faut raccorder le 12 volts sur le bornier du haut pour alimenter les LEDS.
Les LED doivent être câblée "positive commune". Cela signifie que les longues jambes de LED sont toutes connectées ensemble et se connectent au rail 5V, en provenance du régulateur .
Une résistance (330 ohms) doit etre cablée en série avec chaque LED.
Pour essai je vais allumer 2 leds fixes et 3 clignotantes dans l'action1.
vous pouvez télécharger l'ensemble de ce code de test en faisant "clic droit => enregistrer le lien sous... : leds.rar.
Schéma pilote sortie moteur.
Les pins de la cartee SX1509
.
Elles sont en 5 volts, donc pour des moteurs 5 volts, sinon, il va falloir les relayer.
A noter le 5v de la sortie "motor1" est commun avec le 5v led issu du régulateur, donc limité à 1 ampère max, malgrès le mosfet irlz44n.
Le 5v pour la sortie "motor u_bec" est commun avec le 5v "servos" venant du U_BEC.
Les commandes transitent par la carte SX1509, sorties IO10 et IO11.
J'ai donc utilisé 2 switchs 2 positions activant les actions 1 et 4 et les LED 10 et 11.
Il faut modifier un peu le code dans "ACTION" et dans "MOTOR", voir cidessous.
J'ai choisi d'actionner 1 moteur (radar) et 1 relais (pompe).
vous pouvez télécharger l'ensemble de ce code de test en faisant "clic droit => enregistrer le lien sous... : moteurs.rar.
motoron.
motor2on
.radar
.Pour mon "DUSSELDORF", je pense utilisé le radar et la pompe piloté par appui "BP" (de mon boitier 8 boutons).
Avec un bouton pour on et un bouton pour off par fonction (radar et pompe).
J'ai donc modifié le sketch en conséquence.
vous pouvez télécharger l'ensemble de ce code de test en faisant "clic droit => enregistrer le lien sous... : moteurs_bp.rar.
Donc, pour 3 arbres d'hélices, esc1 correspondant au moteur central, les 2 autre pour moteur droite et gauche.
Mon "DUSSELDORF" n'ayant que 2 moteurs (3 possible), j'utiliserais donc ESC2 ET 3.
Le code comprend un mixage gaz/direction et un choix de plusieurs mode de marche .
le choix est à faire directement dans le configurateur html (croky_b), et se trouvent après dans le setup, partie:" mixing config".
4 modes "FORWARD" et 3 modes "BACKWARD" 'avant, arrière).
J'ai donc choisi FORWARD2 (avec reverse et mixage) et BACKWARD2 (no limited et mixage).
Pour le test, je vais utiliser 2 petits variateurs qui me servaient sur un micro springer avec 2 micro moteurs.
Par la suite, pour le DUSSELDORF, j'utiliserais des BRUSHLESS.
mixing
.
Et à présent, il me faut compiler tout ces bouts de code pour une version finale adaptée à mon "DUSSELDORF" avec:
Ch 1 rien.
Ch 2 pour la mise en route moteurs (sons démarrage).
Ch 3 pour les gaz mixés avec la direction pilote les sorties "ESC" 2 et 3.
Ch 4 pour la direction mixée avec les gaz pilote le servo direction et les "ESC" 2 et 3.
Ch 5 pour l'action 9 et switch A qui allumera les feux de route + projecteur (Led 2 et 3).
Ch 6 pour les séquences 1 et 2 qui actionneront les servos lances à incendie rotatives à part (swicht E).
Ch 7 pour l'action 3 et switch C (3pos.) qui actonnera sons corne de brume et cloche.
Ch 8 pour l'action 8 et boitier 8 boutons poussoir qui actionneront: radar, sons pompier, gyrophare, pompe à eau.
vous pouvez télécharger l'ensemble de ce code final en faisant "clic droit => enregistrer le lien sous... : dusseldorf.rar.
Voilà, je pense avoir fait le tour des possibilitées de cette carte, reste plus qu'a faire une compil de ces codes pour installer sur mon 'DUSSELDORF".
Mais comme rien n'ai jamais fini, Croky_B m'a informé qu'il nous préparait de nouvelles surprises.
Bon, dors et déjà, il est possible de chainer plusieurs cartes SX1509 pour avoir plus de sorties.
Il suffit de récupérer le sda scl 3v3 et gnd sous la carte.
On peu donc chainer des cartes extensions (I2C) du type pca9685 et SX1509 pour avoir des sorties servos et led supplémentaires.
Un nouveau circuit imprimé devrait voir le jour avec 2 slots raccordement I2C.
Attendons donc la suite.
Croky_B, viens de mettre en ligne une nouvelle version 5.7.
Elle inclue la possibilité d'ajouter des cartes extensions (I2C) de type PCA ou SX1509.
Et aussi une gestion "multiswitch" améliorée permettant de configurer huit boutons poussoirs selon les valeurs de votre radio.
Pour les extensions I2C, une nouvelle carte devrait voir le jour.