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

Construire un Émetteur Morse avec Arduino – Guide DIY Facile

Composants et fournitures

ComposantQuantitéNotes
Arduino UNO1
Bouton poussoir 12 mm (SparkFun)2Boutons 2 broches utilisés
LED (générique)1
Buzzer1
Résistance 330 Ω4
Plaque d'essai (breadboard)1
Fils de connexion (jumper wires)10Pour connexions Arduino–breadboard

Applications et services en ligne

À propos de ce projet

Description de l'idée

Nous communiquons naturellement via nos sens (parole, gestes...). Mais comment transmettre une information secrète ? La réponse : encoder le message de façon à ce qu'un tiers ne le comprenne pas sans la clé. J'ai choisi le code Morse pour cela.

Qu'est-ce que le code Morse ?

Le code Morse représente chaque lettre par une combinaison de points (.) et de traits (–). Exemple : A → .– ; B → –...

Plus d'infos : Histoire du code Morse

Construire un Émetteur Morse avec Arduino – Guide DIY Facile

Pourquoi le code Morse ?

Inspiré par un film où un agent transmettait des infos en appuyant sur un bouton. J'ai voulu reproduire ce principe avec Arduino et des composants de base.

Comment ça marche ?

Une fois le circuit monté et le sketch téléversé, ouvrez le Moniteur Série. Suivez les instructions affichées :

Construire un Émetteur Morse avec Arduino – Guide DIY Facile

La traduction s'affiche dans le moniteur série. La LED et le buzzer donnent un retour visuel/sonore.

Code source

/* Morse Code Communication - by Jalal Mansoori - Domaine public */
#define SIZE 26
const int ledPin = 8;
const int speakerPin = 12;
const int dotButton = 2;
const int dashButton = 7;

String morseCode = "";
String text = "";
int characterAscii = 0;
int startPos = 0, endPos = 0;
int startPos1 = 0, endPos1 = 0;
String characterCode = "";
int dashButtonState = 0, dotButtonState = 0;

String letters[SIZE] = {
  ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
  ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(dotButton, INPUT);
  pinMode(dashButton, INPUT);
  Serial.begin(9600);
  Serial.println("*************************************************************");
  Serial.println(" Demonstration de Code Morse ");
  Serial.println("*************************************************************");
  Serial.println("\nInstructions");
  Serial.println("1. Ecrivez votre code Morse (points/traits)");
  Serial.println("2. Tapez 1 + Entree pour traduire");
  Serial.println("3. Tapez 2 + Entree pour espace entre lettres");
  Serial.println("4. Tapez 3 + Entree pour espace entre mots");
  Serial.println("5. La traduction s'affichera");
  Serial.println("\n\nEntrez votre code Morse ici : ");
}

void loop() {
  while (Serial.available() > 0) {
    int ascii = Serial.read();
    switch (ascii) {
      case 49: // '1'
        Serial.print("\n");
        morseCode.concat('#');
        Serial.print("\nVotre traduction : ");
        endPos1 = morseCode.indexOf('#');
        while (endPos1 < morseCode.length()) {
          extractLetters(morseCode.substring(startPos1, endPos1));
          startPos1 = endPos1 + 1;
          if (startPos1 == morseCode.length()) break;
          endPos1 = morseCode.indexOf('#', startPos1);
        }
        startPos1 = 0; endPos1 = 0; text = ""; morseCode = "";
        Serial.println("\n\nEntrez votre code Morse ici : ");
        break;
      case 50: // '2'
        morseCode.concat("@"); Serial.print("@"); delay(200); break;
      case 51: // '3'
        morseCode.concat("#"); Serial.print("#"); delay(200); break;
    }
  }
  process();
}

void turnONLedSpeaker() {
  digitalWrite(ledPin, HIGH);
  tone(speakerPin, 4699, 300);
}

void process() {
  dotButtonState = digitalRead(dotButton);
  dashButtonState = digitalRead(dashButton);
  if (dashButtonState == HIGH) {
    turnONLedSpeaker();
    morseCode.concat("-"); Serial.print("-"); delay(200);
  } else if (dotButtonState == HIGH) {
    turnONLedSpeaker();
    morseCode.concat("."); Serial.print("."); delay(200);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

char convertIntoText(String characterCode) {
  characterAscii = 65; // 'A'
  for (int i = 0; i < SIZE; i++) {
    if (characterCode == letters[i]) return characterAscii;
    characterAscii++;
  }
  return '?';
}

void extractLetters(String words) {
  words.concat('@');
  endPos = words.indexOf('@');
  while (endPos < words.length()) {
    characterCode = words.substring(startPos, endPos);
    text.concat(convertIntoText(characterCode));
    startPos = endPos + 1;
    characterCode = "";
    if (startPos == words.length()) break;
    endPos = words.indexOf('@', startPos);
  }
  Serial.print(text); Serial.print(" ");
  startPos = 0; endPos = 0; text = "";
}

Schéma de câblage

Instructions pour les pins numériques Arduino → breadboard :

Construire un Émetteur Morse avec Arduino – Guide DIY Facile

Processus de fabrication

  1. Contrôler la Luminosité de LEDs par PWM avec un Bouton Poussoir sur Arduino Mega
  2. Construire un décodeur DTMF avec un Arduino seul – Aucun CI supplémentaire nécessaire
  3. Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
  4. Communication en Code Morse par Module Laser – Projet Arduino Double Face
  5. Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
  6. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  7. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  8. Mesurer la masse de la Terre avec Arduino : Guide DIY étape par étape
  9. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée