arduino  RC Navy (2016-2024)

ENSEMBLE MODULES CODEUR/DECODEUR BURC

I. Introduction

BURC (prononcer Beurk!) est un Boîtier Universel RC pour les francophones et une Universal RC Box pour les anglophones.

L'ensemble BURC permet d'ajouter très facilement à un modèle réduit des animations pilotables depuis presque tous les ensembles RC.

L'ensemble BURC se compose de:

Il compatible avec les anciens ensembles RC AM/FM 27MHz, 41MHz et 72MHz ainsi qu'avec les ensembles RC récents en 2.4GHz.


II. Le codeur BURC ''Basic''

Le codeur BURC ''Basic'' se connecte tout simplement sur la prise écolage de l'émetteur: il n'y a aucune modification interne à effectuer.

Pour réaliser le codeur BURC ''Basic'', un simple Arduino Nano V3 suffit: il n'y a que très peu de composants à ajouter grâce aux résistances internes de tirage au + (pull-up)!

Comme tous les contacts ont GND en commun, les contacts C1 à C16 peuvent être:

Codeur BURC

Note:


Les broches A4 et A5 qui sont également les broches SDA et SCL d'un bus numérique de communication I2C sont réservées pour les extensions futures.

Les broches RX0 et
TX1 sont laissées volontairement libre puisqu'elles sont utilisées par l'interface USB.

Le lien de communication entre le module codeur et le décodeur BURC s'appuie sur le système RCUL développé par l'auteur: Lien Universel RC.

Le codeur BURC étant le plus universel possible, son interface USB donne accès à toutes les commandes de paramétrage afin de l'adapter à l'émetteur utilisé.

Une fois connecté à un terminal série réglé à 115 200 bauds sur un PC (via le cordon USB), la commande AIDE? donne une bonne idée de ce qui est paramétrable:

LANG=FR/UK                                                   Definit le langage courant de l'Interface Homme Machine
LIGNE.TERM=CRLF/CR                                           Definit le terminateur de ligne (Depend du Terminal)
ECOLAGE.MODE=CPPM_OUT+CPPM_IN/CPPM_OUT/SBUS_OUT;FUTABA[_INV] Definit le mode d'ecolage de l'emetteur
CPPM.MODU=NEG/POS                                            Definit la modulation CPPM
CPPM.ENTETE=xxx                                              Definit l'entete CPPM (xxx en us)
CPPM.VOIE.NB=xx                                              Definit le nombre de voie du train CPPM (xx de 1 a 8)
RCULx.MESSAGE=C1-C8/C9-C16/C1-C16/ANGLE+ANA[_INV]/ANGLE@0xXX Definit le contenu a l'addresse I2C 0xXX du message RCUL
CPPM.PERIODE=xxxxx                                           Definit la periode CPPM (xxxxx en us)
SBUS.VITESSE=NORMALE/RAPIDE                                  Definit la vitesse SBUS (NORMALE=14ms, RAPIDE=7ms)
RCUL.REPET=x                                                 Definit le nombre de repetition (x de 0 a 3)
RCULx.VOIE=y                                                 Definit la voie y (y de 1 a 12) de l'instance RCUL x (x de 1 a 6)
RCULx.TEST=OFF/ON                                            Definit le mode de test de balayage de l'instance RCUL x (x de 1 a 6)
RX.MODE=OFF/RCULx@PWM/RCULx@CPPMx                            Definit le mode RX a OFF, PWM ou CPPMx (Entree D8) (x est le numero de voie)
RX.DBG=NiveauDebug                                           Definit le niveau de debug en RX (Entree D8) (Niveau Msg: NiveauDebug=1, Niveau quartet: NiveauDebug=2)
CONF?                                                        Renvoie la configuration complete
nom_commande?                                                Renvoie la valeur courante de la commande "nom_commande" (Ex: ECOLAGE.MODE?)


II.1. Principe de fonctionnement

Le principe dépend de l'émetteur, mais reste similaire: injecter un train (C)PPM ou une trame SBUS dans l'entrée écolage de l'émetteur.

1) Sur les anciens émetteurs RC qui disposent d'une sortie (C)PPM ET d'une entrée (C)PPM

Le principe est de récupérer le train (C)PPM de l'émetteur (sur la broche (C)PPM Out du connecteur d'écolage), de modifier ce train (C)PPM afin de coder la position des 16 contacts sur une voie existante (ou additionnelle) et de réinjecter ce nouveau train (C)PPM ainsi modifié dans l'émetteur (broche (C)PPM In du connecteur d'écolage). Les voies non modifiées étant transférées telles quelles.

Codeur BURC

Exemple de configuration du codeur BURC:

LANG=FR
ECOLAGE.MODE=CPPM_OUT+CPPM_IN
RCUL.REPET=0
RCUL1.VOIE=6
RCUL1.MESSAGE=C1-C16@0x00

Cela signifie que le codeur BURC récupère le train (C)PPM sur la broche (C)PPM Out de la prise écolage, code la position des 16 contacts dans la voie N°6 et réinjecte ce train (C)PPM sur la broche (C)PPM In de la prisé écolage.

Comme les anciens émetteurs fonctionnent la plupart du temps en (C)PPM, aucune répétition de message n'est nécessaire (RCUL.REPET=0).

Le message transporté par l'instance RCUL1 contient l'état des 16 contacts natifs de l'Arduino Nano (@0x00 = Natif de la carte Arduino Nano)

Note: Si l'émetteur ne génère que 5 voies dans son train (C)PPM et que l'on demande à passer la position des 16 contacts dans la voie 6, une 6e voie sera automatiquement ajoutée au train (C)PPM qui est injecté dans l'entrée écolage.

Une fois l'émetteur démarré, il est possible de connaître les caractéristiques du train (C)PPM reçu et du train (C)PPM réinjecté:

CPPM.INITIAL?

Initial CPPM characteristics:
============================
-Modulation    = NEG
-Channel Nb    = 5
-Header (us)   = 415
-Period (us)   = 17982

Initial CPPM frame:
==================
--     ----------     ----//----     ----------     -------------------
  |   |  CH1     |   |          |   |  CH5     |   |      Synchro      |   |
   ---            ---            ---            ---                     ---
  <--->
  Header
  <------------------------------------------------------------------>
                                Period

CPPM.FINAL?

Final CPPM characteristics:
==========================
-Modulation    = NEG
-Channel Nb    = 6
-Header (us)   = 415
-Period (us)   = 17982
-Tx Period (ms)= 126 (RCUL1 message -> CH6)

Final CPPM frame:
================
--     ----------     ----//----     ----------     -------------------
  |   |  CH1     |   |          |   |  CH6     |   |      Synchro      |   |
   ---            ---            ---            ---                     ---
  <--->
  Header
  <------------------------------------------------------------------>
                                Period

Pour que l'émetteur utilise le train (C)PPM fourni sur la prise écolage, il est nécessaire de maintenir appuyé (de manière permanente) le bouton-poussoir "écolage".


2) Sur les émetteurs RC récents et programmables qui disposent d'une entrée (C)PPM ou d'une entrée SBUS

Le principe est de créer un train (C)PPM ou une trame SBUS en codant la position des 16 contacts dans une des voies de ce train (C)PPM ou trame SBUS et de l'injecter dans l'émetteur (broche (C)PPM In ou SBUS In).

Puis l'émetteur est configuré pour récupérer la voie du train (C)PPM ou SBUS afin de la "mapper" pour l'envoyer vers le récepteur. Cela se fait habituellement dans le menu "mixage" de l'émetteur.

Vue d'ensemble BURC/RCUL

2.1) Injection d'un train (C)PPM dans l'entrée écolage ((C)PPM In)

Injection (C)PPM

Exemple de configuration du codeur BURC:

LANG=FR
ECOLAGE.MODE=CPPM_OUT
CPPM.MODU=NEG
CPPM.ENTETE=300
CPPM.VOIE.NB=5
CPPM.PERIODE=14000
RCUL.REPET=3
RCUL1.VOIE=5
RCUL1.MESSAGE=C1-C16@0x00

Cela signifie que le codeur BURC génère un train (C)PPM contenant 5 voies, d'entête de 300 µs et de période 14 ms, code la position des 16 contacts dans la voie N°5 et l'injecte sur la broche (C)PPM In de la prise écolage de l'émetteur.

Comme le train (C)PPM de l'écolage n'est pas synchronisé avec la cadence d'envoi des voies internes de l'émetteur (aspect asynchrone), des répétitions de message sont nécessaires pour assurer la bonne transmission du message RCUL (RCUL.REPET=3) vers le récepteur RC.

Une fois le codeur BURC configuré, il est possible de connaître les caractéristiques du train (C)PPM injecté dans l'entrée écolage:

CPPM.FINAL?

Final CPPM characteristics:
==========================
-Modulation    = NEG
-Channel Nb    = 5
-Header (us)   = 300
-Period (us)   = 14000
-Tx Period (ms)= 392 (RCUL1 message -> CH5)
 
Final CPPM frame:
================
--     ----------     ----//----     ----------     -------------------
  |   |  CH1     |   |          |   |  CH5     |   |      Synchro      |   |
   ---            ---            ---            ---                     ---
  <--->
  Header
  <------------------------------------------------------------------>
                                Period

2.2) Injection d'une trame SBUS dans l'entrée écolage (SBUS In)

Injection SBUS
Exemple de configuration du codeur BURC:

LANG=FR
ECOLAGE.MODE=SBUS_OUT;FUTABA
SBUS.VITESSE=NORMALE
RCUL.REPET=3
RCUL1.VOIE=5
RCUL1.MESSAGE=C1-C16@0x00

Cela signifie que le codeur BURC génère une trame SBUS avec la polarité FUTABA, code la position des 16 contacts dans la voie N°5 et l'injecte sur la broche SBUS In de la prise écolage de l'émetteur. Comme la trame SBUS de l'écolage n'est pas synchronisé avec la cadence d'envoi des voies internes de l'émetteur (aspect asynchrone), des répétitions de message sont nécessaires pour assurer la bonne transmission du message RCUL (RCUL.REPET=3) vers le récepteur RC.

Note:

La prise écolage de l'émetteur Radiomaster TX16S attend un signal SBUS de polarité inversée par rapport au SBUS de Futaba, il faut alors configurer le mode d'écolage comme suit:

ECOLAGE.MODE=SBUS_OUT;FUTABA_INV

II.2. Le Firmware du codeur BURC

Le Firmware est fourni au format HEX: BURC_CODER_V0_6.hex (Pour le télécharger: Clic-droit, enregistrer sous...).

Pour charger le fichier HEX dans l'Arduino Nano du codeur BURC, il suffit d'utiliser l'utilitaire XLoader. qui est téléchargeable par exemple ici.

II.3. Vérification de l'éligibilité d'un ensemble RC pour l'ensemble codeur/décodeur BURC

Le Firmware du codeur BURC dispose de différents modes de test pour vérifier si un ensemble RC particulier (émetteur + récepteur) est éligible (compatible) ou pas avec l'ensemble codeur/décodeur BURC. Pour les tests, le Firmware HEX peut être chargé indifféremment dans un Arduino Nano ou un Arduino UNO à l'aide de l'utilitaire XLoader (Voir ci-dessus).

II.3.1 Vérification de la bonne prise en compte de la voie transportant les commandes BURC par l'émetteur

Une fois le codeur BURC paramétré pour injecter soit un train (C)PPM, soit une trame SBUS dans l'émetteur (et que le mapping a été déclaré dans l'émetteur pour les émetteurs programmables uniquement), en armant la commande RCUL1.TEST=ON, le codeur BURC va moduler la voie qui sert à transporter les commandes: la voie va faire un balayage périodique pour générer des impulsions de voie d'environ 1000µs à environ 2000µs.

Sur les émetteurs programmables récents, en allant sur le menu qui affiche les voies, le barre-graphe associé à la voie transportant les commandes doit faire des balayages périodiques de la valeur min à la valeur max: cela prouve que la voie injectée dans l'écolage est bien prise en compte par l'émetteur.

En branchant un servo sur la voie associée sur le récepteur, le palonnier du servo doit faire des allers-retours périodiques de -45° à +45° environ.

Si c'est le cas, cela signifie que la voie utilisée par le codeur BURC arrive bien jusqu'au récepteur.

ATTENTION: ne pas brancher le servo si le mode test n'est pas actif, sinon le servo recevra des commandes quasi aléatoires et risque de pas apprécier si cela dure trop longtemps!

Note:

Sur les anciens émetteurs, c'est le seul moyen de vérifier sans oscilloscope que la voie (transportant les commandes) injectée dans la prise écolage arrive bien jusqu'au récepteur.

C'est la première vérification à effectuer avant d'aller plus loin.

Une fois le test concluant, envoyer la commande RCUL1.TEST=OFF ou bien faire un Arrêt/Marche du codeur BURC: celui-ci démarre toujours avec RCUL1.TEST=OFF.


II.3.2 Vérification de la bonne transmission et du bon décodage en sortie de récepteur

Câblage supplémentaire à réaliser entre le récepteur et le codeur BURC:

Test élégibilité BURC

Note:

Pour ce test, l'Arduino peut être indifféremment un UNO ou un Nano V3.

1) Connecter le GND du récepteur à GND de l'Arduino du codeur BURC,

2) Connecter le fil "Signal" de la voie du récepteur dédiée à BURC à la broche D8 du codeur BURC,

3) Depuis le PC connecté en USB au codeur BURC, envoyer la commande RX.MODE=RCUL1@PWM afin de signaler au codeur que le signal issu du récepteur est de type PWM (sortie "voie" du récepteur),

4) Mettre l'émetteur en marche,

5) Depuis le PC connecté en USB au codeur BURC, envoyer la commande RX.DBG=1 afin d'armer le mode debug en réception. Si le codeur est capable de décoder le signal de la voie du récepteur l'affichage est le suivant dans la console série:

Décodage de la réception BURC
En fermant un contact sur le codeur (en le ramenant à GND), un 1 doit apparaître en correspondance avec le N° de contact.

6) Si la période d'envoi du train (C)PPM ou de la trame SBUS ainsi que le nombre de répétition(s) sont corrects, la qualité de réception/décodage doit être de 100%:

Affichage de la qualité de réception

La qualité de réception/décodage est affichée tous les 100 messages reçus.

Si une qualité de 100% ou proche de 100% est atteinte, l'ensemble codeur/décodeur BURC fonctionnera à coup sûr sur l'ensemble RC testé.

A retenir:



III. Exemple de décodeur BURC

Ce décodeur BURC est universel puisqu'il peut se connecter sur presque tous les types de récepteurs RC.

Boîtier Universel RC

Le décodeur BURC est un décodeur multi-fonctions intelligent qui se connecte sur un récepteur RC.
Les spécifications du
décodeur BURC sont les suivantes:

  1) Piloté par les 16 Contacts du codeur situé côté émetteur (notés C1 à C16 par la suite).

  2) Alimentation du module BURC: de 7,2V à 30V (Support des batteries LiPo de 2S à 7S et batteries 12V et 24V au plomb),

  3) Fourniture d'une alimentation (à découpage) 5V/2A en continu, 3A en pointe, pour alimenter les éventuels servos connectés au module BURC,

  4) Paramétrage du module BURC via un câble USB depuis une machine sous Window$, Mac, Linux, Android.

  5) Branchement et commande du module BURC sur le récepteur RC depuis:

  6) La plupart des broches d'entrée/sortie X1 à X16 du module BURC peuvent être configurées (via l'interface USB) pour les usages suivants:    7) Les sorties X1 à X16 du module BURC sont commandées à partir de condition(s) logique(s):
  • Une condition logique:
    • état de(s) Contact(s) C1 à C16 de l'émetteur, état des broches X déclarées en entrée TOR, état des SEQuences, état des Variables internes: C1, X12, SEQ2, V1
    • condition logique de 2 états maximum: C1&C2, C3|X12
    • condition logique inversée: !C1, !X12, !SEQ1, !V1
    • en utilisant les variables internes, une condition logique peut prendre en compte davantage de conditions individuelles (au lieu de 2)
  • Pour les servos à rotation continue bi-directionnels, il faut 2 conditions logiques séprarées par un point-virgule: C1&C2;C3|X12
  • Opérateurs logiques supportés:
    • &: ET logique: il faut que la 1ère condition ET que la deuxième condition soient vraies pour que la condition globale soit vraie,
    • |: OU logique: il faut que la 1ère condition OU que la deuxième condition soient vraies pour que la condition globale soit vraie,
    • ^: OU logique exclusif: il faut que la 1ère condition OU la deuxième condition soient vraies (MAIS pas les 2) pour que la condition globale soit vraie,
    • !: inversion logique de la condition.
  8) Les variables internes:

Il s'agit de variables intermédaires.
Par exemple, si on désire allumer un gyrophare quand la SEQuence d'ouverture lente de porte est en cours ou que la SEQuence de fermeture lente de porte est en cours ou encore qu'un contact est fermé sur l'émetteur, la condition globale pour allumer le gyrophare dépend alors de 3 conditions individuelles:
- 1) SEQuence d'ouverture lente de porte en cours  (ex: SEQ1)
- 2) SEQuence de femeture lente de porte en cours (ex: SEQ2)
- 3) Contact d'un interrupteur de l'émetteur fermé (ex: C3)
Or, pour activer une sortie Gyrophare, on ne peut définir une condition globale composée que de 2 conditions individuelles:
X09=GYRO;SEQ1|SEQ2
Il n'est pas possible de faire:
X09=GYRO;SEQ1|SEQ2|C3
ll suffit alors de passer par une variable intermédiaire:
V1=SEQ1|SEQ2
Et de déclarer:
X09=GYRO;V1|C3
Nous aurons bien notre gyrophare qui va s'allumer si la SEQuence N°1 est en cours, ou que
la SEQuence N°2 est en cours, ou que le contact C3 est fermé sur l'émetteur.

Conditions imbriquées:
Il est possible d'utiliser encore davantage de conditions individuelles en utilisant des variables intermédiaires faisant appel à d'autres variables intermédaires:
V1=SEQ1|SEQ2
V2=C1&C2
V3=V1|V2        <- Equivaut à V3=(SEQ1|SEQ2)|
C1&C2), soit une prise en compte de 4 conditions individuelles
V4=X06&!X12
V5=X13^X14
V6=V4&V5               <- Equivaut à V6=(X06&!X12)&(
X13^X14), soit une prise en compte de 4 conditions individuelles
X09=GYRO;V3|V6    <- soit une prise en compte de 2 x 4 = 8 conditions individuelles
Avec BURC, il est possible d'utiliser jusqu'à 8 variables internes: V1 à V8.

  9) Le module BURC permet de générer des SEQuences de servos: (6 séquences d'un maximum de 9 lignes chacune)
  • X08=SEQ
  • X09=SEQ
  • SEQ1=C1
  • SEQ1.L1=X08;0;600;2400;5000
  • SEQ1.L2=X09;250;2400;600;4750
  • SEQ2=!C1
  • SEQ2.L1=X08;250;2400;600;4750
  • SEQ2.L2=X09;0;600;2400;5000
  • GROUP1=SEQ1;SEQ2
La déclaration des séquences SEQ1 et SEQ2 ci-dessus signifie:

- X08 est connecté à un servo qui est utilisé dans une ou plusieurs SEQuences
- X09 est connecté à un servo qui est utilisé dans une ou plusieurs SEQuences

- SEQ1 démarre dès que la condition C1 est vraie (Contact C1 fermé côté émetteur)
- SEQ1.L1 signifie que le servo connecté à X08 démarre 0 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 600µs à 2400µs en 5 secondes
- SEQ1.L2 signifie que le servo connecté à X09 démarre 250 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 2400µs à 600µs en 4,750 secondes

- SEQ2 démarre dès que la condition !C1 est vraie (Contact C1 ouvert côté émetteur)
- SEQ2.L1 signifie que le servo connecté à X08 démarre 250 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 2400µs à 600µs en 4,750 secondes
- SEQ2.L2 signifie que le servo connecté à X09 démarre 0 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 600µs à 2400µs en 5 secondes

- GROUP1 permet de restaurer la bonne position des servos à la prochaine mise sous tension en mémorisant le N° de la dernière séquence terminée.

  10) Le module BURC intégre un EVALuateur d'expression pour contrôler en live les valeurs des conditions:
EVAL C2
0
EVAL !C4
1
EVAL !C2&!C4
1
EVAL C2|!C4
1
EVAL !C2^!C4
0
EVAL X15
1
EVAL SEQ1
0
EVAL V1          (en supposant que V1 ait été préalablement déclarée comme V1=!C2&!C4, par exemple)
1


  11) Le module décodeur BURC intègre un interpréteur de commande intelligent qui signale à l'utilisateur où se trouve l'erreur de saisie ou de configuration:

X18=STOR;C12
 ^ Err: id                      (l'identifiant de l'entrée/sortie X va uniquement de 1 à 16)

TOTO=ETOR
^ Err: Unknown Cmd    (la commande TOTO est inconnue)

X01=SPOT;C1
 ^ Err: not PWM          (Pour être de type SPOT, la sortie X doit supporter le PWM: les sorties supportées sont repérées par un ~ sur l'image de BURC ci-dessus)


  12) Simulation de la commande des contacts de l'émetteur
Quand le décodeur BURC ne reçoit aucun message de l'émetteur, il est possible de simuler l'ouverture/fermeture des contacts C1 à C16 à l'aide de la commande W:
W=0x0001                           (simule la fermeture du contact C1 de l'émetteur)
W=0x0002                           (simule la fermeture du contact C2 de l'émetteur)
W=0x0004                           (simule la fermeture du contact C3 de l'émetteur)
W=0x0003                           (simule la fermeture des contacts C1 et C2 de l'émetteur)
W?                                         (retourne la valeur courante de W, par exemple,  W=0x0001)
Ceci est très pratique pour vérifier la bonne configuration du décodeur BURC sans avoir à allumer l'émetteur.
De plus, cette fonctionnalité peut être mise à profit pour piloter en USB le module BURC depuis un ordinateur: idéal pour les démos.
Voir l'application graphique pour PC développée pour l'AGRION.

Toutes les actions sont possibles simultanément et en temps réel: une action ne bloque pas les autres.
Le module décodeur BURC peut donc être comparé à un micro automate programmable appliqué à la RC.

IV. Exemple d'application du module décodeur BURC

Soit animer un chalutier "pêche arrière" avec les fonctionnalités suivantes:
  • Commande par une sortie voie du récepteur (donc en PWM) en mode SYNChrone (anciens ensembles RC) ou ASYNChrone (ensembles RC 2.4GHz)
  • Contacts C1 et C2: Commande d'un treuil de fune bâbord (Virer/Stop/Filer) avec un fin de course pour stopper le treuil quand le panneau bâbord arrive à la chape (poulie de portique) -> servo à rotation continue connecté à X16 + fin de course connecté à X15
  • Contacts C3 et C4: Commande d'un treuil de fune tribord (Virer/Stop/Filer) avec un fin de course pour stopper le treuil quand le panneau tribord arrive à la chape (poulie de portique) -> servo à rotation continue connecté à X14 + fin de course connecté à X13
  • Contacts C5 et C6: Commande d'un enrouleur de chalut (Virer/Stop/Filer) -> servo à rotation continue connecté à X12
  • Contact C7: Commande de l'ouverture/fermeture des 2 portillons de la rampe arrière -> servo standard connecté à X11 + servo standard connecté à X10
  • Contact C8: Commande d'un gyrophare -> LED orangée connectée à X09
  • Contact C9: Commande d'un projecteur type SPOT -> LED ou lampe connectée à X08
  • Contact C10: Commande d'un poste de soudure électrique-> LED bleue connectée à X07
  • Contact C11: Commande d'un tube néon bâbord et d'un tube néon tribord -> led blanche connectée à X06 et ed blanche connectée à X05
  • Contact C12: Commande en TOR des feux de route -> Feux de route connectés à X04
  • Contact C13: Commande en TOR des feux de pêche -> Feux de pêche connectés à X03
  • Contact C14 ou SEQ1 en cours: Commande d'un gyrophare-> LED orangée connectée à X02<
  • SEQ2 en cours: Commande d'un clignotant-> LED connectée à X01
Ces fonctionnalités se traduisent par la configuration suivante:

MODE=PWM;ASYNC                (Mettre SYNC pour les anciens ensembles RC et mettre ASYNC pour ensembles RC 2.4 GHz)
X16=SERVO;C1&X15;C2
X15=ETOR
X14=SERVO;C3&X13;C4
X13=ETOR
X12=SERVO;C5;C6
X11=SEQ
X10=SEQ
SEQ1=C7
SEQ1.L1
=X11;0;600;2400;5000
SEQ1.L2=X10;250;2400;600;4750
SEQ2=!C7
SEQ2.L1=X11;250;2400;600;4750
SEQ2.L2=X10;0;600;2400;5000
GROUP1=SEQ1;SEQ2
X09=GYRO;C8
X08=SPOT;C9
X07=SOUD;C10
X06=FLUO;C11
X05=FLUO;C11
X04=STOR;C12
X03=STOR;C13
X02=STOR;C14|SEQ1
X01=CLIGN;SEQ2


Cette configuration est à entrer une seule fois: elle est sauvegardée dans la mémoire de type EEPROM du module BURC.

Cette configuration est en cours d'installation sur le chalutier AGRION et est détaillée dans cette page.

Cet exemple montre combien il est facile de particulariser la configuration du module BURC.

V. Schéma du décodeur BURC

Schéma du décodeur BURC

Le schéma du décodeur BURC en version PDF: BURC_Decoder_V1_0.pdf


VI. EXTENSIONS DU CODEUR BURC

VI.1. Extension I2C

Le bus I2C du codeur BURC permet les extensions matérielles suivantes:

  1) Extenseurs I2C 8 I/O:

  2) Extenseurs I2C 16 I/O:

  3) Capteur angulaire à 360° I2C:

  4) Capteur angulaire à 360° + entrée analogique I2C

Les informations issues de ces périphériques I2C peuvent être utilisées par les 6 instances RCUL du codeur BURC.

Par exemple, il est possible de connecter 4 modules MCP23017 ou PCF8575 sur le bus I2C. Ceux-ci vont fournir 4 x 16 entrées digitales permettant de lire la positions de 4 x 16 contacts.

Si on ajoute encore un module PCF8575A sur le bus I2C, on peut encore ajouter 16 entrées digitales permettant de lire la positions de 16 contacts.

En y ajoutant les 16 contacts natifs du codeur BURC, il est possible de passer jusqu'à 6 x 16 = 96 états de contacts.

Exemple de configuration:

LANG=FR

ECOLAGE.MODE=SBUS_OUT;FUTABA

SBUS.VITESSE=NORMALE

RCUL.REPET=3

RCUL1.VOIE=5
RCUL1.MESSAGE=C1-C16@0x00   <- Les 16 Contacts natifs du codeur BURC

RCUL2.VOIE=6
RCUL2.MESSAGE=C1-C16@0x24
   <- Les 16 Contacts d'un MCP23017 ou PCF8575 à l'adresse I2C 0x24

RCUL3.VOIE=7
RCUL3.MESSAGE=C1-C16@0x25
   <- Les 16 Contacts d'un MCP23017
ou PCF8575 ou PCF8575 à l'adresse I2C 0x25

RCUL4.VOIE=8
RCUL4.MESSAGE=C1-C16@0x26
   <- Les 16 Contacts d'un MCP23017 ou PCF8575 à l'adresse I2C 0x26

RCUL5.VOIE=9
RCUL5.MESSAGE=C1-C16@0x27
   <- Les 16 Contacts d'un MCP23017 ou PCF8575 à l'adresse I2C 0x27

RCUL6.VOIE=10
RCUL6.MESSAGE=C1-C16@0x3C
  <- Les 16 Contacts d'un PCF8575A à l'adresse I2C 0x3C

Il faudra évidemment un décodeur sur chacune des voies 5, 6, 7, 8, 9 et 10 pour exploîter ces informations.

VI.2. Extension voies analogiques

Sur le codeur il y a 16 contacts natifs C1 à C16. Les broches de l'Arduino associées aux contacts C11 à C16 sont aussi des entrées analogiques.

Du coup, les broches C11 à C16 sont aussi ANA1 à ANA6: cela nous fournit donc 6 voies analogiques qui pourront être transmises dans les voies de l'écolage et offre des possibilités nouvelles.

Exemple de configuration:

LANG=FR

ECOLAGE.MODE=SBUS_OUT;FUTABA

SBUS.VITESSE=NORMALE

RCUL.REPET=3

RCUL1.VOIE=5
RCUL1.MESSAGE=C1-C8@0x00+ANA1   <- Les 8 premiers Contacts natifs + la valeur analogique ANA1 du codeur BURC

Cette configuration permet, par exemple, de commander le décodeur MS8 V2 qui dispose 8 sorties Tout-Ou-Rien et d'une sortie proportionnelle d'appoint.


VII. ARCHITECTURE MODULAIRE DU SYSTEME BURC/RCUL

Les extensions I2C et analogiques du codeur BURC ont imposé une rélexion quant à l'architecture du système BURC/RCUL car ses possibilités sont désormais démultipliées.

Tout ce qui a déjà été présenté dans les paragraphes précédents reste vrai, il ne s'agit que d'une extension du concept.

VII.1. Modules fonctionnels côté Codeur

Afin d'organiser les choses le plus clairement possible, côté codeur BURC, le système a été décomposé en modules fonctionnels ayant tous une adresse I2C et fournissant des ressources, ainsi on y trouve:

1) Le module fonctionnel codeur BURC à l'adresse I2C virtuelle 0x00 qui fournit les ressources suivante:

- C1-C16:            l'état des contacts C1 à C16
- C1-C8:              l'état des contacts C1 à C8
- C9-C16:            l'état des contacts C9 à C16
- ANA1 à ANA6: les valeurs analogiques des entrées ANA1 à ANA6

2) Le module fonctionnel Angle+Ana à l'adresse I2C dans la plage [0x0C..0x0F] qui fournit les ressources suivante:

- ANGLE:           valeur d'un angle de 0 à 4095 pour 0° à 360°
- ANGLE+ANA: valeur d'un angle de 0 à 4095 pour 0° à 360° + valeur analogique de 0 à 255 d'un potentiomètre à glissière

3) Le module fonctionnel Switches à l'adresse I2C dans les plages [0x20..0x23]/[0x24..0x27]/[0x38..0x3B]/[0x3C..0x3F] qui fournit les ressources suivante:

- C1-C16:            l'état des contacts C1 à C16
- C1-C8:              l'état des contacts C1 à C8
- C9-C16:            l'état des contacts C9 à C16

Architecture modulaire du système BURC/RCUL

VII.2. Modules physiques côté codeur

La finalité du système est de permettre le contrôle d'animations diverses d'un modèle depuis presque n'importe quel émetteur RC pour peu qu'il soit doté d'une entrée écolage.

Le besoin d'un modéliste n'étant pas forcément le besoin d'un autre, le système a été organisé en 2 modules physiques "emboîtables" un peu comme des pièces de légo: cela crée un espèce de pupitre/tableau de bord à fixer (par ex, en partie haute) sur l'émetteur.

Cette réflexion a d'abord été menée avec Pierre (aka Pierrotm777) pour la conception des circuits imprimés, puis avec Cédric (aka Croky_b) pour la réalisation des boîters "emboîtables" réalisés en impression 3D.

Modules physiques


VII.2.1. Le module physique Angle/Ana/Sw côté codeur

Ce module physique intègre les modules fonctionnels Codeur BURC et Angle+Ana:

Module physique SW/ANGLE/ANA
Module physique Angle&Ana&Sw vu de dessus

Module physique Angle&Ana&Sw vu de dessous
Module physique Angle&Ana&Sw vu de dessus

Module physique Angle&Ana&Sw vu de dessous

Exemple d'utilisation:

En connectant ensembles 2 modules Angle&Ana&Sw, il est possible de faire des commandes de propulseurs azimutaux pour bateaux tels que remorqueurs ASD par exemple.

L'angle (sur 360° sans butée), ainsi que les gaz de chaque propulseur sont indépendants.

En bonus, il est possible d'avoir 16 commandes Tout-Ou-Rien pour les animations!

Double module azimutal

Pour réaliser cela, les modules sont configurés de la façon suivante:

  1. Module Angle&Ana&Sw de gauche:
  1. Module Angle&Ana&Sw de droite:


VII.2.2. Le module physique SW côté codeur

Ce module physique intègre uniquement le module fonctionnel Switches:


Module physique SW

Module physique 16 Switch vu de dessus

Module physique 16 Switch vu de dessous
Module physique 16 Switch du de dessus

Module physique 16 Switch du de dessous


Exemple d'utilisation:

Utilisation de 2 modules 16 switch en complément des commandes azimutales précédemment présentées.

Double commande azimutale + 16 interrupteurs + 2 modules de 16 interrupteurs

Toutes les commandes individuelles (interrupteur, angle et gaz) sont indépendantes les une des autres.


Cet agencement ne nécessite que 5 voies pour passer toutes ces commandes vers le récepteur RC:

- Commande d'Angle du propulseur azimutal gauche (360° sans butée avec une résolution de 0,088°)

- Commande d'Angle du propulseur azimutal droit (360° sans butée avec une résolution de 0,088°)

- Commande de Gaz du propulseur azimutal gauche

- Commande de Gaz du propulseur azimutal droit

- Commandes à partir de 3 x 16 = 48 positions d'interrupteurs


VII.2.3. Boîtiers en impression 3D pour modules physiques

Les boîtiers Angle&Ana&Sw et 16 Switch imprimés 3D par Cédric (aka Croky_B)

Boîtiers BURC en impression 3D

Retour