RDVV (rdvv) wrote,
RDVV
rdvv

Category:
  • Location:
  • Mood:

i-Sobot

Давно в детстве мечтал я как-то о роботе гуманоиде, но в временна СССР сие игрушки были весьма примитивные (заводные) и не доступные (думали только о колбасе и на всё был дефицит). Вообще в те времена робототехника использовалась только за рубежом и только на производстве (механическая рука). Мне как ребёнку оставалось наслаждаться фантастикой (книгами и фильмами), а спустя какое-то время, в книжном магазине увидел серию книг про роботостроение. Да это были серьёзные книги и как ребенку было многое не только не понятно и как-то не интересно, т.к. в живую всё это потрогать нельзя, по экспериментировать... Прошло много времени, менялось всё: технологии, страна, взгляды и через довольно большое время многое стало доступно и тут возник вопрос, как малой кровью можно реализовать мою детскую мечту? На мой взгляд существует два основных варианта, это:

1. приобрести конструктор;
2. или купить готовую игрушку.

Начал потихоньку изучать эти направления со всех сторон. У варианта №1 куча достоинств: не обязательно вкладывать сразу много денег, система гибкая и есть куда развивать, но всё равно увлечение выйдет не дешевым прежде чем что-то интересное начнет вырисовываться + пересмотрев много разного видео-работ людей обратил внимание на то, что итоговые конструкции имели малую прочность материалов, т.е. когда робот скажем начинает двигаться и потом резко встает, то наблюдается некое прогибание тех или иных частей тела (это при том, что как правило он сделан из метала (пластин)). Этот момент меня сильно огорчил, т.к. нет жесткости конструкции. И тут я совершенно случайно увидел i-Sobot (вариант №2). Готовая игрушка с кучей функционала, жесткая конструкция (пластик) и на мой взгляд весьма пропорционально выглядящий, но при этом всём - закрытого типа (как есть). Долго не думая решил его приобрести - куплю, а там видно будет, на что он способен и как его можно будет применить. Купить его у нас оказалось не просто, но была бы цель...и вот он на столе. Описывать возможности этого чуда я не буду, т.к. информации в инете довольно много (включая их сайт). Довольно быстро робот начал надоедать, т.к. есть довольно сильные ограничения на его передвижение (скользкие ступни и малый клиренс). Начал искать информацию на чем же он сделан (хаки), в итоге имея желание и свободное время потихонечку начал собирать информацию и осмысливать всё. И так:

- разобрал игрушку;
- извлек штатную плату с мозгом (чтобы её не портить и при желании можно всё вернуть "как было");
- положил её на полку;
- в закромах случайно оказался модуль BCA8-BTM (Bluetooth + AVR 328P).

Железо: на борту имеется 17 серво приводов (с редукторами) + два светодиода (синий и зелёный) + электретный микрофон + динамик.
Для первого этапа была цель оживить и научится управлять 17 приводами без проводным способом (через Bluetooth).
Разъёмы для подключения их выглядят так (снято с основной платы робота, за одно отобразил всё, что могло быть интересным):

Протокол обмена (Rx) имеет следующие хар-ки:

- скорость 2400 бод;
- данные передаются 8 битами;
- четность N;
- стоп бит 1.

Сам протокол выглядит так:

1 - 255
2 - 5
3 - servo
4 - servo
5 - servo
6 - servo
7 - servo
8 - sum 2 to 7

Первый байт заголовок всегда равен 255, за тем идет байт указывающий на то, сколько данных будет передаваться (у нас это значение всегда равно 5, жесткий фрейм), за тем идут значения серво приводов с 3 байта по 7 и контрольная сумма - байт 8 (с второго байта и по седьмой).
Так же значения 128 во всех каналах устанавливает робота в первоначальную позицию, которая выглядит так:



Кстати меня очень порадовала гениальность реализации приводов, каждый привод в себе содержит ещё и переменный резистор, за счет которого двигатель точно устанавливается в нужный угол и будет держать жёстко это значение (некая внутренняя обратная связь).
Если записать в один из каналов привода значение 0 (ноль), то он просто отключится (расслабится). Ещё есть значение 255, точно не проверял (не нужно было), но мне показалось, что оно восстанавливает последнее значение угла.
Осмыслив все эти данные я приступил к сборке своих "мозгов", когда сборка была завершена и был первый запуск канала головы робота всё работало хорошо, но когда собрал все каналы и включил схему, то цифровая часть работала не стабильно, микроконтроллер и БТ-модуль регулярно перегружались. Вскоре приглядевшись заметил, что перезагрузка схемы закономерна и связана она с нагрузкой прилагаемой к механизмам. Одновременно производим движения: головой, руками и ногами или поворачиваем голову робота и при этом её пытаемся задержать руками, чтобы двигатель приложил дополнительное усилие. Думал по началу, что проблема с помехами от двигателей, но простые эксперименты показали, что проблема крылась в токе потребления. Лабораторный блок питания был установлен на ограничивание тока на пол ампера и в момент запуска всех двигателей как оказалось требовалось до 2А. Не удивительно, что схема перезапускалась (срабатывала защита БП). А ведь робот должен был работать от встроенных аккумуляторов AAA! Вот так всегда, начинаешь что-то делать и начинают всплывать удивительные сложности, а ведь создатели сие чуда не только заставили его работать от аккамуляторов, но ещё и длительное время, экономили энергию!
Начал размышлять на тему решения проблемы и т.к. опыта не хватало, решил подглядеть на родной плате как эту проблему решили. Оказывается всё довольно просто, они использовали для развязки и питания схемы DC-DC преобразователь. Хорошо, что у меня в закромах этот элемент был не дефицитом (такой). Не долго думая решил чуть изменить схему питания на такой вид:


И о чудо! Робот стабильно заработал. Ещё для стабильности, на каждую ногу/руку подключил по конденсатору 220мкФ по питанию 3.3В.
В итоге робот стал стабильно работать при условиях 1.5В и 1А (чем больше напряжение - тем меньше ток потребления), а выглядеть вот так:



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



Осталось только провести юстировку серво моторов относительно ползунков программы, чтобы нельзя было поставить некорректное значение для данного рабочего пространства двигателя/редуктора (чтобы максимально использовать рабочее пространство). Кстати по ползункам видны эти ограничения (относительное смещение нулевой точки).
Так же забыл сказать, что пришлось придумывать протокол обмена по БТ и естественно писать программу для микроконтроллера. Сразу говорю, никакие Аурдины не использовал за основу в силу ряда их ограниченности. Работает всё в комплексе так:



Планы:

- добавить в схему робота отслеживание напряжения питания (для будущей работы от акка);
- добавить гироскоп и акселерометр;
- в программу добавить режим анимации, некое подобие редактора, чтобы можно было бегать по фреймам.

ps: помог по протоколу сайтец. Первую часть проекта успел реализовать ещё в старом году (в акурат под НГ), но выложить сил и времени хватило в Новом Году. ;)
Tags: avr+i-sobot, i-sobot, i-sobot hack, i-sobot+bca8-btm, i-sobot+bluetooth, robot
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 9 comments