- Materials necessaris per construir un robot de neteja de pisos basat en Arduino
- Aspirador portàtil
- Mòdul de sensor ultrasònic HC-SR04
- Sensor de terra (sensor IR) per a la detecció d’escales
- Diagrama de circuits del robot netejador de pisos basat en Arduino
- Construint el circuit per al robot de neteja de pisos basat en Arduino
- Arduino
En un escenari actual, tots estem tan ocupats amb la nostra feina que no tenim temps per netejar correctament la nostra casa. La solució al problema és molt senzilla, només heu de comprar un robot aspirador domèstic, com ara irobot roomba, que netejarà la vostra casa amb només prémer un botó. Però aquests productes comercials són un problema habitual, que és el cost. Avui, doncs, hem decidit fabricar un simple robot netejador de pisos, que no només és senzill de fabricar, sinó que costa molt menys en comparació amb els productes comercials disponibles al mercat. Els lectors més freqüents poden recordar el nostre robot de neteja al buit Arduino, que vam construir fa molt de temps, però que era molt voluminós i necessitava una gran bateria de plom àcid per moure’s. El nou aspirador Arduino anem a construir aquí seran compactes i més pràctics. A més, aquest robot tindrà sensors d’ultrasons i un sensor de proximitat IR. El sensor d'ultrasons permetrà al robot evitar obstacles perquè pugui moure's lliurement fins que la sala es netegi correctament, i el sensor de proximitat l'ajudarà a evitar la caiguda de les escales. Totes aquestes funcions sonen interessants, oi? Comencem, doncs.
En un dels nostres articles anteriors, vam crear molts robots com el robot d’equilibri automàtic, el robot de desinfecció automàtica de superfícies i el robot per evitar obstacles. Comproveu-los si us sembla interessant.
Materials necessaris per construir un robot de neteja de pisos basat en Arduino
Com que hem utilitzat components molt genèrics per construir la secció de maquinari del robot de l’ aspiradora, hauríeu de poder trobar-ne tots a la vostra botiga d’aficionats. Aquí teniu la llista completa del material necessari juntament amb la imatge de tots els components.

- Arduino Pro Mini - 1
- Mòdul d'ultrasons HC-SR04 - 3
- Controlador de motor L293D - 1
- Motors i suports de muntatge de 5 Volts N20 - 2
- Rodes de motor N20 - 2
- Interruptor - 1
- Regulador de tensió LM7805 - 1
- Bateria de ions de liti de 7,4 V: 1
- Mòdul IR - 1
- Perfboard - 1
- Roda de rodes - 1
- MDF
- Aspirador portàtil genèric
Aspirador portàtil
A la secció de requisits de components, hem parlat d’una aspiradora portàtil, les imatges següents ho mostren exactament. És una aspiradora portàtil d’Amazon. Això ve amb un mecanisme molt senzill. Té tres parts a la part inferior (una petita càmera per emmagatzemar la pols, la part central inclou el motor, el ventilador i la presa de la bateria a la part superior (hi ha una tapa o tap per a la bateria). Té un motor de corrent continu i un ventilador. Aquest motor està connectat directament a 3 V (2 * 1,5 volts de piles AA) mitjançant un senzill interruptor. Com que alimentem el nostre robot amb una bateria de 7,4 V, tallarem la connexió de la bateria interna i l’alimentarem des de 5 V Per tant, hem eliminat totes les parts innecessàries i només el motor amb estances de dos fils. Ho podeu veure a la imatge següent.

Mòdul de sensor ultrasònic HC-SR04
Per detectar els obstacles, utilitzem el popular sensor de distància ultrasònic HC-SR04 o podem anomenar-lo sensors d'evitació d'obstacles. El funcionament és molt senzill, primer, el mòdul transmissor envia una ona ultrasònica que viatja a través de l’aire, impacta contra un obstacle i fa rebotar i el receptor rep aquesta ona. Calculant el temps amb Arduino, podem determinar la distància. En un article anterior sobre el projecte del sensor de distància ultrasònic basat en Arduino, hem analitzat molt a fons el principi de funcionament d’aquest sensor. Podeu comprovar-ho si voleu obtenir més informació sobre el mòdul del sensor de distància ultrasònic HC-SR04.
Sensor de terra (sensor IR) per a la detecció d’escales
A la secció de funcions, hem parlat d’una característica en què el robot pot detectar escales i evitar que caigui. Per fer-ho, estem utilitzant un sensor IR. Farem una interfície entre el sensor IR i Arduino. El funcionament del sensor de proximitat IR és molt senzill, té un LED IR i un fotodiode, el LED IR emet llum IR i si apareix algun obstacle davant d’aquesta llum emesa, es reflectirà i es detectarà la llum reflectida. pel fotodiode. Però el voltatge generat per la reflexió serà molt baix. Per augmentar això, podem utilitzar un comparador d'amplificadors operatius, podem amplificar i obtenir sortida. Un mòdul IRté tres pins: Vcc, terra i sortida. Normalment, la sortida baixa quan es produeix un obstacle davant del sensor. Per tant, podem utilitzar-ho per detectar el terra. Si durant una fracció de segon detectem una màxima del sensor, podem aturar el robot, tornar-lo enrere o fer tot el que vulguem per evitar que caigui de l’escala. En un article anterior, hem fet una versió de taulers de pa del mòdul del sensor de proximitat IR i hem explicat els principis de funcionament en detalls; podeu comprovar-ho si voleu saber més sobre aquest sensor.
Diagrama de circuits del robot netejador de pisos basat en Arduino

Disposem de tres sensors d’ultrasons que detecten obstacles. Per tant, hem de connectar tots els sòls dels sensors d’ultrasons i connectar-los a una terra comuna. A més, connectem els tres Vcc del sensor i el connectem al pin VCC comú. A continuació, connectem els pins de disparador i ressò als pins PWM de l’Arduino. També connectem el VCC del mòdul IR a 5V i el posem a terra al pin de terra d’Arduino, el pin de sortida del mòdul del sensor IR passa al pin digital D2 de l’Arduino. Per al controlador del motor, connectem els dos pins d’activació a 5V i també el pin de tensió del controlador a 5V perquè estem utilitzant motors de 5 volt. En un article anterior, hem creat un blindatge del controlador de motor Arduino, podeu comprovar-ho per obtenir més informació sobre l’ IC del controlador de motor L293D.i les seves operacions. Els mòduls Arduino, ultrasons, controladors de motors i motors funcionen a 5 volts, la tensió més alta el matarà i estem utilitzant la bateria de 7,4 volts per convertir-la en 5 volts, s’utilitza el regulador de voltatge LM7805. Connecteu l'aspirador directament al circuit principal.
Construint el circuit per al robot de neteja de pisos basat en Arduino
Per tal d’obtenir algunes idees sobre el meu robot, vaig buscar robots d’aspiradors en línia i vaig obtenir algunes imatges de robots de forma rodona. Per tant, vaig decidir construir un robot de forma rodona. Per construir la persecució i el cos del robot, tinc moltes opcions com fulls d’escuma, MDF, cartró, etc. Però trio MDF perquè és dur i té algunes propietats resistents a l’aigua. Si ho feu, podeu decidir quin material escollireu per al vostre bot.
Per construir el robot, vaig agafar el full MDF, després vaig dibuixar dos cercles amb un radi de 8 cm i , dins d’aquest cercle, també he dibuixat un altre cercle amb un radi de 4 CMper muntar l'aspirador. Després vaig tallar els cercles. A més, he tallat i eliminat les peces adequades per al recorregut de la roda (consulteu les imatges per a una millor comprensió). Finalment, vaig fer tres petits forats per a la roda. El següent pas és instal·lar els motors a la base mitjançant els suports, col·locar i fixar la roda rodant a la seva posició. Després, col·loqueu els sensors d'ultrasons a l'esquerra, a la dreta i al centre del robot. A més, connecteu el mòdul IR a la part inferior del robot. No oblideu afegir l'interruptor a l'exterior. Tot això consisteix a construir el robot; si us esteu confonent en aquest punt, podeu consultar les imatges següents.

A la part superior, també he dibuixat un cercle d’11 cm de radi a la làmina d’escuma i l’he tallat. Per a l’espaiat entre la part superior i la inferior, havia tallat tres trossos de 4 cm de llarg d’un tub de plàstic. Després d'això, vaig enganxar els separadors de plàstic a la part inferior i després vaig enganxar la part superior. Si voleu, podeu cobrir les parts laterals del bot amb materials plàstics o similars.

Arduino
El codi complet d’aquest projecte es dóna al final del document. Aquest codi Arduino és similar al codi del sensor de distància per ultrasons basat en Arduino, l’únic canvi es troba en la detecció de sòl. A les línies següents, explico com funciona el codi. En aquest cas, no fem servir cap biblioteca addicional. A continuació, hem descrit el codi de manera pas a pas. No fem servir cap biblioteca addicional per descodificar les dades de distància del sensor HC-SR04, perquè és molt senzill. A les línies següents, hem descrit com. En primer lloc, hem de definir el gatet i el pin ressò per als tres sensors de distància ultrasònics que estan connectats a la placa Arduino. En aquest projecte, tenim tres pins Echo i tres pins Trigger. Tingueu en compte que 1 és el sensor esquerre, 2 és el sensor frontal i 3 és el sensor adequat.
const int trigPin1 = 3; const int echoPin1 = 5; const int trigPin2 = 6; const int echoPin2 = 9; const int trigPin3 = 10; const int echoPin3 = 11; int irpin = 2;
A continuació, vam definir variables per a la distància que totes són variables de tipus (int) i, per la durada, vam triar utilitzar (llarga). De nou, en tenim tres. A més, he definit un enter per emmagatzemar l'estat del moviment; en parlarem més endavant en aquesta secció.
llarga durada1; llarga durada2; llarga durada3; int distanceleft; int distancefront; int distanceright; int a = 0;
A continuació, a la secció de configuració, hem de fer tots els pins de perspectiva com a entrada o sortida mitjançant la funció pinModes () . Per enviar ones ultrasòniques des del mòdul, hem d’habilitar el pin de disparador a alt, és a dir, tots els pins de disparador haurien de definir-se OUTPUT. I per rebre l'eco, hem de llegir l'estat dels pins d'eco perquè tots els pins d'eco s'hagin de definir com INPUT. També habilitem el monitor sèrie per a la resolució de problemes. Per llegir l'estat dels mòduls IR, he definit l' irpin com a entrada.
pinMode (trigPin1, OUTPUT); pinMode (trigPin2, OUTPUT); pinMode (trigPin3, OUTPUT); pinMode (echoPin1, INPUT); pinMode (echoPin2, INPUT); pinMode (echoPin3, INPUT); pinMode (irpin, INPUT);
I aquests pins digitals es defineixen com a SORTIDA per a l'entrada del controlador del motor.
pinMode (4, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (12, OUTPUT);
Al bucle principal, tenim tres seccions per a tres sensors. Totes les seccions funcionen igual, però cadascuna per a diferents sensors. En aquesta secció, llegim la distància d'obstacles de cada sensor i l'emmagatzemem a cada enter definit. Per llegir la distància, primer ens hem d’assegurar que els passadors del gatell estiguin nets, per a això, hem d’establir el passador del gatet a BAIX durant 2 µs. Ara, per generar l’ona ultrasònica, hem de girar el gatet HIGH per 10 µs. Això enviarà el so ultrasònic i, amb l'ajut de la funció pulseIn () , podrem llegir el temps de viatge i emmagatzemar aquest valor a la variable " durada ". Aquesta funció té 2 paràmetres, el primer és el nom del pin d'eco i, per al segon, podeu escriure qualsevolALTA o BAIXA. HIGH significa que la funció pulseIn () esperarà que el pin passi HIGH causat per l'ona sonora rebotada i començarà a comptar, llavors esperarà que el pin baixi quan l'ona de so acabarà, cosa que aturarà el recompte. Aquesta funció dóna la longitud del pols en microsegons. Per calcular la distància, multiplicarem la durada per 0,034 (la velocitat del so a l’aire és de 340 m / s) i la dividirem per 2 (això es deu al recorregut d’anada i tornada de l’ona sonora). Finalment, emmagatzemem la distància de cada sensor en nombres enters corresponents.
digitalWrite (trigPin1, BAIX); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, BAIX); durada1 = pulseIn (echoPin1, HIGH); esquerra = durada 1 * 0,034 / 2;
Després d’obtenir la distància de cada sensor, podem controlar els motors amb l’ajut d’un enunciat if, de manera que controlem el moviment del robot. Això és molt senzill, primer hem donat un valor de distància d'obstacles, en aquest cas és de 15 cm (canvieu aquest valor segons el vostre desig). Llavors vam donar condicions segons aquest valor. Per exemple, quan hi ha un obstacle davant del sensor esquerre (això significa que la distància del sensor esquerre ha de ser inferior o igual a 15 cm) i les altres dues distàncies són altes (això vol dir que cap obstacle es troba davant dels sensors), després, amb l'ajut de la funció d'escriptura digital, podem conduir els motors cap a la dreta. Més tard, vaig comprovar l’estat del sensor IR. Si el robot és a terra, el valor del pin IR serà BAIX i, si no, el valor seràALTA. Després he emmagatzemat aquest valor a la variable int s . Controlarem el robot segons aquest estat.
Aquesta secció del codi s'utilitza per moure el robot cap endavant i cap enrere :
if (s == ALT) { digitalWrite (4, BAIX); digitalWrite (7, ALT); digitalWrite (8, BAIX); digitalWrite (12, ALTA); retard (1000); a = 1; }
Però hi ha un problema amb aquest mètode quan el motor es mou cap enrere, el terra torna i el bot avançarà i es repetirà fent que el bot quedi atrapat. Per superar-ho, emmagatzemem un valor (1) en int després de comprendre que el sòl no és present. També comprovem aquesta condició per altres moviments.
Després de detectar l’absència del terra, el robot no avançarà. En canvi, es mourà cap a l’esquerra, d’aquesta manera, podrem evitar el problema.
if ((a == 0) && (s == BAIX) && (distanceleft <= 15 && distancefront> 15 && distanceright <= 15) - (a == 0) && (s == LOW) && (distanceleft> 15 && frontfront> 15 && distanceright> 15))
En la condició anterior. En primer lloc, el robot comprovarà l’estat del pis i el valor enter. El robot només avançarà si es compleixen totes les condicions.
Ara podem escriure les ordres per al controlador del motor. Això conduirà el motor dret cap enrere i el motor esquerre cap endavant, girant així el robot cap a la dreta.
Aquesta secció del codi s'utilitza per moure el robot cap a la dreta:
digitalWrite (4, ALTA); digitalWrite (7, BAIX); digitalWrite (8, ALT); digitalWrite (12, BAIX);
Si el bot detecta que el sòl està absent, el valor canvia a 1 i el bot es desplaçarà cap a l'esquerra. Després de girar a l'esquerra, el valor de "a" canvia a 0 des d'1.
if ((a == 1) && (s == BAIX) - (s == BAIX) && (distanceleft <= 15 && distancefront <= 15 && distanceright> 15) - (s == LOW) && (distanceleft <= 15 && distancefront <= 15 && distanceright> 15) - (s == LOW) && (distanceleft <= 15 && distancefront> 15 && distanceright> 15) - (distanceleft <= 15 && distancefront> 15 && distanceright> 15)) { digitalWrite (4, HIGH); digitalWrite (7, BAIX); digitalWrite (8, BAIX); digitalWrite (12, ALTA); retard (100); a = 0; }
Aquesta secció del codi s'utilitza per moure el robot cap a l'esquerra:
if ((s == BAIX) && (distanceleft> 15 && distancefront <= 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distancefront> 15 && distanceright <= 15) - (s == BAIX) && (distanceleft> 15 && distancefront <= 15 && distanceright> 15)) { digitalWrite (4, LOW); digitalWrite (7, ALT); digitalWrite (8, ALT); digitalWrite (12, BAIX); }

Això és tot per construir un robot aspirador intel·ligent basat en Arduino. El funcionament complet del projecte es pot trobar al vídeo enllaçat al final d'aquesta pàgina. Si teniu cap pregunta, feu un comentari a continuació.
