Índice:
- Suprimentos
- Etapa 1: Construindo a Base
- Etapa 2: a peça servo
- Etapa 3: Adicionando o servo motor e o rolo de papel à base
- Etapa 4: Construindo a Estrutura do Motor de Passo
- Etapa 5: toques finais
- Etapa 6: Eletrônica
- Etapa 7: Solução de problemas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Fiz um robô que pode converter qualquer texto em código Morse e depois escrevê-lo !! É feito de papelão e Lego e para a parte eletrônica usei o Arduino e apenas dois motores.
Suprimentos
Placa Arduino Uno Motor de passo Micro servo SG90ULN2003 módulo de driver de motor de passo Módulo de alimentação Módulo de alimentação 4 × Jumper fios6 × Fio duplo fêmea para macho 9V1A Cabo adaptadorUSB Papelão 2 × Cavilhas de madeira 2 × Molas Papel branco PalhaLegoSuper cola Pistola de cola quente Faixa elástica (para fazer um porta-canetas) Cortador de tesoura
Etapa 1: Construindo a Base
Comece construindo a base. O meu tem 4 pinos de largura e 20 pinos de comprimento, depois de construir uma camada com esses comprimentos, eu construí uma borda larga de um pino em volta dela, deixando uma lacuna de um lado para deixar espaço para o motor de passo, então eu adicionei pedaços de ladrilho para a parte do meio onde ficará a tira de papel. O uso de Lego tornou-o muito resistente e fácil de modificar. Para fazer o rolo de papel, cortei tiras de papel A4 de 1,2cm de largura (escolhi essa largura porque é a mesma da roda Lego que usei, você pode aumentar ou diminuir o seu dependendo da roda) e colei as pontas para formar uma tira muito longa, depois enrolei na roda.
Etapa 2: a peça servo
Para esta etapa, você precisa:
- duas cavilhas de madeira com 4 cm de comprimento
- duas molas de 2 cm de comprimento
- uma palha cortada em dois pedaços de 2 cm de comprimento cada
- um pedaço de papelão de 12 cm por 4 cm
- dois pedaços de papelão de 4 cm por 1,5 cm
- um pedaço de papelão de 4 cm por 2 cm
Primeiro, cole os tarugos em uma das peças de 4 por 1,5, depois insira as molas e os canudos nos tarugos e, em seguida, cole o outro pedaço de papelão do outro lado para segurar tudo no lugar.
Em segundo lugar, cole o pedaço de 4 cm por 2 cm no topo dos canudos.
Terceiro, vire a peça inteira e cole um pequeno pino atrás dela, não no meio, mas ligeiramente à esquerda. (Esqueci de adicionar o pequeno pino na primeira foto)
Finalmente, corte um buraco no pedaço grande de papelão do tamanho da frente do servo motor e cole o motor, em seguida, cole a peça que acabamos de fazer com os pinos na peça grande para que quando o servo se mover, empurre o pequeno pino para baixo que, por sua vez, empurra as molas para baixo também.
Acabei cortando cerca de 3cm da parte inferior da peça de 12cm por 4cm e colando nela mais duas peças de 4cm por 1,5cm, cobrindo então com um pedaço de papelão de 5,5cm por 4cm. E para segurar o marcador fiz um pequeno Fiz um laço de elástico e colei em um pequeno pedaço de papelão, depois colei no pedaço de 4 cm por 2 cm que vai descer quando o servo começar. Essas adições impediram que o marcador se movesse de um lado para o outro quando as molas voltassem a subir.
Etapa 3: Adicionando o servo motor e o rolo de papel à base
Eu adicionei mais dois tijolos em um lado da base para apoiar a peça servo e colei no lugar. Então eu adicionei a roda na extremidade da base.
Etapa 4: Construindo a Estrutura do Motor de Passo
Esta etapa foi um pouco desafiadora, porque o motor não foi feito para se encaixar perfeitamente com Lego. No entanto, consegui fazer isso usando os dois orifícios no motor para prendê-lo no lugar. Em seguida, colei uma roda de Lego na ponta do motor e a coloquei bem ao lado da base do lado que deixei aberto na etapa 1.
Etapa 5: toques finais
Acrescentei duas peças de arco para cobrir a roda e fixar o papel no lugar. E adicionei duas peças de arco menores, uma para segurar os fios do motor de passo e outra para segurar o papel. Por último, mudei a roda do motor de passo para uma ligeiramente maior que movia o papel melhor do que a roda antiga.
Etapa 6: Eletrônica
Finalmente, você deve conectar os motores ao Arduino e fazer o upload do código.
Começaremos com o servo motor, conectaremos o fio marrom (o fio terra) ao pino GND, então o fio vermelho (o fio de alimentação) ao pino 5V, e o fio laranja (o fio de sinal) ao Dig # 5 alfinete. Em seguida, o motor de passo, conecte 1N1 ao Dig # 11, 1N2 ao Dig # 10, 1N3 ao Dig # 9, 1N4 ao Dig # 8, o 5V ao lado positivo da placa de ensaio e o pino de aterramento ao lado negativo do placa de ensaio. E não se esqueça de conectar o módulo da fonte de alimentação à placa de ensaio, certificando-se de que seus lados positivo e negativo se alinhem corretamente aos lados correspondentes da placa de ensaio. Se você se esquecer de fazer isso, você reverterá o poder do seu projeto, e você não quer fazer isso.
Para o código, escrevi quatro métodos, um para escrever um ponto, um para escrever um travessão e dois para deixar espaço entre cada letra e cada palavra. Dessa forma, posso apenas chamar esses métodos quando precisar deles, em vez de escrevê-los novamente para cada letra. Em seguida, escrevi um loop for que passa por cada letra do texto e o escrevi. Dentro dele, escrevi uma declaração if para cada letra, mas você pode escrever em uma declaração switch, se preferir. Claro, você pode adicionar ao código para permitir que o programa leia os números. Quando toda a fiação estiver pronta, apenas copie e cole o código em seu IDE. Não se esqueça de instalar as bibliotecas de stepper, servo e string. Depois disso, você está pronto para ir.
Como funciona
Quando o Arduino inicia o programa olha a primeira letra do texto., E dependendo de qual é, ele chama as funções que o escrevem em código Morse. Por exemplo, quando a função de ponto é chamada, o servo motor é definido para 160, que move a caneta para baixo, e depois é definido de volta para 90, o que permite que as molas voltem movendo a caneta com elas. E se a função traço for chamada, o servo move a caneta para baixo, então o motor de passo gira a roda que puxa o papel fazendo a caneta escrever um traço. E se uma das funções espaciais é chamada, o motor de passo gira mas com a caneta para cima puxa o papel fazendo um espaço entre as letras ou palavras. Quando terminar, vai para a próxima letra e repete o mesmo processo. Espero que você goste;)
O código
#incluir
#include #include #include const int stepsPerRevolution = 150; // Esta é a variável para o motor de passo String frase = "* hello"; // Altere esta variável para escrever palavras diferentes, mas apenas em letras minúsculas e inicie sua palavra com "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Este é o método que faz o robô escrever um ponto void dot () {Serial.println ("ponto start"); myServo.write (160); atraso (1000); myServo.write (90); atraso (1000); myStepper.step (stepsPerRevolution); atraso (1000); Serial.println ("ponto concluído"); } // Este é o método que faz com que o robô escreva um travessão void dash () {Serial.println ("dash start"); myServo.write (160); atraso (1000); myStepper.step (stepsPerRevolution); atraso (1000); myServo.write (90); atraso (1000); myStepper.step (stepsPerRevolution); atraso (1000); Serial.println ("traço concluído"); } // Este é o método que faz com que o robô deixe um espaço entre cada letra void space () {Serial.println ("space start"); myServo.write (90); atraso (1000); myStepper.step (200); atraso (1000); Serial.println ("espaço concluído"); } // Este é o método que faz com que o robô deixe um espaço maior entre cada palavra void bigSpace () {myServo.write (90); myStepper.step (250); atraso (1000); } void setup () {// coloque seu código de configuração aqui, para ser executado uma vez: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); primeiro int = frase.indexOf ('*'); // este loop for passa por cada letra da string e, em seguida, chama os métodos corretos para escrevê-la para (int i = 0; i <frase.length (); i ++) {if (frase.charAt (primeiro + i) == 'a') {Serial.print (".-"); ponto(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'b') {Serial.print ("-…"); traço(); ponto(); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'c') {Serial.print ("-.-."); traço(); ponto(); traço(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'd') {Serial.print ("-.."); traço(); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'e') {Serial.print ("."); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'f') {Serial.print ("..-."); ponto(); ponto(); traço(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'g') {Serial.print ("-."); traço(); traço(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'h') {Serial.print ("…."); ponto(); ponto(); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'i') {Serial.print (".."); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'j') {Serial.print (".---"); ponto(); traço(); traço(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'k') {Serial.print ("-.-"); traço(); ponto(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'l') {Serial.print (".-.."); ponto(); traço(); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'm') {Serial.print ("-"); traço(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'n') {Serial.print ("-."); traço(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'o') {Serial.print ("---"); traço(); traço(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'p') {Serial.print (".--."); ponto(); traço(); traço(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 'q') {Serial.print ("--.-"); traço(); traço(); ponto(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'r') {Serial.print (".-."); ponto(); traço(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 's') {Serial.print ("…"); ponto(); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == 't') {Serial.print ("-"); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'u') {Serial.print ("..-"); ponto(); ponto(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'v') {Serial.print ("… -"); ponto(); ponto(); ponto(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'w') {Serial.print (".--"); ponto(); traço(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'x') {Serial.print ("-..-"); traço(); ponto(); ponto(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'y') {Serial.print ("-.--"); traço(); ponto(); traço(); traço(); espaço(); } else if (frase.charAt (primeiro + i) == 'z') {Serial.print ("-.."); traço(); traço(); ponto(); ponto(); espaço(); } else if (frase.charAt (primeiro + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Não escreva nada aqui}
Etapa 7: Solução de problemas
A roda não está se movendo
Pode haver muito atrito entre a roda e o papel, tente elevar um pouco a roda ou trocá-la.
A roda puxa o papel, mas continua girando sem puxar o papel
Certifique-se de colar a roda no centro do motor de passo
Os pontos e travessões estão conectados
Verifique se as funções ponto, travessão e espaço estão escritas corretamente, elas devem ser assim:
// Este é o método que faz o robô escrever um dotvoid dot () {Serial.println ("dot start"); myServo.write (160); atraso (1000); myServo.write (90); atraso (1000); myStepper.step (stepsPerRevolution); atraso (1000); Serial.println ("ponto concluído"); }
// Este é o método que faz o robô escrever um travessão
void dash () {Serial.println ("dash start"); myServo.write (160); atraso (1000); myStepper.step (stepsPerRevolution); atraso (1000); myServo.write (90); atraso (1000); myStepper.step (stepsPerRevolution); atraso (1000); Serial.println ("traço concluído"); }
// Este é o método que faz o robô deixar um espaço entre cada letra
void space () {Serial.println ("space start"); myServo.write (90); atraso (1000); myStepper.step (200); atraso (1000); Serial.println ("espaço concluído"); }
Recomendado:
Chave de código USB Arduino Morse: 6 etapas
Chave de código morse do Arduino USB: Sempre quis digitar em um computador com uma chave de código morse ou aprender / ensinar código morse? Você está na página certa! Para meus outros projetos, verifique meu site calvin.sh
Como fazer um tradutor de código Morse com o Arduino: 10 etapas
Como Fazer um Tradutor de Código Morse com Arduino: Visão Geral A comunicação de forma codificada, além de ser tão fascinante, possui muitas aplicações em diversos campos. Um dos métodos mais comuns de comunicação de código é o código Morse. Neste tutorial, você aprenderá como fazer um intérprete para enviar e re
Código Morse para texto usando Arduino: 5 etapas
Código Morse para Texto usando Arduino: IDÉIA Descrição Todos nos comunicamos uns com os outros por meio de nossos sensores naturais (língua, gesto … etc). A parte emocionante começa quando você deseja compartilhar informações secretas com alguém. A pergunta é como fazer? Portanto, a resposta está em como você transmite i
Escritor Braille Simples (Fala para Braille): 8 Passos (com Imagens)
Escritor Braille Simples (Fala para Braille): Olá a todos, Tudo isso começou fazendo um plotter XY simples depois de concluí-lo com sucesso, pensei em desenvolver um conversor de texto simples de fala para braille. Comecei a pesquisar online e inesperadamente os preços eram muito altos , isso me impulsionou
Código Morse Touch Keyer / Autocoder: 12 etapas (com imagens)
Codificador / codificador de toque em código Morse: Na verdade, criei este projeto há algum tempo, mas pensei que alguém poderia usar a ideia. Eu sou um cara de radioamadorismo e entrei nisso um pouco tarde na vida, quando me aposentei e tive tempo. Eu tenho minha licença geral agora e uso o telefone (vo