Искате ли да научите как да създадете свой собствен робот? Има много различни видове роботи, които можете да направите сами. Повечето хора искат да видят робот да изпълнява простите задачи за преместване от точка А до точка Б. Можете да направите робот изцяло от аналогови компоненти или да си купите стартов комплект от нулата! Изграждането на собствен робот е чудесен начин да се научите както на електроника, така и на компютърно програмиране.
Стъпки
Част 1 от 6: Сглобяване на робота
Стъпка 1. Съберете компонентите си
За да изградите основен робот, ще ви трябват няколко прости компонента. Можете да намерите повечето, ако не всички, тези компоненти в местния магазин за електроника или няколко онлайн търговци на дребно. Някои основни комплекти могат да включват и всички тези компоненти. Този робот не изисква запояване:
- Arduino Uno (или друг микроконтролер)
- 2 сервомотора с непрекъснато въртене
- 2 колела, които пасват на сервомоторите
- 1 ролка за колело
- 1 малка дъска за запояване (потърсете макет с две положителни и отрицателни линии от всяка страна)
- 1 сензор за разстояние (с четири-пинов съединителен кабел)
- 1 мини бутон за превключване
- 1 10kΩ резистор
- 1 USB A към B кабел
- 1 комплект откъсващи се заглавки
- 1 6 x AA държач за батерия с 9V DC жак за захранване
- 1 пакет от джъмперни проводници или 22-калибриращ проводник
- Силна двустранна лента или горещо лепило
Стъпка 2. Обърнете батерията, така че плоският гръб да е обърнат нагоре
Ще изграждате тялото на робота, като използвате батерията като основа.
Стъпка 3. Подравнете двата сервомотора в края на батерията
Това би трябвало да е краят, в който проводникът на батерията излиза от Сервомоторите трябва да докосват дъното, а въртящите се механизми на всеки трябва да са обърнати отстрани на батерията. Сервомоторите трябва да бъдат правилно подравнени, така че колелата да са прави. Проводниците за сервоустройствата трябва да се отделят от задната страна на батерията.
Стъпка 4. Прикрепете сервомоторите с лентата или лепилото
Уверете се, че те са здраво прикрепени към батерията. Гърбовете на сервомоторите трябва да са подравнени на една страна със задната част на батерията.
Сега сервомоторите трябва да заемат задната половина на батерията
Стъпка 5. Прикрепете платката перпендикулярно към отвореното пространство на батерията
Той трябва да виси малко над предната част на батерията и ще се простира отвъд всяка страна. Преди да продължите, уверете се, че е здраво закрепен. Редът "А" трябва да е най -близо до сервомоторите.
Стъпка 6. Прикрепете микроконтролера Arduino към върховете на сервомоторите
Ако сте прикрепили правилно сервомоторите, трябва да има равно пространство, направено от докосването им. Залепете платката Arduino върху това плоско пространство, така че USB и конекторите за захранване на Arduino да са обърнати назад (далеч от чертежа). Предната част на Arduino трябва едва да припокрива дъската.
Стъпка 7. Поставете колелата върху сервомоторите
Натиснете здраво колелата върху въртящия се механизъм на серво. Това може да изисква значителна сила, тъй като колелата са проектирани да прилепват възможно най -плътно за най -добро сцепление.
Стъпка 8. Прикрепете колелото към дъното на дъската
Ако обърнете шасито, би трябвало да видите малко дъска, простираща се покрай батерията. Прикрепете колелото към това удължено парче, използвайки щрангове, ако е необходимо. Колелото действа като предно колело, което позволява на робота лесно да се завърта във всяка посока.
Ако сте закупили комплект, колелото може да е дошло с няколко щранга, които можете да използвате, за да сте сигурни, че колелото ще достигне земята. i
Част 2 от 6: Окабеляване на робота
Стъпка 1. Отчупете две 3-пинови заглавки
Ще ги използвате, за да свържете сервомоторите към макета. Натиснете щифтовете надолу през заглавката, така че щифтовете да излязат на еднакво разстояние от двете страни.
Стъпка 2. Поставете двата заглавия в щифтове 1-3 и 6-8 на ред E на макета
Уверете се, че са здраво поставени.
Стъпка 3. Свържете серво кабелите към хедерите, с черния кабел от лявата страна (щифтове 1 и 6)
Това ще свърже сервомоторите към макета. Уверете се, че лявото серво е свързано към лявата заглавка, а дясното серво към дясната заглавка.
Стъпка 4. Свържете червените джъмперни проводници от щифтове C2 и C7 към червени (положителни) релсови щифтове
Уверете се, че използвате червената шина на гърба на макета (по -близо до останалата част от шасито).
Стъпка 5. Свържете черните джъмперни проводници от щифтове В1 и В6 към сини (заземени) релсови щифтове
Уверете се, че използвате синята релса на гърба на дъската. Не ги включвайте в червените щифтове.
Стъпка 6. Свържете белите джъмперни проводници от щифтове 12 и 13 на Arduino към A3 и A8
Това ще позволи на Arduino да управлява сервомоторите и да завърта колелата.
Стъпка 7. Прикрепете сензора към предната част на дъската
Той не се включва във външните релси за захранване на макета, а вместо това в първия ред щифтове с букви (J). Уверете се, че го поставяте в точния център, с равен брой щифтове от всяка страна.
Стъпка 8. Свържете черен джъмпер проводник от щифт I14 към първия наличен щифт от синя шина вляво от сензора
Това ще заземи сензора.
Стъпка 9. Свържете червен джъмпер проводник от щифт I17 към първия наличен червен щифт вдясно от сензора
Това ще захранва сензора.
Стъпка 10. Свържете белите джъмперни проводници от щифт I15 към щифт 9 на Arduino и от I16 към щифт 8
Това ще подава информация от сензора към микроконтролера.
Част 3 от 6: Окабеляване на захранването
Стъпка 1. Обърнете робота отстрани, така че да можете да видите батериите в опаковката
Насочете го така, че кабелът на батерията да излиза отляво в долната част.
Стъпка 2. Свържете червен проводник към втората пружина отляво в долната част
Уверете се, че батерията е ориентирана правилно.
Стъпка 3. Свържете черен проводник към последната пружина в долния десен ъгъл
Тези два кабела ще помогнат за осигуряване на правилното напрежение на Arduino.
Стъпка 4. Свържете червените и черните проводници към крайно дясните червени и сини щифтове на гърба на макета
Черният кабел трябва да бъде включен в синия релсов щифт на щифт 30. Червеният кабел трябва да бъде включен в червения щифт на щифт 30.
Стъпка 5. Свържете черен проводник от щифта GND на Arduino към задната синя шина
Свържете го към щифт 28 на синята шина.
Стъпка 6. Свържете черен проводник от задната синя шина към предната синя шина на щифт 29 за всеки
Не свързвайте червените релси, тъй като вероятно ще повредите Arduino.
Стъпка 7. Свържете червен проводник от предната червена шина на пин 30 към 5V щифта на Arduino
Това ще осигури захранване на Arduino.
Стъпка 8. Поставете превключвателя с бутон в пролуката между редовете на щифтове 24-26
Този ключ ще ви позволи да изключите робота, без да се налага да изключвате захранването.
Стъпка 9. Свържете червен проводник от H24 към червената шина в следващия наличен щифт вдясно от сензора
Това ще задейства бутона.
Стъпка 10. Използвайте резистора, за да свържете H26 към синята шина
Свържете го към щифта непосредствено до черния проводник, който сте свързали преди няколко стъпки.
Стъпка 11. Свържете бял проводник от G26 към щифт 2 на Arduino
Това ще позволи на Arduino да регистрира бутона.
Част 4 от 6: Инсталиране на софтуера Arduino
Стъпка 1. Изтеглете и извлечете Arduino IDE
Това е средата за разработка на Arduino и ви позволява да програмирате инструкции, които след това можете да качите във вашия микроконтролер Arduino. Можете да го изтеглите безплатно от arduino.cc/en/main/software. Разархивирайте изтегления файл, като щракнете двукратно върху него и преместете папката вътре на лесно достъпно място. Всъщност няма да инсталирате програмата. Вместо това просто ще го стартирате от извлечената папка, като щракнете двукратно върху arduino.exe.
Стъпка 2. Свържете батерията към Arduino
Включете задния жак на батерията в конектора на Arduino, за да го захранвате.
Стъпка 3. Включете Arduino във вашия компютър чрез USB
Windows вероятно няма да разпознае устройството.
Стъпка 4. Натиснете
⊞ Win+R. и тип devmgmt.msc.
Това ще стартира диспечера на устройствата.
Стъпка 5. Щракнете с десния бутон върху „Неизвестно устройство“в раздела „Други устройства“и изберете „Актуализиране на софтуера на драйвера
" Ако не виждате тази опция, вместо това щракнете върху „Свойства“, изберете раздела „Драйвер“и след това щракнете върху „Актуализиране на драйвера“.
Стъпка 6. Изберете „Преглед на моя компютър за софтуер за драйвери
" Това ще ви позволи да изберете драйвера, дошъл с Arduino IDE.
Стъпка 7. Щракнете върху „Преглед“и след това отидете до папката, която сте извлекли по -рано
Вътре ще намерите папка „драйвери“.
Стъпка 8. Изберете папката „драйвери“и щракнете върху „OK
" Потвърдете, че искате да продължите, ако сте предупредени за неизвестен софтуер.
Част 5 от 6: Програмиране на робота
Стъпка 1. Стартирайте Arduino IDE, като щракнете двукратно върху файла arduino.exe в папката IDE
Ще бъдете посрещнати с празен проект.
Стъпка 2. Поставете следния код, за да направите робота си прав
Кодът по -долу ще накара вашия Arduino непрекъснато да се движи напред.
#include // това добавя библиотеката "Servo" към програмата // следното създава два серво обекта Servo leftMotor; Servo rightMotor; void setup () {leftMotor.attach (12); // ако случайно сте включили пиновите номера за вашите сервомотори, можете да размените номерата тук rightMotor.attach (13); } void loop () {leftMotor.write (180); // при непрекъснато въртене, 180 казва на серво да се движи с пълна скорост "напред". rightMotor. write (0); // ако и двете са на 180, роботът ще отиде в кръг, защото сервомоторите са обърнати. "0", му казва да се движи с пълна скорост "назад". }
Стъпка 3. Създайте и качете програмата
Щракнете върху бутона със стрелка надясно в горния ляв ъгъл, за да изградите и качите програмата на свързания Arduino.
Може да искате да вдигнете робота от повърхността, тъй като той просто ще продължи да се движи напред, след като програмата бъде качена
Стъпка 4. Добавете функционалността на превключвателя за убиване
Добавете следния код към секцията "void loop ()" на вашия код, за да активирате ключа за убиване, над функциите "write ()".
if (digitalRead (2) == HIGH) // това се регистрира, когато бутонът е натиснат върху щифт 2 на Arduino {while (1) {leftMotor.write (90); // "90" е неутрална позиция за сервомоторите, която им казва да спрат да завиват надясноMotor.write (90); }}
Стъпка 5. Качете и тествайте кода си
С добавения код на превключвателя за убиване можете да качвате и тествате робота. Той трябва да продължи да се движи напред, докато не натиснете превключвателя, след което той ще спре да се движи. Пълният код трябва да изглежда така:
#include // следното създава два серво обекта Servo leftMotor; Servo rightMotor; void setup () {leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) {while (1) {leftMotor.write (90); rightMotor.write (90); }} leftMotor.write (180); rightMotor.write (0); }
Част 6 от 6: Пример
Стъпка 1. Следвайте пример
Следният код ще използва сензора, прикрепен към робота, за да го накара да се обърне наляво, когато срещне препятствие. Вижте коментарите в кода за подробности за това какво прави всяка част. Кодът по -долу е цялата програма.
#include Servo leftMotor; Servo rightMotor; const int serialPeriod = 250; // това ограничава изхода към конзолата веднъж на всеки 1/4 секунда без подпис дълго времеSerialDelay = 0; const int loopPeriod = 20; // това задава колко често сензорът отчита показанията до 20ms, което е честота от 50Hz без знак дълго времеLoopDelay = 0; // това присвоява функциите TRIG и ECHO на щифтовете на Arduino. Направете корекции в числата тук, ако сте свързали по различен начин const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int ultrasonic2Duration; // това определя двете възможни състояния за робота: шофиране напред или завиване наляво #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = шофиране напред (DEFAULT), 1 = завъртане наляво void setup () {Serial.begin (9600); // тези сензорни конфигурации на pinMode (ultrasonic2TrigPin, OUTPUT); pinMode (ултразвуков2EchoPin, INPUT); // това задава двигателите към щифтовете на Arduino leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // това открива ключа за убиване {while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // това отпечатва съобщения за отстраняване на грешки към серийната конзола if (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // това инструктира сензора да чете и съхранява измерените разстояния stateMachine (); timeLoopDelay = millis (); }} void stateMachine () {if (state == DRIVE_FORWARD) // ако няма открити препятствия {if (ultrasonic2Distance> 6 || ultrasonic2Distance <0) // ако няма нищо пред робота. ultrasonicDistance ще бъде отрицателно за някои ултразвуци, ако няма пречка {// карайте напред rightMotor.write (180); leftMotor.write (0); } else // ако пред нас има обект {state = TURN_LEFT; }} иначе ако (състояние == TURN_LEFT) // ако бъде открито препятствие, завийте наляво {unsigned long timeToTurnLeft = 500; // отнема около 0,5 секунди, за да се завърти на 90 градуса. Може да се наложи да коригирате това, ако колелата ви са с различен размер от примерния без подпис дълъг turnStartTime = millis (); // запазваме времето, в което започнахме да се обръщаме докато ((millis ()-turnStartTime) <timeToTurnLeft) // оставаме в този цикъл, докато timeToTurnLeft изтече {// завийте наляво, не забравяйте, че когато и двете са настроени на "180", ще се обърне. rightMotor.write (180); leftMotor.write (180); } състояние = DRIVE_FORWARD; }} void readUltrasonicSensors () {// това е за ултразвук 2. Може да се наложи да промените тези команди, ако използвате различен сензор. digitalWrite (ultrasonic2TrigPin, HIGH); delayMicroseconds (10); // поддържа триг пина висок поне 10 микросекунди digitalWrite (ultrasonic2TrigPin, LOW); ultrasonic2Duration = pulseIn (ultrasonic2EchoPin, HIGH); ултразвукова2разстояние = (ултразвукова2 продължителност/2)/29; } // следното е за отстраняване на грешки в конзолата. void debugOutput () {if ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Serial.print (ultrasonic2Distance); Serial.print ("cm"); Serial.println (); timeSerialDelay = millis (); }}