vendredi, février 7, 2025
Activités RadioElectroniqueInformatique & programmationRéalisations

Arduino et la radio ….

Je voulais à la fois tester un minuscule émetteur/récepteur SA828 et me familiariser avec la programmation sous Arduino. J’ai donc commandé un module SA828 (14€) et un kit de démarrage Arduino (20€).

Il suffit de câbler un haut parleur et un potentiomètre pour obtenir un E/R VHF ou UHF, le microphone, l’ampli BF, le commutateur E/R et un encodeur rotatif 16 canaux sont intégrés à la platine. Un adaptateur USB / TTL permet de configurer les 16 fréquences, les tonalités CTSS, le squelch à l’aide d’un logiciel (NiceRF)
On peut aussi utiliser l’entrée RXData pour envoyer des informations en provenance d’un Arduino, il est ainsi possible de construire un E/R couvrant le 2m ou le 70cm en fonction du modèle de SA828 V ou U.

Pour faciliter les essais, le module est surélevé sur une platine de CI (plus simple si on veut souder/dé-souder facilement, car c’est vraiment petit … enfin pour mes yeux!).
Une diode est soudée en série sur le + par précaution, mais aussi pour faire chuter la tension de 5V (car maxi 5V).
Une autre maquette est en construction avec un module DRA828 qui ne coûte que quelques € (c’est un module nu, sans BF, sans encodeur)
Attention les commandes ne sont pas les mêmes, voir les DATASHEET)

En soudant une alimentation 5V maxi, un potentiomètre pour le volume et un haut parleur, on possède un émetteur 1w / récepteur de 3cm sur 4 !
On peut préprogrammer les 16 canaux en utilisant un PC et une interface USB/TTL fournie avec le module. Un logiciel est également disponible.

Le SA828 reçoit des informations par l’intermédiaire de son entrée RXD (Réception de DATA) et peut aussi retourner des informations par sa borne TXD (Transmission de DATA), numéro de version, bonne prise en compte des données.

Je voulais donc tester la possibilité de mettre en forme et d’envoyer des fréquences d’émissions et/ou réceptions depuis un Arduino (En fait on va se contenter d’envoyer les informations variables sur le canal 1) afin de construire un récepteur capable de couvrir toute la bande amateur des 2 mètres (144 à 146 Mhz)

L’Arduino :
Il est pour le moment monté sous forme de maquette avec la platine fournie avec le kit.
J’ai choisi pour les essais de commander le changement de fréquence par 2 boutons poussoir (montée et descente en fréquence), j’ai ajouté l’afficheur du kit, un potentiomètre permet le réglage de la luminosité.
Je me suis inspiré d’un cours relatif à l’affichage (D’un Thermomètre), et à gestion des boutons poussoirs (Allumage / extinction d’une LED)

Voilà le résultat sur la plaque d’essai.

La documentation sur les commandes à envoyer vers le SA828 n’était pas très claire, aussi j’ai utilisé le logiciel prévu pour les canaux fixes, j’ai placé un « espion » sur le port de communication afin de récupérer les bonnes séquences.

// inclure la librairie pour gérer l'afficheur
#include <LiquidCrystal.h>

// initialiser l'afficheur
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// définir les paramètres pour SA828
float frequence_reception = 145.7000;
float frequence_emission = 145.7000;
int squ = 0;

// définir les poussoirs montée descente en fréquence
int buttonApin = 4;
int buttonBpin = 5;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("RECEPTEUR VHF");

  pinMode(buttonApin, INPUT_PULLUP);  
  pinMode(buttonBpin, INPUT_PULLUP);  
}

void loop() {

if (digitalRead(buttonApin) == LOW)
  {
   // on augmente la fréquence ;
   frequence_reception = frequence_reception + 0.005 ;
   // on attend pour éviter l'effet rebond du poussoir;
   delay(500);
   envoie ();
  }
  if (digitalRead(buttonBpin) == LOW)
  {
    // On diminue la fréquence ;
    frequence_reception = frequence_reception - 0.005 ;
    // on attend pour éviter l'effet rebond du poussoir;
    delay(500);
    envoie ();
  }
  lcd.setCursor(0, 1);
  // Afficher la nouvelle fréquence
  lcd.print(frequence_reception,4);
  lcd.print(" MHz");
}
void envoie ()
{
  Serial.begin (9600);

//  envoyer au module

  frequence_emission = frequence_reception;

  Serial.print ("AAFA3");
  Serial.print (frequence_emission, 4);
  Serial.print (",");
  Serial.print (frequence_reception, 4);
  Serial.print (",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,");
  Serial.println (squ);
}

Et la suite ……

Voilà un beau projet à finaliser avec nos jeunes recrues, un peu d’électronique, d’informatique et améliorable à souhait !

Électronique :
Montage dans un boîtier dédié, commande de fréquence par encodeur, bouton shift pour les répéteurs ….

Informatique :
Gestion de l’encodeur, du décalage E/R répéteur, du 1750 Hz
Affichage du nom des relais …..

Une réflexion sur “Arduino et la radio ….

  • Antoine LAMALLE

    Super projet !
    Il y a plein de choses intéressantes à bricoler avec ça, un filtre, un PA au niveau radio, et pas mal de possibilités de programmation pour la gestion des fréquences, shift, encodeur…
    J’ai à dispo deux ou trois arduino mini en stock, pour diminuer la taille du bidule, il doit me rester un encodeur, plus d’ autres bricoles ( poussoirs, potars, ) suffit de demander !
    Un bon exemple d’ utilisation un tracker aprs :
    https://hamprojects.wordpress.com/2015/07/01/afsk-dra818-aprs-tracker/
    Sur le site de f5mna ( sk 30.10.2020 ):
    http://f5mna.free.fr/DRA818.htm.
    Faites chauffer le fer à souder, et l’ IDE arduino !

Commentaires fermés.