Bonjour
Dans cet article, je veux décrire le processus d'assemblage de mon premier robot Arduino. Le matériel sera utile à d'autres nouveaux arrivants comme moi qui veulent faire une sorte de «voiture autonome». L'article est une description des étapes du travail avec mes ajouts sur diverses nuances. Un lien vers le code résultant (probablement pas le plus idéal) est donné à la fin de l'article.

Dans la mesure du possible, j'ai impliqué mon fils (8 ans). Qu'est-ce qui lui est exactement arrivé et ce qui ne l'a pas fait - pour cela, j'ai souligné une partie de l'article, peut-être que quelqu'un vous sera utile.
Description générale du robot
Tout d'abord, quelques mots sur le robot lui-même (
idée ). Je ne voulais pas vraiment collecter quelque chose de typique au départ. Dans le même temps, l'ensemble des composants était assez standard - châssis, moteurs, capteur à ultrasons, capteur de ligne, LED, tweeter. Dans un premier temps, à partir de ce «service à soupe», un robot a été inventé qui protège son territoire. Il se dirige vers l'intrus, qui a franchi la ligne circulaire, puis revient au centre. Cependant, dans cette version, une ligne tracée était nécessaire, plus des mathématiques supplémentaires pour rester constamment dans le cercle.
Par conséquent, après quelques délibérations, j'ai un peu changé l'idée et j'ai décidé de faire un robot «chasseur». Au début, il tourne autour de son axe, choisissant une cible (personne) à proximité. Si une «victime» est découverte, le «chasseur» allume un clignotant et une sirène et commence à monter dessus. Lorsqu'une personne s'éloigne / s'enfuit, le robot sélectionne une nouvelle cible et la poursuit, et ainsi de suite. Un tel robot n'a pas besoin d'un cercle limité et peut fonctionner dans une zone ouverte.
Comme vous pouvez le voir, cela ressemble beaucoup au jeu de rattrapage. Bien qu'à la fin le robot ne se soit pas avéré assez rapide, mais il interagit honnêtement avec les gens qui l'entourent. Les enfants l'aiment particulièrement (parfois, cependant, il semble qu'ils sont sur le point de le piétiner, déjà le cœur sautille ...). Je pense que c'est une bonne solution pour vulgariser la conception technique.
Structure du robot
Nous avons donc décidé de l'idée, passons à la
mise en page . La liste des éléments est formée à partir de ce que le robot devrait pouvoir. Tout est assez évident ici, alors regardez immédiatement la numérotation:

"Cerveau" du robot - board arduino uno (1); était dans un ensemble commandé de Chine. Pour nos besoins, c'est assez (nous nous concentrons sur le nombre de broches utilisées). Dans le même ensemble, nous avons pris le châssis fini (2), sur lequel sont fixées deux roues motrices (3) et une arrière (tournant librement) (4). Dans le kit se trouvait également un compartiment de batterie prêt à l'emploi (5). À l'avant du robot se trouve un capteur à ultrasons (HC-SR04) (6), à l'arrière est un pilote de moteur (L298N) (7), au centre est un clignotant à LED (8), et un peu sur le côté est un tweeter (9).
Au stade de la construction, nous regardons:
- pour que tout rentre
- être équilibré
- être rationnellement placé
En partie, nos collègues chinois l'ont déjà fait pour nous. Ainsi, le compartiment de la batterie lourde est placé au centre, et approximativement en dessous se trouvent les roues motrices. Toutes les autres cartes sont légères, elles peuvent être placées en périphérie.
Nuances:
- Il y a beaucoup de trous d'usine dans le châssis de l'ensemble, mais quelle logique y est - je ne l'ai toujours pas compris. Les moteurs et le pack batterie ont été réparés sans problème, puis l'ajustement a commencé par le perçage de nouveaux trous pour fixer l'une ou l'autre planche.
- Les supports en laiton et autres attaches des pièces de stockage ont été assez sauvés (parfois ils ont dû sortir).
- J'ai passé les pneus de chaque planche à travers les pinces (encore une fois, je les ai trouvés dans les entrepôts). Très pratique, tous les fils sont beaux et ne traînent pas.
Blocs individuels
Maintenant, je vais parcourir les
blocs et vous parler personnellement de chacun.
Compartiment à pilesIl est clair que le robot doit avoir une bonne source d'énergie. Les options peuvent être différentes, j'ai choisi l'option avec 4 piles AA. Au total, ils donnent environ 5 V, et cette tension peut être directement appliquée à la broche 5V de la carte Arduino (en contournant le stabilisateur).
Bien sûr, j'avais une certaine méfiance, mais cette solution est tout à fait réalisable.
Comme l'alimentation est nécessaire partout, pour plus de commodité, j'ai fait deux connecteurs au centre du robot: l'un «distribue» la masse (droite) et le second - 5 V (gauche).
Moteurs et chauffeurTout d'abord, sur le montage des moteurs. Le support est fabriqué en usine, mais fabriqué avec de grandes tolérances. En d'autres termes, les moteurs peuvent «osciller» de quelques millimètres de gauche à droite. Pour notre tâche, ce n'est pas critique, mais quelque part il peut influencer (le robot commencera à s'éloigner). Au cas où, je mettrais les moteurs strictement parallèles et fixés avec de la colle.

Pour contrôler les moteurs, comme je l'ai écrit ci-dessus, le pilote L298N est utilisé. Selon la documentation, il a trois broches pour chaque moteur: une pour changer la vitesse et une paire de broches pour le sens de rotation. Il y a un point important. Il s'avère que si la tension d'alimentation est de 5 V, le contrôle de vitesse ne fonctionne tout simplement pas! Autrement dit, ne se tord pas du tout, ou se tord au maximum. Voici une telle fonctionnalité, à cause de laquelle j'ai "tué" quelques soirées. En fin de compte, j'ai trouvé une mention quelque part dans l'un des forums.
D'une manière générale, j'avais besoin d'une faible vitesse de rotation lors de la rotation du robot - de sorte qu'il avait une marge de temps pour scanner l'espace. Mais, puisque rien ne venait d'une telle idée, j'ai dû le faire différemment: un petit virage - arrêt - tour - arrêt, etc. Encore une fois, ce n'est pas si élégant, mais efficace.
J'ajouterai également ici qu'après chaque poursuite, le robot sélectionne une direction aléatoire d'un nouveau virage (dans le sens horaire ou antihoraire).
Capteur ultrasonique
Un autre morceau de fer, où je devais chercher une solution de compromis. Un capteur à ultrasons sur de vrais obstacles donne des nombres instables. En fait, c'était prévu. Idéalement, cela fonctionne quelque part dans les compétitions où il y a des surfaces lisses, uniformes et perpendiculaires, mais si les jambes de quelqu'un "scintillent" devant lui, alors vous devez introduire un traitement supplémentaire.
En tant que tel traitement, j'ai réglé le
filtre médian sur trois échantillons. Sur la base de tests sur de vrais enfants (pas un seul enfant n'a été blessé lors des tests!), Cela s'est avéré suffisant pour normaliser les données. La physique ici est simple: nous avons des signaux réfléchis par les objets
nécessaires (donnant la distance requise) et réfléchis par plus loin, par exemple, les murs. Les seconds sont des explosions aléatoires dans les mesures de la forme 45, 46,
230 , 46, 46, 45, 45,
310 , 46 ... C'est leur filtre médian qui se coupe.
Après tout le traitement, nous obtenons la distance à l'objet le plus proche. Si elle est inférieure à une certaine valeur seuil, nous activons l'alarme et passons directement à «l'intrus».
Clignotant et sirènePeut-être les éléments les plus simples de tout ce qui précède. Ils peuvent être vus sur les photos ci-dessus. Il n'y a rien à écrire sur le fer ici, alors passons maintenant au
code .
Programme de gestion
Je ne vois pas l'intérêt d'écrire le code en détail, qui en a besoin - le lien est à la fin de l'article, tout y est assez lisible. Mais la structure générale serait agréable à expliquer.
La première chose que j'ai dû comprendre: le robot est un appareil en temps réel. Plus précisément, souvenez-vous, car avant, et maintenant je fais toujours de l'électronique. Cela signifie que nous oublions immédiatement l'appel
delay () , que nous aimons utiliser dans les exemples d'esquisses, et qui «gèle» simplement le programme pendant une période de temps spécifiée. Au lieu de cela, comme le conseillent des personnes expérimentées, nous introduisons des minuteries pour chaque bloc. L'intervalle requis est passé - ils ont effectué l'action (augmentation de la luminosité de la LED, mise en marche du moteur, etc.).
Les minuteries peuvent être interconnectées. Ainsi, par exemple, le tweeter fonctionne de manière synchrone avec un clignotant. Cela rend le programme un peu plus facile.
Naturellement, nous divisons tout en fonctions distinctes (clignotant, son, rotation, mouvement vers l'avant, etc.). Si vous ne le faites pas, vous ne comprendrez pas ce qui vient ni où.
Les nuances de la pédagogie
Tout ce qui a été décrit ci-dessus, je l'ai fait dans mes temps libres le soir. En mode tranquille, j'ai passé environ trois semaines sur le robot. Cela aurait pu prendre fin, mais j'ai également promis de vous parler de travailler avec un enfant. Qu'est-ce qui est faisable à cet âge?
Travail sur instructionsNous avons d'abord vérifié chaque partie séparément - LED, tweeters, moteurs, capteurs, etc. Il existe un grand nombre d'exemples prêts à l'emploi - certains directement dans l'environnement de développement, d'autres sur Internet. C'est sans aucun doute agréable. Nous prenons le code, connectons la pièce, nous assurons que cela fonctionne, alors nous commençons déjà à changer pour notre tâche. Connexions selon le schéma et sous une partie de mon contrôle, l'enfant se fait. C'est bien. Vous devez être capable de travailler clairement selon les instructions.
L'ordre de travail ("du privé au général")C'est un point difficile. Il est nécessaire d'enseigner qu'un grand projet ("fabriquer un robot") consiste en de petites tâches ("connecter un capteur", "connecter des moteurs" ...), et celles-ci, à leur tour, consistent en des étapes encore plus petites ("trouver un programme", " connecter la carte »,« télécharger le firmware »...). En effectuant des tâches plus ou moins compréhensibles du niveau inférieur, nous «fermons» les tâches du niveau intermédiaire, et le résultat général en est déjà composé. Il a expliqué, mais je pense que la prise de conscience ne viendra pas de sitôt. Quelque part, probablement, jusqu'à l'adolescence.
L'installationPerçage, filetages, vis, écrous, soudure et l'odeur de la colophane - où sans elle. L'enfant a reçu la compétence de base "Travailler avec un fer à souder" - j'ai réussi à souder plusieurs joints (j'ai aidé un peu, je ne me cacherai pas). N'oubliez pas l'explication de sécurité.
Travail informatiqueJ'ai écrit un programme pour le robot, mais j'ai réussi à obtenir une sorte de résultats associés.
D'abord: l'anglais. Cela venait juste de commencer à l'école, donc nous avons "grinçé" pour trier ce que sont les traductions pishalka, migalka, yarkost et autres. Nous avons au moins compris cela. Je n'ai délibérément pas utilisé mes mots anglais natifs, car nous n'avons pas encore atteint ce niveau.
Deuxièmement: un travail efficace. Ils ont appris aux combinaisons de touches de raccourci comment effectuer rapidement des opérations typiques. Périodiquement, quand ils ont écrit le programme, nous avons changé de place avec mon fils, et j'ai dit ce qui devait être fait (remplacement, recherche, etc.). J'ai dû répéter encore et encore: "double-cliquer", "maintenir Shift", "maintenir Ctrl" et ainsi de suite. Le processus d'apprentissage ici n'est pas rapide, mais je pense que les compétences seront progressivement mises de côté.
Texte masquéVous pouvez dire que ce qui précède est presque évident. Mais, honnêtement, cet automne, j'ai eu l'occasion de faire de l'informatique en 9e année dans la même école. C'est de l'horreur. Les élèves ne connaissent pas les éléments de base tels que Ctrl + Z, Ctrl + C et Ctrl + V, la sélection de texte avec Maj-maintenue ou double-cliquez sur un mot, et plus encore. Et ce, malgré le fait qu'ils étaient dans leur troisième année d'études en informatique ... Tirez vous-même une conclusion.
Troisièmement: la saisie tactile. J'ai confié les commentaires du code à l'enfant tapant (laissez-le s'exercer). Mettez immédiatement les mains droites afin que les doigts se souviennent progressivement de l'emplacement des touches.
Comme vous pouvez le voir, nous ne faisons que commencer. Nous perfectionnerons nos compétences et nos connaissances et nous serons utiles dans la vie.
Au fait, à propos de la perspective ...
Développement ultérieur
Le robot est fait, monte, clignote et grince. Et maintenant? Inspirés par ce qui a été accompli, nous prévoyons de l'affiner davantage. Il y a une idée de faire une télécommande - comme un rover lunaire. Il serait intéressant, assis sur une console conditionnelle, de contrôler le mouvement du robot, qui se déplace dans un endroit complètement différent. Mais ce sera une autre histoire ...
Et à la fin, en fait, les héros de cet article (vidéo par clic):

Merci de votre attention!
→
Lien vers le code