Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Transmisor de Código Morse con Arduino – Guía DIY Fácil

Componentes y materiales

Software y servicios online

Sobre el proyecto

Descripción de la idea

Nos comunicamos mediante sentidos naturales. La parte emocionante empieza cuando quieres compartir información secreta. ¿Cómo hacerlo para que un tercero no la entienda sin la clave? La respuesta está en transmitir la información codificada. Para ello usé código Morse (también sirve otro método).

¿Qué es el código Morse?

Sistema de comunicación que representa letras mediante combinaciones de puntos (.) y rayas (–). Ej.: A → .-, B → -....

Más info: wrvmuseum.org/morsecodehistory.htm

Transmisor de Código Morse con Arduino – Guía DIY Fácil

Por qué elegí código Morse

Vi una película donde un agente transmitía información pulsando un botón y el receptor la decodificaba. Quise replicarlo con Arduino y componentes básicos.

Cómo funciona el proyecto

Muy simple: montas el circuito en protoboard, subes el sketch y abres el Monitor Serie. Verás instrucciones:

Transmisor de Código Morse con Arduino – Guía DIY Fácil

Sigue las instrucciones y listo. Si tienes dudas, mira el vídeo de demostración.

Código

Código fuente Morse (C/C++)
/* Morse Code Communication demo - by Jalal Mansoori */
#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;
int dotButtonState = 0;

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

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(dotButton, INPUT);
  pinMode(dashButton, INPUT);
  Serial.begin(9600);
  Serial.println("*************************************************************");
  Serial.println(" Demonstration of Morse Code ");
  Serial.println("************************************************************* ");
  Serial.println("\nInstructions");
  Serial.println("1. First Write Your Morse code");
  Serial.println("2. When done write 1 and press Enter/Send");
  Serial.println("3. For space between letters write 2 and press Enter");
  Serial.println("4. For space between words write 3 and press Enter");
  Serial.println("5. Translation will be shown");
  Serial.println("\n\nEnter Your Morse Code Here ");
}

void loop() {
  while (Serial.available() > 0) {
    int ascii = Serial.read();
    switch (ascii) {
      case 49: // '1'
        Serial.print("\n");
        morseCode.concat('#');
        Serial.print("\nYour Morse code Translation : ");
        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\nEnter Your Morse Code Here ");
        break;
      case 50: // '2' espacio entre letras
        morseCode.concat("@"); Serial.print("@"); delay(200); break;
      case 51: // '3' espacio entre palabras
        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 = "";
}

Esquemáticos

Instrucciones de pines digitales Arduino → protoboard:

Resto de conexiones en la imagen:

Transmisor de Código Morse con Arduino – Guía DIY Fácil

Proceso de manufactura

  1. Control de Brillo LED con PWM mediante Pulsador en Arduino Mega
  2. Construye un Decodificador DTMF Solo con Arduino – Sin CI Externos
  3. Construye un Dispositivo de Levitación Ultrasónica con Arduino – Guía Paso a Paso
  4. Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado
  5. Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
  6. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  7. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  8. Mide la masa de la Tierra con Arduino: Guía paso a paso DIY
  9. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  10. Medición de Distancia en Tiempo Real con Sonar Arduino y Visualización en Processing
  11. Contador Inteligente de Plazas de Aparcamiento: Seguimiento en Tiempo Real con Arduino, Processing y PHP