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

Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado

Componentes y materiales

Arduino UNO × 2
Protoboard (genérica) × 2
Transmisor LÁSER (Autodesk) × 1
Fotorresistencia (LDR) × 1
Cables jumper (genéricos) × 1

Aplicaciones y servicios en línea

Arduino IDE

Sobre el proyecto

Código Morse

El código Morse consiste en convertir símbolos alfanuméricos (letras y números) en puntos y rayas. Cada símbolo tiene una disposición única de puntos y rayas. El código Morse se usa para enviar datos secretos o codificados. En este proyecto he creado las secciones de transmisor y receptor de la comunicación por código Morse. La singularidad de este proyecto frente a otros es que el algoritmo de la sección receptora es realmente simple comparado con cualquier otro algoritmo.

Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado

Paso 1: Sección Transmisora

La sección transmisora se usa para enviar los datos de entrada a través del LÁSER.

Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado
Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado
Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado

Hardware requerido

Conexiones

Conecta el pin positivo del LÁSER al pin 13 digital del Arduino (como está programado en el código). Conecta el GND del LÁSER al GND del Arduino.

Programa

El algoritmo del código es el siguiente:

  1. Los datos a transmitir se guardan como entrada en un array de char.
  2. Se define el pin del LED que se transmitirá.
  3. Se establece la velocidad del código Morse.
  4. Se definen puntos y rayas.
  5. El carácter introducido se comprueba mediante switch case y se transmite el correspondiente HIGH y LOW del LÁSER.

Paso 2: Sección Receptora

Los datos codificados enviados por el transmisor se reciben y procesan, y luego se muestran en el Monitor Serial.

Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado
Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado
Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado
Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado

Hardware requerido

Conexiones

Conecta un extremo del LDR a 5V del Arduino. Conecta el otro extremo del LDR a la resistencia de 10 kΩ y a la entrada analógica A0. Conecta el otro extremo de la resistencia al GND del Arduino.

Programa

El algoritmo usado en la sección receptora es el más fácil que cualquier otro disponible en internet. Está lleno de observaciones.

  1. Cuando no hay láser incidiendo en el LDR, el valor del LDR será menor a 1000. Si el valor supera 1000 incluso con el láser apagado, necesitas tapar el LDR para protegerlo de luz extra. Aquí el LDR está cubierto con una cúpula de cartulina negra.
  2. Cuando el láser incide en el LDR, el valor supera 1000 y entra en un bucle.
  3. Cuantifica los valores: si el valor supera 1000, asígnalo como '1', si no, '0'.
  4. Dentro del bucle, calcula el número de '1's y '0's. Establece contadores 'a' y 'f'. Cuenta el número de '1's y guárdalo en 'a'; cuenta el número de '0's y guárdalo en 'f'.
  5. Ahora comprueba los valores específicos de 'a' y 'f'. Cada carácter tendrá un conjunto diferente de 'a' y 'f'. El valor coincidente se mostrará.

Limitación

El programa adjunto al código se usa para imprimir caracteres específicos. Puedes mejorar el código usando combinaciones y mostrar todos los conjuntos de caracteres. El objetivo principal del código es hacerte entender el algoritmo y el funcionamiento.

Código

CODE-1- FOR CONTROLLING THE LASER EMITTER Arduino

int led13 = 13; // parpadea un led en salida 13
/* Establece la velocidad de tu código Morse
   Ratios de elementos de código:
   Longitud raya = Longitud punto x 3
   Pausa entre elementos = Longitud punto */
int dotLen = 200;      // longitud del 'punto' Morse
int dashLen = dotLen * 3; // longitud de la 'raya' Morse
int elemPause = dotLen;   // pausa entre elementos de un carácter
int Spaces = dotLen * 3;  // espacios entre caracteres
int wordPause = dotLen * 7; // pausa entre palabras

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

// Bucle de letras/palabras a emitir en código Morse (definido en string al principio)
void loop() {
  for (int i = 0; i < sizeof(stringToMorseCode) - 1; i++) {
    char tmpChar = stringToMorseCode[i];
    tmpChar = toLowerCase(tmpChar);
    GetChar(tmpChar);
  }
  LightsOff(8000); // larga pausa al final de la cadena
}

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

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

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

// *** Conversión Caracteres a Código Morse ***
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); MorseDash(); 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); // espacio en blanco
  }
}

CODE-2 - FOR THE RECEIVER END Arduino

int sensorPin = 0; // pin de entrada para LDR
int sensorValue = 0; // valor del sensor
int a, f; // contadores

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

void loop() {
  sensorValue = analogRead(sensorPin);
  if (sensorValue > 1000) { // calculando número de puntos y rayas
    for (int i = 0; i <= 13; i++) {
      sensorValue = analogRead(sensorPin);
      if (sensorValue > 1000) {
        a++; // contando puntos y rayas en el carácter
        delay(200);
      } else {
        f++; // contando espacios entre puntos y rayas
        delay(200);
      }
    }
  }
  // Comprobando conjuntos de puntos, rayas y espacios
  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);
}

Piezas personalizadas y cajas

Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado

Esquemáticos

Comunicación Código Morse con Módulo Láser – Proyecto Arduino de Doble Lado

Proceso de manufactura

  1. Guía Completa de Marcado Láser: Tipos, Beneficios y Aplicaciones
  2. Puntero Láser: Diseño, Fabricación y Resumen de Seguridad
  3. Láseres de Semiconductor: Generación Precisa de Luz para Tecnología Moderna
  4. Escáner de código de barras: Tecnología, diseño y tendencias futuras
  5. Misiles Guiados por Láser: Desarrollo, Fabricación e Impacto Estratégico
  6. Construcción de un proyector láser interactivo con sensores Zigbee y plataforma Gravio Edge
  7. Establecer Comunicación UART entre Raspberry Pi 4 y Placas HiFive1
  8. Robot Controlado por Gestos con Raspberry Pi
  9. Construye un Decodificador DTMF Solo con Arduino – Sin CI Externos
  10. Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED
  11. 4 beneficios clave de soluciones low-code para manufactura industrial