Өзүңүз робот жасоону үйрөнгүңүз келеби? Роботтордун көптөгөн түрлөрү бар, аларды өзүңүз кура аласыз. Көпчүлүк адамдар роботту А чекитинен В чекитине чейин оңой эле аткарууну көргүсү келет. Сиз роботту аналогдук компоненттерден толугу менен кура аласыз же баштоочу комплект сатып ала аласыз. Өз роботун жасоо - электрониканы жана компьютердик программалоону үйрөнүүнүн эң сонун жолу.
Кадам
5тин 1 -бөлүгү: Роботту чогултуу
Кадам 1. Компоненттериңизди чогултуп алыңыз
Негизги роботту куруу үчүн сизге бир нече жөнөкөй компоненттер керек. Сиз бул компоненттердин көбүн же бардыгын жергиликтүү электроника хобби дүкөнүнөн же кээ бир онлайн дүкөндөрүнөн таба аласыз. Кээ бир комплект бул компоненттердин баарын камтыйт. Бул робот эч кандай ширетүүнү талап кылбайт:
- Arduino Uno (же башка микроконтроллер)
- 2 сервос 360 градус
- Сервого дал келген 2 дөңгөлөк
- 1 бекер дөңгөлөк
- 1 сыноо тактасы (нан плитасы же проект такта)
- 1 жакындык сенсор (төрт пин туташтыргыч кабели менен)
- 1 баскыч баскычы
- 1 каршылык 10kΩ
- 1 USB A - B кабели
- 1 бузулуучу баштар топтому
- 9V DC розеткасы бар 1 6 x AA батарея кармагыч
- 1 пакет 22. секирүүчү кабелдер же бир кабель
- Артка жана артка жылуулоо (кош лента) же желим пистолет
Кадам 2. Батарейка бөлүмүн анын тегиз жагы өйдө карагандай буруңуз
Сиз роботтун корпусун негиз катары батарея бөлүмүн колдонуп курасыз.
3 -кадам. Батарея уячасынын аягында бир эле багытты караган эки сервопрограмманы уюштуруңуз
Бул учу аккумулятордон чыккан кабель. Серво түбүнө тийиши керек, жана ар бир сервонун айлануу механизми батарея бөлүмүнүн капталынан сыртка каратылышы керек. Бул дөңгөлөктөр түз болушу үчүн бул сервоприёмдордун туура жайгашуусу маанилүү. Серво үчүн кабелдер батарея бөлүмүнүн арт жагынан чыгышы керек.
Кадам 4. Сервону сиздин изоляция же клей менен жабыштырыңыз
Серво батарея бөлүмүнө бекем бекитилгенин текшериңиз. Сервонун арткы тарабы батарея бөлүмүнүн арткы бетине дал келиши керек.
Эми, серво батарейканын артындагы орундун жарымын ээлеши керек
Кадам 5. Сыноо тактасын батарея бөлүмүндө калган боштукка перпендикуляр карманыңыз
Бул сыноо тактасы батарея бөлүмүнүн маңдайына бир аз илинип, эки жакка тең жайылат. Улантуудан мурун тест тактасы бекем экенин текшериңиз. "А" сабы сервого эң жакын болушу керек.
Кадам 6. Arduino микроконтроллерин сервонун чокусуна тиркеңиз
Эгерде сиз сервону туура тиркесеңиз, анда эки сервонун бири -бирине тийген жалпак бөлүгү болушу керек. USB жана Arduino электр туташтыргычтары ылдый караганча (тест тактасынан алыс), Arduino тактасын ушул тегиз жерге жабыштырыңыз. Ардуинонун алдыңкы бети сыноо тактасы менен жабышат.
Кадам 7. Дөңгөлөктөрдү servoго орнотуңуз
Дөңгөлөктөрдү айлануучу серво механизмине бекем басыңыз. Бул чоң күчтү талап кылышы мүмкүн, анткени дөңгөлөктөр servo учунун формасына дал келген тешиктерге ээ.
Кадам 8. Тест тактасынын түбүнө бекер дөңгөлөктү орнотуңуз
Эгер роботту оодарып салсаңыз, анда батарейка бөлүмүндө илинип турган кичинекей сыноо тактасын көрөсүз. Бекер дөңгөлөктү ушул асылып турган бөлүккө бекиңиз. Керек болсо шыпты колдонуңуз. Бекер дөңгөлөк роботту каалаган багытка оңой бурууга мүмкүндүк берген алдыңкы дөңгөлөк катары кызмат кылат.
Эгерде сиз комплект сатып алган болсоңуз, анда акысыз дөңгөлөктүн дөңгөлөгү жерге тийип калышы үчүн, аны колдоно аласыз
5тин 2 -бөлүгү: Роботту өткөрүү
Кадам 1. Эки 3-пин башын кесип
Сиз муну сервону тест тактасына туташтыруу үчүн колдоносуз. Пиндерди баштарынан ылдый түшүрүңүз, ошондо алар эки тараптан бирдей аралыкта чыгат.
Кадам 2. Сынак тактасындагы Е башындагы 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 -пинге туташтырыңыз
Бул сенсордон микроконтроллерге маалымат берет.
5 -жылдын 3 -бөлүгү: Электр кабелин орнотуу
Кадам 1. Роботту оодарыңыз, ошондо ичиндеги батарея бөлүмүн көрө аласыз
Батарея бөлүмүн кабель сол жактын астынан чыга тургандай кылып жайгаштырыңыз.
Кадам 2. Төмөндө сол жактагы экинчи булак менен кызыл зымды туташтырыңыз
Батарея бөлүмү туура туураланганын же туура багытта экенин текшериңиз.
Кадам 3. Кара зымды төмөнкү оң жактагы акыркы жаз менен туташтырыңыз
Бул эки зым Ардуиного туура чыңалууну камсыз кылууга жардам берет.
Кадам 4. Кызыл жана кара зымдарды тест тактасынын арт жагындагы оң жагында жайгашкан кызыл жана көк казыктарга туташтырыңыз
Кара зым 30 -pin боюнча көк темир казыкка барышы керек.
Кадам 5. Ардуинодогу GND пининен кара зымды көк темир жолдун артына туташтырыңыз
Зымды көк темир жолдогу 28 пинге туташтырыңыз.
Кадам 6. Көк рельстин арт жагындагы кара зымды эки темир үчүн пин 29 боюнча көк темир жолдун алдына туташтырыңыз
Кызыл темир жолду туташтырбаңыз, анткени Arduino бузулушу мүмкүн.
Кадам 7. Кызыл темирдин алдыңкы жагындагы кызыл зымды 30 пиндеги 5V пинге Arduino менен туташтырыңыз
Бул Arduinoго күч берет.
Кадам 8. 24-26-пиндердин ортосундагы боштукка баскычты коюңуз
Бул которгуч роботту өчүрбөстөн, кубатты өчүрбөстөн мүмкүнчүлүк берет.
Кадам 9. H24төн келген кызыл зымды сенсордун оң жагындагы кийинки бош казыктын кызыл темир жолуна туташтырыңыз
Бул баскычка күч берет.
Кадам 10. H26ды көк темир жолго туташтыруу үчүн резисторду колдонуңуз
Аны мурунку кадамдарда эле туташтырылган кара зымдын жанына пинге туташтырыңыз.
Кадам 11. G26дан ак зымды Arduinoдогу 2 -пинге туташтырыңыз
Бул Arduinoго баскычтарды аныктоого мүмкүндүк берет.
5тин 4 -бөлүгү: Arduino программасын орнотуу
Кадам 1. Arduino IDEди жүктөп алыңыз
Бул жерде Arduino иштелип чыккан жана андан кийин Arduino микроконтроллерине жүктөй турган көрсөтмөлөрдү программалоого мүмкүнчүлүк берет. Аны arduino.cc/en/main/softwareден бекер жүктөп алсаңыз болот. Жүктөлүп алынган файлды эки жолу чыкылдатып, андагы папканы оңой жетүү үчүн жылдырыңыз. Сиз программаны иш жүзүндө орнотпойсуз, анын ордуна arduino.exe файлын эки жолу чыкылдатуу менен чыгарылган папкадан иштетесиз.
Кадам 2. Батарея бөлүмүн Arduino менен туташтырыңыз
Батарейканын арткы розеткасын Arduinoдогу туташтыргычка салыңыз, аны иштетүү үчүн.
Кадам 3. USB аркылуу компьютериңизге Arduino салыңыз
Мүмкүн, Windows түзмөктү тааныбайт.
Кадам 4. Басыңыз
Win+R жана түрү devmgmt.msc.
Бул буйрук Device Managerди ачат.
Кадам 5. Башка түзмөктөрдүн астындагы Белгисиз түзмөктү оң баскыч менен чыкылдатып, Драйвер программасын жаңыртууну тандаңыз
Эгерде сиз бул параметрди көрбөсөңүз, Свойстволорго чыкылдатыңыз, Драйвер өтмөгүн тандап, анан Драйверди жаңыртууну басыңыз.
Кадам 6. Драйвер программасы үчүн Менин компьютеримди тандаңыз
Бул Arduino IDE менен келген камтылган драйверлерди тандоого мүмкүндүк берет.
Кадам 7. Click Browse, андан кийин сиз мурда чыгарылган папканы ачыңыз
Сиз анда драйверлер папкасын таба аласыз.
Кадам 8. Драйверлер папкасын тандап, ОК басыңыз
Белгисиз программалык камсыздоо жөнүндө эскертүү берилсе, улантууну каалаарыңызды ырастаңыз.
5тин 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); // 360 градуска айлануу (үзгүлтүксүз айлануу) менен, 180 саны сервого толук ылдамдыкта "алдыга" жылууну көрсөтөт. rightMotor.write (0); // эгер эки баалуулук тең 180 болсо, робот айланасында айланат, анткени сервопроцент тескери. "0" роботко "артка" толук ылдамдыкта жылуусун айтат. }
Кадам 3. Программаны түзүү жана жүктөө
Программаны түзүү жана туташкан Arduinoго жүктөө үчүн, жогорку сол бурчтагы оң жебе баскычын чыкылдатыңыз.
Сиз роботту жер үстүнөн көтөргүңүз келиши мүмкүн, анткени программа жүктөлгөндөн кийин робот алдыга карай жүрө берет
Кадам 4. Токтотуу функциясын кошуу (өчүрүүчү өчүрүүчү)
Төмөнкү кодду кодуңуздун "void loop ()" бөлүмүнө кошуп, "write ()" функциясынын үстүнө токтотуу функциясын кошуңуз.
if (digitalRead (2) == HIGH) // бул буйрук 2 Arduino пин 2 баскычында басылганда иштейт {while (1) {leftMotor.write (90); // "90" - бул servoго нейтралдуу позиция, ал servoго бурууну токтотууну айтат rightMotor.write (90); }}
Кадам 5. Жүктөө жана кодуңузду текшерүү
Токтотуу коду мурунтан эле кошулганда, сиз кодду жүктөп, роботту текшере аласыз. Робот сиз токтоочу баскычты басмайынча алдыга уланышы керек, бул роботту токтотууга алып келет. Толук код мындай болот:
#include // төмөнкү буйрук эки Servo leftMotor servo объектилерин түзөт; 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); }
Мисал
Төмөнкү код роботко тоскоолдук болгондо солго бурулуш үчүн роботко орнотулган сенсорлорду колдонот. Ар бир бөлүктү кантип колдонуу керектиги жөнүндө деталдар үчүн коддогу комментарийлерди караңыз. Төмөндөгү код бүт программа.
#кошуу Servo leftMotor; Servo rightMotor; const int serialPeriod = 250; // бул код консолдун чыгуу убактысын ар бир 1/4 секундда (250 мс) кол коюлбаган узак убакытка беретSerialDelay = 0; const int loopPeriod = 20; // бул код сенсордун окуу жыштыгын 20 мс түзөт, бул 50 Гц узакка созулбаган кол коюу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 (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 эгерде эч кандай тоскоолдук болбосо, кээ бир УЗИ үчүн терс болот {// алдыга карай оңго айдагыла Motor.write (180); leftMotor.write (0); } башка // эгерде биздин алдыбызда объект болсо {state = TURN_LEFT; }} else if (state == TURN_LEFT) // эгерде тоскоолдук аныкталса, солго бурул {unsigned long timeToTurnLeft = 500; // 90 градуска бурулуу үчүн болжол менен 0,5 секунд кетет. Эгер дөңгөлөктөрүңүздүн өлчөмү мисалдагы белгисиз узак turnStartTime = millis () өлчөмүнөн айырмаланса, бул маанини тууралашыңыз керек болот; // робот бурула баштаганда шартты сактаңыз ((millis ()-turnStartTime) <timeToTurnLeft) // timeToTurnLeft (500) өтмөйүнчө бул циклди сактаңыз {// солго буруңуз, экөө тең "180" болгондо, робот бурулат. rightMotor.write (180); leftMotor.write (180); } абал = DRIVE_FORWARD; }} void readUltrasonicSensors () {// бул УЗИ үчүн 2. Башка сенсор колдонуп жатсаңыз, бул буйрукту өзгөртүүңүз керек болот. digitalWrite (ultrasonic2TrigPin, HIGH); delayMicroseconds (10); // TRIG пинди жок дегенде 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 = миллис (); }}