Expérience de création du premier robot sur Arduino (robot « chasseur »)

Bonjour

Dans cet article, je souhaite décrire le processus d'assemblage de mon premier robot à l'aide d'Arduino. Le matériel sera utile à d’autres débutants comme moi qui souhaitent fabriquer une sorte de « chariot autonome ». L'article est une description des étapes de travail avec mes ajouts sur diverses nuances. Un lien vers le code final (probablement pas le plus idéal) est donné à la fin de l'article.

Expérience de création du premier robot sur Arduino (robot « chasseur »)

Dans la mesure du possible, j'ai impliqué mon fils (8 ans) dans la participation. Qu'est-ce qui a fonctionné exactement et qu'est-ce qui n'a pas fonctionné - j'y ai consacré une partie de l'article, cela sera peut-être utile à quelqu'un.

Description générale du robot

Tout d'abord, quelques mots sur le robot lui-même (идея). Je n’avais pas vraiment envie d’assembler quelque chose de standard 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. Initialement, un robot a été inventé à partir de ce « service à soupe » qui garde son territoire. Il se dirige vers le contrevenant qui a franchi la ligne circulaire, puis revient au centre. Cependant, cette version nécessitait une ligne tracée, ainsi que des mathématiques supplémentaires pour rester dans le cercle à tout moment.

C’est pourquoi, après réflexion, j’ai quelque peu changé d’idée et j’ai décidé de créer un robot « chasseur ». Au départ, il tourne autour de son axe en choisissant une cible (personne) proche. Si la « proie » est détectée, le « chasseur » allume les feux clignotants et la sirène et commence à se diriger vers elle. Lorsque la 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 travailler dans des zones ouvertes.

Comme vous pouvez le constater, cela ressemble beaucoup à un jeu de rattrapage. Bien qu’au final le robot ne se soit pas révélé assez rapide, il interagit honnêtement avec les personnes qui l’entourent. Les enfants l'apprécient particulièrement (parfois pourtant, ils ont l'impression qu'ils sont sur le point de le piétiner, leur cœur s'emballe...). 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 à mise en page. La liste des éléments est constituée de ce que le robot doit être capable de faire. Tout ici est assez évident, alors regardons immédiatement la numérotation :

Expérience de création du premier robot sur Arduino (robot « chasseur »)

Les « cerveaux » du robot sont une carte Arduino Uno (1) ; était dans un ensemble commandé en Chine. Pour nos besoins, c'est largement suffisant (nous nous concentrons sur le nombre de broches utilisées). Dans le même kit, nous avons pris un châssis prêt à l'emploi (2), sur lequel sont fixées deux roues motrices (3) et une arrière (rotative libre) (4). Le kit comprenait également un compartiment à piles prêt à l'emploi (5). Devant le robot il y a un capteur à ultrasons (HC-SR04) (6), à l'arrière il y a un pilote de moteur (L298N) (7), au centre il y a un clignotant LED (8), et un peu pour sur le côté il y a un tweeter (9).

Au stade de la mise en page, nous examinons :

- pour que tout s'adapte
- être équilibré
- être placé rationnellement

Nos collègues chinois l’ont déjà partiellement fait pour nous. Ainsi, le lourd compartiment de la batterie est placé au centre et les roues motrices sont situées approximativement en dessous. Toutes les autres planches sont légères et peuvent être placées en périphérie.

Nuances:

  1. Le châssis du kit comporte de nombreux trous d'usine, mais je n'ai toujours pas compris quelle est leur logique. Les moteurs et la batterie ont été fixés sans problème, puis le « réglage » a commencé avec le perçage de nouveaux trous pour fixer telle ou telle planche.
  2. Les supports en laiton et autres fixations des zones de stockage ont été d'une grande aide (il a parfois fallu les retirer).
  3. J'ai fait passer les jeux de barres de chaque carte à travers les pinces (encore une fois, je les ai trouvées dans le stockage). Très pratique, tous les fils reposent bien et ne pendent pas.

Blocs individuels

Maintenant je vais passer par blocs et je vais vous parler personnellement de chacun.

compartiment à piles

Il est clair que le robot doit disposer d’une bonne source d’énergie. Les options peuvent varier, 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 5 V de la carte Arduino (en contournant le stabilisateur).

Bien sûr, j'ai fait preuve d'une certaine prudence, mais cette solution est tout à fait réalisable.

Comme il faut de l'électricité partout, pour plus de commodité, j'ai réalisé deux connecteurs au centre du robot : l'un « distribue » la masse (à droite) et le second - 5 V (à gauche).

Expérience de création du premier robot sur Arduino (robot « chasseur »)

Moteurs et pilote

Tout d’abord, concernant le montage des moteurs. Le support est fabriqué en usine, mais avec de grandes tolérances. En d’autres termes, les moteurs peuvent osciller de quelques millimètres à gauche et à droite. Pour notre tâche, ce n'est pas critique, mais à certains endroits, cela peut avoir un effet (le robot commencera à se déplacer sur le côté). Juste au cas où, j'ai placé les moteurs strictement parallèles et les ai fixés avec de la colle.

Expérience de création du premier robot sur Arduino (robot « chasseur »)

Pour contrôler les moteurs, comme je l'ai écrit ci-dessus, le pilote L298N est utilisé. Selon la documentation, il dispose de trois broches pour chaque moteur : une pour changer la vitesse et une paire de broches pour le sens de rotation. Il y a ici un point important. Il s'avère que si la tension d'alimentation est de 5 V, alors le contrôle de vitesse ne fonctionne tout simplement pas ! Autrement dit, soit il ne tourne pas du tout, soit il tourne au maximum. C’est cette fonctionnalité qui m’a fait « tuer » quelques soirées. Finalement, j'ai trouvé une mention quelque part sur l'un des forums.

D'une manière générale, j'avais besoin d'une faible vitesse de rotation pour faire tourner le robot - afin qu'il ait le temps de scanner l'espace. Mais comme cette idée n'a rien donné, j'ai dû procéder différemment : un petit tour - arrêt - tour - arrêt, etc. Encore une fois, pas si élégant, mais réalisable.

J'ajouterai également ici qu'après chaque poursuite, le robot choisit une direction aléatoire pour un nouveau virage (dans le sens des aiguilles d'une montre ou dans le sens inverse).

Capteur à ultrasons

Expérience de création du premier robot sur Arduino (robot « chasseur »)

Un autre élément matériel pour lequel nous avons dû rechercher une solution de compromis. Le capteur à ultrasons produit des chiffres instables sur des obstacles réels. En fait, c'était prévu. Idéalement, cela fonctionne quelque part dans les compétitions où il y a des surfaces lisses, régulières et perpendiculaires, mais si les jambes de quelqu'un « clignotent » devant lui, un traitement supplémentaire doit être introduit.

En tant que tel, j'ai défini filtre médian pour trois chefs d'accusation. Basé sur des tests sur de vrais enfants (aucun enfant n'a été blessé pendant les tests !), cela s'est avéré tout à fait suffisant pour normaliser les données. La physique ici est simple : nous avons des signaux réfléchis par nécessaire objets (donnant la distance requise) et réfléchis par des objets plus éloignés, par exemple des murs. Ces dernières sont des émissions aléatoires dans des mesures de la forme 45, 46, 230, 46, 46, 45, 45, 310, 46... Ce sont ceux-là que coupe le filtre médian.

Après tout le traitement, nous obtenons la distance jusqu'à l'objet le plus proche. S'il est inférieur à une certaine valeur seuil, alors nous activons l'alarme et roulons tout droit vers « l'intrus ».

Clignotant et sirène

Peut-être les éléments les plus simples de tout ce qui précède. Ils sont visibles sur les photographies ci-dessus. Il n’y a rien à écrire sur le matériel ici, passons maintenant à code.

Programme de contrôle

Je ne vois pas l'intérêt de 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 ce serait bien d'expliquer la structure générale.

La première chose que nous avons dû comprendre, c’est qu’un robot est un appareil en temps réel. Plus précisément, à retenir, car avant et aujourd'hui, je travaille toujours dans l'électronique. Du coup, on oublie tout de suite le défi délai (), qu'ils adorent utiliser dans des exemples de croquis, 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 écoulé - l'action a été effectuée (augmentation de la luminosité de la LED, démarrage du moteur, etc.).

Les minuteries peuvent être interconnectées. Par exemple, le tweeter fonctionne de manière synchrone avec le clignotant. Cela simplifie un peu le programme.

Bien entendu, nous décomposons tout en fonctions distinctes (feux clignotants, son, rotation, avance, etc.). Si vous ne le faites pas, vous ne pourrez pas comprendre ce qui vient d’où et où.

Nuances de pédagogie

J'ai fait tout ce qui est décrit ci-dessus pendant mon temps libre le soir. J'ai passé tranquillement environ trois semaines sur le robot. Cela aurait pu s'arrêter ici, mais j'ai aussi promis de vous parler du travail avec un enfant. Que peut-on faire à cet âge ?

Travailler selon les instructions

Nous avons d'abord vérifié chaque détail séparément - LED, tweeter, moteurs, capteurs, etc. Il existe un grand nombre d'exemples prêts à l'emploi - certains directement dans l'environnement de développement, d'autres peuvent être trouvés sur Internet. Cela me rend certainement heureux. Nous prenons le code, connectons la pièce, nous assurons qu'il fonctionne, puis nous commençons à le modifier en fonction de notre tâche. L'enfant fait les liens selon le schéma et sous une certaine de ma supervision. C'est bon. Vous devez également être capable de travailler strictement selon les instructions.

Ordre des travaux (« du particulier au général »)

C'est un point difficile. Vous devez apprendre qu'un grand projet (« fabriquer un robot ») se compose 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 une carte." ", "télécharger le firmware"...). En effectuant des tâches plus ou moins compréhensibles du niveau inférieur, nous « clôturons » les tâches du niveau intermédiaire et le résultat global se forme à partir d'elles. Je l'ai expliqué, mais je pense que la réalisation ne viendra pas de sitôt. Quelque part, probablement, à l'adolescence.

Installation

Perçage, filetages, vis, écrous, soudure et odeur de colophane - où serions-nous sans cela ? L'enfant a reçu la compétence de base "Travailler avec un fer à souder" - il a réussi à souder plusieurs connexions (j'ai un peu aidé, je ne le cacherai pas). N'oubliez pas l'explication de sécurité.

Travail informatique

J'ai écrit le programme pour le robot, mais j'ai quand même réussi à obtenir des résultats favorables.

Premièrement : l’anglais. Ils venaient juste de commencer à l'école, nous avions donc du mal à comprendre ce qu'étaient pishalka, migalka, yarkost et autres translittérations. Au moins, nous l'avons compris. Je n'ai délibérément pas utilisé de mots anglais natifs, puisque nous n'avons pas encore atteint ce niveau.

Deuxièmement : un travail efficace. Nous avons enseigné les combinaisons de raccourcis clavier et comment effectuer rapidement des opérations standard. Périodiquement, lorsque nous écrivions le programme, mon fils et moi échangeions nos places et je disais ce qu'il fallait faire (remplacement, recherche, etc.). J'ai dû répéter encore et encore : « double-cliquez sur sélectionner », « maintenez Shift », « maintenez Ctrl » et ainsi de suite. Le processus d’apprentissage ici n’est pas rapide, mais je pense que les compétences seront progressivement déposées « dans le sous-cortex ».

Texte masquéOn peut dire que ce qui précède est presque évident. Mais, honnêtement, cet automne, j'ai eu l'occasion d'enseigner l'informatique en 9e année dans une école. C'est horrible. Les étudiants ne connaissent pas des choses de base telles que Ctrl + Z, Ctrl + C et Ctrl + V, sélectionner du texte en maintenant la touche Maj enfoncée ou en double-cliquant sur un mot, etc. Et ce, malgré le fait qu'ils étaient en troisième année d'études en informatique... Tirez votre propre conclusion.

Troisièmement : la saisie tactile. J'ai confié les commentaires du code à l'enfant pour qu'il les tape (le laisse s'entraîner). Nous avons immédiatement placé nos mains correctement pour que nos doigts se souviennent progressivement de l'emplacement des touches.

Comme vous pouvez le constater, nous n’en sommes qu’au début. Nous continuerons à perfectionner nos compétences et nos connaissances ; elles nous seront utiles dans la vie.

Au fait, à propos de l'avenir...

Poursuite du développement du

Le robot est fabriqué, roule, clignote et émet un bip. Et maintenant? Inspirés par ce que nous avons réalisé, nous prévoyons de l’affiner davantage. Il y a une idée pour fabriquer une télécommande - comme un rover lunaire. Il serait intéressant, assis devant une télécommande, de contrôler le mouvement d'un robot qui roule dans un endroit complètement différent. Mais ce sera une autre histoire...

Et à la fin, en effet, les héros de cet article (vidéo en cliquant) :

Expérience de création du premier robot sur Arduino (robot « chasseur »)

Je vous remercie!

Lien de code

Source: habr.com

Ajouter un commentaire