Tabla de contenido:
- Suministros
- Paso 1: construcción de la base
- Paso 2: la pieza del servo
- Paso 3: Adición del servomotor y el rollo de papel a la base
- Paso 4: construcción de la estructura del motor paso a paso
- Paso 5: Toques finales
- Paso 6: Electrónica
- Paso 7: solución de problemas
Video: Escritor de código Morse Arduino: 7 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
¡Hice un robot que puede convertir cualquier texto en código Morse y luego escribirlo! Está hecho de cartón y Lego y para la electrónica usé Arduino y solo dos motores.
Suministros
Placa Arduino Uno Motor paso a paso Micro servo SG90ULN2003 Módulo controlador de motor paso a paso Módulo de fuente de alimentación Placa de pruebas 4 × Cables de puente6 × Cables dupont hembra a macho Adaptador 9V1A Cable USB Cartón 2 × Tacos de madera 2 × Muelles Paja Papel blanco Lego Pegamento súper Pistola de pegamento caliente Banda elástica (para hacer una portalápices) Cortador de tijeras
Paso 1: construcción de la base
Comience construyendo la base. La mía tiene 4 pernos de ancho y 20 pernos de largo, después de construir una capa con esas longitudes, construí un borde de un perno de ancho a su alrededor dejando un espacio en un lado para dejar espacio para el motor paso a paso, luego agregué azulejos a la parte media donde estará la tira de papel. El uso de Lego lo hizo muy resistente y fácil de modificar. Para hacer el rollo de papel, corté tiras de papel A4 de 1,2 cm de ancho (elegí este ancho porque es del mismo ancho que la rueda de Lego que usé, puedes hacer la tuya más grande o más pequeña dependiendo de tu rueda) y pegué sus extremos. para formar una tira muy larga, luego la envolví alrededor de la rueda.
Paso 2: la pieza del servo
Para este paso necesitas:
- dos tacos de madera de 4 cm de largo
- dos resortes de 2cm de largo
- una pajita cortada en dos piezas de 2 cm de largo cada una
- una pieza de cartón de 12 cm por 4 cm
- dos piezas de cartón de 4 cm por 1,5 cm
- una pieza de cartón de 4 cm por 2 cm
Primero, pegue las clavijas a una de las piezas de 4 por 1,5, luego inserte los resortes y las pajitas en las clavijas, luego pegue la otra pieza de cartón en el otro lado para mantener todo en su lugar.
En segundo lugar, pegue la pieza de 4 cm por 2 cm en la parte superior de las pajitas.
En tercer lugar, dé la vuelta a toda la pieza y pegue una pequeña clavija en la parte posterior, no en el medio sino ligeramente hacia la izquierda. (Olvidé agregar la clavija pequeña en la primera imagen)
Finalmente, haga un agujero en la pieza grande de cartón del tamaño de la parte delantera del servomotor y pegue el motor, luego pegue la pieza que acabamos de hacer con las clavijas a la pieza grande para que cuando el servo se mueva, empuje el pasador pequeño que a su vez empuja los resortes hacia abajo también.
Terminé cortando unos 3 cm de la parte inferior de la pieza de 12 cm por 4 cm y pegando dos piezas más de 4 cm por 1,5 cm, luego cubrí eso con un trozo de cartón de 5,5 cm por 4 cm. Y para sostener el marcador hice una pequeña bucle de banda elástica y lo pegué a un pequeño trozo de cartón, luego lo pegué a la pieza de 4 cm por 2 cm que se moverá hacia abajo cuando se inicie el servo. Estas adiciones impidieron que el marcador se moviera de un lado a otro cuando los resortes volvían a subir.
Paso 3: Adición del servomotor y el rollo de papel a la base
Agregué dos ladrillos más a un lado de la base para sostener la pieza del servo y lo pegué en su lugar. Luego agregué la rueda al extremo más alejado de la base.
Paso 4: construcción de la estructura del motor paso a paso
Este paso fue un desafío, porque el motor no se hizo para encajar perfectamente con Lego. Sin embargo, logré hacerlo usando los dos orificios del motor para asegurarlo en su lugar. Luego, pegué una rueda de Lego a la punta del motor y luego la puse justo al lado de la base en el lado que dejé abierto en el paso 1.
Paso 5: Toques finales
Agregué dos piezas de arco para cubrir la rueda y fijar el papel en su lugar. Y agregué dos piezas de arco más pequeñas, una para sostener los cables del motor paso a paso y otra para sostener el papel. Por último, cambié la rueda del motor paso a paso a una ligeramente más grande que movía el papel mejor que la rueda vieja.
Paso 6: Electrónica
Finalmente, debes conectar los motores al Arduino y cargar el código.
Comenzaremos con el servomotor, conectaremos el cable marrón (el cable de tierra) al pin GND, luego el cable rojo (el cable de alimentación) al pin de 5V, y el cable naranja (el cable de señal) al Dig # 5 alfiler. Luego, el motor paso a paso, conecte 1N1 a Dig # 11, 1N2 a Dig # 10, 1N3 a Dig # 9, 1N4 a Dig # 8, el 5V al lado positivo de la placa y el pin de tierra al lado negativo del tablero de circuitos. Y no olvide conectar el módulo de fuente de alimentación a la placa de pruebas, asegurándose de que sus lados positivo y negativo se alineen correctamente con los lados correspondientes de la placa de pruebas. Si se olvida de hacerlo, invertirá el poder de su proyecto y no querrá hacerlo.
Para el código, escribí cuatro métodos, uno para escribir un punto, otro para escribir un guión y dos para dejar espacio entre cada letra y cada palabra. De esa manera, puedo simplemente llamar a estos métodos cuando los necesite en lugar de escribirlos nuevamente para cada letra. Luego escribí un bucle for que pasa por cada letra del texto y lo escribí. Dentro de él, escribí una declaración if para cada letra, pero puedes escribirla en una declaración de cambio si lo prefieres. Por supuesto, puede agregar al código para permitir que el programa lea números. Cuando todo el cableado esté listo, simplemente copie y pegue el código en su IDE. No olvide instalar las bibliotecas stepper, servo y string. Después de eso, estás listo para irte.
Cómo funciona
Cuando Arduino arranca, el programa mira la primera letra del texto., Y dependiendo de cuál sea, llama a las funciones que lo escriben en código Morse. Por ejemplo, cuando se llama a la función de punto, el servomotor se establece en 160, lo que mueve el lápiz hacia abajo, luego se vuelve a configurar en 90, lo que permite que los resortes vuelvan a subir moviendo el lápiz con ellos. Y si se llama a la función de guión, el servo mueve el bolígrafo hacia abajo, luego el motor paso a paso hace girar la rueda que tira del papel haciendo que el bolígrafo escriba un guión. Y si una de las funciones espaciales se llama el motor paso a paso gira pero con el bolígrafo hacia arriba tira del papel haciendo un espacio entre las letras o las palabras. Cuando termina, pasa a la siguiente letra y repite el mismo proceso. Espero que te guste;)
El código
#incluir
#include #include #include const int stepsPerRevolution = 150; // Esta es la variable para el motor paso a paso String statement = "* hola"; // Cambie esta variable para escribir diferentes palabras, pero solo escriba en minúsculas y comience su palabra con "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Este es el método que hace que el robot escriba un punto void dot () {Serial.println ("punto de inicio"); myServo.write (160); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("punto hecho"); } // Este es el método que hace que el robot escriba un guión void guión () {Serial.println ("inicio guión"); myServo.write (160); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("guión hecho"); } // Este es el método que hace que el robot deje un espacio entre cada letra void space () {Serial.println ("space start"); myServo.write (90); retraso (1000); myStepper.step (200); retraso (1000); Serial.println ("espacio hecho"); } // Este es el método que hace que el robot deje un espacio mayor entre cada palabra void bigSpace () {myServo.write (90); myStepper.step (250); retraso (1000); } void setup () {// ponga su código de configuración aquí, para que se ejecute una vez: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int primero = oración.indexOf ('*'); // este bucle for pasa por cada letra de la cadena y luego llama a los métodos correctos para escribirlo for (int i = 0; i <statement.length (); i ++) {if (statement.charAt (first + i) == 'a') {Serial.print (".-"); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'b') {Serial.print ("-…"); pizca(); punto(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'c') {Serial.print ("-.-."); pizca(); punto(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'd') {Serial.print ("-.."); pizca(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'e') {Serial.print ("."); punto(); espacio(); } más si (oración.charAt (primero + i) == 'f') {Serial.print ("..-."); punto(); punto(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'g') {Serial.print ("-."); pizca(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'h') {Serial.print ("…."); punto(); punto(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'i') {Serial.print (".."); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'j') {Serial.print (".--"); punto(); pizca(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'k') {Serial.print ("-.-"); pizca(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'l') {Serial.print (".-.."); punto(); pizca(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'm') {Serial.print ("-"); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'n') {Serial.print ("-."); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'o') {Serial.print ("---"); pizca(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'p') {Serial.print (".-."); punto(); pizca(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 'q') {Serial.print ("--.-"); pizca(); pizca(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'r') {Serial.print (".-."); punto(); pizca(); punto(); espacio(); } más si (oración.charAt (primero + i) == 's') {Serial.print ("…"); punto(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == 't') {Serial.print ("-"); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'u') {Serial.print ("..-"); punto(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'v') {Serial.print ("… -"); punto(); punto(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'w') {Serial.print (".-"); punto(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'x') {Serial.print ("-..-"); pizca(); punto(); punto(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'y') {Serial.print ("-.--"); pizca(); punto(); pizca(); pizca(); espacio(); } más si (oración.charAt (primero + i) == 'z') {Serial.print ("-.."); pizca(); pizca(); punto(); punto(); espacio(); } más si (oración.charAt (primero + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// No escriba nada aquí}
Paso 7: solución de problemas
La rueda no se mueve
Puede haber demasiada fricción entre la rueda y el papel, intente elevar un poco la rueda o cambiarla.
La rueda tira del papel pero luego sigue girando sin tirar del papel
Asegúrate de pegar la rueda en el centro del motor paso a paso.
Los puntos y los guiones están conectados
Compruebe si las funciones de punto, guión y espacio están escritas correctamente, deberían ser así:
// Este es el método que hace que el robot escriba un dotvoid dot () {Serial.println ("dot start"); myServo.write (160); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("punto hecho"); }
// Este es el método que hace que el robot escriba un guión
guión vacío () {Serial.println ("inicio guión"); myServo.write (160); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); myServo.write (90); retraso (1000); myStepper.step (stepsPerRevolution); retraso (1000); Serial.println ("guión hecho"); }
// Este es el método que hace que el robot deje un espacio entre cada letra
espacio vacío () {Serial.println ("inicio del espacio"); myServo.write (90); retraso (1000); myStepper.step (200); retraso (1000); Serial.println ("espacio hecho"); }
Recomendado:
Un escritor clave: 4 pasos
Un escritor clave: ¿Te acuerdas de Stephen Hawking? Era el profesor de Cambridge y famoso matemático en silla de ruedas con una voz generada por computadora. Sufría de la enfermedad de la neurona motora y hacia el final de su vida, después de perder el habla, pudo
Cómo hacer un traductor de código Morse con Arduino: 10 pasos
Cómo hacer un traductor de código Morse con Arduino: descripción general La comunicación de forma codificada, además de ser tan fascinante, tiene muchas aplicaciones en varios campos. Uno de los métodos más comunes de comunicación de código es el código Morse. En este tutorial, aprenderá cómo hacer un intérprete para enviar y re
Escritor en Braille simple (voz a Braille): 8 pasos (con imágenes)
Escritor de Braille simple (voz a Braille): Hola a todos, Todo esto comenzó con hacer un trazador XY simple después de completarlo con éxito, pensé en desarrollar un conversor simple de voz a texto braille. Comencé a buscarlo en línea e inesperadamente los precios eran demasiado altos. , eso me impulsó
Teclado táctil / codificador automático de código Morse: 12 pasos (con imágenes)
Teclado táctil / codificador automático de código Morse: De hecho, construí este proyecto hace algún tiempo, pero pensé que alguien podría usar la idea. Soy un tipo de radioaficionado y me involucré un poco tarde en la vida cuando me jubilé y tuve el tiempo. Ahora tengo mi licencia general y uso el teléfono (vo
El gran escritor: 4 pasos
The High Writer: el escritor de NYC KATSU demuestra la funcionalidad de la última herramienta del Laboratorio de investigación de Graffiti: The High Writer. Basándose en diseños anteriores de postes de pintura de innovadores como Barry McGee y Citizens Against Ugly Street Spam, The High Writer es