Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Construa um Transmissor de Código Morse com Arduino – Guia DIY Fácil

Componentes e Materiais

ComponenteQtdObservações
Arduino UNO1
Chave tátil 12 mm (SparkFun)2Usei botões de 2 pinos
LED (genérico)1
Buzzer1
Resistor 330 Ω4
Protoboard (genérica)1
Jumpers (genéricos)10Para conexões Arduino-protoboard

Aplicativos e Serviços Online

Sobre o Projeto

Descrição da Ideia

Todos nos comunicamos através de nossos sentidos naturais (fala, gestos...). A parte emocionante começa quando se quer compartilhar informação secreta. Como fazer? A resposta está em transmitir a informação de forma que terceiros não entendam sem a chave. Para isso usei Código Morse, mas outros métodos também funcionam.

O que é Código Morse?

Código Morse é uma forma de comunicação que representa letras originais por combinações de pontos (.) e traços (–). Ex.: A → .– | B → –...

Mais informações: https://wrvmuseum.org/morsecodehistory.htm

Construa um Transmissor de Código Morse com Arduino – Guia DIY Fácil

Por que Escolhi Código Morse?

Recentemente vi um filme em que um agente passava informações clicando um botão e, no receptor, outros decodificavam. Pensei em reproduzir isso com Arduino e componentes básicos.

Como o Projeto Funciona?

Após montar o circuito na protoboard e carregar o sketch, abra o Monitor Serial. Você verá algo como:

Construa um Transmissor de Código Morse com Arduino – Guia DIY Fácil

Siga as instruções e estará pronto. Em caso de dúvidas, assista ao vídeo de demonstração.

Código

Código Fonte do Código Morse

C/C++

Pronto para carregar o sketch. Abra a Arduino IDE: Arquivo → Abrir → MorseCode.ino e clique em Carregar.

/* Demonstração de Comunicação em CÓDIGO MORSE usado para enviar informações secretamente
   usando combinações de pontos . e traços -  Thanks to open source community 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;

// Array de Código Morse para letras A-Z
String letters[SIZE] = {
  // A a I
  ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..",
  // J a R
  ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.",
  // S a Z
  "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."
};

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(dotButton, INPUT);
  pinMode(dashButton, INPUT);
  Serial.begin(9600);
  Serial.println("*************************************************************");
  Serial.println(" Demonstração de Código Morse ");
  Serial.println("************************************************************* ");
  Serial.println("\nInstruções");
  Serial.println("1. Primeiro escreva seu código Morse");
  Serial.println("2. Quando terminar, digite 1 na caixa acima e pressione Enter ou clique Enviar");
  Serial.println("3. Para espaço entre letras digite 2 e Enter");
  Serial.println("4. Para espaço entre palavras digite 3 e Enter");
  Serial.println("5. Pronto! A tradução será mostrada");
  Serial.println("\n\nDigite seu Código Morse Aqui ");
}

void loop() {
  while (Serial.available() > 0) {
    int ascii = Serial.read();
    switch (ascii) {
      case 49: // '1'
        Serial.print("\n");
        morseCode.concat('#'); // Marca fim
        Serial.print("\nSua Tradução Morse: ");
        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\nDigite seu Código Morse Aqui ");
        break;
      case 50: // '2' - espaço entre letras
        morseCode.concat("@");
        Serial.print("@");
        delay(200);
        break;
      case 51: // '3' - espaço entre palavras
        morseCode.concat("#");
        Serial.print("#");
        delay(200);
        break;
    }
  }
  process();
}

void turnONLedSpeaker() {
  digitalWrite(ledPin, HIGH);
  tone(speakerPin, 4699, 300); // frequência, duração ms
}

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 index = 0; index < SIZE; index++) {
    if (characterCode == letters[index]) 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

Instruções para pinos digitais do Arduino à protoboard:

Demais conexões veja a imagem do esquema.

Construa um Transmissor de Código Morse com Arduino – Guia DIY Fácil

Processo de manufatura

  1. Controle de Brilho de LED com PWM via Botão no Arduino Mega
  2. Construa um Decodificador DTMF Usando Apenas um Arduino – Sem CIs Externos
  3. Construa um Dispositivo de Levitação Ultrassônica com Arduino – Guia Passo a Passo
  4. Comunicação em Código Morse com Módulo Laser – Projeto Arduino de Dois Lados
  5. Construa um Pote Inteligente IoT com ESP8266, Arduino e Sensor Ultrassônico – Monitoramento em Tempo Real
  6. Construa um Homem de Ferro com Arduino: Componentes, Sensores e Guia Passo a Passo
  7. Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
  8. Medir a Massa da Terra com Arduino: Guia DIY Passo a Passo
  9. Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
  10. Medição de Distância em Tempo Real com Sonar Arduino e Visualização no Processing