Робот на радио-управлении

Тема в разделе "Глядите, что я сделал", создана пользователем vladimir_s84, 27 июл 2015.

  1. vladimir_s84

    vladimir_s84 Нерд

    Всем привет!

    Решил собрать собственного робота, которым можно управлять с комьютера или телефона, а также включать режим самостоятельной работы.

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

    Буду благодарен за советы и коментарии. Я начинающий пользователь Arduino.

    Подробное описание первого этапа я выложу завтра, а пока для затравки выкладываю фото того, что уже сделано.

    SH-ROBOT ver.1
    2015-07-27 17-43-40.JPG
     
    Последнее редактирование: 27 июл 2015
    HEtort и robokop нравится это.
  2. Arduiner001

    Arduiner001 Гик

    Перезалей картинку
     
  3. vladimir_s84

    vladimir_s84 Нерд

    Картинку перезалил)
     
  4. DrProg

    DrProg Вечный нерд

    Видео бы, а то не робот пока, а просто коробка с проводами. ))
     
  5. vladimir_s84

    vladimir_s84 Нерд

    DrProg....Вы читать умеете? Я же написал, что поэтапно буду собирать и в процессе буду выкладывать материал. В самом конце будет и видео. И про фотографию тоже написал, что это то, что сейчас собрано.
     
  6. Arduiner001

    Arduiner001 Гик

    А зачем LCD?:confused:
     
  7. vladimir_s84

    vladimir_s84 Нерд

    Робота собираю спонтанно из подручных средств. Был LCD, решил на нем отрбражать информацию по питанию, а также уровню сигнала и некоторых сенсоров, когда робот работает в автономном режиме. Это же первая версия. Возможно в будущем он будет совсем по-другому выглядеть. Это же творческий процесс и одновременно знакомство более подробное с Arduino.
     
  8. Arduiner001

    Arduiner001 Гик

    По-моему лучше купить HC-05 bluetooth и отправлять все данные на телефон.
     
  9. vladimir_s84

    vladimir_s84 Нерд

    Я собираюсь использовать HC-06, и скорее всего перенесу дисплей на пульт управления.

    Итак, с чего все началось...

    У меня в наличие было следующее:
    Покупалось это все постепенно для ознакомления. В том числе делал несколько проектов с Raspberry Pi 2 (в основном сенсоры и датчики для Raspberry покупались).

    Захотелось сделать какого-нибудь робота на дистанционном управлении, а также добавить ему самостоятельный режим работы. Дистанционное управление хочется сделать универсальным, чтобы можно было управлять, например, по Bluetooth, а также при помощи радио-передатчиков дальнего действия. Для этой задачи я решил использовать НС-06 Bluetooth (http://amperkot.ru/products/modul_bluetooth_hc06_s_razvedennyimi_vyihodami/23874920.html) и радио-модуль APC220 (http://multicopterwiki.ru/index.php/APC220).

    Первые шаги...

    Покупать готовую платформу для моего робота я не стал. Цены на сайтах в России завышены сильно, а ждать доставку из Китая 60 дней не хотелось. Поэтому был найден случайным образом корпус, который и послужил платформой для робота.
    2015-07-28 11-32-33.JPG 2015-07-28 11-42-30.JPG

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

    Далее, я решил сделать платформу, на которой захотелось расположить Arduino и LCD-дисплей (но в будущем я думаю дисплея не будет на самом роботе). Из подручных средств и специального корпуса для Arduino Uno соорудил платформу.
    2015-07-28 11-33-29.JPG 2015-07-27 17-37-57.JPG 2015-07-27 17-38-06.JPG

    Потом осталось только поставить на платформу Arduino Uno, сверху бутербродом встала Motor Shield (обязательно при такой сборке нужно изолировать верхнюю часть USB-порта Arduino от Motor Shield), а последней частью бутерброда стала Power Shield (кстати некоторые части Motor Shield тоже пришлось изолировать).
    2015-07-27 17-43-26.JPG 2015-07-27 17-43-40.JPG

    Соединяем моторы, подключаем LCD-дисплей - первая демо-часть готова.
    2015-07-28 12-30-47.JPG 2015-07-28 12-30-57.JPG
     
    Последнее редактирование: 28 июл 2015
    olegoriy нравится это.
  10. vladimir_s84

    vladimir_s84 Нерд

    Написал простенький код (пока выкладывать не буду ничего). Заставил это чудо двигаться и отображать на экране уровень заряда внешней батарейки, а также уровень напряжения, подаваемого на моторы. Сигнал BT на LCD - это демо, рисовал иконки на будущее.

    Вот фотки и видео-кусок.

    Прошу помочь с поворотами! Я так понимаю, что мне надо моторы на все четыре колеса, чтобы робот нормально поворачивал на месте???
    2015-07-28 17-03-53.JPG 2015-07-28 17-06-48.JPG 2015-07-28 17-06-55.JPG



    Продолжение следует...
     
  11. Arduiner001

    Arduiner001 Гик

    Да, на все 4 колеса!
     
  12. vladimir_s84

    vladimir_s84 Нерд

    Спасибо! Уже заказал все. Как только сделаю, выложу видео.
     
  13. vladimir_s84

    vladimir_s84 Нерд

    Добавил радио-модуль APC220)). Теперь можно управлять удаленно с ПК)) Ждемс остальных зап. частей.

     
  14. Arduiner001

    Arduiner001 Гик

    Кстати - моторов нужно 4, а драйвер двигателей - один двухканальный!
    Вот схема:
     

    Вложения:

    Последнее редактирование: 30 июл 2015
  15. vladimir_s84

    vladimir_s84 Нерд

    Это я знаю, но все равно спасибо за советы! Сегодня утром как раз получаю моторы.

    А вот вопрос возник в следующем моменте: на Arduino Uno всего один serial, то есть я не могу одновременно два устройства на одном serial использовать? (Радио-модуль APC220 и Bluetooth)
     
  16. geher

    geher Гуру

    Можно сделать для одного из устройств SoftwareSerial. Будет возможна работа обоих устройств одновременно.
    Можно переключаться между устройствами, вырубая питание одного из них и врубая для второго.
    Можно подключить одновременно оба устройства к аппаратному Serial (и оно даже в некоторых случаях будет работать), но тогда с большой вероятностью возможны спецэффекты, особенно при одновременной активности обоих каналов связи.

    Как мне кажется, наиболее перспективный первый способ.
     
  17. vladimir_s84

    vladimir_s84 Нерд

    Большое спасибо! Информация была очень полезна. Буду экспериментировать.

    Сегодня установил еще два мотора, в итоге по мотору на каждое колесо. Все как надо по схеме подключил, один канал на одну пару колес, другой канал на другу пару. Но столкнулся с интересным моментом. Одна пара колес крутилась в одну сторону (минус и плюс их объединены), а вот вторая пара колес с объединенным минусом и плюсом крутились в разные стороны. Не совсем понял этот эффект, в итоге на одном из колес поменял полярность и все стало норм работать.

    Второй момент. Я купил 6 аккумуляторов по 2500 мА/ч. Два аккумулятора оказались разряженными и в итоге питание поступало 5.5В, вместо 7.2В. В таком варианте машинка поехала, но секунд 15 и встала)).

    Аккумуляторы я заряжу конечно, но вот вопрос. С учетом того, что я использую 4 мотора + собираюсь использовать самый простой сервопривод + хочу камеру поставить и некоторые датчики - как лучше распределять питание??? 7.2В на все явно не хватит. Лучше питать все отдельно? Ардуино отдельно, моторы и сервы отдельно, камеру отдельно? Посоветуйте решение и также какие-нибудь АКБ менее габаритные, чем АА/AAA. Может подскажете, где плоские АКБ можно купить с увеличенными мА/ч и как их заряжать.
     
  18. vvr

    vvr Инженерище

    да хватит вам шесть АА и для сервы и для дуни и для моторов
     
  19. vladimir_s84

    vladimir_s84 Нерд

    2015-08-04 11-07-15.JPG 2015-08-17 15-06-46.JPG 2015-08-17 15-07-21.JPG 2015-08-03 18-15-41.JPG
    Итак, машинка оснащена четыремя моторами, радио-модулем, а также двумя модулями bluetooth, один под iOS, другой для Android. Сделано это для универсальности и дальнейших эксперементов. Также был приобретен OLED-дисплей 128x64 и Arduino Nano v.3 (ну и доп. детали - чуть позже все распишу) для создания пульта управления машинкой.

    Вот теперь действительно нужна помощь!

    Задача была такая:

    со стороны Пульта передавать данные:
    • кнопки направления движения
    • контрольный сигнал
    со стороны Машинки передавать данные:
    • ответный контрольный сигнал
    • показания уровня заряда АКБ
    Алгоритм довольно простой задуман:

    1. Передаем контрольный сигнал с пульта на машинку раз в N миллисекунд (переменная N настраивается в скетче)
    2. Принимаем контрольный сигнал на машинке и если сигнал принят, передаем пульту ответный контрольный сигнал.
    3. Пульт, получив ответный контрольный сигнал, запускает основную часть софта (отображаем подключение к Машинке и ждем команд от кнопок управления)
    4. Есть встроенный тайм-аут - в случае отсутствия контрольного сигнала N миллисекунд уходим в режим ожидания.

    Односторонняя передача данных с Пульта на Машинку получилась сразу без особых проблем. (примеры брал вот тут (http://zelectro.cc/RC_tank). А вот когда начал реализовывать двустороннюю передачу данных - тут столкнулся с рядом проблем.

    В итоге пришел к тому, что для этого нужен нормальный протокол обмена данными.

    Подскажите, пожалуйста, литературу по созданию не сложного протокола обмена данными. Ссылки, примеры....(между Arduino и Arduino)
    Хочется нормального описания, как передавать правильно данные и как их правильно принимать и в каком виде лучше это делать.

    Вроде инфа есть в интернете, но либо слишком громоздко все, либо без комментариев и ничего не понятно.

    Я новичок в С++, сложновато реализация протокола своего дается))))
     
    Последнее редактирование: 17 авг 2015
  20. KamAdm

    KamAdm Нерд

    http://arduino.ru/Reference/Library/SPI
    http://robocraft.ru/blog/arduino/786.html
    Или почитай эту тему http://forum.amperka.ru/threads/Объединение-ардуин-в-сеть.5660/