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