Үйдө роботту кантип жасоо керек (сүрөттөрү менен)

Мазмуну:

Үйдө роботту кантип жасоо керек (сүрөттөрү менен)
Үйдө роботту кантип жасоо керек (сүрөттөрү менен)

Video: Үйдө роботту кантип жасоо керек (сүрөттөрү менен)

Video: Үйдө роботту кантип жасоо керек (сүрөттөрү менен)
Video: АЯЛДЫ КАНТИП КАНДЫРЫШ КЕРЕК КӨРГҮЛӨ! 2024, Май
Anonim

Өзүңүз робот жасоону үйрөнгүңүз келеби? Роботтордун көптөгөн түрлөрү бар, аларды өзүңүз кура аласыз. Көпчүлүк адамдар роботту А чекитинен В чекитине чейин оңой эле аткарууну көргүсү келет. Сиз роботту аналогдук компоненттерден толугу менен кура аласыз же баштоочу комплект сатып ала аласыз. Өз роботун жасоо - электрониканы жана компьютердик программалоону үйрөнүүнүн эң сонун жолу.

Кадам

5тин 1 -бөлүгү: Роботту чогултуу

1123333 1
1123333 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. секирүүчү кабелдер же бир кабель
  • Артка жана артка жылуулоо (кош лента) же желим пистолет
1123333 2
1123333 2

Кадам 2. Батарейка бөлүмүн анын тегиз жагы өйдө карагандай буруңуз

Сиз роботтун корпусун негиз катары батарея бөлүмүн колдонуп курасыз.

1123333 3
1123333 3

3 -кадам. Батарея уячасынын аягында бир эле багытты караган эки сервопрограмманы уюштуруңуз

Бул учу аккумулятордон чыккан кабель. Серво түбүнө тийиши керек, жана ар бир сервонун айлануу механизми батарея бөлүмүнүн капталынан сыртка каратылышы керек. Бул дөңгөлөктөр түз болушу үчүн бул сервоприёмдордун туура жайгашуусу маанилүү. Серво үчүн кабелдер батарея бөлүмүнүн арт жагынан чыгышы керек.

1123333 4
1123333 4

Кадам 4. Сервону сиздин изоляция же клей менен жабыштырыңыз

Серво батарея бөлүмүнө бекем бекитилгенин текшериңиз. Сервонун арткы тарабы батарея бөлүмүнүн арткы бетине дал келиши керек.

Эми, серво батарейканын артындагы орундун жарымын ээлеши керек

1123333 5
1123333 5

Кадам 5. Сыноо тактасын батарея бөлүмүндө калган боштукка перпендикуляр карманыңыз

Бул сыноо тактасы батарея бөлүмүнүн маңдайына бир аз илинип, эки жакка тең жайылат. Улантуудан мурун тест тактасы бекем экенин текшериңиз. "А" сабы сервого эң жакын болушу керек.

1123333 6
1123333 6

Кадам 6. Arduino микроконтроллерин сервонун чокусуна тиркеңиз

Эгерде сиз сервону туура тиркесеңиз, анда эки сервонун бири -бирине тийген жалпак бөлүгү болушу керек. USB жана Arduino электр туташтыргычтары ылдый караганча (тест тактасынан алыс), Arduino тактасын ушул тегиз жерге жабыштырыңыз. Ардуинонун алдыңкы бети сыноо тактасы менен жабышат.

1123333 7
1123333 7

Кадам 7. Дөңгөлөктөрдү servoго орнотуңуз

Дөңгөлөктөрдү айлануучу серво механизмине бекем басыңыз. Бул чоң күчтү талап кылышы мүмкүн, анткени дөңгөлөктөр servo учунун формасына дал келген тешиктерге ээ.

1123333 8
1123333 8

Кадам 8. Тест тактасынын түбүнө бекер дөңгөлөктү орнотуңуз

Эгер роботту оодарып салсаңыз, анда батарейка бөлүмүндө илинип турган кичинекей сыноо тактасын көрөсүз. Бекер дөңгөлөктү ушул асылып турган бөлүккө бекиңиз. Керек болсо шыпты колдонуңуз. Бекер дөңгөлөк роботту каалаган багытка оңой бурууга мүмкүндүк берген алдыңкы дөңгөлөк катары кызмат кылат.

Эгерде сиз комплект сатып алган болсоңуз, анда акысыз дөңгөлөктүн дөңгөлөгү жерге тийип калышы үчүн, аны колдоно аласыз

5тин 2 -бөлүгү: Роботту өткөрүү

1123333 9
1123333 9

Кадам 1. Эки 3-пин башын кесип

Сиз муну сервону тест тактасына туташтыруу үчүн колдоносуз. Пиндерди баштарынан ылдый түшүрүңүз, ошондо алар эки тараптан бирдей аралыкта чыгат.

1123333 10
1123333 10

Кадам 2. Сынак тактасындагы Е башындагы 1-3 жана 6-8 төөнөгүчтөргө эки башты киргизиңиз

Алардын бекем же бекем салынганын текшериңиз.

1123333 11
1123333 11

Кадам 3. Серво зымдарын башы менен, сол жагында кара зым менен туташтырыңыз (1 жана 6 -казыктар)

Бул сервону тест тактасы менен байланыштырат. Сол серво сол жактын башына, ал эми оң серво оң наамга туташтырылганын текшериңиз.

1123333 12
1123333 12

Кадам 4. C2 жана C7 төөнөгүчтөрүнөн кызыл секирүүчү зымды кызыл темир казыкка туташтырыңыз (оң)

Сыноо тактасынын артындагы кызыл темир жолду колдонгонуңузду текшериңиз (роботтун корпусунун калган бөлүгүнө жакыныраак).

1123333 13
1123333 13

Кадам 5. B1 жана B6 төөнөгүчтөрүнөн кара секиргич зымын көк рельс пинине (жерге) туташтырыңыз

Сыноо тактасынын артындагы көк темир жолду колдонгонуңузду текшериңиз. Кабелди кызыл темир казыкка бекитпеңиз.

1123333 14
1123333 14

Кадам 6. Ардуинодогу 12 жана 13 төөнөгүчтөрдөн ак секиргич зымдарды A3 жана A8ге туташтырыңыз

Бул Arduinoго сервону башкарууга жана дөңгөлөктү бурууга мүмкүндүк берет.

1123333 15
1123333 15

Кадам 7. Тест тактасынын маңдайына сенсорду бекит

Сенсор сыноо тактасындагы тышкы электр темир жолуна эмес, тамгалар менен жазылган (J) алгачкы эки катарга орнотулган. Аны так ортосуна койгонуңузду текшериңиз, ар бир тарабында бирдей бош казыктар бар.

1123333 16
1123333 16

Кадам 8. сенсордун сол жагындагы биринчи көк темир казыкка I14 пинден кара өтмөктү туташтырыңыз

Бул сенсорду жерге коет.

1123333 17
1123333 17

Кадам 9. I17 пинден кызыл секирүүчү зымды сенсордун оң жагындагы биринчи кызыл темир казыкка туташтырыңыз

Бул сенсорго кубат берет.

1123333 18
1123333 18

10 -кадам. Ак секиргич зымдарды I15 пинден Arduino -га 9 -пинге, I16дан 8 -пинге туташтырыңыз

Бул сенсордон микроконтроллерге маалымат берет.

5 -жылдын 3 -бөлүгү: Электр кабелин орнотуу

1123333 19
1123333 19

Кадам 1. Роботту оодарыңыз, ошондо ичиндеги батарея бөлүмүн көрө аласыз

Батарея бөлүмүн кабель сол жактын астынан чыга тургандай кылып жайгаштырыңыз.

1123333 20
1123333 20

Кадам 2. Төмөндө сол жактагы экинчи булак менен кызыл зымды туташтырыңыз

Батарея бөлүмү туура туураланганын же туура багытта экенин текшериңиз.

1123333 21
1123333 21

Кадам 3. Кара зымды төмөнкү оң жактагы акыркы жаз менен туташтырыңыз

Бул эки зым Ардуиного туура чыңалууну камсыз кылууга жардам берет.

1123333 22
1123333 22

Кадам 4. Кызыл жана кара зымдарды тест тактасынын арт жагындагы оң жагында жайгашкан кызыл жана көк казыктарга туташтырыңыз

Кара зым 30 -pin боюнча көк темир казыкка барышы керек.

1123333 23
1123333 23

Кадам 5. Ардуинодогу GND пининен кара зымды көк темир жолдун артына туташтырыңыз

Зымды көк темир жолдогу 28 пинге туташтырыңыз.

1123333 24
1123333 24

Кадам 6. Көк рельстин арт жагындагы кара зымды эки темир үчүн пин 29 боюнча көк темир жолдун алдына туташтырыңыз

Кызыл темир жолду туташтырбаңыз, анткени Arduino бузулушу мүмкүн.

1123333 25
1123333 25

Кадам 7. Кызыл темирдин алдыңкы жагындагы кызыл зымды 30 пиндеги 5V пинге Arduino менен туташтырыңыз

Бул Arduinoго күч берет.

1123333 26
1123333 26

Кадам 8. 24-26-пиндердин ортосундагы боштукка баскычты коюңуз

Бул которгуч роботту өчүрбөстөн, кубатты өчүрбөстөн мүмкүнчүлүк берет.

1123333 27
1123333 27

Кадам 9. H24төн келген кызыл зымды сенсордун оң жагындагы кийинки бош казыктын кызыл темир жолуна туташтырыңыз

Бул баскычка күч берет.

1123333 28
1123333 28

Кадам 10. H26ды көк темир жолго туташтыруу үчүн резисторду колдонуңуз

Аны мурунку кадамдарда эле туташтырылган кара зымдын жанына пинге туташтырыңыз.

1123333 29
1123333 29

Кадам 11. G26дан ак зымды Arduinoдогу 2 -пинге туташтырыңыз

Бул Arduinoго баскычтарды аныктоого мүмкүндүк берет.

5тин 4 -бөлүгү: Arduino программасын орнотуу

1123333 30
1123333 30

Кадам 1. Arduino IDEди жүктөп алыңыз

Бул жерде Arduino иштелип чыккан жана андан кийин Arduino микроконтроллерине жүктөй турган көрсөтмөлөрдү программалоого мүмкүнчүлүк берет. Аны arduino.cc/en/main/softwareден бекер жүктөп алсаңыз болот. Жүктөлүп алынган файлды эки жолу чыкылдатып, андагы папканы оңой жетүү үчүн жылдырыңыз. Сиз программаны иш жүзүндө орнотпойсуз, анын ордуна arduino.exe файлын эки жолу чыкылдатуу менен чыгарылган папкадан иштетесиз.

1123333 31
1123333 31

Кадам 2. Батарея бөлүмүн Arduino менен туташтырыңыз

Батарейканын арткы розеткасын Arduinoдогу туташтыргычка салыңыз, аны иштетүү үчүн.

1123333 32
1123333 32

Кадам 3. USB аркылуу компьютериңизге Arduino салыңыз

Мүмкүн, Windows түзмөктү тааныбайт.

1123333 33
1123333 33

Кадам 4. Басыңыз

Win+R жана түрү devmgmt.msc.

Бул буйрук Device Managerди ачат.

1123333 34
1123333 34

Кадам 5. Башка түзмөктөрдүн астындагы Белгисиз түзмөктү оң баскыч менен чыкылдатып, Драйвер программасын жаңыртууну тандаңыз

Эгерде сиз бул параметрди көрбөсөңүз, Свойстволорго чыкылдатыңыз, Драйвер өтмөгүн тандап, анан Драйверди жаңыртууну басыңыз.

1123333 35
1123333 35

Кадам 6. Драйвер программасы үчүн Менин компьютеримди тандаңыз

Бул Arduino IDE менен келген камтылган драйверлерди тандоого мүмкүндүк берет.

1123333 36
1123333 36

Кадам 7. Click Browse, андан кийин сиз мурда чыгарылган папканы ачыңыз

Сиз анда драйверлер папкасын таба аласыз.

1123333 37
1123333 37

Кадам 8. Драйверлер папкасын тандап, ОК басыңыз

Белгисиз программалык камсыздоо жөнүндө эскертүү берилсе, улантууну каалаарыңызды ырастаңыз.

5тин 5 -бөлүгү: Роботторду программалоо

1123333 38
1123333 38

Кадам 1. IDE папкасындагы arduino.exe файлын эки жолу басуу менен Arduino IDE ачыңыз

Сизди бош проект менен тосуп алышат.

1123333 39
1123333 39

Кадам 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" роботко "артка" толук ылдамдыкта жылуусун айтат. }

1123333 40
1123333 40

Кадам 3. Программаны түзүү жана жүктөө

Программаны түзүү жана туташкан Arduinoго жүктөө үчүн, жогорку сол бурчтагы оң жебе баскычын чыкылдатыңыз.

Сиз роботту жер үстүнөн көтөргүңүз келиши мүмкүн, анткени программа жүктөлгөндөн кийин робот алдыга карай жүрө берет

1123333 41
1123333 41

Кадам 4. Токтотуу функциясын кошуу (өчүрүүчү өчүрүүчү)

Төмөнкү кодду кодуңуздун "void loop ()" бөлүмүнө кошуп, "write ()" функциясынын үстүнө токтотуу функциясын кошуңуз.

if (digitalRead (2) == HIGH) // бул буйрук 2 Arduino пин 2 баскычында басылганда иштейт {while (1) {leftMotor.write (90); // "90" - бул servoго нейтралдуу позиция, ал servoго бурууну токтотууну айтат rightMotor.write (90); }}

1123333 42
1123333 42

Кадам 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 = миллис (); }}

Сунушталууда: