Aller au contenu

Projet IBIX

Le projet vise à faire communiquer un ICOM IC-705 avec un ampli XIEGU XPA125B.

L’IC-705 est un TRX décamétrique/VHF/UHF d’une puissance de 10W. L’ampli XIEGU XPA125B permet de disposer d’une puissance de 100W et d’une boite d’accord intégrée.

Les 2 appareils fonctionnement parfaitement de concert mais la commutation de bandes sur l’ampli n’est pas automatique. A chaque changement de bande sur l’émetteur, il faut alors changer de bande sur l’ampli.

L’ampli XPA125B disposant d’une entrée permettant de commuter les bandes en fonction d’un niveau de tension, l’objectif du projet est de réaliser une interface qui permettra de récupérer la fréquence courante de l’IC-705 et d’envoyer la tension adaptée au XPA125B pour le faire changer automatiquement de bande de fréquences.

Par la même occasion, l’interface permettra également de gérer la commutation PTT de l’ampli : moins de câble, et cela évite aussi d’utiliser la sortie jack de l’IC-705 avec laquelle plusieurs OMs ont eu des soucis…

Plusieurs étapes sont prévues :

1/ Apprendre à causer à l’IC-705 via la liaison série
2/ Utiliser un module ESP32 pour communiquer avec l’IC-705 et le XPA125B
3/ Mise en boîte (parce que c’est plus joli quand c’est fini)

Pourquoi IBIX ? Parce qu’il fallait trouver un nom… Interface Bluetooth entre l’IC-705 et le XPA125B.

ETAPE 1 – APPRENDRE A CAUSER A L’IC705 VIA LA LIAISON SERIE

La communication avec l’IC705 se fera via le port série du PC ; c’est une première étape pour tester le dialogue avec l’IC-705. Le protocole utilisé se nomme CI-V. ICOM en détaille toutes les commandes dans le “IC-705 – CI-V REFERENCE GUIDE“.

Le guide de référence CI-V d’ICOM précise le format des lignes de commande :

Imaginons que nous souhaitons régler la fréquence de l’IC-705 sur 28.498MHz, la ligne de commande sera :

  • Zone 1 (préambule) => FE FE : Cette partie est toujours présente en début de ligne de commande et permet la synchronisation avec l’IC-705.
  • Zone 2 (adresse TRX) => A4 : Adresse CI-V de votre IC-705, A4 est la valeur pas défaut si vous ne l’avez pas modifiée dans la configuration de l’IC-705.
  • Zone 3 (adresse contrôleur) => E0 : Adresse par défaut du contrôleur.
  • Zone 4 (commande) => 05 : La commande 05 permet de fixer la fréquence de l’IC-705.
  • Zone 5 (sous-commande) => / : Comme mentionné dans le guide CI-V, la commande 5 ne requiert aucune sous-commande, dans ce cas ne rien mettre ici (ne pas mettre 00).
  • Zone 6 (data) => 00 80 49 28 : Le format de la zone DATA de la commande 5 est expliqué dans le guide CI-V :

00 80 49 28 correspondant donc à 28.49800 MHz. Remarquez que la case 5 de la zone de DATA est facultative. La chaîne 00 80 49 28 00 aurait été équivalente.

  • Zone 7 (fin de message) => FD : Chaîne fixe, marque la fin de la ligne de commande

Notre chaîne complète à envoyer à l’IC-705 est donc : FE FE A4 E0 05 00 80 49 28 FD.

Pour tester l’envoi vers l’IC-705, j’ai utilisé un petit logiciel développé par KB3HAA, Augustus. Sur sur son site web, KB3HAA propose différentes ressources associées au protocole CI-V.

Il propose notamment un programme nommé CI-V Scout qui permet d’envoyer des lignes de commandes à un TRX ICOM via la liaison série.

L’écran de CI-V Scout est composé de plusieurs parties. En haut, une zone nommée “Serial Port parameters” dans laquelle il convient de paramétrer les informations relatives au port série utilisé pour accéder à l’IC-705 puis de cliquer sur “Start”

Pour s’assurer que la liaison série fonctionne, tourner le VFO de l’IC-705, si des lignes s’affichent en partie basse de CI-V Scout, c’est tout bon !

Au milieu se trouve une zone permettant d’élaborer la ligne de commande et de l’envoyer vers l’IC-705, je l’ai donc complétée avec la chaîne rédigée plus haut :

On clique sur “Send Command To Radio” et hop :

C’est déjà top non ? Perso, ça m’éclate. Bref. Bon, ce que l’on souhaitait, c’était juste le contraire, à savoir récupérer la fréquence de l’IC-705. Le guide CI-V indique qu’il s’agit de la commande 03 :

Avec CI-V Scout, envoyez simplement la commande FE FE A4 E0 03 FD et admirez le résultat :

L’IC-705 nous répond poliment “00 80 49 28 00“, ce qui correspond bien à sa fréquence actuelle.

Bref, ça c’est fait, on sait parler le “IC-705” couramment…

ETAPE 2 – UTILISER UN ARDUINO POUR COMMUNIQUER AVEC L’IC-7055 et le XPA125B

Le module ARDUINO utilisé est une carte “ESP32“. Je m’étais initialement orienté sur une communication WIFI avec l’IC-705 mais après quelques déboires, et après discussion avec Armel F4HWN, ce dernier m’a fait part du fait que la communication ave l’IC-705 est beaucoup plus simple en bluetooth. Ce type de carte coûte une dizaine d’euros. Il inclut les fonctionnalités wifi (que je n’utiliserai pas ici) et bluetooth.

Pour utiliser ce module ESP32 dans l’interface de programmation IDE ARDUINO, l’installation de pilotes spécifiques est nécessaire. Cette manipulation est décrite dans le manuel ci-dessus.

Ce premier programme vous permettra de vous assurer que vous parvenez à transférer un programme dans l’ESP32, le lancer, et voir ce qu’il a à vous dire via la liaison série, à savoir ici le traditionnel “Hello world !” :

// IBIX
// Réglage Automatique de Bande entre l'IC-705 et le XPA125B
// v1.0 - 07/05/23
// F5AGL - Gilles RUDELLE - zapgillou@zapgillou.fr
//
// Carte ESP32 (AZ-DElivery)
// Bibliothèques
// Variables globales
void setup()
{
Serial.begin(9600); // Etablissement de la liaison série pour le débuggage
delay(500);
Serial.println("");
Serial.println("");
Serial.println("_IBIX - Hello world !");
}
void loop()
{
}

Avant de vous montrer le programme complet, quelques éléments d’accompagnement :

Informations de débogage : Pendant le développement de RABIX, j’ai utilisé la liaison série avec le PC pour envoyer des informations diverses. J’ai laissé dans le code ces communications qui ne sont plus utiles une fois RABIX mis en œuvre en autonome (déconnecté du PC) mais je me dis que ça peut toujours être utile pour d’autres ! Voici par exemple ce que IBIX transmet sur la liaison série avec le PC :

IBIX - F5AGL

_Initialisation liaison BT avec l'IC-705
_Etablissement de la liaison BT, baudrate = 19200
_Liaison BT établie
_callback event ESP_SPP_SRV_OPEN_EVT : IC-705 Connecté
_Détection changement de bande : 14 MHz
_Détection changement de bande : 7 MHz
_Détection changement de bande : 14 MHz
_Détection changement de bande : 18 MHz

Liaison BT avec l’IC-705 : C’est relativement simple à mettre en œuvre. Concernant la fréquence courante de l’IC-705, ce dernier l’envoie automatique sur la liaison BT sans qu’il soit nécessaire de le questionner. Concernant l’état TX/RX, cela passera par une trame de commande dont nous interprèterons la réponse.

LEDs de signalisation : IBIX dispose de 3 leds de signalisation permet de voir ce qu’il fait…

  • led1 – état IBIX : rouge si sous tension mais liaison BT non connectée, vert si liaison BT connectée
  • led2 – commutation de bande : bleue (1s) si IBIX a détecté un changement de bande de fréquences, clignotement rouge / bleu plusieurs fois si la bande sélectionnée sur l’IC-705 n’est pas couverte par le XPA125B (typiquement 144MHz et 432MHz)
  • led3 – PTT : rouge si IC-705 en émission, éteinte sinon

XPA125B – Bande de fréquences : Le XPA125B peut changer de bande de fréquences soit manuellement (bouton BAND en façade), soit automatiquement via une tension appliquée sur la broche 3 de la prise ACC (cf. extrait du manuel ci-dessous) :

Pour cela, il doit être en mode de changement de bande automatique (appui long sur le bouton BAND) ; il indique alors “AUTO” sur son écran.

La tension de commande est générée par l’ESP32 via un signal PWM. Les graphes sont issus de zestedesavoir.com.

Une tension PWM est une tension qui varie entre 0V et une valeur max (3,3V dans le cas de l’ESP32) à une fréquence donnée. En fonction de la commande du PWM, le signal reste plus ou moins longtemps à +3.3V :

Au final, la tension efficace varie mais il ne d’agit pas réellement d’un signal analogique entre 0 et 3.3V. Pour corriger cela et avoir une tension réellement analogique réglage depuis l’ESP32, nous allons rajouter un filtre RC. Ci-dessous, en rouge le signal PWM, en bleu le signal obtenu en sortie du filtre RC :

Voici le résultat à l’oscillo, d’abord le signal pwm (ici pour la bande des 20 mètres, rapport cyclique 107/256), le signal fait des créneaux entre 0V et 3,3V :

Et le signal aval filtre RC (bande des 20 mètres, 1,38V); il subsiste quelques oscillations marginales mais le signal est désormais de 1,38V environ :

Il nous suffira alors d’envoyer cette tension sur la broche 3 de la prise accessoire (ACC) du XPA125B.

XPA125B – PTT : Concernant la commutation PTT, nous allons utiliser la commande 24 :

Cette commande permet de questionner l’IC-705 de son état : TX ou RX. Il suffira ensuite d’utiliser cette information pour piloter un relais qui mettra la broche 2 de la prise ACC du XPA124B à la masse pour le passer en émission :

Voilà pour les explications principales, voici le code complet commenté :

// IBIX
// Interface Bluetooth entre l'IC-705 et le XPA125B
// v2.0 - 28/05/23
// F5AGL - Gilles RUDELLE - zapgillou@zapgillou.fr
// 
// Carte ESP32 (AZ-DElivery)
//
// Mémorisation :
// - J'ai laissé dans le code source tout un tas de communications avec le moniteur série sur le PC utilisées pour le développement
//

// Bibliothèques
#include "BluetoothSerial.h"

#define IBIX_BT_NOM         "IBIX"                              // BT - Nom Bluetooth de l'interface
#define IC705_ADDRESS        0xA4                               // CIV - Adresse CI-V de l'IC-705 (Set/Connectors/CI-V Address)

#define BROADCAST_ADDRESS    0x00 //Broadcast address           
#define CONTROLLER_ADDRESS   0xE0 //Controller address          // CIV - Adresse RABIX pour le dialogue CI-V avec l'IC-705

#define START_BYTE           0xFE                               // CIV - START BYTE (Cf. trame CI-V)
#define STOP_BYTE            0xFD                               // CIV - STOP BYTE (Cf. trame CI-V)

#define CMD_TRANS_FREQ       0x03                               // CIV - Code associé à une trame d'envoi de fréquence par l'IC-705 (Cf. trame CI-V)

// 3 LEDS permettent de visualiser l'état de IBIX
// LED1 : BT => rouge si BT non connecté, vert si BT connecté
// LED2 : BAND => bleu (environ 1s) si changement de bande détecté, clignotement bleu/rouge si hors bande XPA125B (144/432)
// LED3 : PTT => rouge si TX
#define brocheLED1R          23                                 // Broche ESP32 associée à la broche rouge de la led1 3 couleurs
#define brocheLED1V          22                                 // Broche ESP32 associée à la broche verte de la led1 3 couleurs
#define brocheLED1B          21                                 // Broche ESP32 associée à la broche bleue de la led1 3 couleurs
#define brocheLED2R          19                                 // Broche ESP32 associée à la broche rouge de la led2 3 couleurs
#define brocheLED2V          18                                 // Broche ESP32 associée à la broche verte de la led2 3 couleurs
#define brocheLED2B          05                                 // Broche ESP32 associée à la broche bleue de la led2 3 couleurs
#define brocheLED3R          17                                 // Broche ESP32 associée à la broche rouge de la led3 rouge

#define brocheRelaisPTT      32                                 // Broche ESP32 associée au relais PTT

// La pinoche 6 "BAND Voltage Input" de la prise accessoires (ACC) du XPA125B est utilisée pour régler la fréquence. 
// Pour que cela fonctionne, il faut que le réglage de bande soit en mode AUTO (appui long sur le bouton BAND)
// On utilise ensuite une sortie pwm de l'ESP32, sa plage de tension est de 0 à 3,3v pour une résolution de 0 à 255
// Les constantes ci-dessous correspondent au niveau pwm que l'on applique pour avoir la tension souhaitée (3,3 V <=> 255)
#define pwm160m               18                                // 0,230V         
#define pwm80m                36                                // 0,460V
#define pwm60m                53                                // 0,690V
#define pwm40m                71                                // 0,920V
#define pwm30m                86                                // 1,1150V
#define pwm20m               107                                // 1,380V
#define pwm17m               124                                // 1,610V
#define pwm15m               142                                // 1,840V
#define pwm12m               160                                // 2,070V
#define pwm10m               178                                // 2,300V
#define pwm6m                196                                // 2,530V

// Tableau baudRates en lien avec l'établissement de la liaison BT
#define BAUD_RATES_SIZE 4
const uint16_t baudRates[BAUD_RATES_SIZE]       = {19200, 9600, 4800, 1200};

BluetoothSerial CAT;                                            // BT - Objet associé à la liaison BT
uint16_t  baud_rate;                                            // BT - Débit liaison BT
uint32_t  readtimeout = 1000;                                   // BT - Timeout utilisée lors de la lecture des trames BT
uint8_t  read_buffer[12];                                       // BT - Buffer qui réceptionne les trames BT
int TailleBuffer;                                               // BT - Taille du buffer BT

int i;                                                          // Parce que ça sert toujours...

bool IC705_Connect;                                             // true si on est connecté à l'IS-705, false sinon
byte BandeActuelle;                                             // mémorise la bande actuelle (pour pouvoir passer à true BandeChangement si besoin)

int pwmChannel = 0;                                             // pwm - Sortie pwm, canal 0 utilisé
int frequence = 4000000;                                        // pwm - Fréquence pwm
int resolution = 8;                                             // pwm - Résolution de 8 bits, 256 valeurs possibles
int pwmPin = 14;                                                // pwm - Broche ESP32 utilisée pour la sortie pwm (qui permet de générer la tension de commande du XPA215B)
int PTTantirebond;                                              // dispositif anti rebond PTT

void led1Rouge()                                                // Allume la led1 3 couleurs en rouge
  {
  digitalWrite(brocheLED1R, HIGH); 
  digitalWrite(brocheLED1V, LOW);
  digitalWrite(brocheLED1B, LOW);
  }

void led1Vert()                                                 // Allume la led1 3 couleurs en vert
  {
  digitalWrite(brocheLED1R, LOW);
  digitalWrite(brocheLED1V, HIGH);
  digitalWrite(brocheLED1B, LOW);
  }

void led1Bleu()                                                 // Allume la led1 3 couleurs en bleu
  {
  digitalWrite(brocheLED1R, LOW);
  digitalWrite(brocheLED1V, LOW);
  digitalWrite(brocheLED1B, HIGH);
  }

void led1Off()                                                  // Eteint la led1
  {
  digitalWrite(brocheLED1R, LOW);
  digitalWrite(brocheLED1V, LOW);
  digitalWrite(brocheLED1B, LOW);
  }

void led2Rouge()                                                // Allume la led2 3 couleurs en rouge
  {
  digitalWrite(brocheLED2R, HIGH);
  digitalWrite(brocheLED2V, LOW);
  digitalWrite(brocheLED2B, LOW);
  }

void led2Vert()                                                 // Allume la led2 3 couleurs en vert
  {
  digitalWrite(brocheLED2R, LOW);
  digitalWrite(brocheLED2V, HIGH);
  digitalWrite(brocheLED2B, LOW);
  }

void led2Bleu()                                                 // Allume la led2 3 couleurs en bleu
  {
  digitalWrite(brocheLED2R, LOW);
  digitalWrite(brocheLED2V, LOW);
  digitalWrite(brocheLED2B, HIGH);
  }

void led2Off()                                                  // Eteint la led2
  {
  digitalWrite(brocheLED2R, LOW);
  digitalWrite(brocheLED2V, LOW);
  digitalWrite(brocheLED2B, LOW);
  }

void led3Rouge()                                                    // Allume la led3
  { 
  digitalWrite(brocheLED3R, HIGH);
  }

void led3Off()                                                 // Eteint la led3
  {
  digitalWrite(brocheLED3R, LOW);
  }

void callback(esp_spp_cb_event_t event,                         // Cette fonction callback est appellée à chaque "event" en lien avec le Bluetooth, 
  esp_spp_cb_param_t *param)                                    // et notamment en cas de connexion de l'IC-705 sur IBIX
                                                                // Elle est appellée indépendant de la fonction loop
  {
  if (event == ESP_SPP_SRV_OPEN_EVT)                            // Connection BT
    {
    Serial.println("_callback event ESP_SPP_SRV_OPEN_EVT : IC-705 Connecté");
    IC705_Connect = true;
    led1Vert();
    }
  if (event == ESP_SPP_CLOSE_EVT)                               // Déconnexion BT
    {
    Serial.println("_callback event ESP_SPP_CLOSE_EVT : IC-705 Déconnecté");
    IC705_Connect = false;
    led1Rouge();
    }
  }
  
uint8_t readLine(void)                                          // Fonction de lecture d'une trame BT
{
  uint8_t byte;
  uint8_t counter = 0;
  uint32_t ed = readtimeout;
  while (true)
  {
    while (!CAT.available()) 
      {
      if (--ed == 0)return 0;
      }
    ed = readtimeout;
    byte = CAT.read();
    
    read_buffer[counter++] = byte;
    if (STOP_BYTE == byte)  break; 

    if (counter >= sizeof(read_buffer)) return 0; 
  }
  return counter;
}

bool InitilisationLiaisonBT(void)                                // Initilialisation de la liaison BT
  {
  for (uint8_t baud = 0; baud < BAUD_RATES_SIZE; baud++)         // On tente d'abord au débit BT maximum puis on diminue en cas d'échec
    {
    Serial.print("_Etablissement de la liaison BT, baudrate = ");
    Serial.println(baudRates[baud]);
    
    if (!CAT.begin(IBIX_BT_NOM))               
      {
      Serial.println("_Impossible d'établir la liaison BT");
      } 
    else 
      {
      Serial.println("_Liaison BT établie");
      return true;                                                // On quitte la fonction en renvoyant true, la liaison BT est initialisée (mais on n'est pas connecté encore)
      }
    }
  return false;                                                   // On quitte la fonction en renvoyant false, impossible d'initialiser la liaison BT
  }

void sendCIVAmorceTrame(void)
  {
  CAT.write(START_BYTE);         
  CAT.write(START_BYTE);         
  CAT.write(IC705_ADDRESS);      
  CAT.write(CONTROLLER_ADDRESS); 
  }

void RelaisPTT(bool etat)
  {
  if (etat == true) { digitalWrite(brocheRelaisPTT, HIGH); }         
  else { digitalWrite(brocheRelaisPTT, LOW); }                    // Bas niveau sur entrée PTT XPA125B = passage en émission  
  }

void setup() 
  {
    
  Serial.begin(9600);                                             // Etablissement de la liaison série avec le PC pour le débuggage                    
  delay(500); 
   
  Serial.println("");               
  Serial.println("_IBIX - F5AGL");
  Serial.println("");

  CAT.register_callback(callback);                                // Iniialisation fonction callback() ensuite appelée automatiquement à chaque event (connexion, data, ...)
  
  Serial.println("_Initialisation liaison BT avec l'IC-705");     // Initialisation liaison BT avec l'IC-705
  if (!(InitilisationLiaisonBT()))
    {
    Serial.println("_Fin du programme");
    abort;                                                        // Si l'initialisation de la liaison BT a échoué on sort du programme
    }
  
  IC705_Connect = false;                                          // Initialisé par défaut à false, ce sera la fonction callback qui le passera à true une foix IBIX connecté à l'IC705
 
  BandeActuelle = 0x00;

  // Initialisation broches ESP32 en SORTIE pour commander les 3 leds
  pinMode(brocheLED1R, OUTPUT);                               
  pinMode(brocheLED1V, OUTPUT);                              
  pinMode(brocheLED1B, OUTPUT);                               
  pinMode(brocheLED2R, OUTPUT);                               
  pinMode(brocheLED2V, OUTPUT);                              
  pinMode(brocheLED2B, OUTPUT);                               
  pinMode(brocheLED3R, OUTPUT);                               
 
  pinMode(brocheRelaisPTT, OUTPUT);                               // Initialisation broche ESO32 en SORTIE pour commander le relais PTT
  RelaisPTT(false);                                               // Pas de signal PTT à l'initialisation;

  ledcSetup(pwmChannel, frequence, resolution);                   // pwm - Configuration du canal 0 avec la fréquence et la résolution choisie (constantes, voir plus haut)  
  ledcAttachPin(pwmPin, pwmChannel);                              // pwm - Assigne le canal PWM au pin pwnPin (constante)
  ledcWrite(pwmChannel, 255);                                     // pwm - Par défaut sur 7 MHz (il faut bien faire un choix...)

  led1Rouge(); led2Rouge(); led3Rouge(); delay(300);              // un petit chenillard pour dire que le IBIX s'est initialisée
  led1Off(); led2Off(); led3Off(); delay(300);
  led1Vert(); led2Vert(); led3Off(); delay(300); 
  led1Off(); led2Off(); led3Off(); delay(300);
  led1Bleu(); led2Bleu(); led3Off(); delay(300); 
  led1Off(); led2Off(); led3Off(); delay(300);
  
  led1Rouge(); 
  led2Off();
  led3Off();
  }

 

void loop() 
  {
 
  if (IC705_Connect)                                                    // Connexion BT à l'IC-705 active ?
    {
    sendCIVAmorceTrame(); CAT.write(0x24); CAT.write(0x00); CAT.write(0x01); CAT.write(STOP_BYTE); // Envoi trame demande état TX vers IC-705
    sendCIVAmorceTrame(); CAT.write(0x03); CAT.write(STOP_BYTE);                                   // Envoi trame demande fréquence vers IC-705
    delay(50);
    //Serial.println("_IC705_Connect = true");
    TailleBuffer = readLine();
    while (TailleBuffer >0)                                             // IC-705 a des trucs à dire via le BT
    {
    //Serial.println("_IC705 réception d'une trame");
      if ((read_buffer[0]==START_BYTE)&&(read_buffer[1]==START_BYTE))   // Cette chose est bien une trame CI-V car débute par les 2 START_BYTE
        {
        
        if ((read_buffer[4]==0x24)
         &&(read_buffer[5]==0x00)&(read_buffer[6]==0x01))               // C'est une trame d'info TX / RX
          {
          //Serial.println("_IC705 Info TX RX");
          switch (read_buffer[7]) {
            case 0x01 :                                                 // IC-705 en émission
              Serial.println("_IC705 IC705 en émission");
              RelaisPTT(true);                                          // Activation relais PTT
              led3Rouge();
              break;
            case 0x00 :                                                 // IC-705 en réception
              RelaisPTT(false);                                         // Désactivation relais PTT
              led3Off();
            }
          }
        }  
        if (read_buffer[4]==CMD_TRANS_FREQ)                             // C'est une trame d'info fréquence
          {
          //Serial.println("_IC705 réception fréquence");
          if (read_buffer[8]!=BandeActuelle)                            // Et bingo, la bande de fréquence de l'IC-705 a changé
            {
            Serial.print("_RX BT IC-705 Bande : "); 
            Serial.print(read_buffer[8], HEX);
            Serial.println(" MHz");
            led2Bleu();                                                  // On active la led bleu (info de changement de fréquence)
            BandeActuelle = read_buffer[8];                             // Et on mémorise cette nouvelle bande
            switch (BandeActuelle) {
              case 0x01 : ledcWrite(pwmChannel, pwm160m);  break;                 // 160 mètres
              case 0x03 : ledcWrite(pwmChannel, pwm80m);   break;                 //  80 mètres
              case 0x05 : ledcWrite(pwmChannel, pwm60m);   break;                 //  60 mètres
              case 0x07 : ledcWrite(pwmChannel, pwm40m);   break;                 //  40 mètres
              case 0x10 : ledcWrite(pwmChannel, pwm30m);   break;                 //  30 mètres
              case 0x14 : ledcWrite(pwmChannel, pwm20m);   break;                 //  20 mètres
              case 0x18 : ledcWrite(pwmChannel, pwm17m);   break;                 //  17 mètres
              case 0x21 : ledcWrite(pwmChannel, pwm15m);   break;                 //  15 mètres
              case 0x24 : ledcWrite(pwmChannel, pwm12m);   break;                 //  12 mètres
              case 0x28 : ledcWrite(pwmChannel, pwm10m);   break;                 //  10 mètres
              case 0x50 : ledcWrite(pwmChannel, pwm6m);    break;                 //   6 mètres
              default : for (i=0;i<6;i++) 
                { led2Bleu(); delay (200); led2Rouge(); delay (200); } break;    // Si ce n'est pas une bande couverte par l'ampli (càd 144 ou 432)
                                                                                 // on fait clignoter bleu/rouge la led plusieurs fois
             }
          delay(1000);                                                           // Juste pour avoir le temps de voir la led bleue... 
          led2Off(); 
          }
          } 
        delay(20);
        TailleBuffer = readLine();
        }
      // Serial.print("_RX BT IC-705 : ");
      // for (i=0;i<TailleBuffer;i++)                                    // Affichage trame complète sur la liaison série avec le PC, utilisé pour le dvl
      //  {
      //  Serial.print(read_buffer[i], HEX);
      //  Serial.print(" ");
      //  Serial.println("");
      //  }

      }
  }

Côté câblage, voici IBIX en version volante :

Et un petit aperçu du résultat :

Ci-dessous le schéma de câblage :

ETAPE 3 – MISE EN BOITE

La mise en boîte est réalisée ! projet terminé ! Hyper confortable à l’usage !

TO DO LIST

  • Appairage BT : Pour le moment, à chaque mise sous tension de IBIX, il faut s’y connecter en bluetooth en allant dans le menu de l’IC-705. C’est un peu fastidieux car une fois IBIX connu de l’IC-705, ce serait top qu’il s’y connecte tout seul… Pour autant, c’est quelques clics sur l’écran pour un gain significatif ensuite lors des changements de bandes ! Mais c’est dans la “to do lst” !
  • PCB : Why not ?
Étiquettes:

3 commentaires sur “Projet IBIX”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *