РадиоКот :: Радиоуправляемый робот с датчиками "Ashley"
Например TDA7294

РадиоКот >Конкурсы >пкпч2014 >

Теги статьи: Добавить тег

Радиоуправляемый робот с датчиками "Ashley"

Автор: Pika4u
Опубликовано 19.09.2014
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2014"

Торжественно поздравляю Кота с его девятилетием и хочу подарить замечательную конструкцию с кодовым названием “Ashley”.

Предыстория.

А началось все с того, что я, смотря на платформы с радиоуправлением, подумал - а неплохо было бы добавить датчики. Но в процессе идея воплотилась в отдельную самостоятельную конструкцию. Было разработано 3 версии, но первая и вторая были не совсем удачными. Первый прототип был модульный (отдельно плата контроллера, драйвер двигателей и датчики). Второй прототип был собран на одной плате, но ввиду малого количества датчиков был признан неуспешным. После долгого перерыва был собран третий прототип, получивший кодовое имя “Ashley”. Теперь небольшое отступление, касательно кодового имени: я все свои проекты называю американскими женскими именами. Ну вот бзик у меня такой :) То или иное имя проект получает в честь какой-нибудь запомнившейся мне женщины, к примеру: первый прототип назывался Molly (тут исключение, имя мне просто понравилось), второй прототип назывался Tiffany, в честь Тиффани Максвелл из фильма ”Мой парень - псих”, которую сыграла Дженнифер Лоуренс. Этот же проект назван в честь Эшли Уильямс - персонажа трилогии “Mass Effect”. Знааааю, это очень и очень странно. :)

Вступление.

Сразу хочу предупредить-это моя первая статья, так что сильно не пинайте, пожалуйста :)

Для начала определимся с требованиями, которые предъявляются к проекту:

  1. Желателен полный независимый привод.
  2. Колеса должны быть достаточно большого диаметра (от 50 мм).
  3. Мощность двигателей должна регулироваться.
  4. Потребление всей платформы в районе 600 - 800 мА.
  5. Должны быть акселерометр и гироскоп.
  6. Должен быть термометр.
  7. Опционально - барометр.
  8. Питание желательно от Ni-Mh аккумуляторов(ибо Li-Pol опасно).
  9. Необходим сонар.
  10. Желательно наличие зарядного устройства, чтобы не вынимать аккумуляторы, а просто подсоединять сетевой источник питания.
  11. Желательно иметь 2 способа РУ. Один из них Bluetooth.
  12. Ну и желательно иметь возможность измерять скорость своего движения.

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

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

Начнем разбиратья с электроники. Сначала определимся с “мозгом” конструкции. У меня это МК ATMega128, так как памяти и ножек ввода-вывода более чем достаточно. Ну и потому, что он у меня есть.  Дальше думаем над датчиками:

  1. В качестве акселерометра и гироскопа я взял модуль с чипом MPU-6050. Это 3-осевой акселерометр и 3-осевой гироскоп в одном чипе.  Диапазон акселерометра настраиваемый, максимально +- 16g. Для сравнения - летчик самолета при выполнении фигур высшего пилотажа испытывает перегрузки до 12g. Так что, для наших целей даже слишком. Диапазон гироскопа тоже настраивается, максимально +-2000 °/s, что соответствует 5.5 оборотам в секунду. Даже много. В итоге, акселерометр настроен на диапазон +-2g, а гироскоп на диапазон +-250 °/s. Также, на борту у чипа имеется термометр, но я так и не понял зачем, если он все равно немного врет (об этом попозже).  И стоит эта няшка всего 150 рублей за модуль (чип дешевле, но паять его лень).
  2. В выборе сонара я ни секунды не сомневался. Конечно же, это небезызвестный HC-SR04. Про него вы и так много слышали, так что скажу только, что измеряет расстояние в пределах 2 см – 4 м. От себя добавлю, что очень критичен к типу поверхности, имеются проблемы с определением расстояния до звукопоглощающих и наклонных поверхностей.  Стоит совсем смешно, около 45 рублей за штуку.
  3. Я уже упоминал, что хотелось бы иметь барометр.  Самый распространенный - это BMP085. Но он выпускается в совсем уж непаябельном корпусе, так что покупаем модуль за 150 рублей. Измеряет он давление в пределах от 30 до 110 кПа, диапазон измеряемых температур не удалось найти.
  4. В качестве термометра берем знакомый всем DS18B20. Про него даже говорить не буду, да и не надо, все про него и так знают. Стоит в районе 50 рублей, измеряет температуру от -55°С до +125°С.
  5. В качестве драйвера двигателей будем использловать Н-мост на двух сборках irf7389. Сборки стоят в районе 25-30 рублей, необходимо 8 штук (по 2 на двигатель). Возьмите с запасом, ибо пожечь их не так сложно.
  6. Аккумуляторы я взял GP  2700 series. Брал на ебее, оптом. Вышло 1000 рублей за 8 штук, что я считаю, очень неплохо. В идеале, надо было брать Sanyo Eneloop.
  7. На плате размещено зарядное устройство на основе микросхемы mc33340. Информации в русскоязычном интернете про нее немного, пришлось немного повозиться с поиском рабочей схемы.
  8. У нас же должен быть Bluetooth! Для этого я взял Bluetooth-модуль HC-06(заказывал HC-05, привезли HC-06, ну ладно, ругаться не стал). Отличия - у HC-06 режим работы только Slave. Но нам большего и не надо :) При наличии программатора перешивается хоть в HC-05, хоть в HC-07. По факту, это просто радиоудлинитель Bluetooth-UART. Цена – 150 наших рублей.
  9. В качестве второго способа РУ (для тех, у кого нет Bluetooth) я взял модуль на основе чипа NRF24L01+. Брал относительно редкий (но найти можно) модуль в smd-исполнении по 35 рублей за штуку.  Выходная мощность - 0dBm. Дальность хуже, чем указано в даташите, но грешить надо на антенну, ибо, скорее всего, китайцы разработали ее неверно.  Для дальнобойной связи(а вдруг, кому захочется) есть модуль на этом же чипе, но с усилителем. Но лучше бы я не стал заморачиваться и взял бы что-то типа CC1101, ибо nrf24l01 меня из себя вывели(но об этом ниже). 
  10. В качестве чипа памяти взял M24M01 на 1 Мбит. Стоит 100 рублей, интерфейс-I2C. Память стоит для дальнейшей модернизации, типа хранение логов и прочее. 
  11. В качестве датчиков скорости берем модули на основе LM393, стоят в районе 100 рублей, нужно 2 штуки. Принцип работы-на перекрывании светового потока от фотодиода диском с прорезями, а в качестве приемника-фототранзистор. Ничего не напоминает? Да это же оптический энкодер! :)

Итак, с деталями определились, отлично! Теперь осталось нарисовать принципиальную схему всего этого чуда, сделать плату и вперед!

Принципиальная схема.

Схема и печатная плата разрабатывались в Eagle CAD. На самом деле, несмотря на кажущуюся сложность и на очень “интересную” реализацию некоторых моментов, это очень мощный инструмент для разработчика.

Для удобства чтения я разбил схему на 4 листа. Разберу каждый отдельно, разумеется. Для связи между листами я использовал метки, метка в своем названии, помимо собственно названия вывода, имеет номер листа, к примеру: 18B20_DQ/3.2C означает, что этот вывод ведет к третьем листу(первая цифра после слэша). Все картинки кликабельны. Ну все, поехали! 

Контроллер.

Ну тут ничего интересного, стандартная обвязка микроконтроллера. Ну и схема для согласования логических уровней 3.3В и 5В интерфейса I2C.

Драйвер двигателей.

Тут представлены 4 Н-моста на сборках irf7389. Сборки коммутируются восемью транзисторами BC846. Мощность регулируется с помощью ШИМ, благо, частота небольшая и транзисторы в сборках успевают переключаться.

Периферия.

А вот тут самое интересное. Плату я делал под HC-05, но пришел HC-06, благо, в нашем случае они взаимозаменяемые. У HC-06 вывод PIO11 (режим переключения на AT-команды) неактивен, после установки соединения модуль перестает отвечать на AT-команды. Из всех индикаторных светодиодов активен только LED4 (установлен на PIO1). Если он часто мигает - модуль в режиме ожидания соединения. Если светодиод постоянно горит – соединение установлено. На вывод RST я повесил резистор на землю, чтобы модуль включался только после подачи контроллером логической единицы на этот вывод. Таким образом, модуль можно включать и выключать. Не могу не сказать еще вот про что - уже в процессе написания этой статьи HC-06 начал вести себя странно. Светодиод моргает при включении, да, но реже раза в 3. Думал, что-то типа калибровки и все такое, но нет, модуль на AT команды не отвечает, компьютером не обнаруживается. Начал разбираться, опытным путем выяснил, что если нажать на плату модуля, то все работает. Потом все свел к одной единственной детали-кварцу. Нажимаешь на кварц-все ок, отпускаешь-не ок. В итоге, перепаял кварц, простой прогрев не помог. Но предупреждаю, нужны нетрясущиеся руки, ибо кварц мелкий. Так что, если светодиод стал мигать редко, смотрите в сторону кварца.

Отдельные модели для датчиков я решил не делать, так как они все равно все внешние, так что все выводы выведены на разъемы WF (2.54 мм). Вот такие:

Датчиков скорости всего 2. Теперь поясню, для чего: поворот у нас сделан танковый. Поясню на примере: если нужно повернуть вправо, то крутятся колеса только на левой стороне. То есть, ни одно колесо не вращается все время, всегда есть такие направления, в которых какое-либо колесо покоится. Благодаря такому способу разворота, маневренность получается очень хорошей, колеса не проскальзывают даже на линолеуме :) Спасибо полному независимому приводу за это!

Блок питания и зарядное устройство.

Схему зарядного устройства я комментировать особо не буду, скажу только, что она почти полностью взята с чешского сайта www.hw.cz.  Для зарядки подойдет источник переменного напряжения 14-16 Вольт, который может выдать в районе 0.5 А. Схема рабочая, на просторах рунета я нашел несколько людей, у которых все заработало, это и стало критерием. Вообще, первоначально я склонялся к варианту на max713, но дорого, к сожалению. 5 штук mc33340 стоят, как одна max713. 

Блок питания реализован на двух LM1085 и одной AMS1117. Две LM1085 обеспечивают выходное напряжение 5 В (один выход - для драйвера двигателя, другой - для питания электроники). AMS1117 обеспечивает 3.3 В для электроники. Почему именно эти стабилизаторы? Да просто они у меня были в достаточном количестве :)

Схема девайса, подключаемого к компьютеру.

Тут все просто, ATMega8 выступает в роли “посредника” между NRF24l01 и UART. Я поступил так-купил USB-UART преобразователь на PL2303 и подключил его к МК. Преобразователь типа такого.

Внешний вид, к слову, вышел достаточно необычным.

Итак, со схемой разобрались, теперь надо это чудо собирать!

Печатная плата.

Когда дело дошло до печатной платы, во мне внезапно проснулось чувство прекрасного, так что я послал куда подальше свое зеленое земноводное, которая меня душила, и заказал платы на IteadStudio. Я заказывал у них и раньше, так что уже знал, что качество будет на высоте. Габариты основной платы: 150х94 мм, плата РУ имеет габариты 42х38 мм. Не буду томить, вот как они выглядят(все фото кликабельны).

Шикарно, не правда ли?  Итак, дальше у нас по плану сборка.

Сборка.

Про сборку можно (и нужно!) написать очееееень много всего. Но обо всем по порядку:

  1. Начинайте сборку с зарядного устройства.  После пайки визуально осмотрите качество, лучше всего, если флюс с платы вы сразу же уберете, чтобы все вам было видно и к каждой детали вы смогли подлезть мультиметром. Затем подключите источник переменного напряжения к разъему Charger и аккумуляторы к разъему Re-Battery и переведите переключатель питания в положение C(Charger). В режиме зарядки аккумулятора LED1 должен гореть 1.4 секунды и 1 секунду не гореть (микросхема переходит в режим капельной подзарядки каждые 1.4 секунды для замера напряжения на аккумуляторах). Аккумуляторы, после проверки, лучше сразу отключить. В режиме обслуживания светодиод постоянно горит. А теперь внимание! Внимательно отнеситесь к качеству микросхем, ибо мне первый раз прислали “левые” MC33340. Светодиод, вне зависимости от режимов работы постоянно горел. Если что-то не работает, то сперва посмотрите напряжение на 1 выводе MC33340, оно должно быть около 1-1.4 В.
  2. Затем спаяйте блок питания и ВНИМАТЕЛЬНО осмотрите его. Затем можете попробовать к разъему Re-Battery подключить аккумуляторы. Переведите переключатель питания в положение P(Power) и замерьте все напряжения, которые выдают стабилизаторы. Если все в порядке, то отключаем аккумуляторы и продолжаем. Советую еще установить хотя бы небольшой радиатор на стабилизаторы. Я приклеил на термопасту пластинку от детского конструктора.
  3. Дальше аккуратно припаиваем МК, устанавливаем обвязку микроконтроллера, припаиваем разъем для программирования, подсоединяем программатор(я пользуюсь USBAsp), не забывая установить джампер подачи питания на плату (разъем нестандартный, я изготовил специальный шлейф для подсоединения к USBAsp, распиновка на фото), запускаем программу(я пользуюсь SinaProg) и пробуем найти МК. Прошивать его мы будем позже, сейчас главное, проверить его на признаки жизни. На плате РУ, кстати, стоит этот же разъем. 
  4. Дальше допаиваем остальную периферию и разъемы.  NRF24L01 и HC-06 припаиваются с обратной стороны, разъемы припаиваются в последнюю очередь. ВНИМАНИЕ! На моей плате есть ошибка (в архиве все исправлено). Чтобы ее исправить – из модуля акселерометра вытаскиваем пины SDA и SCL, проводками кидаем SDA и SCL от стоящего рядом барометра. Вот фото: 

Поздравляю, вы собрали плату! Но это еще не все, нужно собрать плату РУ на NRF24L01. Там ничего сложного, так что так подробно расписывать не буду. Единственное-после пайки проверьте МК точно так же, как мы проверяли до этого. Напоследок, фото, как это все выглядят две собранные платы:

Отмывал платы, кстати, 646 растворителем. Настоятельно рекомендую, ибо отмывает все и не оставляет следов. Но обязательно вентилируйте помещение, ибо растворитель состоит на 50% из толуола! Можете словить неплохие глюки, но за этим последует ужасное похмелье и возможные необратимые изменения нервной системы! Раньше, к слову, промывал ацетоном, но он рыжие хлопья оставляет после себя. 

А теперь  самая-самая интересная часть.

Шасси.

Я долго ломал над этим вопросом голову и, в конце концов, свел все к двум очевидным  вариантам: сделать самому или купить. Для самостоятельного изготовления у меня не хватало навыков и инструмента, так что остается один вариант-покупка. На самом деле, вариантов покупных шасси в интернете море, от обычных колесных до гусеничных. Немного разобраться в них помогла статья https://habrahabr.ru/post/219427 .  В итоге, я решил остановиться на варианте под номером 4. Вот он: https://www.ebay.com/itm/300922607756?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Его плюсы
1. Два яруса (места море).

2. Независимый полный привод, то есть, у каждого колеса свой мотор с редуктором (я считаю, это самый жирный плюс этой платформы, но тут встает вопрос-как эту штуку заставить поворачивать? Ответ на него будет дан выше).

3. Есть место для крепления батарейного отсека под 4 АА-аккумулятора. И даже не одно, а два, ибо каждая сторона симметрична.

4. На каждом редукторе есть диск с прорезями (проще говоря, добавив к конструкции фотодиод + фототранзистор мы получим оптический энкодер, а отсюда уже вытекают спидометр и тахометр. И это, внимание, на каждом колесе!).

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

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

Вот характеристики шасси:

Передаточное число редуктора: 48:1

Напряжение питания одного двигателя: 3-6 В

Потребление одного двигателя: 100-120 мА

Скорость: 20-48 м/мин

Диаметр колеса: 66 мм

Вес мотора: 50 г

Ну что, поехали собирать?:)

Все приходит в полукиллограмовом пакете.  За целостность можете не волноваться, акриловые половинки приходят замотанными четырьмя слоями пупырчатого полиэтилена. К сожалению, сфотографировать пакет я не успел, уж очень не терпелось его вскрыть.
Фото содержимого (акриловые половинки, пластиковые зажимы и диски для энкодера приходят в защитной пленке. О да, вы уже предвкушаете то чувство, когда будете ее снимать?).

                                                                              

Перед тем, как начать сборку, расскажу, пожалуй, что нам еще потребуется:

  1. Разумеется, это крестовая отвертка и прямые руки.
  2. В комплекте идет 6 стяжек, я считаю, что для жесткой конструкции этого мало, поэтому сразу же докупаем крепеж: латунные стяжки 30+6, болты М3х8 ,гайки М3.

Ссылки на все ништяки, которые надо докупить.

https://www.ebay.com/itm/331216050114?_trksid=p2059210.m2749.l2649&var=540404796588&ssPageName=STRK%3AMEBIDX%3AIT  латунные стяжки

https://www.ebay.com/itm/251602485703?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT  болты

https://www.ebay.com/itm/231177315263?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT  гайки

Небольшое лирическое отступление: к шасси прилагается инструкция на английском с картинками, по которой вроде все понятно, но все равно нифига не понятно. Но вам будет легче, ведь я все расскажу и покажу:)

Ну что же, хватит слов, приступаем к сборке:

Шаг 0: подпаиваем проводки вот так (не надо заморачиваться с сечением, обычных проводов, оторванных с 1.27 мм шлейфа хватает, по длине-сантиметров 15 хватит)

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

Шаг 0 проделываем 4 раза.

Шаг 1:

Сначала наживим моторы на зажим двумя болтами М3х30(тут надо отметить, что вставлять болты надо с наружной стороны мотора. Это сторона, у которой ось, выходящая из редуктора, длиннее. Или, если по длине они одинаковые для вас, то внешняя сторона та, на которой располагаются выводы щеток).

Затем вставляем в половинку, которая будет нижней (абсолютно неважно, какая из них, они обе одинаковые) второй зажим следующим образом

Затем, держа второй зажим одной рукой, мотор с первым зажимом вставляем вот так

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

Шаг 1 надо проделать 4 раза.

Шаг 2:

На все 4 мотора надеваем колеса.

Затем, на все колеса надеваем диски с прорезями

Тут надо определиться, какая сторона у вас передняя. На передней стороне, в разрезе, крепим термоклеем (вообще, люблю я его, универсальная штука) УЗ-сонар, как показано на фото. Как-нибудь, когда время будет, придумаю способ его иначе закрепить.

Делаем шлейф с PLS-гнездами на 4 штыря на одном конце, гнездо HU-4 на другом(эти разъемы, по идее, надо обжимать, но я не смог в городе найти подходящего кримпера, так что, эти клеммы я сначала паял, потом обжимал крупными пассатижами), длина примерно сантиметров 15. Помечаем красной и черной термоусадкой + и – питания соответственно. Ну и, согласно маркировке на сонаре(да-да, она на нем самом написана), втыкаем шлейф. Небольшое замечание-разъем лучше отогнуть, как на фото. Либо припаять нормальный, не угловой разъем.

Рспиновка разъема сонара на плате(заодно и распиновка разъемов для энкодеров)

На всякий случай, покажу фото, как надо примерно припаять и обжать клемму без кримпера(фото получилось не очень, телефон макро плохо делает)

Двигатели пронумерованы следующим образом:

Дальше ставим клеммы на другом конце проводов двигателей. Клеммы ставятся HU-2(такого же типа, как ставили на сонар, только 2 клеммы, а не 4). 

Теперь нужно подключить двигатели согласно нумерации к плате, зашить тестовую прошивку и проконтролировать, чтобы все двигатели крутились вперед. Иначе-перепаиваем провода или меняем местами клеммы в разъеме(что гораздо проще).

Если все ок, то фиксируем провода термоклеем.

Шаг 3:

Настала очередь достать стяжки, болты и гайки из пакетика с крепежом.

P.S. Буду пока что рассматривать вариант, когда вы не докупали крепеж, т.е. стяжек всего 6, так как мне мой дополнительный крепеж так и не пришел еще. Будем выкручиваться, деваться некуда же :)

Сначала устанавливаем 6 стяжек следующим образом-резьбу на стяжке просунуть в отверстие в нижней половинке и закрепить снизу гайкой. Таким образом, гайки у нас расположены на днище. Оптимальная расстановка стяжек показана на фотографиях:

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

 

Шаг 4:

А теперь один из самых ответственных моментов - необходимо установить датчики скорости на верхнюю половинку. Для удобства, можно подать на датчик питание, на плате загорится светодиод, когда он погаснет, то это значит, что между фототранзистором и фотодиодом возникло препятствие. Таким образом, можно визуально контролировать процесс. Устанавливать лучше на двухсторонний скотч, а потом уже окончательно на термоклей, ибо его потом отодрать от акрила, ничего не повредив, очень сложно. Даже практически невозможно, я сказал бы :)

Устанавливать надо по одному датчику на одно колесо на каждой оси. На какое-нет разницы. Я предпочел вариант, когда датчики установлены по диагонали, так развесовка лучше, чем на одном боку.

Вот как примерно надо установить датчики скорости:

Точно так же ставим и второй.

Делаем 2 шлейфа с PLS-гнездами на 3 штыря на одном конце, а розетки HU-3 на другом, длина примерно сантиметров 15. Помечаем красной и черной термоусадкой + и – питания соответственно. Ну и, согласно маркировке на датчиках, втыкаем шлейф.

Распиновка разъема на плате.

Шаг 5:

Финальные штрихи - устанавливаем батарейный отсек.

На плате есть места под установку двух отсеков 4хАА, но у меня был только на 8 один, так что надо будет немного доработать половинку-сделать отверстие в указанном месте. Можно просверлить, но я его пропаял паяльником и доработал надфилем. Лучше бы сверлил, плавленый акрил воняет очень противно. Будете сверлить-аккуратнее, акрил очень хрупкий. Закрепил винтом М3х8 и гайкой М3, которые пришлось покупать в ближайшем радиомагазине.

 

Поздравляю, вы собрали шасси! Вот общий вид получившейся красоты

Соединение платы и шасси

Теперь же соединяем плату и шасси. Сначала нужно установить, как показано на фото 4 стяжки (на момент написания статьи, мои стяжки мне еще не пришли из Китая, так что я использовал П-образный профиль из детского железного конструктора, который был нагло отобран у младшего брата. И то, профилей всего было 3, ну ладно, пусть пока что на трех постоит).

Затем, нужно немного рассверлить отверстия на плате (немного не рассчитал диаметр, в архиве я это пофиксил). 

Ну и потом прикручиваем плату к стяжкам.

Теперь подсоединяем все шлейфы (энкодеры в любом порядке, все равно, какой первый, а какой второй).

И можно их красиво и нежно уложить, применяя нейлоновые хомуты.

Вот и все! Платформа полностью собрана!

Софт

Начну с софта для МК. Прошивка написана в IAR’e, подробно разъяснять не буду, прошивка полностью откомментирована. 

Термометр и барометр опрашиваются примерно каждые 4 секунды, сонар, акселерометр и гироскоп - через один прием пакета(примерно 0.15 секунды). Скорость считается за каждую секунду.

Прошивал МК с помощью программатора USBAsp и программы SinaProg. Что основную плату, что плату РУ можно прошивать, не подавая внешнего питания, достаточно установить перемычку на программаторе, которая включает подачу питания на плату(главное, двигатели отсоедините, ведь у вас зашита тестовая прошивка, а то будет превышение тока и USB-порт может выгореть).

.hex файлы находятся в папках Release в архиве с исходниками. В папке Ashley_cpp-прошивка и исходники для основной платы, в папке usb_board-для платы РУ.

Фьюзы для основной платы(ATMega128)

Фьюзы для платы РУ(ATMega8)

Теперь разберем порядок добавления Bluetooth-устройства:

  1. Включите Bluetooth.
  2. Заходим в Панель управления-Оборудование и звук. Нажимаем “Добавление устройства Bluetooth”. Ждем, пока найдет устройство. У меня название было по дефолту HC-06(я изменил имя), у вас оно может быть другим.

  1. Жмем Далее. Появляется окно, выбираем вариант “Введите код образования пары устройства”. С завода код 1234.

  1. Ждем, пока настроятся COM-порты.

  1. Затем заходим в Панель управления-Оборудование и звук-Устройства и принтеры , ищем наше устройство, кликаем правой кнопкой и в меню выбираем Свойства.  Во вкладке Оборудование смотрим номер порта и запоминаем. Затем во вкладке Службы ставим галочку рядом с “Последовательный порт (SPP) “Dev B” ”.

Итак, с добавлением устройства разобрались.  Теперь запускаем программу Ashley.exe из архива.

Главное окно программы:

При первом запуске сначала нажимаем кнопку Настройки.  Откроется такое окно:

Здесь нужно задать настройки. Порт для 2.4 ГГц можете определить в диспетчере устройств, воткнув USB-UART с припаянной к нему платой. Самое главное-указать порты. Другие настройки можете не указывать, после нажатия кнопки Сохранить они выставятся по дефолту. Сохраняете в удобном для вас месте конфигурационный файл и нажимаете кнопку Закрыть(можете нажать красный крестик, будет то же самое).

Затем нажимаете кнопку Загрузить и выбираете тот самый конфигурационный файл, который мы только что создали.

Настройки отобразятся справа, можете сверить. Затем выбираете способ подключения(я изменил скорость, у вас она будет 9600, в архиве прошивка для 9600, работать будет, инфа 100%).

 

Вот тут напишу отдельно. Последние две недели я очень много слез пролил из-за nrf24l01+. В данный момент, у меня почему-то связь работает только в одну сторону-от компьютера к устройству. Так что, весь код, касающийся nrf24l01+, в программе закомментирован (заголовочный файл с классом для работы с nrf24l01+ подключен, в архиве он есть, но инициализация и работа с модулем закомментированы). В ближайшее время я, конечно же, разберусь с этой неприятностью. Может быть, ваши пытливые умы смогут найти у меня ошибки. Хотя я взял код работы с nrf24l01+ с прошлой версии, там все замечательно работало. Чудеса, да и только. 

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

Ну все, немного отвлеклись и хватит. После выбора нажимаем кнопку подключить, и если вы выбрали подключение по bluetooth и все успешно, то светодиод LED4 на плате станет гореть постоянно и выскочит такая табличка:

 

После нажатия ОК(можете красный крестик нажать, одно и то же будет) текущее окно закроется и откроется новое.

Названия говорят сами за себя, но все же поясню на всякий случай.

С кнопкой Закрыть все понятно, расскажу, для чего предназначена кнопка Коэфф.

При установлении коннекта платой сразу же передается один пакет(32 байта данных)-это калибровочные коэффициенты барометра, которые записаны в его памяти и индивидуальны для каждого экземпляра чипа. Если вдруг вмешался Ктулху, то данные могут не передаться и будет белиберда во всех строчках, связанных с барометром. Вот для этого и предназначена кнопка Коэфф., она просит МК еще раз передать калибровочные коэффициенты. Ну а если и это не сработало, то значит, что барометр не работает или его украло НЛО.

Управление платформой следующее: направление задается стрелками (WASD тут не работает!), мощность двигателя регулируется кнопками + и -, расположенными в ряду с цифрами или непосредственным движением трек-бара мышкой. Чекбоксами в разделе “Двигатели” обозначается направление работы каждого двигателя. FL-Forward Left, передний левый двигатель(или под номером 1), FR-Forward Right, передний правый двигатель(под номером 2). Остальные аналогично, BL-двигатель под номером 3, BR-под номером 4. В строке под надписью “Расстояние” выводятся показания сонара. Для контроля коннекта справа снизу есть 2 строки, которых отображается количество успешно принятых пакетов и кол-во битых пакетов. Иногда (когда вмешивается Ктулху) передача сбивается, причем так, что платформа правильно отзывается на нажатия клавиш, но показания датчиков не обновляются. В среднем, у меня выходило на 36000 успешных пакетов около 10 битых.  Можно уменьшить вероятность ошибки, увеличив в коде (программы для компьютера, а не МК!) значение свойства Interval у класса timer1 (у меня стоит 90, можно смело ставить около 150, значение показывает, через какое кол-во миллисекунд будет вызываться обработчик события).

Если нажать кнопку Отладка, то окно расширится, вот, что будет

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

После нажатия кнопки Закрыть снова открывается начальное окно. Если отключить устройство, не закрывая окна, то появится такая табличка. Нажав ОК или крестик вы попадете опять в главное окно.

По софту для компьютера вроде все. Да и вообще, нам с вами расставаться скоро =(

Вместо заключения.

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

  1. Добавить фары (не знаю, зачем, но круто же).
  2. Добавить датчик влажности.
  3. Сменить nrf24l01 на что-то помощнее, типа СС1101(вроде бьет метров на 250-300, но это уже и не 2.4 ГГц).
  4. Добавить измерения напряжения аккумулятора (хотел реализовать в этой версии, но, извиняюсь, забыл).
  5. Реализовать потенциал обучающего комплекта. На плате стоит EEPROM на 1 Мбит, в планах написать что-то вроде языка программирования специально для этой платформы.
  6. Ну и конечно же, поставить дальномер на поворотную платформу(на основе сервопривода) для сканирования местности. Но дальномер уже будет стоять получше, что-то типа инфракрасного дальномера от Sharp. Но там и стоимость серьезнее.
  7. Также есть мысль написать bootloader, чтобы прошивать МК по воздуху.

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

Ну и по традиции, все вопросы, замечания и пожелания-на Форум, но после Конкурса. Вы можете мне помочь сделать эту конструкцию лучше. Спасибо за внимание, я надеюсь, что не сильно вас утомил :) Исходники и прошивки в файлах. 

Удачи!


Файлы:
Архив с исходниками программы для компьютера и самой программой
Архив с проектом для Eagle CAD(все использованные библиотеки прилагаются)
Архив с исходниками прошивок и программой SinaProg


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

47 4 3
1 0 0