- Mga Materyal na Kinakailangan upang Buuin ang Arduino Batay sa Paglilinis ng Robot
- Portable Vacuum Cleaner
- HC-SR04 Ultrasonic Sensor Module
- Floor Sensor (IR Sensor) para sa Pagtuklas ng Staircase
- Diagram ng Circuit ng Arduino Batay sa Linis na Robot
- Pagbuo ng Circuit para sa Arduino Batay sa Paglilinis ng Robot
- Arduino
Sa isang pangyayari sa kasalukuyan, lahat tayo ay abala sa ating trabaho na wala tayong oras para sa paglilinis nang maayos sa ating bahay. Ang solusyon sa problema ay napaka-simple, kailangan mo lamang bumili ng isang domestic vacuum cleaner robot tulad ng irobot roomba na linisin ang iyong bahay gamit ang pagpindot sa isang pindutan. Ngunit tulad ng mga komersyal na produkto at karaniwang isyu, na kung saan ay ang gastos. Kaya ngayon, nagpasya kaming gumawa ng isang simpleng Robot na mas malinis na Floor, na kung saan ay hindi lamang simpleng gawin ngunit mas mababa ang gastos kumpara sa mga produktong komersyal na magagamit sa merkado. Ang mga madalas na mambabasa ay maaaring matandaan ang aming Arduino Vacuum Cleaning Robot, na itinayo namin noong matagal na ang nakalipas, ngunit ang isa ay napakalaki at kailangan ng isang malaking baterya ng lead-acid upang gumalaw. Ang bagong Arduino Vacuum Cleaner magtatayo kami dito ay magiging compact at mas praktikal. Bukod dito, ang robot na ito ay magkakaroon ng mga ultrasonic sensor at isang IR proximity sensor. Papayagan ng sensor ng ultrasonic ang robot na maiwasan ang mga hadlang upang malayang makagalaw ito hanggang sa malinis nang malinis ang silid, at tutulungan ito ng sensor ng proximity na maiwasan ang pagbagsak mula sa hagdan. Ang lahat ng mga tampok na ito ay kagiliw-giliw na tunog, tama ba? Kaya, magsimula na tayo.
Sa isa sa aming nakaraang mga artikulo, gumawa kami ng maraming mga bot tulad ng Self Balancing Robot, Automated Surface Disinfecting Robot, at ang Obstacle Avoiding Robot. Suriin ang mga iyon kung nakakainteres iyon sa iyo.
Mga Materyal na Kinakailangan upang Buuin ang Arduino Batay sa Paglilinis ng Robot
Tulad ng paggamit namin ng mga napaka-generic na bahagi upang maitayo ang seksyon ng hardware ng vacuum cleaner robot, dapat mong matagpuan ang lahat ng mga nasa iyong lokal na tindahan ng libangan. Narito ang kumpletong listahan ng kinakailangang materyal kasama ang imahe ng lahat ng mga bahagi.
- Arduino Pro Mini - 1
- HC-SR04 Ultrasonic Module - 3
- L293D Motor Driver - 1
- 5Volt N20 Motors at Mounting Brackets - 2
- N20 Motor Wheels - 2
- Lumipat - 1
- LM7805 Voltage Regulator - 1
- 7.4V Lithium-Ion Battery - 1
- IR Module - 1
- Perfboard - 1
- Castor Wheel - 1
- MDF
- Generic Portable Vacuum Cleaner
Portable Vacuum Cleaner
Sa seksyon ng kinakailangan ng sangkap, napag-usapan namin ang tungkol sa isang portable vacuum cleaner, ang mga imahe sa ibaba ay eksaktong ipinapakita. Ito ay isang portable vacuum cleaner mula sa amazon. Ito ay may isang napaka-simpleng mekanismo. Mayroon itong tatlong bahagi sa ilalim (isang maliit na silid para sa pagtatago ng alikabok, ang gitnang bahagi ay may kasamang motor, bentilador, at socket ng baterya sa itaas (may takip o takip para sa baterya). Mayroon itong DC motor at isang fan. Ang motor na ito ay direktang konektado sa 3V (2 * 1.5volt AA na baterya) sa pamamagitan ng isang simpleng switch. Habang pinapalakas namin ang aming robot gamit ang isang 7.4V na baterya, puputulin namin ang koneksyon mula sa panloob na baterya at i-power ito mula sa 5V supply ng kuryente. Kaya, inalis namin ang lahat ng mga hindi kinakailangang bahagi at ang motor lamang na may dalawang kawad ang mananatili. Maaari mong makita iyon sa imahe sa ibaba.
HC-SR04 Ultrasonic Sensor Module
Upang makita ang mga hadlang, gumagamit kami ng sikat na HC-SR04 ultrasonikong sensor ng distansya o maaari nating tawagan itong mga sensor ng pag-iwas sa balakid. Ang pagtatrabaho ay napaka-simple, una, ang module ng transmitter ay nagpapadala ng isang ultrasonic wave na naglalakbay sa pamamagitan ng hangin, tumama sa isang balakid, at tumalbog pabalik at natatanggap ng tatanggap ang alon na iyon. Sa pamamagitan ng pagkalkula ng oras sa Arduino, matutukoy natin ang distansya. Sa isang nakaraang artikulo sa proyekto ng Arduino Batay sa Ultrasonic Distance Sensor, napag-usapan namin nang mabuti ang prinsipyo ng pagtatrabaho ng sensor na ito. Maaari mong suriin iyon kung nais mong malaman ang higit pa tungkol sa HC-SR04 ultrasonic distansya sensor module.
Floor Sensor (IR Sensor) para sa Pagtuklas ng Staircase
Sa seksyon ng mga tampok, napag-usapan namin ang tungkol sa isang tampok kung saan ang robot ay maaaring makakita ng mga hagdanan at maiiwasang bumagsak. Upang magawa iyon, gumagamit kami ng isang IR Sensor. Gagawa kami ng isang interface sa pagitan ng IR sensor at Arduino. Ang pagtatrabaho ng IR Proximity Sensor ay napakasimple, mayroon itong IR LED at isang photodiode, ang IR LED ay naglalabas ng IR light at kung may anumang sagabal na darating sa harap ng pinapalabas na ilaw na ito, makikita ito, at ang masasalamin na ilaw ay makikita. sa pamamagitan ng photodiode. Ngunit ang nabuong boltahe mula sa pagmuni-muni ay magiging napakababa. Upang madagdagan iyon, maaari naming gamitin ang isang op-amp kumpara, maaari naming palakasin at makuha ang output. Isang module ng IRay may tatlong mga pin - Vcc, ground, at output. Karaniwan, ang output ay bumababa kapag ang isang balakid ay dumating sa harap ng sensor. Kaya, magagamit natin ito upang makita ang sahig. Kung para sa isang split segundo, nakakakita kami ng isang mataas mula sa sensor, maaari naming ihinto ang robot, ibalik ito o gawin ang anumang nais naming maiwasan na mahulog mula sa hagdanan. Sa isang nakaraang artikulo, gumawa kami ng isang bersyon ng Breadboard ng IR Proximity Sensor Module at ipinaliwanag ang prinsipyo ng pagtatrabaho sa mga detalye, maaari mong suriin iyon kung nais mong malaman ang higit pa tungkol sa sensor na ito.
Diagram ng Circuit ng Arduino Batay sa Linis na Robot
Mayroon kaming tatlong mga ultrasonic sensor na nakakakita ng mga hadlang. Kaya, kailangan nating ikonekta ang lahat ng mga batayan ng mga ultrasonic sensor at ikonekta ang mga ito sa karaniwang lupa. Gayundin, ikinonekta namin ang lahat ng tatlong Vcc ng sensor at ikinonekta namin iyon sa karaniwang pin ng VCC. Susunod, ikinonekta namin ang mga gatilyo at echo pin sa mga PWM na pin ng Arduino. Ikonekta din namin ang VCC ng IR module sa 5V at ground sa ground pin ng Arduino, ang output pin ng IR sensor module ay pupunta sa digital pin D2 ng Arduino. Para sa driver ng motor, ikinonekta namin ang dalawang paganahin ang mga pin sa 5v at pati na rin ang boltahe ng driver na pin sa 5V dahil gumagamit kami ng 5volt motor. Sa isang nakaraang artikulo, gumawa kami ng isang Arduino Motor Driver Shield, maaari mong suriin iyon upang malaman ang higit pa tungkol sa L293D Motor Driver ICat mga operasyon nito. Ang Arduino, Ultrasonic modules, motor driver, at motor ay gumagana sa 5 Volt, papatayin ito ng mas mataas na boltahe at ginagamit namin ang bateryang 7.4-volt, upang i-convert iyon sa 5 Volt, ginagamit ang regulator ng boltahe ng LM7805. Direktang ikonekta ang vacuum cleaner sa pangunahing circuit.
Pagbuo ng Circuit para sa Arduino Batay sa Paglilinis ng Robot
Upang makakuha ng ilang mga ideya tungkol sa aking robot, naghanap ako ng mga robot ng vacuum cleaner sa online at kumuha ng ilang mga imahe ng mga robot na hugis bilog. Kaya, nagpasya akong bumuo ng isang hugis-ikot na robot. Upang maitayo ang paghabol at katawan ng robot, marami akong pagpipilian tulad ng foam sheet, MDF, karton, atbp. Ngunit pipiliin ko ang MDF sapagkat mahirap ito at may ilang mga katangiang hindi lumalaban sa tubig. Kung ginagawa mo ito, maaari kang magpasya kung aling materyal ang pipiliin mo para sa iyong bot.
Upang mabuo ang robot, kinuha ko ang MDF sheet, pagkatapos ay gumuhit ng dalawang bilog na may 8 CM radius, at sa loob ng bilog na iyon, gumuhit din ako ng isa pang bilog na mayroong radius na 4 CMpara sa pag-angkop sa vacuum cleaner. Pagkatapos ay pinutol ko ang mga bilog. Gayundin, pinutol ko at tinanggal ang mga naaangkop na piraso para sa daanan ng gulong (sumangguni sa mga imahe para sa mas mahusay na pag-unawa). Sa wakas, gumawa ako ng tatlong maliliit na butas para sa castor wheel. Ang susunod na hakbang ay umaangkop sa mga motor sa base gamit ang mga braket, ilagay din at ayusin ang castor wheel sa posisyon nito. Pagkatapos nito, ilagay ang mga ultrasonic sensor sa kaliwa, kanan, at gitna ng robot. Gayundin, ikonekta ang IR module sa downside ng robot. Huwag kalimutang idagdag ang switch sa labas. Iyon lang ang tungkol sa pagbuo ng robot, kung nalilito ka sa puntong ito, maaari kang mag-refer sa mga sumusunod na imahe.
Para sa tuktok na bahagi, gumuhit din ako ng isang bilog na 11 CM sa radius sa foam sheet at gupitin ito. Para sa spacing sa pagitan ng tuktok at ilalim na bahagi, pinutol ko ang tatlong 4 CM na mahabang piraso ng isang plastik na tubo. Pagkatapos nito, idinikit ko ang mga plastic spacer sa ilalim na bahagi at pagkatapos ay idinikit ko ang tuktok na bahagi. Maaari mong takpan ang mga bahagi ng bot ng plastik o mga katulad na materyales kung nais mo.
Arduino
Ang kumpletong code para sa proyektong ito ay ibinibigay sa dulo ng dokumento. Ang Arduino code na ito ay katulad ng code ng Arduino Batay sa Ultrasonic Distance Sensor, ang pagbabago lamang ay sa pagtuklas ng sahig. Sa mga sumusunod na linya, ipinapaliwanag ko kung paano gumagana ang code. Sa kasong ito, hindi kami gumagamit ng anumang labis na mga aklatan. Sa ibaba inilarawan namin ang code sa isang sunud-sunod na paraan. Hindi kami gumagamit ng anumang labis na mga aklatan upang ma-decode ang data ng distansya mula sa sensor ng HC-SR04, sapagkat napakasimple nito. Sa mga sumusunod na linya, inilarawan namin kung paano. Una, kailangan nating tukuyin ang Trigger Pin at Echo Pin para sa lahat ng tatlong mga sensor ng distansya ng ultrasonic na konektado sa Arduino board. Sa proyektong ito, mayroon kaming tatlong mga Echo pin at tatlong Trigger pin. Tandaan na 1 ang kaliwang sensor, 2 ang front sensor, at 3 ang kanang sensor.
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;
Pagkatapos ay tinukoy namin ang mga variable para sa distansya kung saan ang lahat ay (int) mga variable na uri at para sa tagal, pinili naming gamitin ang (haba). Muli, mayroon kaming tatlo sa bawat isa. Gayundin, tinukoy ko ang isang integer para sa pagtatago ng katayuan ng paggalaw, pag-uusapan natin ito sa dakong huli sa seksyong ito.
mahabang tagal1; mahabang tagal2; mahabang tagal3; int distanceleft; int distansya; int distanceright; int a = 0;
Susunod, sa seksyon ng pag-setup, kailangan naming gawin ang lahat ng mga pin ng pananaw bilang input o output gamit ang pagpapaandar ng pinModes () . Upang magpadala ng mga ultrasonikong alon mula sa modyul, kailangan naming paganahin ang gatilyo pin sa mataas ibig sabihin ang lahat ng mga pin na nag-trigger ay dapat tukuyin bilang OUTPUT. At upang matanggap ang echo, kailangan nating basahin ang estado ng mga echo pin upang ang lahat ng mga echo pin ay dapat na tukuyin bilang INPUT. Gayundin, pinapagana namin ang serial monitor para sa pag-troubleshoot. Upang mabasa ang katayuan ng mga IR-module, tinukoy ko ang irpin bilang input.
pinMode (trigPin1, OUTPUT); pinMode (trigPin2, OUTPUT); pinMode (trigPin3, OUTPUT); pinMode (echoPin1, INPUT); pinMode (echoPin2, INPUT); pinMode (echoPin3, INPUT); pinMode (irpin, INPUT);
At ang mga digital pin na ito ay tinukoy bilang OUTPUT para sa pag-input ng driver ng motor.
pinMode (4, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (12, OUTPUT);
Sa pangunahing loop, mayroon kaming tatlong mga seksyon para sa tatlong mga sensor. Ang lahat ng mga seksyon ay gumagana nang pareho ngunit bawat isa para sa iba't ibang mga sensor. Sa seksyong ito, nabasa namin ang distansya ng balakid mula sa bawat sensor at iniimbak ito sa bawat tinukoy na integer. Upang basahin ang distansya, una, kailangan nating tiyakin na ang mga pin na nag-trigger ay malinaw, para doon, kailangan naming itakda ang trigger pin sa LOW para sa 2 µs. Ngayon, para sa pagbuo ng ultrasonic wave, kailangan nating buksan ang gatilyo ng pin na TAAS sa 10 na. Ipapadala nito ang tunog na ultrasonic at sa tulong ng pag- andar ng pulseIn () , mababasa natin ang oras ng paglalakbay, at maiimbak ang halagang iyon sa variable na " tagal ". Ang pagpapaandar na ito ay may 2 mga parameter, ang una ay ang pangalan ng echo pin at para sa pangalawa, maaari mo ring isulatTAAS o MABABA. HIGH ibig sabihin nito na ang pulseIn () function na ay maghintay para sa mga pin upang pumunta HIGH sanhi ng bounced sound wave at ito ay simulan ang pagbibilang, pagkatapos ay maghintay para sa mga pin upang pumunta LOW kapag ang sound wave magtatapos na itigil ang pagbibilang. Ang pagpapaandar na ito ay nagbibigay ng haba ng pulso sa microseconds. Para sa pagkalkula ng distansya, paparami namin ang tagal ng 0.034 (ang bilis ng tunog sa hangin ay 340m / s) at hatiin ito ng 2 (ito ay dahil sa pabalik-balik na paglalakbay ng sound wave). Sa wakas, iniimbak namin ang distansya ng bawat sensor sa mga kaukulang integer.
digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); tagal1 = pulseIn (echoPin1, TAAS); distanceleft = tagal1 * 0.034 / 2;
Matapos makuha ang distansya mula sa bawat sensor, makokontrol natin ang mga motor sa tulong ng isang pahayag kung kaya kinokontrol namin ang paggalaw ng robot. Ito ay napaka-simple, una, nagbigay kami ng isang halagang distansya na halaga, sa kasong ito, ito ay 15cm (baguhin ang halagang ito bilang iyong nais). Pagkatapos ay nagbigay kami ng mga kundisyon ayon sa halagang iyon. Halimbawa pagkatapos sa tulong ng pagpapaandar ng digital na pagsulat, maaari nating ihimok ang mga motor sa kanan. Nang maglaon, sinuri ko ang katayuan ng IR sensor. Kung ang robot ay nasa sahig, ang halaga ng IR pin ay LOW, at kung hindi, ang halaga ay magigingTAAS. Pagkatapos ay naimbak ko ang halagang iyon sa int s variable . Kami ay makokontrol ang robot alinsunod sa katayuang ito.
Ang seksyon na ito ng Code ay ginagamit upang Ilipat ang Robot Ipasa at Pabalik :
kung (s == MATAAS) { digitalWrite (4, LOW); digitalWrite (7, TAAS); digitalWrite (8, LOW); digitalWrite (12, TAAS); pagkaantala (1000); a = 1; }
Ngunit may isang problema sa pamamaraang ito kapag ang motor ay umatras paatras, ang sahig ay bumalik at ang bot ay susulong, at uulitin nito ang paggawa ng bot na natigil. Upang mapagtagumpayan iyon, nag-iimbak kami ng isang halaga (1) sa int pagkatapos ng pag-unawa sa sahig ay wala. Sinusuri din namin ang kundisyong ito para sa iba pang mga paggalaw.
Matapos makita ang kawalan ng sahig, ang robot ay hindi sumulong. Sa halip, lilipat ito sa kaliwa, sa ganitong paraan, maiiwasan natin ang problema.
kung ((a == 0) && (s == LOW) && (distanceleft <= 15 && distansya> 15 && distanceright <= 15) - (a == 0) && (s == LOW) && (distanceleft> 15 && distansya> 15 && distanceright> 15))
Sa kondisyon sa itaas. Una, susuriin ng robot ang katayuan sa sahig at halaga ng integer. Ang bot ay gagana lamang kung ang lahat ng mga kundisyon ay nasiyahan.
Ngayon, maaari naming isulat ang mga utos para sa driver ng motor. Dadalhin nito ang kanang-motor na paatras at ang kaliwang-motor pasulong, sa gayong paraan ibabalik sa kanan ang robot.
Ang seksyon na ito ng Code ay ginagamit upang ilipat ang Kanan ng Robot:
digitalWrite (4, TAAS); digitalWrite (7, LOW); digitalWrite (8, TAAS); digitalWrite (12, LOW);
Kung nakita ng bot ang sahig na wala, ang halaga ay nagbabago sa 1, at ang bot ay lilipat sa kaliwa. Pagkatapos lumiko sa kaliwa, ang halaga ng 'a' ay nagbabago sa 0 mula sa 1.
kung ((a == 1) && (s == LOW) - (s == LOW) && (distanceleft <= 15 && distansya <= 15 && distanceright> 15) - (s == LOW) && (distanceleft <= 15 && distansya <= 15 && distanceright> 15) - (s == LOW) && (distanceleft <= 15 && distansya> 15 && distanceright> 15) - (distanceleft <= 15 && distansya> 15 && distanceright> 15)) { digitalWrite (4, TAAS); digitalWrite (7, LOW); digitalWrite (8, LOW); digitalWrite (12, TAAS); pagkaantala (100); a = 0; }
Ang seksyon na ito ng Code ay ginagamit upang ilipat ang Kaliwa ng Robot:
kung ((s == LOW) && (distanceleft> 15 && distansya <= 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distansya> 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distansya <= 15 && distanceright> 15)) { digitalWrite (4, LOW); digitalWrite (7, TAAS); digitalWrite (8, TAAS); digitalWrite (12, LOW); }
Iyon lang para sa pagbuo ng Arduino batay sa Smart Vacuum Cleaner Robot. Ang kumpletong pagtatrabaho ng proyekto ay matatagpuan sa video na naka- link sa ilalim ng pahinang ito. Kung mayroon kang anumang mga katanungan, magbigay ng puna sa ibaba.