Experiència en la creació del primer robot a Arduino (robot "caçador")

Hola

En aquest article vull descriure el procés de muntatge del meu primer robot amb Arduino. El material serà útil per a altres principiants com jo que vulguin fer una mena de "carretó autocorrent". L'article és una descripció de les etapes de treball amb les meves addicions en diversos matisos. Al final de l'article es dóna un enllaç al codi final (probablement no el més ideal).

Experiència en la creació del primer robot a Arduino (robot "caçador")

Sempre que era possible, vaig implicar el meu fill (8 anys) en la participació. Què va funcionar exactament i què no? He dedicat part de l'article a això, potser serà útil per a algú.

Descripció general del robot

Primer, unes quantes paraules sobre el mateix robot (la idea). Realment no volia muntar alguna cosa estàndard al principi. Al mateix temps, el conjunt de components era bastant estàndard: xassís, motors, sensor d'ultrasons, sensor de línia, LED, tweeter. Inicialment, a partir d'aquest "conjunt de sopa" es va inventar un robot que custodia el seu territori. Condueix cap a l'infractor que ha travessat la línia del cercle, i després torna al centre. Tanmateix, aquesta versió requeria una línia dibuixada, més matemàtiques addicionals per mantenir-se al cercle en tot moment.

Per tant, després de pensar una mica, vaig canviar una mica la idea i vaig decidir fer un robot "caçador". Al començament, gira al voltant del seu eix, escollint un objectiu proper (persona). Si es detecta la "presa", el "caçador" encén els llums intermitents i la sirena i comença a conduir cap a ella. Quan la persona s'allunya/fuig, el robot selecciona un nou objectiu i el persegueix, etc. Aquest robot no necessita un cercle limitat i pot funcionar en zones obertes.

Com podeu veure, això s'assembla molt a un joc de posar-se al dia. Tot i que al final el robot no va resultar prou ràpid, interactua sincerament amb la gent que l'envolta. Als nens els agrada especialment (a vegades, però, sembla que estiguin a punt de trepitjar-lo, els batec el cor...). Crec que aquesta és una bona solució per popularitzar el disseny tècnic.

Estructura del robot

Així doncs, hem decidit la idea, passem-hi maquetació. La llista d'elements es forma a partir del que hauria de ser capaç de fer el robot. Tot aquí és força obvi, així que mirem immediatament la numeració:

Experiència en la creació del primer robot a Arduino (robot "caçador")

Els "cervells" del robot són una placa arduino uno (1); estava en un conjunt encarregat a la Xina. Per als nostres propòsits, n'hi ha prou (ens centrem en el nombre de pins utilitzats). Del mateix kit vam agafar un xassís preparat (2), al qual s'uneixen dues rodes motrius (3) i una posterior (girant lliurement) (4). El kit també incloïa un compartiment de bateries preparat (5). Davant del robot hi ha un sensor ultrasònic (HC-SR04) (6), a la part posterior hi ha un controlador de motor (L298N) (7), al centre hi ha un intermitent LED (8) i una mica per al costat hi ha un tweeter (9).

En l'etapa de maquetació observem:

- perquè tot encaixi
- estar equilibrat
- situar-se racionalment

Els nostres companys xinesos ja ho han fet parcialment per nosaltres. Per tant, el compartiment de la bateria pesada es col·loca al centre i les rodes motrius es troben aproximadament a sota. Totes les altres taules són lleugeres i es poden col·locar a la perifèria.

Matisos:

  1. El xassís del kit té molts forats de fàbrica, però encara no he esbrinat quina és la lògica. Els motors i el paquet de bateries es van assegurar sense problemes, després va començar el "ajust" amb la perforació de nous forats per assegurar aquesta o aquella placa.
  2. Els bastidors de llautó i altres elements de fixació de les zones d'emmagatzematge van ser de gran ajuda (de vegades els havíem de treure).
  3. Vaig passar les barres de cada tauler per les pinces (de nou, les vaig trobar a l'emmagatzematge). Molt convenient, tots els cables es troben bé i no pengen.

Blocs individuals

Ara passaré blocs i us parlaré personalment de cadascun.

compartiment de la bateria

És evident que el robot ha de tenir una bona font d'energia. Les opcions poden variar, vaig triar l'opció amb 4 piles AA. En total donen aproximadament 5 V, i aquesta tensió es pot aplicar directament al pin de 5 V de la placa arduino (obviant l'estabilitzador).

Per descomptat, vaig tenir una mica de precaució, però aquesta solució és força viable.

Com que es necessita energia a tot arreu, per comoditat vaig fer dos connectors al centre del robot: un "distribueix" el sòl (a la dreta) i el segon - 5 V (a l'esquerra).

Experiència en la creació del primer robot a Arduino (robot "caçador")

Motors i conductor

En primer lloc, sobre el muntatge dels motors. La muntura es fa de fàbrica, però es fa amb grans toleràncies. En altres paraules, els motors poden oscil·lar un parell de mil·límetres a l'esquerra i a la dreta. Per a la nostra tasca això no és crític, però en alguns llocs pot tenir un efecte (el robot començarà a moure's cap al costat). Per si de cas, vaig posar els motors estrictament paral·lels i els vaig arreglar amb cola.

Experiència en la creació del primer robot a Arduino (robot "caçador")

Per controlar els motors, com he escrit més amunt, s'utilitza el controlador L298N. Segons la documentació, disposa de tres passadors per a cada motor: un per canviar la velocitat i un parell de passadors per al sentit de gir. Aquí hi ha un punt important. Resulta que si la tensió d'alimentació és de 5 V, el control de velocitat simplement no funciona! És a dir, o no gira gens, o gira al màxim. Aquesta és la característica que em va fer "matar" un parell de vespres. Al final, vaig trobar una menció en algun lloc d'un dels fòrums.

En termes generals, necessitava una velocitat de rotació baixa en girar el robot, perquè tingués temps d'escanejar l'espai. Però, com que d'aquesta idea no va sortir res, vaig haver de fer-ho d'una altra manera: un petit gir - parada - gira - parada, etc. De nou, no tan elegant, però viable.

També afegiré aquí que després de cada persecució, el robot tria una direcció aleatòria per a un nou gir (en sentit horari o antihorari).

sensor ultrasònic

Experiència en la creació del primer robot a Arduino (robot "caçador")

Una altra peça de maquinari on hem hagut de buscar una solució de compromís. El sensor d'ultrasons produeix números inestables en obstacles reals. De fet, això s'esperava. L'ideal és que funcioni en algun lloc de les competicions on hi hagi superfícies llises, uniformes i perpendiculars, però si les cames d'algú "flash" davant, cal introduir un processament addicional.

Com a tal processament vaig establir filtre mitjà per tres càrrecs. A partir de proves amb nens reals (cap nen va resultar danyat durant les proves!), va resultar ser prou suficient per normalitzar les dades. La física aquí és senzilla: tenim senyals reflectits necessaris objectes (donant la distància requerida) i reflectits des d'altres més llunyans, per exemple, parets. Aquestes últimes són emissions aleatòries en mesures de la forma 45, 46, 230, 46, 46, 45, 45, 310, 46... Són aquests els que talla el filtre mitjà.

Després de tot el processament, obtenim la distància a l'objecte més proper. Si és inferior a un determinat valor llindar, encenem l'alarma i conduïm directament cap a l'"intrus".

Intermitent i sirena

Potser els elements més simples de tots els anteriors. Es poden veure a les fotografies de dalt. No hi ha res a escriure sobre el maquinari aquí, així que ara passem codi.

Programa de control

No veig el sentit de descriure el codi amb detall, qui ho necessita: l'enllaç es troba al final de l'article, tot es pot llegir allà. Però seria bo explicar l'estructura general.

El primer que havíem d'entendre va ser que un robot és un dispositiu en temps real. Més precisament, per recordar, perquè tant abans com ara encara treballo en electrònica. Per tant, de seguida ens oblidem del repte retard(), que els encanta utilitzar en esbossos d'exemple i que simplement "congela" el programa durant un període de temps determinat. En canvi, tal com aconsellen persones amb experiència, introduïm temporitzadors per a cada bloc. L'interval requerit ha passat: l'acció s'ha realitzat (augment de la brillantor del LED, encendre el motor, etc.).

Els temporitzadors es poden interconnectar. Per exemple, el tuiter funciona de manera sincrònica amb l'intermitent. Això simplifica una mica el programa.

Naturalment, ho dividim tot en funcions separades (llums intermitents, so, girar, avançar, etc.). Si no ho feu, no podreu esbrinar què ve d'on i d'on.

Matisos de pedagogia

Vaig fer tot el que s'ha descrit anteriorment durant el meu temps lliure a les nits. De manera pausada, vaig passar unes tres setmanes al robot. Això podria haver acabat aquí, però també em vaig comprometre a parlar-vos de treballar amb un nen. Què es pot fer a aquesta edat?

Treballar segons les instruccions

Primer vam comprovar cada detall per separat: LED, tweeter, motors, sensors, etc. Hi ha un gran nombre d'exemples ja fets: alguns a l'entorn de desenvolupament, d'altres es poden trobar a Internet. Això sens dubte em fa feliç. Agafem el codi, connectem la peça, ens assegurem que funciona, després comencem a canviar-lo per adaptar-lo a la nostra tasca. El nen fa les connexions segons el diagrama i sota la meva supervisió. Això és bo. També heu de poder treballar estrictament segons les instruccions.

Ordre de treball ("de particular a general")

Aquest és un punt difícil. Heu d'aprendre que un gran projecte (“fer un robot”) consisteix en tasques petites (“connectar un sensor”, “connectar motors”...), i aquestes, al seu torn, consisteixen en passos encara més petits (“trobar un programa", "connectar una placa." ", "descarregar firmware"...). En realitzar tasques més o menys comprensibles del nivell inferior, "tanquem" les tasques del nivell mitjà, i a partir d'elles es forma el resultat global. Vaig explicar, però crec que la constatació no arribarà aviat. En algun lloc, probablement, per l'adolescència.

Instal·lació

Perforació, rosques, cargols, femelles, soldadura i olor de colofonia: on seríem sense ella? El nen va rebre l'habilitat bàsica "Treballar amb un soldador": va aconseguir soldar diverses connexions (he ajudat una mica, no ho amagaré). No us oblideu de l'explicació de seguretat.

Treball informàtic

Vaig escriure el programa per al robot, però tot i així vaig aconseguir alguns resultats favorables.

Primer: anglès. L'havien començat a l'escola, així que ens costava esbrinar què eren les transliteracions pishalka, migalka, yarkost i altres. Almenys això ho vam entendre. Deliberadament, no vaig utilitzar paraules natives en anglès, ja que encara no hem arribat a aquest nivell.

Segon: treball eficient. Vam ensenyar combinacions de tecles d'accés directe i com realitzar operacions estàndard ràpidament. Periòdicament, quan estàvem escrivint el programa, el meu fill i jo ens intercanviàvem de lloc, i deia què calia fer (substitució, cerca, etc.). Vaig haver de repetir una vegada i una altra: "feu doble clic a seleccionar", "prem la tecla Maj", "prem Ctrl" i així successivament. El procés d'aprenentatge aquí no és ràpid, però crec que les habilitats s'aniran dipositant gradualment "al subcòrtex".

Text ocultEs pot dir que l'anterior és gairebé obvi. Però, sincerament, aquesta tardor he tingut l'oportunitat d'ensenyar informàtica a 9è a una escola. Això és horrible. Els estudiants no saben coses tan bàsiques com Ctrl + Z, Ctrl + C i Ctrl + V, seleccionar text mentre manteniu premuda la tecla Maj o fent doble clic en una paraula, etc. Això malgrat que estaven al tercer any d'informàtica... Treu la teva pròpia conclusió.

Tercer: mecanografia tàctil. Vaig confiar els comentaris del codi al nen per escriure (deixeu-lo practicar). Immediatament vam col·locar les mans correctament perquè els nostres dits recordessin a poc a poc la ubicació de les tecles.

Com podeu veure, encara estem començant. Continuarem perfeccionant les nostres habilitats i coneixements; seran útils a la vida.

Per cert, sobre el futur...

Desenvolupament posterior

El robot està fet, condueix, parpelleja i sona. Ara què? Inspirats pel que hem aconseguit, pensem perfeccionar-lo encara més. Hi ha una idea per fer un comandament a distància, com un rover lunar. Seria interessant, assegut davant d'un comandament a distància, controlar el moviment d'un robot que condueix en un lloc completament diferent. Però aquesta serà una història diferent...

I al final, de fet, els herois d'aquest article (vídeo fent clic):

Experiència en la creació del primer robot a Arduino (robot "caçador")

Gràcies!

Enllaç del codi

Font: www.habr.com

Afegeix comentari