Мазмуну:

Arduino Sumo роботу: 5 кадам
Arduino Sumo роботу: 5 кадам

Video: Arduino Sumo роботу: 5 кадам

Video: Arduino Sumo роботу: 5 кадам
Video: Arduino robot sumo 2024, Ноябрь
Anonim
Arduino Sumo роботу
Arduino Sumo роботу

Биз баштаардан мурун

Сумо робот деген эмне?

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

"Сумо" аты эски япон спорттон келип чыккан, бул эки атаандаш рингде кармашат, алардын ар бири башка каршылашын түртүп салууга аракет кылышат, жана роботтор сумо боюнча мелдештерде да ушундай кылышы керек. рингге жайгаштырылган роботтор жана бири -бирин атаандашын сүрүп чыгарууга аракет кылуу.

Ой:

Белгилүү бир спецификациясы бар жана ошол мелдештин мыйзамдарына шайкеш келген роботту куруңуз (Сумо), бул робот эч кандай жол менен чуркап кетпеш үчүн күрөшүү жана аман калуу үчүн так өлчөмдө болушу керек.

Келгиле, Sumo роботторунун атаандаштык мыйзамдарын карап көрөлү:

Мен өзүмдүн СУМОмду түзүүдө эске алуусу керек болгон кээ бир маанилүү ролдорду түшүндүрүп берем, ал дагы тереңирээк маалымат бербестен, өз идеяңды элестетүүгө жана жаңыртууга жардам берет.

1. Өлчөмдөрү: Максималдуу Туурасы 20 см, Максималдуу Узундугу 20 см, Бийиктиги көрсөтүлгөн эмес.

2. Форма: роботтун формасы жарышты баштагандан кийин өзгөрүлмө болушу мүмкүн, бирок ажырагыс бөлүктөрү жок бир борбордук объект болуп кала берет.

3. Салмагы: 3 кг ашпайт.

4. Робот өзүн өзү башкара билиши керек.

1 -кадам: Компоненттер

Image
Image
Ар бир компонент үчүн колдонулат
Ар бир компонент үчүн колдонулат

1 Arduino Ano3

2 DC мотору

1 L298N Dual H көпүрөсү Arduino үчүн

1 УЗИ сенсор

2 IR TCRT5000

1 Батарея 9v

AA батарейкасы 4 * 1,5 в даана + Батарея үйү

4 робот дөңгөлөгү

секирүүчү зымдар

2 -кадам: Ар бир компонент үчүн колдонулат

Ар бир компонент үчүн колдонулат
Ар бир компонент үчүн колдонулат
Ар бир компонент үчүн колдонулат
Ар бир компонент үчүн колдонулат

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

1- Arduino Ano3

Бул бардык бөлүктөрдү көзөмөлдөгөн жана аны бириктирген башкы такта

2- DC мотору

Кайсы робот маневр жасоого жана КОНКПЕТТИН алкагынын ичинде жылууга жардам берет

4- L298N Dual H Arduino үчүн көпүрө

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

5- УЗИ сенсор

УЗИ сенсору атаандаштын роботун табуу үчүн колдонулат жана көбүнчө роботтун үстүнө коюлат.

6- IR TCRT5000

Жогоруда айткандай, белгилүү бир өлчөмдө иштелип чыккан жана эки түстүү, толтуруу кара жана алкагы ак түстө. Конкурсант сыртка чыкпашы керек. Ошондуктан, биз робот рингден чыкпай турганына ынануу үчүн IR сенсорун колдонобуз. Бул сенсор шакектин түстөрүн айырмалоо мүмкүнчүлүгүнө ээ).

7- Батарея 9v

Бул маанилүү чыңалуу менен башкы тактаны (Arduino) колдойт.

8- АА батарейкасы 4 * 1,5 в даана + Батарея үйү

Бул эки кыймылдаткычты (DC мотору) маанилүү чыңалуу менен колдойт жана дөңгөлөктөргө толук күч берүү үчүн бөлүнүшү керек.

9- Өтмө зымдар

3 -кадам: Дизайн

Дизайн
Дизайн
Дизайн
Дизайн

Мен Google 3D эскизин колдонуу менен эки сумо роботунун дизайнын жасадым, анткени лазердик кескичке акрилден бөлүктөрдү кескенге чейин роботторумдун кагаз моделдерин түзүүнү жакшы көрөм. Бардык бөлүктөр бири -бирине туура келерин текшерүү үчүн, кагаз моделдердин чиймелердин так өлчөмүндө басылышы маанилүү.

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

Роботтун салмагына көбүрөөк сезимтал болуу үчүн, батарейкаларды роботтун алдына 45 градус бурчта, роботтун алдына коюңуз.

Дизайн 1ди бул жерден жүктөп алыңыз

Дизайн 2ди бул жерден жүктөп алыңыз

Сиз ошондой эле Кагаздын моделин түшүрүп алсаңыз болот

PDF файлын Adobe Acrobat Reader менен ачыңыз (сунушталган программа)

4 -кадам: Стратегияны ойнотуу

Image
Image
Play стратегиясы
Play стратегиясы

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

Play стратегиясы (1):

· Биз роботту айланасында тынымсыз жасайбыз.

· Робот айлануу учурунда дайыма аралыкты тынымсыз өлчөп турат.

· Эгерде өлчөнүүчү атаандаштын аралыгы (мисалы 10смден) төмөн болсо, бул атаандашыбыз роботтун алдында турат дегенди билдирет.

· Робот айланууну токтотуп, анан чабуулду башташы керек (тездик менен толук күч менен алдыга жылуу).

· Робот биз IR чеккичтеринин көрсөткүчтөрүн алышы керек, анткени биз рингдин чегинен өткөн жокпуз.

· Эгерде IR түсү ак түстө болсо, анда ал роботту түз эле сенсордун карама -каршы жагына жылдырышы керек (мисалы: эгер роботтун ак түсүн көрсөткөн алдыңкы сенсор артка жылса)!

Play стратегиясы (2):

· Старт роботу алдыдагы аралыкты өлчөйт.

· Робот ошол эле ченелген аралыкты артка жылдырат.

· Робот айланууну токтотуп, анан күтүүсүздөн чабуулду баштайт (толук күч менен алдыга жылуу).

· Каршылаш тиркелген учурда робот 45 градуска айланышы керек, ал эми рингден кулап кетсе аман калуу үчүн.

· Робот биз IRдин сенсорлорунун көрсөткүчтөрүн алышы керек, анткени биз рингдин чегинен өткөн жокпуз.

· Эгерде IR түсү ак түстө болсо, анда ал роботту түздөн -түз сенсордун карама -каршы жагына жылдырышы керек (мисалы: Эгерде роботтун ак түсүн көрсөткөн алдыңкы сенсор артка жылса)!

5 -кадам: Программалоо

Программалоо
Программалоо

сураныч, схеманы жана кодду текшериңиз

* Жаңыртуу 2019-03-26

Бул жерден Ultrasonic китепканасын жүктөп алып, аны орнотуңуз:

github.com/ErickSimoes/Ultrasonic/blob/mas…

/*

тарабынан Ахмед Азуз

www.instructables.com/id/How-to-Make-Ardu…

Биринчи бул жерден lib жүктөп алыңыз

github.com/ErickSimoes/Ultrasonic/blob/ma…

*/

#Ultrasonic.h кошуу

УЗИ УЗИ (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #аныктоо IR_sensor_front A0 // алдыңкы сенсор #IR_sensor_back A1 аныктоо // арткы сенсон int расстояние;

жараксыз орнотуу ()

{Serial.begin (9600); кечигүү (5000); // сумонун шайкештик ролдору боюнча} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); аралык = ultrasonic.read (); КАЙРА (200); // баштоо rotete if (алыстык <20) {Stop (); while (аралык 650 || IR_back> 650) {тыныгуу;} кечигүү (10); } эгер (IR_front <650) // <650 ак сызыкты билдирет {Stop (); кечиктирүү (50); Артка (255); кечигүү (500); } if (IR_back <650) // {Stop (); кечиктирүү (50); АЛГА (255); кечигүү (500); } /* ----------- мүчүлүштүктөрдү оңдоо ---------------- Serial.print (УЗИ. Ренинг (CM)); Serial.println ("cm"); Serial.println ("IR front:"); Serial.println (IR_front); Serial.println ("IR кайра:"); Serial.println (IR_back); */

} //--------------------------------------------

void FORWARD (int Speed) {// Мотордун алдыга жылышына жол бергибиз келгенде, // бул бөлүктү цикл бөлүмүндө жокко чыгарыңыз. analogWrite (IN1, Ылдамдык); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, Ылдамдык); } // -------------------------------------------- жараксыз АРТКА (int Speed) {// Мотордун алдыга жылышына жол бергибиз келгенде, // бул бөлүктү цикл бөлүмүндө жокко чыгарыңыз. analogWrite (IN1, 0); analogWrite (IN2, Ылдамдык); analogWrite (IN3, Ылдамдык); analogWrite (IN4, 0); } // -------------------------------------------- жараксыз РОТАЦИЯ (int Speed) {// Мотордун айлануусуна уруксат бергибиз келгенде, // бул бөлүктү цикл бөлүмүндө жокко чыгарыңыз. analogWrite (IN1, Ылдамдык); analogWrite (IN2, 0); analogWrite (IN3, Ылдамдык); analogWrite (IN4, 0); } // -------------------------------------------- void Stop () {// Моторду токтоткубуз келгенде, // бул бөлүктү цикл бөлүмүндө жокко чыгарыңыз. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

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