- Материјали потребни за израду робота за чишћење пода на бази Ардуино-а
- Преносни усисивач
- ХЦ-СР04 ултразвучни модул сензора
- Подни сензор (ИР сензор) за откривање степеништа
- Кружни дијаграм робота за чишћење пода на бази Ардуино
- Изградња круга за робота за чишћење пода заснованог на Ардуину
- Ардуино
У данашњем сценарију сви смо толико заузети својим послом да немамо времена за правилно чишћење куће. Решење проблема је врло једноставно, само требате купити домаћег робота за усисивач, као што је иробот роомба, који ће притиском на дугме очистити вашу кућу. Али такви комерцијални производи су уобичајено питање, а то су трошкови. Тако смо данас одлучили да направимо једноставан робот за чишћење пода, који није само једноставан за израду, већ кошта и много мање у поређењу са комерцијалним производима доступним на тржишту. Чести читаоци се можда сећају нашег робота за усисавање Ардуино, који смо изградили давно, али тај је био врло гломазан и за кретање му је била потребна велика оловна киселина. Нови Ардуино усисивач које ћемо овде градити биће компактне и практичније. Поврх тога, овај робот ће имати ултразвучне сензоре и ИР сензор близине. Ултразвучни сензор ће омогућити роботу да избегне препреке како би се могао слободно кретати све док се просторија не очисти правилно, а сензор близине ће му помоћи да избегне пад са степеница. Све ове карактеристике звуче занимљиво, зар не? Па, кренимо.
У једном од наших претходних чланака направили смо много ботова попут Самобалансирајућег робота, Аутоматизованог робота за дезинфекцију површине и Робота за избегавање препрека. Погледајте их ако вам то звучи занимљиво.
Материјали потребни за израду робота за чишћење пода на бази Ардуино-а
Како смо за генерирање хардверског дела робота усисивача користили врло генеричке компоненте, требали бисте бити у могућности да пронађете све оне у вашој локалној хоби продавници. Овде је комплетна листа потребног материјала заједно са имиџом свих компонената.
- Ардуино Про Мини - 1
- ХЦ-СР04 ултразвучни модул - 3
- Л293Д Мотор возач - 1
- 5Волт Н20 мотори и носачи - 2
- Н20 моторни точкови - 2
- Прекидач - 1
- ЛМ7805 Регулатор напона - 1
- 7,4В литијум-јонска батерија - 1
- ИЦ модул - 1
- Перфбоард - 1
- Точкић - 1
- МДФ
- Генерички преносни усисивач
Преносни усисивач
У одељку о потребама за компонентама говорили смо о преносном усисивачу, слике испод показују управо то. То је преносни усисивач из Амазона. Ово долази са врло једноставним механизмом. Дно има три дела (мала комора за одлагање прашине, средњи део укључује мотор, вентилатор и прикључак за батерију на врху (има поклопац или поклопац за батерију). Има мотор једносмерне струје и вентилатор. Овај мотор је путем једноставног прекидача директно повезан на 3В (2 * 1,5волт АА батерије). Како напајамо робота батеријом 7,4 В, пресећи ћемо везу са интерне батерије и напајати је са 5 В напајања. Дакле, уклонили смо све непотребне делове и само мотор са двожичним останцима. То можете видети на доњој слици.
ХЦ-СР04 ултразвучни модул сензора
Да бисмо открили препреке, користимо популарни ултразвучни сензор растојања ХЦ-СР04 или га можемо назвати сензорима за избегавање препрека. Рад је врло једноставан, прво, модул предајника шаље ултразвучни талас који путује кроз ваздух, удара у препреку и одбија се назад, а пријемник прима тај талас. Израчунавањем времена помоћу Ардуина можемо одредити удаљеност. У претходном чланку о пројекту ултразвучног сензора даљине заснованог на Ардуино-у, врло темељито смо разговарали о принципу рада овог сензора. То можете проверити ако желите да сазнате више о модулу ултразвучног сензора растојања ХЦ-СР04.
Подни сензор (ИР сензор) за откривање степеништа
У одељку са карактеристикама говорили смо о својству где робот може да детектује степеништа и да спречи пад. Да бисмо то урадили, користимо ИЦ сензор. Направићемо интерфејс између ИР сензора и Ардуина. Рад ИР сензора близине је врло једноставан, има ИР ЛЕД и фотодиоду, ИР ЛЕД емитује ИЦ светлост и ако било која препрека дође испред ове емитоване светлости, она ће се одразити, а одбијена светлост ће се детектовати фотодиодом. Али генерисани напон од рефлексије биће врло низак. Да бисмо то повећали, можемо користити компаратор оп-амп-а, можемо појачати и добити излаз. ИЦ модулима три пина - Вцц, уземљење и излаз. Излаз обично пада када препрека дође испред сензора. Дакле, ово можемо користити за откривање пода. Ако на делић секунде детектујемо високи ниво сензора, можемо зауставити робота, вратити га назад или учинити било шта што желимо да спречимо да падне са степеништа. У претходном чланку направили смо Бреадбоард верзију модула ИР сензора близине и детаљно објаснили принцип рада, то можете проверити ако желите да сазнате више о овом сензору.
Кружни дијаграм робота за чишћење пода на бази Ардуино
Имамо три ултразвучна сензора који откривају препреке. Дакле, морамо повезати све основе ултразвучних сензора и повезати их на заједничко тло. Такође, повезујемо сва три Вцц сензора и повезујемо их са уобичајеним ВЦЦ пином. Даље, повезујемо окидаче и ехо пинове са ПВМ пиновима Ардуина. Такође прикључујемо ВЦЦ ИЦ модула на 5 В и уземљење на пин за уземљење Ардуино-а, излазни пин модула ИР сензора иде на дигитални пин Д2 Ардуина. За погонски склоп мотора повезујемо два пина за омогућавање на 5в, а такође и напонску иглу на 5В, јер користимо моторе од 5 волти. У претходном чланку направили смо Ардуино Мотор Дривер Схиелд, то можете проверити да бисте сазнали више о Л293Д ИЦ Дривер ИЦи његове операције. Ардуино, ултразвучни модули, покретачки програм мотора и мотори раде на 5 волти, виши напон ће га убити и користимо батерију од 7,4 волта, да бисмо је претворили у 5 волти, користи се регулатор напона ЛМ7805. Повежите усисивач директно на главни круг.
Изградња круга за робота за чишћење пода заснованог на Ардуину
Да бих добио неке идеје о свом роботу, потражио сам роботе за усисиваче на мрежи и добио неке слике робота округлог облика. Дакле, одлучио сам да направим робота округлог облика. Да бих изградио потјеру и тијело робота, имам пуно опција као што су пјенасти лим, МДФ, картон итд. Али одабирем МДФ јер је тврд и има нека својства отпорна на воду. Ако ово радите, можете одлучити који ћете материјал одабрати за свог бота.
Да бих изградио робота, узео сам МДФ лист, затим нацртао два круга са радијусом 8 ЦМ, а унутар тог круга такође сам нацртао још један круг полупречника 4 ЦМза уградњу усисивача. Затим сам изрезала кругове. Такође сам изрезао и уклонио одговарајуће комаде за путању точка (за боље разумевање погледајте слике). На крају сам направио три мале рупе за точкић. Следећи корак је постављање мотора на постоље помоћу његових носача, такође поставите и причврстите точкић на точкић. После тога, поставите ултразвучне сензоре лево, десно и средину робота. Такође, повежите ИЦ модул са доњом страном робота. Не заборавите да додате прекидач споља. То је све о изградњи робота. Ако се у овом тренутку збуните, можете се позвати на следеће слике.
За горњи део сам такође нацртао круг у радијусу од 11 ЦМ на пенастом листу и исекао га. За размак између горњег и доњег дела, исекао сам три комада пластичне цеви дужине 4 ЦМ. После тога сам залепила пластичне одстојнике на доњи део, а затим сам залепила горњи део. Бочне делове бота можете прекрити пластиком или сличним материјалима ако желите.
Ардуино
Комплетна шифра овог пројекта дата је на крају документа. Овај Ардуино код је сличан коду ултразвучног сензора удаљености заснован на Ардуино- у, једина промена је у откривању пода. У следећим редовима објашњавам како код функционише. У овом случају не користимо додатне библиотеке. Испод смо описали код корак по корак. Не користимо никакве додатне библиотеке за декодирање података о удаљености од сензора ХЦ-СР04, јер је то врло једноставно. У следећим редовима смо описали како. Прво, морамо да дефинишемо окидачки пин и ехо пин за сва три ултразвучна сензора растојања која су повезана на Ардуино плочу. У овом пројекту имамо три Ецхо пина и три Триггер пина. Имајте на уму да је 1 леви сензор, 2 предњи и 3 десни сензор.
цонст инт тригПин1 = 3; цонст инт ецхоПин1 = 5; цонст инт тригПин2 = 6; цонст инт ецхоПин2 = 9; цонст инт тригПин3 = 10; цонст инт ецхоПин3 = 11; инт ирпин = 2;
Затим смо дефинисали променљиве за удаљеност које су све променљиве типа (инт) и за трајање смо изабрали да користимо (лонг). Поново их имамо по троје. Такође, дефинисао сам цео број за чување статуса покрета, о томе ћемо говорити касније у овом одељку.
дуго трајање1; дуго трајање2; дуго трајање3; инт дистанцелефт; инт дистанцефронт; инт дистанцеригхт; инт а = 0;
Даље, у одељку за подешавање, треба да направимо све перспективне пинове као улаз или излаз помоћу функције пинМодес () . Да бисмо ултразвучне таласе послали из модула, морамо омогућити пин окидача на високу, тј. Све пинове окидача треба дефинисати као ИЗЛАЗ. А да бисмо примили ехо, морамо прочитати стање ецхо пинова, тако да би сви ецхо пинови требало да се дефинишу као ИНПУТ. Такође, омогућавамо серијски монитор за решавање проблема. Да бих прочитао статус ИР модула, дефинисао сам ирпин као улаз.
пинМоде (тригПин1, ИЗЛАЗ); пинМоде (тригПин2, ИЗЛАЗ); пинМоде (тригПин3, ИЗЛАЗ); пинМоде (ецхоПин1, ИНПУТ); пинМоде (ецхоПин2, ИНПУТ); пинМоде (ецхоПин3, ИНПУТ); пинМоде (ирпин, ИНПУТ);
А ови дигитални пинови су дефинисани као ИЗЛАЗ за улаз погонског склопа мотора.
пинМоде (4, ИЗЛАЗ); пинМоде (7, ИЗЛАЗ); пинМоде (8, ИЗЛАЗ); пинМоде (12, ИЗЛАЗ);
У главној петљи имамо три одељка за три сензора. Сви одељци раде исто, али сваки за различите сензоре. У овом одељку очитавамо удаљеност препреке са сваког сензора и чувамо је у сваком дефинисаном целом броју. Да бисмо очитали удаљеност, прво морамо бити сигурни да су пинови окидача слободни, за то треба да подесимо иглу окидача на ЛОВ за 2 µс. Сада, за генерисање ултразвучног таласа, морамо окренути иглу окидача ВИСОКО за 10 µс. Ово ће послати ултразвучни звук и помоћу функције пулсеИн () можемо очитати време путовања и сачувати ту вредност у променљиву „ трајање “. Ова функција има 2 параметра, први је назив ехо-пина, а за други можете да напишете било којиВИСОКО или НИСКО. ХИГХ значи да ће функција пулсеИн () сачекати да пин постане ХИГХ узрокован одбијеним звучним таласом и почеће да броји, а затим ће сачекати да пин иде ЛОВ када ће се звучни талас завршити што ће зауставити бројање. Ова функција даје дужину импулса у микросекундама. За израчунавање удаљености помножићемо трајање са 0,034 (брзина звука у ваздуху је 340м / с) и поделити са 2 (ово је због напријед-назад путовања звучног таласа). На крају, раздаљину сваког сензора чувамо у одговарајућим целим бројевима.
дигиталВрите (тригПин1, ЛОВ); делаиМицросецондс (2); дигиталВрите (тригПин1, ХИГХ); делаиМицросецондс (10); дигиталВрите (тригПин1, ЛОВ); дуратион1 = пулсеИн (ецхоПин1, ХИГХ); дистанцелефт = трајање1 * 0,034 / 2;
Након што добијемо удаљеност од сваког сензора, можемо управљати моторима помоћу иф наредбе, чиме контролишемо кретање робота. Ово је врло једноставно, прво, дали смо вредност удаљености од препреке, у овом случају је 15 цм (промените ову вредност по својој жељи). Тада смо дали услове према тој вредности. На пример, када препрека дође испред левог сензора (то значи да би растојање левог сензора требало да буде испод или једнако 15 цм), а друга два растојања су велика (то значи да ниједна препрека није испред тих сензора), тада помоћу функције дигиталног писања можемо покретати моторе удесно. Касније сам проверио статус ИР сензора. Ако је робот на поду, вредност ИЦ пина ће бити НИСКА, а ако није, тада ће вредност битиВИСОКО. Тада сам ту вредност сачувао у променљивој инт с . Ми ћемо контролисати робота према овом статусу.
Овај одељак кода користи се за померање робота напред и назад :
иф (с == ХИГХ) { дигиталВрите (4, ЛОВ); дигиталВрите (7, ВИСОКО); дигиталВрите (8, ЛОВ); дигиталВрите (12, ВИСОКО); кашњење (1000); а = 1; }
Али постоји проблем са овом методом када се мотор помери уназад, под се врати и бот се помери напред, а он ће поновити заглављивање бота. Да бисмо то превазишли, у инт чувамо вредност (1) након што схватимо да пода нема. Такође проверавамо ово стање за друге покрете.
Након откривања одсуства пода, робот се неће кретати напред. Уместо тога, помераће се лево, на овај начин можемо избећи проблем.
иф ((а == 0) && (с == ЛОВ) && (дистанцелефт <= 15 && дистанцефронт> 15 && дистанцеригхт <= 15) - (а == 0) && (с == ЛОВ) && (дистанцелефт> 15 && дистанцефронт> 15 && дистанцеригхт> 15))
У наведеном стању. Прво ће робот проверити статус пода и целобројну вредност. Бот ће се кретати напред само ако су испуњени сви услови.
Сада можемо да напишемо команде за возача мотора. Ово ће возити десни мотор уназад, а леви мотор напред, окрећући тако робота удесно.
Овај одељак кода користи се за померање робота удесно:
дигиталВрите (4, ВИСОКО); дигиталВрите (7, ЛОВ); дигиталВрите (8, ВИСОКО); дигиталВрите (12, ЛОВ);
Ако бот открије да пода нема, вредност се мења на 1 и бот ће се померити улево. Након скретања улево, вредност 'а' се мења у 0 са 1.
иф ((а == 1) && (с == ЛОВ) - (с == ЛОВ) && (дистанцелефт <= 15 && дистанцефронт <= 15 && дистанцеригхт> 15) - (с == ЛОВ) && (дистанцелефт <= 15 && дистанцефронт <= 15 && дистанцеригхт> 15) - (с == ЛОВ) && (дистанцелефт <= 15 && дистанцефронт> 15 && дистанцеригхт> 15) - (дистанцелефт <= 15 && дистанцефронт> 15 && дистанцеригхт> 15)) { дигиталВрите (4, ВИСОКО); дигиталВрите (7, ЛОВ); дигиталВрите (8, ЛОВ); дигиталВрите (12, ВИСОКО); кашњење (100); а = 0; }
Овај одељак кода користи се за померање робота лево:
иф ((с == ЛОВ) && (дистанцелефт> 15 && дистанцефронт <= 15 && дистанцеригхт <= 15) - (с == ЛОВ) && (дистанцелефт> 15 && дистанцефронт> 15 && дистанцеригхт <= 15) - (с == ЛОВ) && (дистанцелефт> 15 && дистанцефронт <= 15 && дистанцеригхт> 15)) { дигиталВрите (4, ЛОВ); дигиталВрите (7, ВИСОКО); дигиталВрите (8, ВИСОКО); дигиталВрите (12, ЛОВ); }
То је то за изградњу паметног робота за усисавање заснованог на Ардуину. Комплетни рад пројекта може се наћи у видео запису на дну ове странице. Ако имате питања, коментаришите доле.