Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Clé Automatique pour Radiogoniométrie – Précision, Simplicité et Fiabilité

Composants et fournitures

Arduino UNO×1
Condensateur 100 nF×5
Relais (standard)×1
LED (standard)×1
Condensateur 100 µF×1
Fils de connexion (standard)×1
Prise casque/micro externe pour votre radio amateur×1
Interrupteur à bascule×1

Outils et machines nécessaires

Fer à souder (standard)
Fil à souder, sans plomb
Radio amateur

À propos de ce projet

Les passionnés de radio amateur entretiennent souvent leurs compétences en radiogoniométrie en pratiquant la recherche d'une radio cachée quelque part au loin (appelée « renard »). Ces compétences sont utiles pour localiser du matériel et des personnes équipés d'un émetteur radio.

Ce projet utilise un Arduino pour actionner l'émission de la radio, puis envoie l'identifiant de la station (l'indicatif de l'opérateur radioamateur) en code Morse. Un signal long est ensuite émis. Pendant la transmission, la localisation du signal radio peut être déterminée avec précision.

J'ai participé à ma première « chasse au renard » en radiogoniométrie lors de l'Institut des enseignants de l'ARRL en 2011 et j'ai adoré l'expérience (même si notre équipe a accidentellement trouvé le mauvais « renard »). Cela semblait être une excellente activité pour les élèves de collège que j'enseigne en sciences. Malheureusement, la construction d'un tel dispositif paraissait soit trop complexe, soit trop coûteuse pour mon budget.

Récemment, j'ai réalisé qu'avec une radio 2 mètres peu coûteuse et un microprocesseur programmable (comme l'Arduino), je pouvais construire mon propre « renard » à moindre coût, tout en réalisant un projet d'apprentissage estival amusant.

Pour ce projet, j'ai utilisé une radio Baofeng UV-3R car elle est abordable (et je ne l'utilisais plus), ainsi qu'un Arduino Uno. L'utilisation d'une autre radio avec une prise différente nécessiterait des étapes similaires pour tester la prise et le microphone, mais le circuit et le programme Arduino resteraient identiques, à l'exception de l'indicatif de l'opérateur radio.

Note : Le schéma est moins compliqué qu'il n'y paraît. Les condensateurs de 0,01 µF ont été ajoutés pour empêcher le circuit de capter des interférences radiofréquences (RFI) lors de la transmission. Sans eux, l'Arduino se comportait de manière erratique et incohérente (redémarrages fréquents) lorsque la radio transmettait à proximité du circuit. L'autre condensateur sert à lisser le signal carré de l'Arduino pour en faire une onde sinusoïdale, améliorant ainsi la qualité sonore.

Code

Clé de radiogoniométrie pour chasse au renard

L'Arduino qui active la radio pour émettre et envoie le code Morse pour s'identifier.

/* Par Nelson Farrier - Active la radio et envoie un signal tonal
Active la radio Baofeng UV-3R en actionnant le relais, puis envoie l'indicatif
et un signal tonal de 5 secondes. */

// Broche 12 connectée au relais
// Broche 13 connectée au circuit tonal
// Modifié depuis : Mike Myers (https://mikemyers.me) @netnutmike
// Let's Make It Épisode 6 (https://tech-zen.tv/index.php/shows/let-s-make-it/episodes/59-sensor-fun-with-arduino-1-massive-failure-but-4-successes-let-s-make-it-episode-6)

// Définition du code Morse pour l'alphabet et les chiffres
char* letters[] = {
  ".-",   // A
  "-...", // B
  "-.-.", // C
  "-..",  // D
  ".",    // E
  "..-.", // F
  "--.",  // G
  "....", // H
  "..",   // I
  ".---", // J
  "-.-",  // K
  ".-..", // L
  "--",   // M
  "-.",   // N
  "---",  // O
  ".--.", // P
  "--.-", // Q
  ".-.",  // R
  "...",  // S
  "-",    // T
  "..-",  // U
  "...-", // V
  ".--",  // W
  "-..-", // X
  "-.--", // Y
  "--.."  // Z
};

char* numbers[] = {
  "-----", // 0
  ".----", // 1
  "..---", // 2
  "...--", // 3
  "....-", // 4
  ".....", // 5
  "-....", // 6
  "--...", // 7
  "---..", // 8
  "----."  // 9
};

int relay = 12;
int TonePin = 13;
int frequency = 1000;        // Fréquence du signal tonal
int dotDelay = 70;           // Durée du point en code Morse, aussi temps entre points et traits
int charDelay = 500;         // Délai entre lettres (méthode Farnsworth)
int wordDelay = 1100;        // Délai entre mots (méthode Farnsworth)
int cycleDelay = 15000;      // MOITIÉ de la durée car la valeur max est 16383

void setup() {
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  delay(2000); // Délai initial après mise sous tension
}

void loop() {
  digitalWrite(relay, HIGH);  // Active le relais (HIGH = niveau de tension haut)
  delay(1000);                // Attend 1 seconde
  SendText("NF7Z FOX");       // Envoie l'indicatif
  delay(1000);                // Attend 1 seconde
  tone(TonePin, frequency);   // Envoie signal tonal 7 sec
  delay(7000);
  noTone(TonePin);
  delay(10000);               // 10 secondes émission sans tonalité
  digitalWrite(relay, LOW);   // Désactive le relais
  delay(cycleDelay);          // Attente temps de cycle
  delay(cycleDelay);          // Attente temps de cycle (bis car max 16383)
}

//=================================================================
// Fonction: morseCodeSequence
// Entrée: Tableau de caractères points et traits à envoyer
// Description: Envoie chaque élément du tableau via dotOrDash
// Délai de 3x dotDelay à la fin de la séquence
//=================================================================
void morseCodeSequence(char* sequence) {
  int i = 0;
  while (sequence[i] != NULL) {
    dotOrDash(sequence[i]);
    i++;
  }
  delay(charDelay); // Espace entre lettres
}

//=================================================================
// Fonction: SendText
// Entrée: Tableau de caractères texte en anglais
// Description: Envoie le code Morse pour chaque lettre
// Pause après chaque lettre
//=================================================================
void SendText(char* MorseCodeLetters) {
  int i = 0;
  char ch;
  while (MorseCodeLetters[i] != NULL) {
    ch = MorseCodeLetters[i];
    // Lettre minuscule ?
    if (ch >= 'a' && ch <= 'z') {
      morseCodeSequence(letters[ch - 'a']);
    }
    // Lettre majuscule
    else if (ch >= 'A' && ch <= 'Z') {
      morseCodeSequence(letters[ch - 'A']);
    }
    // Chiffre
    else if (ch >= '0' && ch <= '9') {
      morseCodeSequence(numbers[ch - '0']);
    }
    // Espace (attente 4x dotDelay)
    else if (ch == ' ') {
      delay(wordDelay);
    }
    i++;
  }
  delay(charDelay); // Espace entre lettres
}

//=================================================================
// Fonction: dotOrDash
// Modifié depuis: Mike Myers (https://mikemyers.me) @netnutmike
// Entrée: Caractère point ou trait
// Description: Active la sortie, puis selon le caractère :
// - point (.) : délai dotDelay
// - trait (-) : délai 3x dotDelay
// Puis désactive la sortie et délai dotDelay pour séparer
//=================================================================
void dotOrDash(char dotOrDash) {
  tone(TonePin, frequency);
  if (dotOrDash == '.') {
    delay(dotDelay);
  } else { // doit être un trait
    delay(dotDelay * 3);
  }
  noTone(TonePin);
  delay(dotDelay); // Espace entre signaux
}

Schémas

Clé Automatique pour Radiogoniométrie – Précision, Simplicité et Fiabilité

Processus de fabrication

  1. L'évolution et l'ingénierie de la technologie radio
  2. Couteau de chasse : des origines de l'âge du bronze à l'équipement moderne
  3. Jeu UFO Attack DIY avec Arduino UNO et Afficheur MAX7219
  4. Horloge 3D RGB Arduclock – Montre LED Bluetooth avec horloge temps réel
  5. Surveillance de la Qualité de l'Eau : Système Arduino MKR1000 pour Rivières et Lacs
  6. Jeu interactif joystick + LEDs avec Arduino
  7. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  8. Health Band : Bracelet intelligent fiable d'assistance pour personnes âgées
  9. Correction du facteur de puissance : Calculateur de batterie de condensateurs (kVAR & µF)