• Bonsoir, je me rends juste compte que les notifications des nouveaux messages étaient limitées aux membres actifs dans les 30 derniers jours. Donc, j'ai supprimé cette option. En espérant que vous aurez bien les notifications attendues. Merci pour votre patience. Yves

Décodeur/Codeur PPM SBUS IBUS et plus

pierrotm777

Membre Sénior
Bonjour à tous,

Je vous présente mon dernier projet, un convertisseur de signaux.

Les lien suivants ont servi pour ce projet:
/* Décodeur pour commander jusqu'à 16 servos à partir d'un signal type:
- PPM basé sur les librairies RC Navy https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/DigisparkTinyCppmReader
- SBUS basé sur les librairies RC Navy https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/RcBusRx
Un inverseur du signal est nécessaire (http://www.ernstc.dk/arduino/sbus.html)
- IBUS basé sur la librairie Rc Navy https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/RcBusRx
- SRXL basé sur les librairies RC Navy https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/RcBusRx
- SUMD basé sur l'exemple Rc Navy https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/RcBusRx
- DSMX basé sur la librairie https://github.com/Quarduino/SpektrumSatellite
- JETIEX basé sur la librairie Rc Navy https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/RcBusRx
- MULTIWII basé sur la librairie https://github.com/fdivitto/MSP

*/

/*
* Codeur permettant de convertir 8 sorties servos PWM en:
- PPM basé sur les librairies RC Navy (http://p.loussouarn.free.fr/arduino/arduino.html)
- SBUS basé sur les librairies RC Navy (http://p.loussouarn.free.fr/arduino/arduino.html)
- IBUS
*/

Un grand merci à philippe (RC Navy) pour son aide.

Il peut lire du:
PPM
SBUS
IBUS
DSMX
SRLX
SUMD
JETI
MULTIWII

Ces signaux sont alors convertis en 8 ou 16 sorties servos PWM au choix.

Il peut coder un signal PPM, SBUS, ou IBUS à partir de 8 sorties servos.
J'ai pour l'instant validé uniquement les modes PPM SBUS et IBUS, n'étant pas équipé pour les autres formats.

Le projet utilise un Arduino pro mini.
Le signal d'entrée pour le décodage est réalisé sur la patte Rx.
Cette même patte est utilisée pour la configuration du module via une interface FTDI.
Le code donne 3s pour taper sur la touche 'Entrée'. Passé ce temps le code démarre dans le mode configuré et le port série n'est plus utilisable. La led du Pro mini clignote 1 fois pour le PPM, 2 fois pour le SBUS, 3 fois pour le IBUS, etc...
La configuration se fait donc à partir d'un terminal, par exemple TeraTerm via un module FTDI.
cli.jpg
Les touches possibles sont indiquées en appuyant sur la touche h (en minuscule uniquement).
Par défaut, le module est configuré en décodeur PPM 8 sorties sans failsafe.

Options possibles par configuration:
Il y a donc deux menus d'options possibles.
Celui du Décodeur et celui du Codeur.

Décodeur:
h Help (retourne ce menu)
q quit (quit le menu)
0 set Decoder mode (configure le mode décodeur)
1 set Coder mode (configure le mode codeur)
n set 8/16 outputs mode (configure 8 ou 16 sorties)
r first 8 outputs changed (inverse les sorties 2-9/A0-A4)
p set PPM mode (configure en PPM)
s set SBUS mode (configure en SBUS)
i set IBUS mode (configure en IBUS)
d set DSMX mode (configure en DSMX)
m set SRLX mode (configure en SRLX)
u set SUMD mode (configure en SUMD)
j set SUMD mode (configure en JETI)
kset MULTIWII mode (configure en MULTIWII)

Il existe une option cachée (e) qui permet d'effacer l'EEPROM et donc de revenir à la configuration par défaut, PPM, 8 servos, failsafe off.

Codeur:
h Help (retourne ce menu)
q quit (quit le menu)
0 set Decoder mode (configure le mode décodeur)
1 set Coder mode (configure le mode codeur)
p set PPM mode (configure en PPM)
s set SBUS mode (configure en SBUS)
i set IBUS mode (configure en IBUS)

Les connexions:
Entrée signal sur la pin Rx.
Sorties D2 à D9 et D10,D11,D12,A0,A1,A2,A4,A5.
La led utilisant la sortie D13 et non utilisable.
Un bouton pour sauvegarder la position des servos pour le mode failsafe est câblé sur la pin A3 .
En mode Codeur:
- la pin D11 est utilisée pour le PPM.
- la pin Tx est utilisée pour le SBUS et IBUS.

Le code est complètement libre (open source) et téléchargeable ICI .
J'utilise la dernière version de l'IDE Arduino 1.8.12 sans problème.

Ou, vous pouvez utiliser l'utilitaire Xloader pour charger le code hex dans le pro mini.

Si vous possédez un récepteur DSMX (Spektrum), Multiplex (Srxl) ou Graupner (Sumd), merci de vos retour sur le fonctionnement ou pas dans ces modes.

Ce projet a été testé avec ma radio OpenAVRc .
J'ai testé les modes PPM,SBUS (avec un inverseur ) et IBUS avec un récepteur Flysky FS-IA6B.
J'ai aussi utilisé un récepteur Frsky X8R (avec un inverseur ) pour le mode SBUS.
 

Fichiers joints

  • cli.jpg
    cli.jpg
    46 KB · Vues: 37
bonjour pierrotm777,

bravo pour ce travail et merci pour le partage,
mais en voulant jeter un coup d’œil au code par le lien du premier post je tombe sur le code de synchro de deux moteurs,
est-ce normal ?

Michel
 
Haut