Робот на Ардуино!

Содержание

Ведроид-мобиль — робот на Arduino — Часть 3. Подключаем Bluetooth

Робот на Ардуино!

В этот раз я опишу процесс подключения к моему роботу “Ведроид-мобиль” модуля Bluetooth JY-MCU и реализую управление через смартфон на Android.

Ранее я описал процесс сборки мотоплатформы для робота на Arduino,  подключения модуля Motor Shield и работу с ним.

Модернизация Motor Shield

Получилось так, что производители модуля Motor Shield лишили своих покупателей возможности устанавливать поверх своего продукта другой модуль. Видимо им нравится быть сверху или просто зажали нормальную панельку контактов.

Меня этот нюанс совсем не устраивает. Именно поэтому я решил взяться за паяльник и привести Motor Shield к удобному для меня виду.

Аккуратно выдрал родные панельки контактов и выкинул их нафиг.

Установил на их место нормальные.

В таком виде модулем стало пользоваться гораздо удобнее. Теперь я смогу нормально подключить провода от Bluetooth в разъемы, а не припаивать их намертво к контактам на Motor Shield.

Bluetooth модуль JY-MCU для Arduino

Сам Bluetooth модуль JY-MCU довольно миниатюрный. В комплект поставки входит кабель для подключения. Назначение выводов расписано на обратной стороне.

Запитать его можно от источника питания 3,6-6В. Это предоставляет нам возможность подключить его напрямую к Arduino без использования стабилизатора или делителя напряжения.

Код, используемый при подключении к устройству: 1234.

Подключение Bluetooth JY-MCU к Arduino Mega 2560

Подключение довольно простое.

Официальная схема подключения:

  • VCC на JY-MCU подключаем к +5В Arduino
  • GND на JY-MCU подключаем к GND Arduino
  • TXT на JY-MCU подключаем к RX (0) на Arduino
  • RXD на JY-MCU подключаем к TX (1) на Arduino

При таком варианте подключения придется каждый раз отключать питание модуля Bluetooth перед загрузкой скетча. Не забывайте про это.

Меня такой вариант не устраивает, поэтому я решил использовать дискретные порты с поддержкой Serial.

Неофициальная схема подключения:

  • VCC на JY-MCU подключаем к +5В Arduino
  • GND на JY-MCU подключаем к GND Arduino
  • TXT на JY-MCU подключаем к дискретному PIN 50 на Arduino
  • RXD на JY-MCU подключаем к дискретному PIN 51 на Arduino

Вот теперь можно загружать скетчи без отключения питания модуля Bluetooth.

Чтобы закрепить Bluetooth, я решил использовать плату Proto Shield и миниатюрную беспаечную макетную плату. К ней в будущем и буду подключать остальное оборудование, элементы управления и индикации.

Скетч для управления роботом на Arduino по Bluetooth через смартфон на Android

В своём скетче я реализовал следующие функции:

  • Движение вперед
  • Движение назад
  • Разворот влево
  • Разворот вправо
  • Плавный поворот влево при движении вперед
  • Плавный поворот вправо при движении вперед
  • Плавный поворот влево при движении назад
  • Плавный поворот вправо при движении назад
  • Остановка

В скетче использовал функции, чтобы не дублировать код при схожих событиях.

#include // Подключаем библиотеку для управления двигателями#include    // Подключаем библиотеку для сервоприводов

#include // Подключаем библиотеку для работы с Serial через дискретные порты

//Создаем объекты для двигателейAF_DCMotor motor1(1); //канал М1 на Motor Shield — задний левыйAF_DCMotor motor2(2); //канал М2 на Motor Shield — задний правыйAF_DCMotor motor3(3); //канал М3 на Motor Shield — передний левый

AF_DCMotor motor4(4); //канал М4 на Motor Shield — передний правый

// Создаем объект для сервопривода
Servo vservo;

SoftwareSerial BTSerial(50, 51); // RX, TX

// Создаем переменную для команд Bluetoothchar vcmd;// Создаем переменные для запоминания скорости двигателейint vspdL, vspdR;/* Создаем переменную, на значение которой будет уменьшаться скорость при плавных поворотах.Текущая скорость должна быть больше этого значения.  В противном случае двигатели со стороны направления поворота просто не будут вращаться */

int vspd = 200;

void setup() {// Устанавливаем скорость передачи данных по BluetoothBTSerial.begin(9600);// Устанавливаем скорость передачи данных по кабелюSerial.begin(9600);// Выбираем пин к которому подключен сервоприводvservo.

attach(9); // или 10, если воткнули в крайний разъём// Поворачиваем сервопривод в положение 90 градусов при каждом включенииvservo.

write(90);// Устанавливаем максимальную скорость вращения двигателейvspeed(255,255);

}

void loop() {// Если есть данныеif (BTSerial.available()){// Читаем команды и заносим их в переменную. char преобразует код символа команды в символvcmd = (char)BTSerial.read();// Отправляем команду в порт, чтобы можно было их проверить в “Мониторе порта”

Serial.println(vcmd);

// Впередif (vcmd == 'F') {vforward();}// Назадif (vcmd == 'B'){vbackward();}// Влевоif (vcmd == 'L'){vleft();}// Вправоif (vcmd == 'R'){vright();}// Прямо и влевоif (vcmd == 'G'){vforwardleft();}// Прямо и вправоif (vcmd == 'I'){vforwardright();}// Назад и влевоif (vcmd == 'H'){vbackwardleft();}// Назад и вправоif (vcmd == 'J'){vbackwardright();}// Стопif (vcmd == 'S'){vrelease();}// Скорость 0%if (vcmd == '0'){vspeed(0,0);}// Скорость 10%if (vcmd == '1'){vspeed(25,25);}// Скорость 20%if (vcmd == '2'){vspeed(50,50);}// Скорость 30%if (vcmd == '3'){vspeed(75,75);}// Скорость 40%if (vcmd == '4'){vspeed(100,100);}// Скорость 50%if (vcmd == '5'){vspeed(125,125);}// Скорость 60%if (vcmd == '6'){vspeed(150,150);}// Скорость 70%if (vcmd == '7'){vspeed(175,175);}// Скорость 80%if (vcmd == '8'){vspeed(200,200);}// Скорость 90%if (vcmd == '9'){vspeed(225,225);}// Скорость 100%if (vcmd == 'q'){vspeed(255,255);}}

}

// Впередvoid vforward() {vspeed(vspdL,vspdR);vforwardRL();

}

// Вперед для RLvoid vforwardRL() {motor1.run(FORWARD);motor2.run(FORWARD);motor3.run(FORWARD);motor4.run(FORWARD);

}

// Назадvoid vbackward() {vspeed(vspdL,vspdR);vbackwardRL();

}

// Назад для RLvoid vbackwardRL() {motor1.run(BACKWARD);motor2.run(BACKWARD);motor3.run(BACKWARD);motor4.run(BACKWARD);

}

// Влевоvoid vleft() {vspeed(vspdL,vspdR);motor1.run(BACKWARD);motor2.run(FORWARD);motor3.run(BACKWARD);motor4.run(FORWARD);

}

// Вправоvoid vright() {vspeed(vspdL,vspdR);motor1.run(FORWARD);motor2.run(BACKWARD);motor3.run(FORWARD);motor4.run(BACKWARD);

}

// Вперед и влевоvoid vforwardleft() {if (vspdL > vspd) {vspeed(vspdL-vspd,vspdR);}else{vspeed(0,vspdR);}vforwardRL();

}

// Вперед и вправоvoid vforwardright() {if (vspdR > vspd) {vspeed(vspdL,vspdR-vspd);}else{vspeed(vspdL,0);}vforwardRL();

}

// Назад и влевоvoid vbackwardleft() {if (vspdL > vspd) {vspeed(vspdL-vspd,vspdR);}else{vspeed(0,vspdR);}vbackwardRL();

}

// Назад и вправоvoid vbackwardright() {if (vspdR > vspd) {vspeed(vspdL,vspdR-vspd);}else{vspeed(vspdL,0);}vbackwardRL();

}

// Стопvoid vrelease(){motor1.run(RELEASE);motor2.run(RELEASE);motor3.run(RELEASE);motor4.run(RELEASE);

}

// Изменение скоростиvoid vspeed(int spdL,int spdR){if (spdL == spdR) {vspdL=spdL;vspdR=spdR;}motor1.setSpeed(spdL);motor2.setSpeed(spdR);motor3.setSpeed(spdL);motor4.setSpeed(spdR);

}

Программа Bluetooth RC Car – управление роботом-машинкой со смартфона на Android

В свой смартфон я установил программу Bluetooth RC Car. На мой взгляд  – это лучшая софтинка для управления роботом-машинкой.

Программа позволяет передавать команды при нажатии на кнопки или реагировать на данные с акселерометра в смартфоне, регулировать скорость движения ползунком, включать передние и задние фонари, включать и выключать звуковой сигнал, включать и выключать сигнал “аварийка”.

Для работы программы требуется Android версии 2.3.3 или выше. Размер программы 3 мегабайта.

Список команд:

  • F – вперед
  • B – назад
  • L – влево
  • R – вправо
  • G – прямо и влево
  • I – прямо и вправо
  • H – назад и влево
  • J – назад и вправо
  • S – стоп
  • W – передняя фара включена
  • w – передняя фара выключена
  • U – задняя фара включена
  • u – задняя фара выключена
  • V – звуковой сигнал включен
  • v – звуковой сигнал выключен
  • X – сигнал “аварийка” включен
  • x – сигнал “аварийка” выключен
  • 0 – скорость движения 0%
  • 1 – скорость движения 10%
  • 2 – скорость движения 20%
  • 3 – скорость движения 30%
  • 4 – скорость движения 40%
  • 5 – скорость движения 50%
  • 6 – скорость движения 60%
  • 7 – скорость движения 70%
  • 8 – скорость движения 80%
  • 9 – скорость движения 90%
  • q – скорость движения 100%

Как вы видите, полигон для творчества вполне неплохой. Я бы еще добавил возможность раздельного включения правых и левых фонарей для передних и задних фар.

Жирным я выделил команды, поддержка которых уже реализована в скетче. Остальные я собираюсь использовать по другому назначению.

Принцип передачи команд: при нажатии на кнопку в программе, команда передается по Bluetooth один раз, а при отпускании кнопки сразу передается команда S-остановка.

Демонстрация работы

В следующий раз я планирую подключить к роботу ультразвуковой дальномер и реализовать алгоритм объезда препятствий.

    • source
    • Миниатюра:
    • Рубрика: Arduino от А до Я

    Источник: https://GeekElectronics.org/arduino/vedroid-mobil-robot-na-arduino-chast-3-podklyuchaem-bluetooth.html

    Робот паук на Arduino

    Робот на Ардуино!

    Представляем Вам новый курс по робототехники, в данной статье Вы сможете узнать как самостоятельно собрать робота.

    Инструкции по сборке Pheonix Вы можете найти по ссылке:

    http://www.lynxmotion.com/images/html/build131.htm

    Страница KurtE на Github :

    https://github.com/KurtE

    Робот управляется с помощью беспроводного контроллера от PS2, базовый код позволяет роботу ходить в любом направлении, выбирать лапы по отдельности и разворачивать корпус.

    Были внесены изменения, которые необходимы были для работы с моей конфигурацией.

    В дополнение к этим изменениям я хотел, чтобы робот мог отслеживать разные объекты, с возможностью включать и отключать отслеживание, поэтому я использовал кнопку «Треугольник», чтобы включить режим отслеживания.

    Питание робота состоит из двух батарей LiPo и двумя UBEC (Ultimate Battery Eliminator Circuit). Один LiPo и UBEC питают Arduino Mega, PS2 Receiver, Pixy Camera и Pixy MCU.

    Первоначально я использовал 18 серводвигателей HS-422 на этом роботе, и, хотя это работало, мною было принято решение заменить часть серводвигателей на HS-645MG которые стоят дороже, но работают намного стабильнее. Для робота в видео я использовал 12 HS-422 и 6 HS-645MG. Я использовал 12 HS-422 для Coxas (бедра) и лап. Я использую HS-645MG для Tibia, потому что на них лежит основная масса робота.

    Второй LiPo & UBEC питает SSC-32 и серводвигатели. Каждый UBEC может выдавать 8A и поднимать мощность до 15A в пике, что хорошо так как появляется большое количество мощности для запуска робота. Серводвигатели создают много электрических шумов, использованы отдельные источники питания, шум от сервомеханизма мешает радиоприемнику на пульте PS2.

    Камера Pixy установлена спереди робота и является дополнительным приложением, которое позволяет роботу отслеживать объекты, камеру можно обучить слежению за разными объектами / цветами нажатием кнопки на самой камере.

    Если кто-то заинтересован в модуле камеры, вот URL:

    http://charmedlabs.com/default/pixy-cmucam5/

    Шаг 1: Запчасти

    Механические части:

    Lynxmotion Phoenix Chassis Kit – Цена $39.95

    http://www.robotshop.com/en/lynxmotion-phoenix-chassis-phbk.html

    Aluminum Femur Pair (3 шт.) – Цена: $16.95 (за шт.)
    http://www.robotshop.com/lynxmotion-3-aluminum-femur-pair-2.html

    Tibia Pair (Лапы) (3 шт.) Цена: $19.95 (each)

    http://www.robotshop.com/en/lynxmotion-robot-leg-rl-01.html

    Или купить комплектом

    18 DOF Aluminium Hexapod Spider Six 3DOF Legs   Цена: $73.93

    Платформа для PS2 Ресивера & Battery (1 шт.) Цена: $8.99 

    http://www.allerc.com/gaui-330x-payload-mount-set-p-5495.html

    Lynxmotion Phillips Head Tapping Screws – 1/4″ x #2 (100) (1 шт.) Цена: $11.95

    http://www.robotshop.com/en/lynxmotion-phillips-tapping-screws-phts-02.html

    Электроника:

    Arduino MEGA 2560 (1 шт.)

    http://www.robotshop.com/en/arduino-mega-2560-microcontroller-rev3.html – Цена: $36.99

    AliExpress  – Цена: $14.80

    HS-422 Servos (12 шт.)

    http://www.robotshop.com/en/hitec-hs422-servo-motor.html Цена: $9.99 (за шт.)

    http://ali.onl/MSC Цена: $3.79 (за шт.)

    HS-645MG Servos (6 шт.) 

    http://www.robotshop.com/en/hitec-hs645mg-servo-motor.html Цена: $28.89 (за шт.)

    http://ali.onl/MSD Цена: $21.12 (за шт.)

    + http://ali.onl/MSF Цена: $0.99 (за шт.)

    Lynxmotion SSC-32 Servo Controller: (1 шт.) – Цена: $39.95

    http://www.robotshop.com/productinfo.aspx?pc=RB-Lyn-100&lang=en-US  

    Lynxmotion PS2 Controller V4 (1 шт.) – Цена: $23.85

    http://www.robotshop.com/en/lynxmotion-ps2-controller-v4.html

    Pixy CMUcam5 Image Sensor (1 шт.)

    http://www.robotshop.com/en/pixy-cmucam5-image-sensor.html – Цена: $69.00

    http://ali.onl/MSH – Цена: $75.95

    Arduino Nano (1 шт.)

    http://www.robotshop.com/en/arduino-nan-v-3.html

    http://ali.onl/MSJ – Цена: $2.28

    Servo Extension Cable 150mm (6 шт.)

    http://www.robotshop.com/en/servo-extension-cable-150mm.html – Цена: $0.60

    http://ali.onl/MSL – Цена: $1.45

    Батареи и Регуляторы для Робота:

    1300mAh 2S 7.4V 20C Li-Po, 13 AWG EC2 (1 шт.)

    http://www.hobbytown.com/Shop/1300mAh-2S-7-4V-20C… Цена: $18.99

    http://ali.onl/MV4 Цена: $13.49

    1350mAh 3S 11.1V 30C LiPo (1 шт.) – Цена: $30.99

    https://www.hobbytown.com/3s-lipo-battery-pack-w-ec3-connector-30c-11.1v-1350mah-by-eflite-eflb13503s30/p224551

    TURNIGY 8-15A UBEC for Lipoly (2 шт.)

    https://hobbyking.com/en_us/turnigy-8-15a-ubec-for-lipoly.html?___store=en_us – Цена: $15.40

    http://ali.onl/MV5  – Цена: $14.29

    Необходимые инстурменты:
    Крестовая отвертка

    Паяльник

    Припой

    Шестигранные головка

    Мелкие крестовые отвертки и плоские овтертки

    Плоскогубцы

    Пластиковый хомут

    Двухсторонний скотч

    Двусторонняя липучая лента

    Шаг 2: Постройте переднюю левую лапу

    Примечание: обратите внимание на положение каждой детали; левые и правые лапы должны собираться зеркально относительно друг друга.

    Все винты и пластиковые приводы которые поставляются с серводвигателями по большей части довольно понятны. При создании лап нужно подключить все серводвигатели  одной лапы к портам 0, 1, 2 на SSC-32. После этого я загрузил следующий эскиз в ардуино, чтобы связать эти серводвигатели на этих портах:

    void setup() { Serial.begin(115200); } void loop() { Serial.println(“#0P1500T100 #1P1500T100 #2P1500T100”); delay(500); }

    Я использовал одну из своих батарей для питания всех вместе с одним набором UBEC для 6V.

    Шаг 3: Постройте переднюю правую лапу

    Примечание: обратите пристальное внимание на ориентацию каждой части.

    Процесс сборки правой лапы такой же, как у левой ноги; с той лишь разницей, что ориентация частей зеркальна.

    Шаг 4: Завершение сборки лап

    Вот как должны выглядеть передние две ноги при завершении; Так же будут выглядеть средние и задние лапы.

    Далее Вам необходимо собрать остальные лапы, которые также будут выглядеть точно так же, как передние две. Как только это будет завершено, Вы сможете прикрепить лапы к туловищу.

    Шаг 5: Прикрепление лап к туловищу

    На этом этапе Вы должны собрать лапы и туловище вместе. Более Тонкая настройка позиций лап может быть выполнена после того, как вы всё будет подключено.

    Я бы предложил не привязывать SSC-32 или Arduino Mega к туловищу, пока вы не сделаете пробный запуск что бы убедится, что все соединения правильно работают, см. Шаги 6, 7 для подключения.

    После проверки вашей проводки вы можете подключить SSC-32 и MEGA к туловищу.

    Шаг 6: Подключение Arduino Mega

    PS2 Receiver Connections

    PS2 | MEGA

    DAT – PIN 5

    CMD – PIN 6

    ATT – PIN 7

    CLK – PIN 8

    5V – 5V

    GND – GND

    SSC-32 Servo Sequencer:

    SSC32 | MEGA

    RX – PIN 19

    TX – PIN 18

    GND – GND

    Beeper:

    + (Pos) Beeper – Pin 22

    – (Neg) Beeper – GND

    Pixy Camera Arduino Nano Serial Interface: (*Only if you want object tracking*)

    NANO | MEGA

    TX – PIN 15

    VIN – 5V

    GND – GND

    Arduino Mega Power Connection:

    VIN – UBEC POSITIVE WIRE

    GND – UBEC NEGATIVE WIRE

    Шаг 7: Подключение SSC-32

    Выставите перемычки согласно картинке, (зона 3,5,9) единственным исключением является область 14 там перемычек быть не должно.

    Идите вперед и удалите два перемычки из области 14. Затем подключите TX к выходу 18 Mega, затем подключите RX к выходу 19. После этого подключите GND к GND на Mega.

    Подключите сервоприводы каждой ноги к SSC-32, используя этот список:

    #define cRRCoxaPin 0 // Rear Right leg Hip Horizontal

    #define cRRFemurPin 1 //Rear Right leg Hip Vertical

    #define cRRTibiaPin 2 //Rear Right leg Knee

    #define cRMCoxaPin 4 //Middle Right leg Hip Horizontal

    #define cRMFemurPin 5 //Middle Right leg Hip Vertical

    #define cRMTibiaPin 6 //Middle Right leg Knee

    #define cRFCoxaPin 8 //Front Right leg Hip Horizontal

    #define cRFFemurPin 9 //Front Right leg Hip Vertical

    #define cRFTibiaPin 10 //Front Right leg Knee

    #define cLRCoxaPin 16 //Rear Left leg Hip Horizontal

    #define cLRFemurPin 17 //Rear Left leg Hip Vertical

    #define cLRTibiaPin 18 //Rear Left leg Knee

    #define cLMCoxaPin 20 //Middle Left leg Hip Horizontal

    #define cLMFemurPin 21 //Middle Left leg Hip Vertical

    #define cLMTibiaPin 22 //Middle Left leg Knee

    #define cLFCoxaPin 24 //Front Left leg Hip Horizontal

    #define cLFFemurPin 25 //Front Left leg Hip Vertical

    #define cLFTibiaPin 26 //Front Left leg Knee

    Шаг 8: Подключение Arduino Nano / Pixy Camera

    В случае, если вы хотите отслеживать объекты, Вам нужно будет подключить к роботу Arduino Nano и Pixy Camera. Робот будет работать и без них, и в моем репозитории есть код, который работает и без возможно отслеживать объекты. https://github.com/davidhend/Hexapod

    Шаг 9: Код

    Вы захотите выбрать версию 1.0 или 2.0 на основе ваших потребностей.

    1.0 Arduino_Hex – работает на микроконтроллере роботов 2560, эта версия не содержит кода для pixy.

    2.0 Arduino_Hex_Pixy_Walking_Version_R2 – работает на микроконтроллере 2560 роботов и содержит весь код для интеграции пикселов. Если вы выберете эту версию, вам также захочется захватить PixyProgramHeightWidth.

    PixyProgramHeightWidth – загружается в микроконтроллер (arduino nano), который считывает данные пикселя и отправляет его роботам 2560.

    PS2X_lib – Библиотека для PS2-контроллера

    Обновлено HardwareSerial – Arduino-0021 – Обновлена HardwareSerial библиотека для Arduino 0021> Вам нужно будет перезаписать два файла HardwareSerial, расположенные по адресу: C: \ Users \ xxxx \ Desktop \ arduino-0021 \ hardware \ arduino \ cores \ arduino С файлами в обновленную папку HardwareSerial в этом репозитории.

    Arduino Enviroment 0021 to compile and upload the code in this repository; you will want the same. You can get it at the following URL: https://www.arduino.cc/en/Main/OldSoftwareReleases#00xx

    Источник: https://robotos.in/proekty/zemlya/robot-pauk-na-arduino

    Автономный робот на основе Arduino с возможностью дистанционного управления

    Робот на Ардуино!

    Чтобы наработать опыт в работе с платой Arduino, так сказать в качестве учебного опыта и просто для интереса был создан этот проект. Целью проекта было создать автомобиль, который может автономно перемещаться, объезжая различные препятствия и не сталкиваясь с ними.

    Шаг 1: Список компонентов и стоимость проекта

    1. Игрушечная Машинка с радиоуправлением (radio controlled).

    Стоит эта штука около 20 баксов, если у вас есть возможность потратить больше, то можете использовать и получше.

    2. Arduino Uno микроконтроллер — 25 долларов

    3. Motor shield для контроля электромоторов — 20 долларов

    4. GPS для навигации. Adafruit Ultimate GPS Shield — 50 долларов

    5. Магнитометр в качестве компаса для навигации. Adafruit HMC5883 Magnetometer — 10 долларов

    6. Ультразвуковой датчик расстояния, чтобы избегать препятствия. HC-SR04 — 6 долларов

    7. ЖК-дисплей для отображения состояния транспортного средства и информации. LCD Display Blue 1602 IIC, I2C TWI — 6 долларов (можете использовать другой)

    8. Инфракрасный датчик и пульт.

    9. Arduino sketch (программа C++).

    10. Тонкая древесная плита в качестве монтажной платформы.

    11. Макетные платы. Одна длинная и узкая, а другая маленькая, чтобы отдельно установить на ней магнитометр подальше от других элементов.

    12. Перемычки.

    13. Набор для монтажа ультразвукового датчика — 12 долларов 

    14. Паяльник и припой.

    15. Дрель.

    Итак, в общем на всё ушло около 150 долларов, это при условии, если закупать все эти компоненты, поскольку возможно у вас уже что то имеется из этого.

    Шаг 2: Шасси и монтаж платформы

    Радиоуправление изъяли из ненужной игрушки, которая стоила 15 баксов.

    Машинка здесь с двумя двигателями. С помощью одного движка пультом контролируется скорость движения робота, а с помощью другого контролируется рулевое управления.

    Использовалась тонкая доска в качестве монтажной поверхности, на которой были прикреплены макетные платы, Arduino, ЖК и т.д. Батарейки размещены под доской и провода пропущены через просверленные отверстия.

    Шаг 3: Программа

    Arduino управляется через программу С ++.

    Ряд 1:

    1. TH — Задача, курс к текущей маршрутной точки

    2. CH — Текущее направление робота

    Ряд 2:

    3. Err — Направление по компасу, показывает в каком направлении движется робот (влево или вправо)

    4. Dist — Фокусное расстояние (в метрах) до текущей маршрутной точки

    Ряд 3:

    5. SNR — Sonar расстояние, то есть расстояние до любых объектов в передней части робота

    6. Spd — Скорость робота

    Ряд 4:

    7. Mem — Память (в байтах). В памяти Arduino имеется 2 КБ

    8. WPT n OF x — Показывает, где робот находится в списке маршрутных точек

    Шаг 5: Избежать столкновения с объектами

    Чтобы робот избегал препятствий, здесь использовался ультразвуковой датчик » Ping». Было решено совместить его с библиотекой Arduino NewPing, поскольку она лучше, чем простая PIng библиотека.

    Библиотека была взята отсюда: https://github.com/fmbfla/Arduino/tree/master/NewPing

    Датчик был установлен на бампере робота.

    Если объект обнаружен:

    1. Робот замедляется
    2. Если робот движется прямо (то есть не сворачивает), то помогите роботу, поверните его по направлению к вашей точке маршрута (бывают сбои иногда).
    3. Если робот столкнулся с объектом, то сдайте назад, чтобы потом робот снова продолжил движение.

    4. Если робот сбился с маршрутной точки, то не страшно, точки сохраняются и можно снова повторить процесс.

      Для навигации курса, нам нужно управление различными точками.  Был создан простой WaypointClass, который содержит значения долготы и широты.

      Затем создали WaypointClass для хранения маршрутных точек, и переменную currentWaypoint, чтобы отслеживать текущие маршрутные точки.

      waypointClass.h

      Шаг 7: GPS-навигация

      GPS используется для обнаружения расположения робота. При помощи навигации можно рассчитать курс и расстояние маршрутной точки.

      Для GPS использовалась Adafruit Ultimate GPS Shield.

      Использовалась библиотека: https://github.com/adafruit/Adafruit-GPS-Library

      Образец кода: https://github.com/adafruit/Adafruit-GPS-Library/tree/master/examples/parsing

      Для расчёта расстояния до точки: https://github.com/mikalhart/TinyGPS

      Шаг 8: Компас навигации

      GPS работает отлично и подходит для предоставления точных данных о местоположении, но масштаб, на котором работает этот проект слишком мал для того, чтобы обеспечить точную информацию.

      Использовался цифровой магнитометр (который предоставлен коде как «компас»). «Компас» выполняет быстрое считывание с текущего направления транспорта. С помощью GPS вычисляется курс и куда поворачивать (влево или вправо).

      Можете использовать машинку с более широким размахом рулевого управления (то есть более маневренную). Здесь использовалась дешёвая игрушка и поэтому робот ограничен в управлении.

      Магнитометр был установлен подальше от моторов и прочих элементов, поскольку он очень чувствителен к электрическим помехам.

      Шаг 9: Мотор и управление скоростью

      Скорость автомобиля контролируется с помощью пульсовой волны модуляции (ШИМ), предоставленной Adafruit Motor Shield.

      Программа устанавливает частоту в зависимости от следующего:

      • Если робот едет прямо (не поворачивая) и объекты не обнаружены, движение быстрое.
      • Если робот едет прямо и обнаруживает объект, движение замедляется.

      В приведенном выше фото, вы можете увидеть: (1) на задних колёсах приводной двигатель и (2) на передних колёсах рулевой двигатель.

      Шаг 10: Инфракрасный датчик и пульт управления

      Был добавлен инфракрасный датчик (с соответствующим дистанционным пультом), чтобы обеспечить удобную функциональность.

      Как только будет подключено питание, робот сразу же начнёт движение и пульт позволяет сразу взять под контроль робота, чтобы он начал выполнять ваши команды.

      Cписок потенциальных усовершенствований

      • Лучше использовать игрушку джип, поскольку у него больше колёса по размеру и более мощные моторы, он гораздо легче едет по траве и грязи.
      • Можно добавить сервопривод.
      • Добавить более лучший переключатель.
      • Добавить камеру для фотоснимков или видео.
      • Добавить радиопередатчик.

      Шаг 12: Заключительное слово

      Получилась очень интересная штука. Надеемся данный проект поможет вам познать больше о робототехнике. Удачи вам в ваших проектах.

      До свидания.

    Источник: http://payaem.ru/avtonomnyj-robot-na-osnove-arduino-s-vozmozhnostyu-distancionnogo-upravleniya.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.