Phase 2: Décodage DTMF, Changement de Fréquence VHF

Grâce à des codes DTMF, nous allons pouvoir changer la fréquence de la voie VHF. Cela nous permettra de s’interconnecter par radio le relais UHF avec un autre relais.

Le principe de fonctionnement est simple, on envoie 4 chiffres DTMF correspondant à la fréquence souhaitée.
Exemple: 5275 pour 145.275 Mhz ou 5712 pour 145.7125 Mhz

Le décodage DTMF s’effectue avec le CI 8870, connu pour son utilisation en téléphonie, qui va générer une interruption à l’arduino.

void decode_DTMF()
{
  val_dtmf=digitalRead(DTMF_Q1)+digitalRead(DTMF_Q2)*2+digitalRead(DTMF_Q3)*4+digitalRead(DTMF_Q4)*8;
  if (val_dtmf<10){code_DTMF[compteur_DTMF]=String(val_dtmf);}
  if (val_dtmf==10){code_DTMF[compteur_DTMF]= »0″;}
  if (val_dtmf==11){code_DTMF[compteur_DTMF]= »* »;}
  if (val_dtmf==12){code_DTMF[compteur_DTMF]= »# »;}
  if (val_dtmf==13){code_DTMF[compteur_DTMF]= »A »;}
  if (val_dtmf==14){code_DTMF[compteur_DTMF]= »B »;}
  if (val_dtmf==15){code_DTMF[compteur_DTMF]= »C »;}
  if (val_dtmf==0){code_DTMF[compteur_DTMF]= »D »;}
  compteur_DTMF++;
  if (compteur_DTMF>5){compteur_DTMF=5;}
}

le programme analyse les sorties du 8870 pour récupérer les codes DTMF et vérifie que cela correspond à une fréquence mémorisée dans le poste VHF.

Dans le poste VHF, nous avons programmé quelques fréquences simplex et des fréquences de relais. L’arduino va simuler l’appui de la touche mémoire que l’on va appeler mémoire par défaut et l’appui de la touche UP ou DOWN pour sélectionner la mémoire correspondant à la fréquence recherchée

  //les memoires programmées dans la Voie VHF
  Memoire_VHF[1]= »4800″;
  Memoire_VHF[2]= »5200″;
  Memoire_VHF[3]= »5212″;
  Memoire_VHF[4]= »5225″;
  Memoire_VHF[5]= »5237″;
  Memoire_VHF[6]= »5262″;
  Memoire_VHF[7]= »5275″;
  Memoire_VHF[8]= »5287″;
  Memoire_VHF[9]= »5500″;
  Memoire_VHF[10]= »5612″;
  Memoire_VHF[11]= »5625″;
  Memoire_VHF[12]= »5637″;//->> Milieu Memoire, mémoire par défaut
  Memoire_VHF[13]= »5650″;
  Memoire_VHF[14]= »5662″;
  Memoire_VHF[15]= »5675″;
  Memoire_VHF[16]= »5687″;
  Memoire_VHF[17]= »5700″;
  Memoire_VHF[18]= »5712″;
  Memoire_VHF[19]= »5725″;
  Memoire_VHF[20]= »5737″;
  Memoire_VHF[21]= »5750″;
  Memoire_VHF[22]= »5762″;
  Memoire_VHF[23]= »5775″;
  Memoire_VHF[24]= »5787″;
 

 
  // codes reserves aux SysOps
  Memoire_VHF[50]= »1234″; //desactive la voie VHF
  Memoire_VHF[51]= »5678″; //desactive la voie UHF
  Memoire_VHF[52]= »4321″; //active la voie VHF
  Memoire_VHF[53]= »8765″; //active la voie UHF
 

Ici la touche mémoire « par défaut » correspond à la fréquence 145.6375 Mhz (12). si on souhaite changer la fréquence à 145.225 Mhz, l’arduino va simuler l’appui sur la touche DOWN 8 fois

   if (compt_mem<50) {
   digitalWrite(Mem_VHF,HIGH); // position sur la frequence par defaut
   delay (150); // les delay sont à modifier en fonction de la rapidité du poste
   digitalWrite(Mem_VHF,LOW);
   delay (150);
   compt_mem=compt_mem-Mem_Start;
   
   if (compt_mem>0){
     for (int i=1; i <= compt_mem; i++){
       digitalWrite(Mem_Up,HIGH); // Appui sur la touche UP
       delay (150);
       digitalWrite(Mem_Up,LOW);  
        delay (150);   
     }
   }
   if (compt_mem<0){
     for (int i=0; i <= abs(compt_mem); i++){
       digitalWrite(Mem_Down,HIGH); // Appui sur la touche DOWN
       delay (150);
       digitalWrite(Mem_Down,LOW);  
        delay (150);   
     }
   }
   }

Dans le programme ci dessus, on peut voir que l’on simule l’appui pendant 150ms et on relâche pendant 150ms avant un nouvel appui sur une touche.
Il est souhaitable de programmer les fréquences les + utilisées dans les mémoires proches de la mémoire par défaut. Dans ce cas, le changement de Fréquence s’effectuera plus rapidement. Pour les mémoires les + « éloignées », il faudra attendre jusqu’à 3 à 4 secondes pour que la voie VHF soit sur la bonne fréquence.

Grâce à des codes DTMF connu par le sysop du relais, on peut par exemple activer ou désactiver soit la voie VHF, soit la voie UHF
Après l’envoi des codes DTMF, le relais renvoi de la CW pour informer que le code DTMF est correct – – –  -.- (OK) ou incorrect …. .. (HI)

Phase 3 le Programme Complet