- Materiāli, kas nepieciešami, lai izveidotu Arduino balstītu grīdas tīrīšanas robotu
- Pārnēsājams putekļu sūcējs
- HC-SR04 ultraskaņas sensora modulis
- Grīdas sensors (IR sensors) kāpņu noteikšanai
- Arduino bāzes grīdas tīrīšanas robota shēma
- Ķēdes izveide Arduino bāzes grīdas tīrīšanas robotam
- Arduino
Mūsdienu scenārijā mēs visi esam tik aizņemti ar savu darbu, ka mums nav laika pareizi sakopt māju. Problēmas risinājums ir ļoti vienkāršs, jums vienkārši jāpērk sadzīves putekļsūcēju robots, piemēram, Irobot Roomba, kas jūsu māju iztīrīs, nospiežot pogu. Bet šādi komerciālie produkti ir izplatīts jautājums, kas ir izmaksas. Tāpēc šodien mēs nolēmām izgatavot vienkāršu grīdas tīrīšanas robotu, kuru izgatavot ir ne tikai vienkārši, bet tas maksā ļoti mazāk, salīdzinot ar tirgū pieejamajiem komerciālajiem produktiem. Bieži lasītāji varētu atcerēties mūsu Arduino putekļsūcēja robotu, kuru mēs uzbūvējām jau sen, taču tas bija ļoti apjomīgs un, lai pārvietotos, bija nepieciešams liels svina-skābes akumulators. Jaunais Arduino putekļu sūcējs mēs šeit būvēsimies, būs kompakts un praktiskāks. Papildus tam šim robotam būs ultraskaņas sensori un IR tuvuma sensors. Ultraskaņas sensors ļaus robotam izvairīties no šķēršļiem, lai tas varētu brīvi pārvietoties, līdz telpa tiek pienācīgi iztīrīta, un tuvuma sensors palīdzēs izvairīties no krišanas no kāpnēm. Visas šīs funkcijas izklausās interesanti, vai ne? Tātad, sāksim darbu.
Vienā no mūsu iepriekšējiem rakstiem mēs izveidojām daudzus robotus, piemēram, pašbalansējošo robotu, automatizēto virsmas dezinfekcijas robotu un robotu, kas novērš šķēršļus. Pārbaudiet tos, ja tas jums šķiet interesants.
Materiāli, kas nepieciešami, lai izveidotu Arduino balstītu grīdas tīrīšanas robotu
Tā kā putekļsūcēja robota aparatūras sadaļas izveidošanai mēs esam izmantojuši ļoti vispārīgus komponentus, jums vajadzētu būt iespējai visus tos atrast savā vietējā hobiju veikalā. Šeit ir pilns nepieciešamo materiālu saraksts, kā arī visu sastāvdaļu attēls.
- Arduino Pro Mini - 1
- HC-SR04 ultraskaņas modulis - 3
- L293D motora draiveris - 1
- 5 voltu N20 motori un stiprinājuma kronšteini - 2
- N20 motorriteņi - 2
- Slēdzis - 1
- LM7805 sprieguma regulators - 1
- 7,4 V litija jonu akumulators - 1
- IR modulis - 1
- Perfboard - 1
- Riteņa ritenis - 1
- MDF
- Vispārējs portatīvais putekļu sūcējs
Pārnēsājams putekļu sūcējs
Komponentu prasību sadaļā mēs esam runājuši par portatīvo putekļsūcēju, zemāk redzamie attēli to precīzi parāda. Tas ir pārnēsājams putekļu sūcējs no amazon. Tas nāk ar ļoti vienkāršu mehānismu. Tā apakšā ir trīs daļas (neliela kamera putekļu uzglabāšanai, vidējā daļa ietver motoru, ventilatoru un akumulatora ligzdu augšpusē (akumulatoram ir vāciņš vai vāciņš). Tam ir līdzstrāvas motors un ventilators. Šis motors ir tieši savienots ar 3V (2 * 1,5 voltu AA baterijas), izmantojot vienkāršu slēdzi. Tā kā mūsu robotu darbinām ar 7.4V akumulatoru, mēs pārtrauksim savienojumu no iekšējās akumulatora un darbināsim to no 5V barošanas avots. Tātad, mēs esam noņēmuši visas nevajadzīgās detaļas, un paliek tikai motors ar divu vadu. To var redzēt zemāk esošajā attēlā.
HC-SR04 ultraskaņas sensora modulis
Lai atklātu šķēršļus, mēs izmantojam populāro HC-SR04 ultraskaņas attāluma sensoru vai arī to varam saukt par šķēršļu novēršanas sensoriem. Darbs ir ļoti vienkāršs, pirmkārt, raidītāja modulis nosūta ultraskaņas viļņu, kas pārvietojas pa gaisu, ietriecas šķērslim un atlec atpakaļ, un uztvērējs saņem šo vilni. Aprēķinot laiku ar Arduino, mēs varam noteikt attālumu. Iepriekšējā rakstā par Arduino bāzes ultraskaņas attāluma sensora projektu mēs ļoti rūpīgi esam apsprieduši šī sensora darbības principu. To varat pārbaudīt, ja vēlaties uzzināt vairāk par ultraskaņas attāluma sensora moduli HC-SR04.
Grīdas sensors (IR sensors) kāpņu noteikšanai
Funkciju sadaļā mēs esam runājuši par funkciju, kurā robots var noteikt kāpnes un novērst sevi no krišanas. Lai to izdarītu, mēs izmantojam IR sensoru. Mēs izveidosim saskarni starp IR sensoru un Arduino. No darba IR tuvuma sensora ir ļoti vienkāršs, tas ir IR LED un fotodiode, IS LED izstaro infrasarkano gaismu, un, ja kāds šķērslis nāk priekšā šajā izstarotās gaismas, tas tiks atspoguļots, kā arī atspoguļo gaismu tiks atklāta ar fotodiodi. Bet radītais spriegums no refleksijas būs ļoti zems. Lai to palielinātu, mēs varam izmantot op-amp salīdzinātāju, mēs varam pastiprināt un iegūt izvadi. IR modulisir trīs tapas - Vcc, ground un output. Parasti izeja samazinās, ja sensora priekšā nonāk šķērslis. Tātad, mēs to varam izmantot grīdas noteikšanai. Ja uz sekundes daļu mēs no sensora konstatējam augstu, mēs varam apturēt robotu, pagriezt to atpakaļ vai darīt visu, ko vēlamies, lai novērstu tā nokrišanu no kāpnēm. Iepriekšējā rakstā mēs esam izveidojuši IR tuvuma sensora moduļa maizes paneļa versiju un detalizēti izskaidrojuši darbības principu. To varat pārbaudīt, ja vēlaties uzzināt vairāk par šo sensoru.
Arduino bāzes grīdas tīrīšanas robota shēma
Mums ir trīs ultraskaņas sensori, kas uztver šķēršļus. Tātad, mums jāpievieno visi ultraskaņas sensoru pamatojumi un jāpievieno tie kopējam pamatam. Mēs arī savienojam visus trīs sensora Vcc un savienojam to ar kopējo VCC tapu. Pēc tam mēs savienojam sprūda un atbalss tapas ar Arduino PWM tapām. Mēs arī savienojam IR moduļa VCC ar 5V un iezemējam ar Arduino zemes tapu, IR sensora moduļa izejas tapa nonāk Arduino digitālajā tapā D2. Motora vadītājam mēs savienojam abas iespējošanas tapas ar 5V un arī vadītāja sprieguma tapu ar 5V, jo mēs izmantojam 5 voltu motorus. Iepriekšējā rakstā mēs esam izveidojuši Arduino Motor Driver Shield, kuru varat pārbaudīt, lai uzzinātu vairāk par L293D Motor Driver ICun tās darbības. Arduino, ultraskaņas moduļi, motora draiveris un motori darbojas ar 5 voltiem, jo lielāks spriegums to nogalinās, un mēs izmantojam 7,4 voltu akumulatoru, lai to pārveidotu par 5 voltiem, tiek izmantots sprieguma regulators LM7805. Pievienojiet putekļsūcēju tieši galvenajai ķēdei.
Ķēdes izveide Arduino bāzes grīdas tīrīšanas robotam
Lai iegūtu dažas idejas par manu robotu, es tiešsaistē meklēju putekļsūcēju robotus un ieguvu dažus apaļas formas robotu attēlus. Tātad, es nolēmu uzbūvēt apaļas formas robotu. Lai izveidotu robota vajāšanu un korpusu, man ir daudz iespēju, piemēram, putuplasta loksne, MDF, kartons utt. Bet es izvēlos MDF, jo tas ir ciets un tam piemīt dažas ūdens izturīgas īpašības. Ja jūs to darāt, varat izlemt, kuru materiālu izvēlaties savam robotam.
Lai izveidotu robotu, es paņēmu MDF lapu, tad uzzīmēju divus apļus ar 8 CM rādiusu, un šī apļa iekšpusē esmu uzzīmējis arī citu apli, kura rādiuss ir 4 CMputekļu sūcēja uzstādīšanai. Tad es izgriezu apļus. Arī es esmu sagriezis un noņēmis atbilstošus gabalus riteņa ceļam (lai labāk saprastu, skatiet attēlus). Visbeidzot, es izveidoju trīs mazas atveres riteņa ritenim. Nākamais solis ir motoru uzstādīšana uz pamatnes, izmantojot tā stiprinājumus, kā arī novietojiet un nofiksējiet ritentiņu savā pozīcijā. Pēc tam novietojiet ultraskaņas sensorus robota kreisajā, labajā un vidū. Pievienojiet infrasarkano staru moduli arī robota mīnusam. Neaizmirstiet pievienot slēdzi ārpusē. Tas viss ir par robota izveidi, ja šajā brīdī jūs sajaucaties, varat atsaukties uz šādiem attēliem.
Augšējai daļai es arī uz putuplasta loksnes esmu uzzīmējis apli 11 cm rādiusā un sagriezis to. Atstarpei starp augšējo un apakšējo daļu es biju izgriezusi trīs 4 CM garus plastmasas caurules gabalus. Pēc tam es apakšējā daļā pielīmēju plastmasas starplikas un tad augšējo daļu. Ja vēlaties, botu sānu daļas varat pārklāt ar plastmasu vai līdzīgiem materiāliem.
Arduino
Pilns šī projekta kods ir norādīts dokumenta beigās. Šis Arduino kods ir līdzīgs Arduino bāzes ultraskaņas attāluma sensora kodam, vienīgās izmaiņas ir grīdas noteikšanā. Turpmākajās rindās es izskaidroju, kā darbojas kods. Šajā gadījumā mēs neizmantojam papildu bibliotēkas. Tālāk kods ir aprakstīts soli pa solim. Mēs neizmantojam papildu bibliotēkas, lai atšifrētu attāluma datus no sensora HC-SR04, jo tas ir ļoti vienkārši. Turpmākajās rindās mēs aprakstījām, kā. Pirmkārt, mums jānosaka trigera tapa un atbalss tapa visiem trim ultraskaņas attāluma sensoriem, kas savienoti ar Arduino dēli. Šajā projektā mums ir trīs atbalss tapas un trīs sprūda tapas. Ņemiet vērā, ka 1 ir kreisais sensors, 2 ir priekšējais sensors un 3 ir labais sensors.
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;
Tad mēs definējām mainīgos attālumam, kuri visi ir (int) tipa mainīgie, un ilgumam, kuru mēs izvēlējāmies izmantot (ilgi). Mums atkal ir trīs. Arī kustības statusa saglabāšanai esmu definējis veselu skaitli, par to mēs runāsim vēlāk šajā sadaļā.
ilgs ilgums1; ilgs ilgums2; ilgs ilgums3; int distanceleft; int distancefront; int distanceright; int a = 0;
Tālāk iestatīšanas sadaļā mums ir jāizveido visas perspektīvās tapas kā ievades vai izvades funkcijas, izmantojot funkciju pinModes () . Lai nosūtītu ultraskaņas viļņus no moduļa, mums jāaktivizē sprūda tapa līdz augstam, ti, visiem sprūda tapām jābūt definētām kā OUTPUT. Un, lai saņemtu atbalsi, mums ir jāizlasa atbalss tapu stāvoklis, tāpēc visiem atbalss tapām jādefinē kā INPUT. Mēs arī iespējojam sērijveida monitoru problēmu novēršanai. Lai nolasītu IR moduļu statusu, kā ievadi esmu definējis irpin.
pinMode (trigPin1, OUTPUT); pinMode (trigPin2, OUTPUT); pinMode (trigPin3, OUTPUT); pinMode (echoPin1, INPUT); pinMode (echoPin2, INPUT); pinMode (echoPin3, INPUT); pinMode (irpin, INPUT);
Šīs digitālās tapas tiek definētas kā OUTPUT motora vadītāja ieejai.
pinMode (4, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (12, OUTPUT);
Galvenajā cilpā mums ir trīs sekcijas trim sensoriem. Visas sadaļas darbojas vienādi, bet katra - dažādiem sensoriem. Šajā sadaļā mēs nolasām šķēršļu attālumu no katra sensora un glabājam to katrā definētajā veselajā skaitlī. Lai nolasītu attālumu, vispirms mums jāpārliecinās, vai sprūda tapas ir skaidras, tāpēc mums 2 µs ir jāiestata sprūda tapa uz LOW. Tagad, lai radītu ultraskaņas viļņu, mums ir jāpagriež sprūda tapa HIGH 10 µs. Tas nosūtīs ultraskaņas skaņu, un ar funkcijas pulseIn () palīdzību mēs varam nolasīt ceļa laiku un saglabāt šo vērtību mainīgajā “ ilgums ”. Šai funkcijai ir 2 parametri, pirmais ir atbalss tapas nosaukums, bet otrajam varat rakstīt vai nuAUGSTS vai ZEMS. HIGH nozīmē, ka funkcija pulseIn () gaidīs, kad tapa atgriezīsies HIGH, ko izraisīja atlecošais skaņas vilnis, un tā sāks skaitīt, tad tā gaidīs, kamēr tapa beigsies LOW, kad beigsies skaņas vilnis, kas apturēs skaitīšanu. Šī funkcija dod impulsa garumu mikrosekundēs. Lai aprēķinātu attālumu, mēs reizināsim ilgumu ar 0,034 (skaņas ātrums gaisā ir 340m / s) un dalīsim to ar 2 (tas ir saistīts ar skaņas viļņa pārvietošanos uz priekšu un atpakaļ). Visbeidzot, katra sensora attālumu mēs glabājam atbilstošos skaitļos.
digitalWrite (trigPin1, LOW); kavēšanāsMikrosekundes (2); digitalWrite (trigPin1, HIGH); kavēšanāsMikrosekundes (10); digitalWrite (trigPin1, LOW); ilgums1 = pulseIn (echoPin1, HIGH); distanceleft = ilgums1 * 0,034 / 2;
Pēc attāluma no katra sensora iegūšanas mēs varam kontrolēt motorus ar if paziņojuma palīdzību, tādējādi mēs kontrolējam robota kustību. Tas ir ļoti vienkārši, pirmkārt, mēs norādījām šķēršļu attāluma vērtību, šajā gadījumā tas ir 15 cm (mainiet šo vērtību kā savu vēlmi). Tad mēs devām nosacījumus atbilstoši šai vērtībai. Piemēram, kad šķērslis nāk kreisā sensora priekšā (tas nozīmē, ka kreisā sensora attālumam jābūt zemākam vai vienādam ar 15 cm) un pārējie divi attālumi ir lieli (tas nozīmē, ka sensoru priekšā nav šķēršļu), tad ar digitālās rakstīšanas funkcijas palīdzību mēs varam vadīt motorus pa labi. Vēlāk es pārbaudīju IR sensora statusu. Ja robots atrodas uz grīdas, IR tapas vērtība būs ZEMA, un, ja nē, tad vērtība būsAUGSTS. Tad es saglabāju šo vērtību mainīgajā int s . Mēs vadīsim robotu atbilstoši šim statusam.
Šī koda sadaļa tiek izmantota, lai pārvietotu robotu uz priekšu un atpakaļ :
if (s == AUGSTS) { digitalWrite (4, LOW); digitalWrite (7, HIGH); digitalWrite (8, LOW); digitalWrite (12, HIGH); kavēšanās (1000); a = 1; }
Bet ar šo metodi ir problēma, kad motors pārvietojas atpakaļ, grīda atgriežas un bots virzīsies uz priekšu, un tas atkārtos bota iestrēgšanu. Lai to pārvarētu, mēs saglabājam vērtību (1) int pēc tam, kad saprotam, ka grīdas nav. Mēs pārbaudām šo nosacījumu arī citām kustībām.
Pēc grīdas neesamības noteikšanas robots uz priekšu nepārvietosies. Tā vietā tas virzīsies pa kreisi, tādā veidā mēs varam izvairīties no problēmas.
ja ((a == 0) && (s == LOW) && (distanceleft <= 15 && distancefront> 15 && distanceright <= 15) - (a == 0) && (s == LOW) && (distanceleft> 15 && attālums> 15 && attālums> 15))
Iepriekš minētajā stāvoklī. Pirmkārt, robots pārbaudīs grīdas statusu un veselu skaitli. Bots virzīsies uz priekšu tikai tad, ja būs izpildīti visi nosacījumi.
Tagad mēs varam rakstīt komandas motora vadītājam. Tas virzīs labo motoru atpakaļ un kreiso motoru uz priekšu, tādējādi pagriežot robotu pa labi.
Šī koda sadaļa tiek izmantota, lai pārvietotu robotu pa labi:
digitalWrite (4, HIGH); digitalWrite (7, LOW); digitalWrite (8, HIGH); digitalWrite (12, LOW);
Ja bots atklāj, ka grīdas nav, vērtība mainās uz 1, un bots pārvietosies pa kreisi. Pēc pagrieziena pa kreisi “a” vērtība mainās uz 0 no 1.
ja ((a == 1) && (s == LOW) - (s == LOW) && (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, LOW); digitalWrite (8, LOW); digitalWrite (12, HIGH); kavēšanās (100); a = 0; }
Šī koda sadaļa tiek izmantota, lai pārvietotu robotu pa kreisi:
ja ((s == LOW) && (distanceleft> 15 && distancefront <= 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distancefront> 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distancefront <= 15 && distanceright> 15)) { digitalWrite (4, LOW); digitalWrite (7, HIGH); digitalWrite (8, HIGH); digitalWrite (12, LOW); }
Tas ir viss, lai izveidotu Arduino bāzētu viedo putekļu sūcēju robotu. Pilnīga projekta darbība ir atrodama videoklipā, kas ir saistīts ar šīs lapas apakšdaļu. Ja jums ir kādi jautājumi, komentējiet tālāk.