четверг, 7 июня 2012 г.

Дребезг сервопривода

Попозже положу видео для наглядности.
Но и Евгений, и я столкнулись с одной и той же проблемой. Под нагрузкой (вес телефона) сервопривод начинает вибрировать и ощутимо шуметь.
Есть предположение, что это связано именно с особенностями Arduino. Может быть ШИМа, а может чего-нибудь ещё.
Есть ли идеи, с чем это может быть связано?

среда, 6 июня 2012 г.

Контроль заряда и разряда аккумулятора

В общем по поводу зарядки и контроле :) Если использовать делитель напряжения и контролировать по аналоговому входу то это идеальный вариант для контроля разряда батареи, при чем можно сделать что бы выводился индикатор батарейки прямо на экран компа (ну это уже программирование - и ваша забота :))))))
Заряд по идее то же можно контролировать таким методом ,но не нужно, так как литиевые аккумы заряжаются очень тонко под управлением контроллера(втроенного в акум) если мы поставим светодиод который при определенном значении на выводе аналогового входа загориться или наоборот потухнет (не очень это важно) то может произойти следующее:
Я очень сомневаюсь что уровень напряжения всегда один при полном заряде аккумулятора и при длительной эксплуатации он 100% измениться, а это значит что при нашей индикации  "аккумулятор заряжен" аккумулятор может быть не заряжен до конца, либо он уже давно зарядиться а индикации о заряде так и не будет. Предлагаю вот такую схемку(криво нарисованную в пэйнте): 
При полном заряде аккумулятора контроллер отключит банки и тока через резистор, а соответственно и через светодиода практически не будет, что и проиндицирует о полном заряде аккумулятора.





UPD (11.06.2012, 17:30) //Женя
В качестве контроля зарядки есть такое предложение - параллельно подцепить

 LED Voltage Meter (Blue)

LED Voltage Meter (Blue)
Brand: DFRobot
Product Code: DFR0130-B
Price: $6.80 


Дорого, но красиво, и видно через сколько зарядится.
Как только контроллер отключит банки от источника - напряжение резко возрастет с 8,4 V до 9-12В - значит готово!

вторник, 5 июня 2012 г.

Трудности в blogger.com

Поделюсь опытом работы в blogger.com.

1. В статьях с большим количеством букв, советую использовать разделитель поста – кнопка "Вставить ссылку "Дальше"  на панели инструментов редактора поста.
– кнопка "Вставить ссылку "Дальше".


2. В комментариях можно вставлять ссылки. Интерфейсно – фигушки, а вот html-тегом <a> запросто. Пример: "Вот ссылка в комментарии на <a href="http://www.yandex.ru">Яndex</a>".
Получится вот так: "Вот ссылка в комментарии на Яndex".

3. В blogger.com нельзя делать листинги исходников с подсветкой синтаксиса. Для этого я использую сервис Online syntax highlighting. В комментариях не работает, только в постах.

"Правильное питание"

МатЧасть:
Литий-полимерные (Li-Pol) аккумуляторы
http://www.rcdesign.ru/articles/engines/lipol

дополнительно :
Силовые NiMH аккумуляторы http://www.rcdesign.ru/articles/engines/nimh
Силовые NiCd аккумуляторы http://www.rcdesign.ru/articles/engines/nicd

(памятка)



Витрина: Источник
7.4V Lipo 2200mAh Battery (Arduino Power Jack)


7.4V Lipo 2200mAh Battery (Arduino Power Jack)
Brand: DFRobot
Product Code: FIT0137
Reward Points: 19
Availability: 49
Price: $18.90Share on twitter
DescriptionReviewIntroduction

воскресенье, 3 июня 2012 г.

Формат сообщений Робота Мити

Сообщения используются на участках ПК–телефон и телефон–контроллер для передачи команд и сигналов с сенсоров.
Связь между телефоном и контроллером будет реализована посредством Bluetooth, поэтому, возможно управление контроллером непосредственно с ПК.

Формат сообщения

Длина сообщения всегда 5 символов (байт).
cXXXX, где c – идентификатор сообщения (всегда 1 ASCI символ), XXXX – значение сообщения – знаковое или беззнаковое число в шестнадцатиричном представлении от 0000 до FFFF (всегда 4 символа).

Идентификаторы сообщения

Заглавная литера – сообщение с числовым значением (скорость, угол поворота, значение с сенсора и т.д.). Строчная литера – разовое сообщение (кивнуть, повилять хвостом и т.д.).
L [left] – команда задания скорости и направления левому двигателю
R [right] – команда задания скорости и направления правому двигателю
D [drive] – команда задания одинаковой скорости и направления обоим двигателям
H [horizontal] – команда поворота головы на заданный угол в горизонтальной плоскости
V [vertical] – команда поворота головы на заданный угол в вертикальной плоскости
E [error] – сообщение об ошибке
F [face] – команда смены настроения
[illumination] – команда управления фарами: I0001 – включить, I0000 – выключить
T [tail] – команда поворота хвоста на заданный угол
t [tail] – команда на виляние хвостом: t0001, t0002, t0000
y [yes] – команда кивания головой: y0001, y0000
n [no] – команда мотания головой: n0001, n0000
f [fire] – команда на выстрел (ИК пушка): f0001, f0000
h [hit] – сигнал попадания (ИК сенсор): h0001, h0000

Передача сообщений от ПК к телефону производится посредством UDP-датаграмм. Т.е. возможны потери пакетов. Сообщения управления двигателями и сервоприводами передаются постоянно – так устроено Windows-приложение. Поэтому потери отдельных пакетов не страшны. Однако, могут быть потеряны неповторяющиеся сообщения: y, n, f и т.д. Поэтому они передаются трижды подряд.

И ещё одно важное замечание. В Android-приложении для исключения повторного выполнения одинаковых команд применяется хэш-таблица. Ключ таблицы – идентификатор сообщения, значение – значение сообщения. Каждое обработанное сообщение сохраняется в хэш-таблице. Когда приходит новое сообщение, его идентификатор ищется в хэш-таблице, если находится и значение совпадает со значением нового сообщения, то новое сообщение игнорируется. Этот алгоритм работает при управлении двигателями и сервоприводами, но для одиночных команд (y, n, f...) требует пояснения. Для таких команд, сообщения передаются парами: сначала со значением "0001", потом "0000". Это делается специально для смены значения в хэш-таблице. А для передачи в UDP-датаграммах, из-за возможных потерь пакетов каждое сообщение в паре ещё и троекратно повторяется. Вот как передаётся команда на выстрел:

f0001
f0001
f0001
f0000
f0000
f0000

Далее, описывая значения некоторых команд, я не буду упоминать нулевые значения одиночных команд и  трёхкратные повторения, но это не значит что их нет.

Команды смены настроения

F0001 – обычное выражение лица
F0002 – счастливое лицо
F0003 – грустное лицо
F0004 – злое лицо
F0005 – лицо тяжело больного робота
F0102 – хочется играть (прыгает, на сколько это позволяет платформа)
F0103 – сильно расстроен (грустно и повесил голову)


Сообщения об ошибках

На всех трёх уровнях могут возникать ошибки. Но если на уровне ПК вывод сообщения об ошибке сложностей не вызывает, то с уровней контроллера робота (тела) и с уровня Android-приложения (головы), информацию об ошибке надо ещё доставить на уровень ПК. Для этого используется событие "E". Ошибки уровня контроллера имеют вид "E00xx", где xx – код ошибки от 00 до FF. Ошибки уровня Android-приложения имеют вид "E01xx".

E0001 – Неверное сообщение – возникает, если сообщение не удалось разобрать на команды/событие и значение
E0002 – Неизвестная команда
E0003 – Недопустимая команда в РобоСкрипт
E0004 – Неверная последовательность команд в РобоСкрипт
E0005 – Невозможно выделить необходимый объём памяти
E0006 – Попытка выхода за границы выделенной для РобоСкрипт памяти
E0007 – Недопустимая команда вне РобоСкрипт

Команды РобоСкрипт

r00xx – Воспроизведение РобоСкрипта. xx задаёт номер программы (от 00 до 0A)
r01хх – Старт записи программы на РобоСкрипт. xx задаёт номер записываемой программы (от 00 до 0A)
r02xx – Служебная, не использовать. Формируется в скетче robo_body и передаётся в RoboHead для сигнализации об окончании режима записи РобоСкрипта
Zxxxx – Если xxxx больше 0, то команда выполняет выделение оперативной памяти для записи и временного хранения программы на РобоСкрипт. xxxx – количество действий в РобоСкрипте. Действие – это всегда две команды: команда на выполнение роботу и команда, определяющая задержку до следующего действия (W).
Z0000 – Признак окончания программы на РобоСкрипт.
Wxxxx – Задержка в миллисекундах до выполнения следующего действия.

Подробней о РобоСкрипте можно почитать здесь.

Заказ в DFRobot

Давайте перечислим ещё раз что мы ищем. На магазин в ссылках не обращайте внимание, это просто список товаров. Цены примерные.

  1. Кронштейны + 2 сервы $36.00
  2. Платформа + контроллер Romeo $79.00
  3. Контроллер Romeo $39.50 - ПОКА НЕТ В НАЛИЧИИ
  4. DFRobot Bluetooth V3 $21.90
  5. 7.4V Lipo 2200mAh Battery $18.90 (советуем всем)
  6. Адаптер колёс $0.49 (это если думаете поставить другие колёса)
Список товаров с ценами тут.

UPD (13.06.2012 14:19):
Сделал заказ. Доставка Post Office. Не EMS - есть некоторый риск. Огромное спасибо Жене, он не участвует в этом заказе, но он договорился о скидке в $35. Так что на троих доставка обойдётся в $31 (по $10,33!).
Вот что сказал PayPal (тут есть курс рубля):

Там в конце списка всякие женские (female) штучки – таки они ко мне :)
Что у нас получилось:

Сергей:
$21,90 + $18,90 + $36,00 + $79,00 + $10,33 = $166,13 = 5634,14 руб.
Доставка из Москвы: 408,86 руб.
Итого: 6043,00 руб.

Алексей:
$36,00 + $79,00 + $10,33 = $125,33 = 4250,44 руб.

Дмитрий:
$21,90 + $75,60 + $79,00 + $0,98 + $3,80 + $2,35 + $2,15 + $1,95 + $1,80 + $10,34 = $199,87 = 6778,40 руб.

Движение заказа:

13.06.2012: DFRobot получил деньги.
14.06.2012: Заказ скомплектован и находится на пути к курьеру. До отправки обещают 3 рабочих дня.
18.06.2012: Заказ отгружен со склада.
25.06.2012: Таможенное оформление завершено. Выпущено таможней. Покинуло место международного обмена.
27.06.2012: Прибыло в место вручения.
27.06.2012: Получил!

Ровно 2 недели! Из Китая!