Table des matières:

Arduino Morse Code Writer : 7 étapes (avec photos)
Arduino Morse Code Writer : 7 étapes (avec photos)

Vidéo: Arduino Morse Code Writer : 7 étapes (avec photos)

Vidéo: Arduino Morse Code Writer : 7 étapes (avec photos)
Vidéo: Transmit Morse Code with Arduino 2024, Juillet
Anonim
Image
Image
Rédacteur de code Morse Arduino
Rédacteur de code Morse Arduino

J'ai fait un robot qui peut convertir n'importe quel texte en code Morse, puis l'écrire !! Il est fait de carton et de Lego et pour l'électronique j'ai utilisé Arduino et seulement deux moteurs.

Fournitures

Carte Arduino Uno Moteur pas à pas Micro servo SG90ULN2003 module de pilote de moteur pas à pas Module d'alimentation Planche à pain4 × fils de cavalier6 × fils dupont femelle à mâle Adaptateur 9V1ACâble USB Carton 2 × chevilles en bois 2 × ressorts paille Papier blancLegoSuper colle Pistolet à colle chaude Bande élastique (pour faire un porte-stylo)Ciseaux Cutter

Étape 1: Construire la base

Construire la base
Construire la base
Construire la base
Construire la base
Construire la base
Construire la base

Commencez par construire la base. La mienne fait 4 goujons de large et 20 goujons de long, après avoir construit une couche avec ces longueurs, j'ai construit un pensionnaire large d'un goujon tout autour en laissant un espace d'un côté pour laisser de l'espace pour le moteur pas à pas, puis j'ai ajouté morceaux de tuile à la partie médiane où la bande de papier sera. L'utilisation de Lego l'a rendu très robuste et facile à modifier. Pour faire le rouleau de papier, j'ai découpé des bandes de papier A4 de 1,2cm de large (j'ai choisi cette largeur car c'est la même largeur que la roue Lego que j'ai utilisée, vous pouvez faire la vôtre plus grande ou plus petite selon votre roue) et j'ai collé leurs extrémités ensemble pour former une très longue bande, puis je l'ai enroulée autour de la roue.

Étape 2: la pièce servo

La pièce servo
La pièce servo
La pièce servo
La pièce servo
La pièce servo
La pièce servo

Pour cette étape il vous faut:

  • deux chevilles en bois de 4 cm de long
  • deux ressorts de 2 cm de long
  • une paille coupée en deux morceaux de 2 cm de long chacun
  • un morceau de carton de 12 cm sur 4 cm
  • deux morceaux de carton de 4 cm sur 1,5 cm
  • un morceau de carton de 4 cm sur 2 cm

Collez d'abord les goujons sur l'un des 4 par 1,5 morceaux, puis insérez les ressorts et les pailles dans les goujons, puis collez l'autre morceau de carton de l'autre côté pour maintenir le tout en place.

Deuxièmement, collez le morceau de 4 cm sur 2 cm sur les pailles.

Troisièmement, retournez toute la pièce et collez un petit goujon à l'arrière, pas au milieu mais légèrement à gauche. (j'ai oublié d'ajouter le petit goujon sur la première photo)

Enfin, découpez un trou dans le gros morceau de carton de la taille de l'avant du servomoteur et collez le moteur, puis collez le morceau que nous venons de faire avec les chevilles sur le gros morceau de sorte que lorsque le servo se déplace, il pousse le petite cheville vers le bas qui à son tour pousse les ressorts vers le bas aussi.

J'ai fini par couper environ 3 cm de la partie inférieure du morceau de 12 cm sur 4 cm et y coller deux autres morceaux de 4 cm sur 1,5 cm, puis recouvrir cela avec un morceau de carton de 5,5 cm sur 4 cm. Et pour tenir le marqueur, j'ai fait un petit boucle d'élastique et je l'ai collé sur un petit morceau de carton puis je l'ai collé sur le morceau de 4cm sur 2cm qui descendra au démarrage du servo. Ces ajouts ont empêché le marqueur de se déplacer d'un côté à l'autre lorsque les ressorts se sont remontés.

Étape 3: Ajout du servomoteur et du rouleau de papier à la base

Ajout du servomoteur et du rouleau de papier à la base
Ajout du servomoteur et du rouleau de papier à la base
Ajout du servomoteur et du rouleau de papier à la base
Ajout du servomoteur et du rouleau de papier à la base

J'ai ajouté deux autres briques d'un côté de la base pour soutenir la pièce servo et je l'ai collée en place. Ensuite, j'ai ajouté la roue à l'extrémité de la base.

Étape 4: Construire le cadre du moteur pas à pas

Construire le cadre du moteur pas à pas
Construire le cadre du moteur pas à pas
Construire le cadre du moteur pas à pas
Construire le cadre du moteur pas à pas
Construire le cadre du moteur pas à pas
Construire le cadre du moteur pas à pas

Cette étape était un peu un défi, car le moteur n'était pas fait pour s'adapter parfaitement à Lego. Cependant, j'ai réussi à le faire en utilisant les deux trous du moteur pour le fixer en place. Ensuite, j'ai collé une roue Lego à l'extrémité du moteur, puis je l'ai placée juste à côté de la base du côté que j'ai laissé ouvert à l'étape 1.

Étape 5: Touches finales

La touche finale
La touche finale
La touche finale
La touche finale
La touche finale
La touche finale
La touche finale
La touche finale

J'ai ajouté deux pièces d'arc pour couvrir la roue pour fixer le papier en place. Et j'ai ajouté deux pièces d'arc plus petites, une pour tenir les fils du moteur pas à pas et une autre pour tenir le papier. Enfin, j'ai remplacé la roue du moteur pas à pas par une roue légèrement plus grande qui déplace mieux le papier que l'ancienne roue.

Étape 6: Électronique

Électronique
Électronique
Électronique
Électronique

Enfin, vous devez connecter les moteurs à l'Arduino et télécharger le code.

Nous allons commencer par le servomoteur, connecter le fil marron (le fil de terre) à la broche GND, puis le fil rouge (le fil d'alimentation) à la broche 5V, et le fil orange (le fil de signal) au Dig #5 épingler. Ensuite, le moteur pas à pas, connectez 1N1 à Dig #11, 1N2 à Dig #10, 1N3 à Dig #9, 1N4 à Dig #8, le 5V au côté positif de la planche à pain et la broche de terre au côté négatif du planche à pain. Et n'oubliez pas de connecter le module d'alimentation à la planche à pain en vous assurant que ses côtés positif et négatif s'alignent correctement avec les côtés correspondants sur la planche à pain. Si vous oubliez de le faire, vous inverserez le pouvoir de votre projet, et vous ne voulez pas le faire.

Pour le code, j'ai écrit quatre méthodes, une pour écrire un point, une pour écrire un tiret et deux pour laisser un espace entre chaque lettre et chaque mot. De cette façon, je peux simplement appeler ces méthodes lorsque j'en ai besoin au lieu de les réécrire pour chaque lettre. Ensuite, j'ai écrit une boucle for qui parcourt chaque lettre du texte et l'écris. À l'intérieur, j'ai écrit une instruction if pour chaque lettre, mais vous pouvez l'écrire dans une instruction switch si vous préférez. Bien sûr, vous pouvez ajouter au code pour permettre au programme de lire les nombres. Lorsque tout le câblage est prêt, copiez et collez simplement le code dans votre IDE. N'oubliez pas d'installer les bibliothèques stepper, servo et string. Après cela, vous êtes prêt à partir.

Comment ça fonctionne

Lorsque l'Arduino démarre, le programme examine la première lettre du texte., et selon laquelle il s'agit, il appelle les fonctions qui l'écrivent en code Morse. Par exemple, lorsque la fonction point est appelée, le servomoteur est réglé sur 160 qui déplace le stylo vers le bas, puis il est ramené à 90 qui permet aux ressorts de remonter en déplaçant le stylo avec eux. Et si la fonction tiret est appelée, le servo déplace le stylo vers le bas, puis le moteur pas à pas fait tourner la roue qui tire le papier en faisant écrire un tiret au stylo. Et si l'une des fonctions spatiales est appelée, le moteur pas à pas tourne mais avec le stylo vers le haut, il tire le papier en faisant un espace entre les lettres ou les mots. Quand c'est fait, il passe à la lettre suivante et répète le même processus. J'espère que tu aimes;)

Le code

#comprendre

#include #include #include const int stepsPerRevolution = 150; // Ceci est la variable pour le moteur pas à pas String phrase = "*hello"; //Modifiez cette variable pour écrire des mots différents mais n'écrivez qu'en minuscules et commencez votre mot par "*" Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // C'est la méthode qui oblige le robot à écrire un point void dot() { Serial.println("dot start"); monServo.write(160); retard(1000); monServo.write(90); retard(1000); myStepper.step(stepsPerRevolution); retard(1000); Serial.println("point fait"); } // C'est la méthode qui oblige le robot à écrire un tiret void dash() { Serial.println("dash start"); monServo.write(160); retard(1000); myStepper.step(stepsPerRevolution); retard(1000); monServo.write(90); retard(1000); myStepper.step(stepsPerRevolution); retard(1000); Serial.println("tiret terminé"); } // C'est la méthode qui fait que le robot laisse un espace entre chaque lettre void space() { Serial.println("space start"); monServo.write(90); retard(1000); monpas.step(200); retard(1000); Serial.println("espace fait"); } // C'est la méthode qui fait que le robot laisse un plus grand espace entre chaque mot void bigSpace() { myServo.write(90); monpas.pas(250); retard(1000); } void setup() { // mettez votre code de configuration ici, à exécuter une fois: Serial.begin(9600); myStepper.setSpeed(100); monServo.attach(5); int first = phrase.indexOf('*'); // cette boucle for parcourt chaque lettre de la chaîne puis appelle les bonnes méthodes pour l'écrire pour (int i = 0; i < phrase.length(); i++) { if (sentence.charAt(first + i) == 'a') { Serial.print(".- "); point(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'b') { Serial.print("-… "); tiret(); point(); point(); point(); espacer(); } else if (sentence.charAt(first + i) == 'c') { Serial.print("-.-. "); tiret(); point(); tiret(); point(); espacer(); } else if (sentence.charAt(first + i) == 'd') { Serial.print("-.. "); tiret(); point(); point(); espacer(); } else if (sentence.charAt(first + i) == 'e') { Serial.print(". "); point(); espacer(); } else if (sentence.charAt(first + i) == 'f') { Serial.print("..-. "); point(); point(); tiret(); point(); espacer(); } else if (sentence.charAt(first + i) == 'g') { Serial.print("--. "); tiret(); tiret(); point(); espacer(); } else if (sentence.charAt(first + i) == 'h') { Serial.print("…. "); point(); point(); point(); point(); espacer(); } else if (sentence.charAt(first + i) == 'i') { Serial.print(".. "); point(); point(); espacer(); } else if (sentence.charAt(first + i) == 'j') { Serial.print(".--- "); point(); tiret(); tiret(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'k') { Serial.print("-.- "); tiret(); point(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'l') { Serial.print(".-.. "); point(); tiret(); point(); point(); espacer(); } else if (sentence.charAt(first + i) == 'm') { Serial.print("-- "); tiret(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'n') { Serial.print("-. "); tiret(); point(); espacer(); } else if (sentence.charAt(first + i) == 'o') { Serial.print("--- "); tiret(); tiret(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'p') { Serial.print(".--. "); point(); tiret(); tiret(); point(); espacer(); } else if (sentence.charAt(first + i) == 'q') { Serial.print("--.- "); tiret(); tiret(); point(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'r') { Serial.print(".-. "); point(); tiret(); point(); espacer(); } else if (sentence.charAt(first + i) == 's') { Serial.print("… "); point(); point(); point(); espacer(); } else if (sentence.charAt(first + i) == 't') { Serial.print("- "); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'u') { Serial.print("..- "); point(); point(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'v') { Serial.print("…- "); point(); point(); point(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'w') { Serial.print(".-- "); point(); tiret(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'x') { Serial.print("-..- "); tiret(); point(); point(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'y') { Serial.print("-.-- "); tiret(); point(); tiret(); tiret(); espacer(); } else if (sentence.charAt(first + i) == 'z') { Serial.print("--.. "); tiret(); tiret(); point(); point(); espacer(); } else if (sentence.charAt(first + i) == ' ') { Serial.print("/ "); grandEspace(); } } } void loop() { //Ne rien écrire ici }

Étape 7: Dépannage

La roue ne bouge pas

Il se peut qu'il y ait trop de friction entre la roue et le papier, essayez d'élever un peu la roue ou de la changer.

La roue tire le papier mais ensuite elle continue de tourner sans tirer le papier

Assurez-vous d'avoir collé la roue au centre du moteur pas à pas

Les points et les tirets sont connectés

Vérifiez si les fonctions point, tiret et espace sont écrites correctement, elles devraient ressembler à ceci:

// C'est la méthode qui oblige le robot à écrire un dotvoid dot() { Serial.println("dot start"); monServo.write(160); retard(1000); monServo.write(90); retard(1000); myStepper.step(stepsPerRevolution); retard(1000); Serial.println("point fait"); }

// C'est la méthode qui fait écrire un tiret au robot

void dash() { Serial.println("dash start"); monServo.write(160); retard(1000); myStepper.step(stepsPerRevolution); retard(1000); monServo.write(90); retard(1000); myStepper.step(stepsPerRevolution); retard(1000); Serial.println("tiret terminé"); }

// C'est la méthode qui fait que le robot laisse un espace entre chaque lettre

void space() { Serial.println("espace start"); monServo.write(90); retard(1000); monpas.step(200); retard(1000); Serial.println("espace fait"); }

Conseillé: