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

Communication en Code Morse par Module Laser – Projet Arduino Double Face

Composants et fournitures

Arduino UNO ×2
Plaque d'essai (breadboard) ×2
Module émetteur LASER (Autodesk) ×1
Photorésistance (LDR) ×1
Fils de connexion (jumper wires) ×1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Code Morse

Le code Morse convertit les symboles alphanumériques (lettres et chiffres) en suites de points et de traits. Chaque symbole a une combinaison unique. Il sert à transmettre des données secrètes ou codées. Ce projet réalise l'émetteur et le récepteur d'une communication Morse. Son originalité : l'algorithme du récepteur est bien plus simple que les approches classiques.

Communication en Code Morse par Module Laser – Projet Arduino Double Face

Étape 1 : Section Émetteur

L'émetteur envoie les données d'entrée via le LASER.

Communication en Code Morse par Module Laser – Projet Arduino Double Face
Communication en Code Morse par Module Laser – Projet Arduino Double Face
Communication en Code Morse par Module Laser – Projet Arduino Double Face

Matériel requis

Connexions

Broche positive du LASER → broche numérique 13 de l'Arduino (selon le code).
GND du LASER → GND de l'Arduino.

Programme

Algorithme :

  1. Données à transmettre stockées dans un tableau de caractères.
  2. Broche LED/LASER définie.
  3. Vitesse du code Morse réglée.
  4. Points et traits définis.
  5. Chaque caractère d'entrée est testé via switch/case et la séquence correspondante d'états HIGH/LOW du LASER est émise.

Étape 2 : Section Récepteur

Le récepteur capte le signal codé, le traite et l'affiche sur le Moniteur Série.

Communication en Code Morse par Module Laser – Projet Arduino Double Face
Communication en Code Morse par Module Laser – Projet Arduino Double Face
Communication en Code Morse par Module Laser – Projet Arduino Double Face
Communication en Code Morse par Module Laser – Projet Arduino Double Face

Matériel requis

Connexions

Une patte du LDR → 5 V Arduino.
Autre patte du LDR → résistance 10 kΩ + entrée analogique A0.
Autre patte de la résistance → GND Arduino.

Programme

L'algorithme du récepteur est le plus simple qu'on trouve sur Internet, basé sur l'observation :

  1. Sans laser sur la LDR, la valeur lue < 1000. Si valeur > 1000 même sans laser, protégez la LDR de la lumière parasite (ici, dôme en papier noir).
  2. Quand le laser frappe la LDR, la valeur dépasse 1000 → entrée dans une boucle.
  3. Quantification : valeur > 1000 → « 1 », sinon « 0 ».
  4. Dans la boucle, comptez les « 1 » (compteur a) et les « 0 » (compteur f).
  5. Chaque caractère a un couple (a, f) unique. La correspondance affichée donne le caractère.

Limitation

Le code joint ne gère que quelques caractères. Vous pouvez l'étendre avec des combinaisons pour couvrir tout l'alphabet. L'objectif principal est de faire comprendre l'algorithme et le fonctionnement.

Code

CODE-1 - POUR CONTRÔLER L'ÉMETTEUR LASER Arduino

int led13 = 13;
int dotLen = 200;           // durée d'un 'point'
int dashLen = dotLen * 3;   // durée d'un 'trait' = 3 points
int elemPause = dotLen;     // pause entre éléments d'un caractère
int Spaces = dotLen * 3;    // espace entre caractères
int wordPause = dotLen * 7; // pause entre mots

void setup() {
  pinMode(led13, OUTPUT);
}

void loop() {
  for (int i = 0; i < sizeof(stringToMorseCode) - 1; i++) {
    char tmpChar = stringToMorseCode[i];
    tmpChar = toLowerCase(tmpChar);
    GetChar(tmpChar);
  }
  LightsOff(8000); // longue pause avant de recommencer
}

void MorseDot() {
  digitalWrite(led13, HIGH);
  delay(dotLen);
}

void MorseDash() {
  digitalWrite(led13, HIGH);
  delay(dashLen);
}

void LightsOff(int delayTime) {
  digitalWrite(led13, LOW);
  delay(delayTime);
}

void GetChar(char tmpChar) {
  switch (tmpChar) {
    case 'a': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'b': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'c': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'd': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'e': MorseDot(); LightsOff(elemPause); break;
    case 'f': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'g': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'h': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'i': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'j': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'k': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'l': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'm': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'n': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'o': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'p': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 'q': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'r': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 's': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    case 't': MorseDash(); LightsOff(elemPause); break;
    case 'u': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'v': MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'w': MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'x': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'y': MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); break;
    case 'z': MorseDash(); LightsOff(elemPause); MorseDash(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); MorseDot(); LightsOff(elemPause); break;
    default: LightsOff(Spaces); // espace pour caractères non gérés
  }
}

CODE-2 - POUR LE RÉCEPTEUR Arduino

int sensorPin = 0;
int sensorValue = 0;
int a, f;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  if (sensorValue > 1000) {
    for (int i = 0; i <= 13; i++) {
      sensorValue = analogRead(sensorPin);
      if (sensorValue > 1000) {
        a++;
        delay(200);
      } else {
        f++;
        delay(200);
      }
    }
  }
  if (a == 4 && f == 10) { Serial.print("a"); }
  if (a == 6 && f == 8) { Serial.print("b"); }
  if (a == 8 && f == 6) { Serial.print("c"); }
  if (a == 1 && f == 13) { Serial.print("e"); }
  if (a == 2 && f == 12) { Serial.print("i"); }
  if (a == 10 && f == 4) { Serial.print("j"); }
  if (a == 7 && f == 7) { Serial.print("g"); }
  if (a == 9 && f == 5) { Serial.print("o"); }
  if (a == 3 && f == 11) { Serial.print("s"); }
  f = a = 0;
  delay(200);
}

Pièces personnalisées et boîtiers

Communication en Code Morse par Module Laser – Projet Arduino Double Face

Schémas

Communication en Code Morse par Module Laser – Projet Arduino Double Face

Processus de fabrication

  1. Guide complet du marquage laser : types, avantages et applications
  2. Pointeur laser : conception, fabrication et aperçu de la sécurité
  3. Lasers à semi-conducteurs : Génération de lumière de précision pour la technologie moderne
  4. Scanneur de codes-barres : Technologie, conception et tendances futures
  5. Missiles Guidés Laser : Développement, Fabrication et Impact Stratégique
  6. Construction d'un projecteur laser interactif avec capteurs Zigbee et plateforme Gravio Edge
  7. Établir une Communication UART entre Raspberry Pi 4 et Cartes HiFive1
  8. Robot à commande gestuelle piloté par Raspberry Pi
  9. 4 avantages clés des solutions Low-Code pour la fabrication industrielle