Всем привет!
Сегодня хочу рассказать о интересном мобильном роутере HAME MPR-A100 (аналог HAME MPR-A2). Устройство показалось интересным, особенно для «кухонного» роботостроения и я решил рассказать о нем. Статью построю следующим образом — сначала расскажу о самом роутере, а потом построим на его основе максимально простой и дешовый бот на колесном шасси из подручного материала. Будет проще и дешевле чем в прошлый раз.
Основное преимущество — сразу с коробки будем иметь довольно большой аккумулятор (5000mAh) со всей обвязкой, и туда можно установить OpenWrt. Если подключить фантазию то может получится множество новый решений на основе этого роутера.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/021/bf5/535/021bf55356f98e969244a1795a1b7772.png)
Обзор получается очень странный так как тут не будет сказано ничего о стоковой прошивке и стандартном применении этого роутера. Обзор стокового функционала без проблем можно найти в сети. Например.
Итак совершенно случайно у одного из продавцов на нашем украинском интернет аукционе (если нужны координаты продавца то пишите) увидел интересное устройство — мобильный роутер который может также заряжать потребителей (Powerbank) так как имеет на борту аккумулятор аж на 5200mAh.
Немного погуглив выяснилось что внутри находится вполне приличное железо и более того туда устанавливается OpenWrt.
Так как цена и возможности приятно удивили я решил заказать это чудо и поэкспериментировать. Устройство доступно по цене около 40$ (в разных местах цена очень разнится), при этом имеет внутри аккумулятор и его обвязку. Легко можно выяснить сколько стоит один лишь внешний аккумулятор подобной емкости, поэтому цена и удивляет. Если еще вспомнить стоковый функционал то становится еще интереснее.
Внешний вид вполне дружелюбный, назначение всех портов предсказуемо и сюрпризов не преподносит. Что полезно, сбоку есть кнопка для проверки состояния аккумулятора. Жмем и по четырем светодиодам понимаем сколько осталось «электричества».
Внутренности тоже предсказуемы, аккумулятор состоит из двух элементов 18650 и кажется даже с платой защиты. Аккумуляторы безродные, но 4000mAh есть точно, может есть и больше, сильно с измерением не заворачивался. (Не будем вдаваться в дебри преобразования напряжений и эталонных методов измерения емкости. По желанию туда можно поставить самые именитые 18650.) В общем чем сто раз Описать лучше один раз показать:
Подробно тут разбирать схемотехнику не вижу смысла, кому интересно можете рассмотреть название микросхем на фото. Замечу только что без аккумулятора роутер не работает, а это значит что он питается от него и есть некая обвязка которая занимается зарядкой и дозарядкой аккумулятора на ходу. Конечно может быть что такое «буферное» использование аккумулятора приводит к его износу, но цена самих аккумуляторов не сильно высока и они стандартные. Можно установить любые 18650.
Далее мы соберем самую простую трехколесную «телегу» которая тем не менее будет иметь достаточную проходимость, разворот на месте (танковый) и минимальную стоимость компонентов. Использовать ее можно не только с таким роутером, а вообще как угодно, хоть полностью автономно.
Кататься мы будем с помощью всего 4 основных вещей (и кучи незначительное мелочи):
1. Пары самых простых и дешевых сервоприводов (3$ * 2)
2. Arduino Mini (9$)
3. Старый флоппик (0$)
4. Роутер (25-45$)
Итак начинаем подготовку компонентов:
Флоппик или по научному floppy drive.
Вообще подойдет любая достаточно плоская панель. К ней нужно будет лишь прикрутить или приклеить два сервопривода и третье свободное, опорное, самопальное колесо. Но так было бы не интересно. А еще если разобрать флоппик можно добыть сразу несколько таких панелей-платформ из довольно мягкого метала который просто сверлить. Ну и как бонус кучу всякого другого симпатичного мусора. По желанию можно задействовать штатные шаговые двигатели, я оставил один на будущее. Можно взять весь внешний корпус дисковода и спрятать все внутри, я так и поступил.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/dd9/487/e44/dd9487e4480ee26fe9d5972cad8c202f.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/038/635/0bc/0386350bc2ffd259a2756a8243a6e7ac.jpg)
Размер этих панелей вполне подходит для небольшого бота, а также мы имеем много отверстий для крепежа оборудования. При этом конструкция остается вполне крепкая благодаря металлическому шасси. Это не пластмассовый корпус от РУ машинок.
Arduino
Я опять взял Arduino mini из-за размера, но подойдет любая схожая плата. Главное чтобы вы могли с нее рулить сервами. Ну и чтоб хватило памяти. Так как в этом проекте я столкнулся с тем что в Atmega8 было уже трудно впихнуть все требуемое.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/17f/7cf/8b8/17f7cf8b8e8d8e7634f736c0971e7ff6.jpg)
К самой плате припаиваем удобные разъемы для подключения к роутеру, а также для подключения двух серв. При желании можно все сделать навесным монтажом, но я для порядка поставил еще дешевую макетную платку. Так удобнее что-то «перекоммутировать».
Припаиваем USB хвост который будет брать питание от роутера и питать ардуину с сервами. Я это сделал с помощью USB хвоста «папа-мама» с расчетом запитать все что нужно и иметь возможность подключить еще и вебку.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/410/826/2db/4108262dbb730e9eda1a8c110577e937.jpg)
Если вы хотите к роутеру подключить больше устройств можно использовать USB хаб, как я это делал в статье про поворотную вебкамеру.
Еще добавил конденсатор побольше, напряжением более 5 вольт. Это такая детская защита от проседания напряжения при старте сервоприводов хотя они и маленькие совсем. И возможно он поможет сгладить прочие пульсации в «бортовой сети».
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/200/414/ace/200414ace5e4c31838bfee90922c4c9d.jpg)
Сервы
Это самое интересное. По идее сервопривод может только отклоняться на 180 или 360 (почти) градусов. Как же на нем ездить? Ответ прост — доработать напильником (ножом и паяльником).
Сервопривод это обычный редуктор, но со стопором который не дает сделать полный оборот. На ось насажен переменный резистор, управляющая плата следит за положением этого резистора, сравнивает с сопротивлением для требуемого угла и крутит двигатель пока не достигнет требуемого угола (нужного сопротивления).
Угадайте что будет если заменить переменный резистор на постоянные? Сервопривод будет постоянно пытаться достичь заданного угла поворота, а если убрать стопор то мы получаем двигатель-редуктор с платой управления! До свидания LM293!
Разбираем сервопривод, фотографируем на память положение шестеренок. Меряем полное сопротивление переменного резистора и заменяем его двумя постоянными половинного номинала. То есть если полное сопротивление 5 КОм то впаиваем два по 2,5 КОм. У меня даже получилось задействовать smd резисторы добытые со старой мамки. Можно просто достать переменный резистор, но у меня на нем держалась конструкция. Если не считать срезанного стопора то сервы можно вернуть в первоначальное состояние.
Теперь если серву установить в положение 90 градусов (программно из скеча) то наш «редуктор» будет стоять, если установить в положение 100 градусов то начнет крутится в одну сторону, а если 80 то в другую. Чем больше разница между 90 градусами и тем что мы устанавливаем тем быстрее крутится наш редуктор. В итоге мы получили возможность регулировать скорость. Вот такой вот «лайфхак».
Однако на практике оказалось что есть небольшой дрейф (сервы ооочень медленно прокручиваются или тарахтят) и методом подбора я выставил «среднюю точку» у одного сервопривода на 89 градусов, а у второго на 85 (прямо в скетче). В таком положении только одна серва тихонько тарахтит, но не крутится.
Так как предполагалось что бот будет исполнять все те же наблюдательные функции я с помощью КМОП транзистора добавил возможность обесточивать сервоприводы когда тележка стоит. Таким образом удалось избежать «кряхтения» сервы и лишних затрат энергии.
Пару слов о колесах. Сами колеса вы уже поняли из чего) Доступны любые размеры) Для сцепления наклеил пару офисных резинок для денег. Третье опорное колесо проще всего изготовить из большой бусины насаженной на скрепку изогнутую буквой «П» или из подручных материалов (как у меня). Можно совершить набег на мебельным супермаркет.
Роутер
Для того чтобы роутер делал то что мы от него хотим его необходимо правильно приготовить.
В плане железа нужно припаять только провода к внутреннему УАРТУ (UART). Контактные площадки расположены под аккумуляторами и подписаны. А если вы будете использовать ардуину с USB то и этого можно не делать.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/399/d0b/0db/399d0b0dbdc9f778576286167e5ab16c.jpg)
С софтом дело обстоит серьезнее. На роутер необходимо установить OpenWRT. Готовая сборка уже существует. Как прошить можно почитать вот тут.
Говорят что можно прошить прям из вебморды, но у меня что-то пошло не так и в итоге я залил прошивку через tftp. Я издевался над роутером долго и изощренно, но он выжил, убить его довольно сложно. Прошиваем прошивку mpr-a1-32m-luci-usb-mjpg.bin
Как видно из названия прошивки MJPG-streamer уже установлен. Это программа для транслирования видео с бортовой вебкамеры бота. Для полного набора не хватает только пакета ser2net. Это программа которая выполняет роль моста между TCP портом и последовательным портом роутера. Эта программа, когда мы отправляем управляющие команды нашему боту, переправляет их через последовательный порт роутера в ардуину. Я нашел пакет с этой программой, проверил и оставил тут.
Работает все это так: mjpg-streamer «стримит» видео поток с вебкамеры, а команды мы передаем на 2000 порт роутера и ser2net посылает их на ардуину.
У многих возникает вопрос как можно посылать команды на произвольный порт хоста (роутера, ПК или любого другого узла сети)? Для этого можно использовать вот такую програмку. Она может не только это. Почему-то подобный софт сложно найти, видимо спрос не велик.
И снова у многих возникнет вопрос — Как «засунуть» в роутер свои файлы или их редактировать там, если ты не линкс-гуру. Для этого есть отличная утилита WinSCP Работает по принципу ТоталКомандера.
В этот раз я не стал лепить вебморду для бота так как она раздражает меня своей медлительностью и глючностью, в будущем думаю написать приложение на C#, а пока можно обойтись VLC или браузер + Hercules SETUP utility для управления.
Мои личные настройки роутера совсем незначительны и касаются только установки скорости внутреннего «уарта» и все. Дополнительно нужно будет сконфигурировать сам роутер чтоб он был или клиентом вашей домашней сети wifi или сам выступал точкой доступа. Но это уже относится к вопросам настройки OpenWrt. Все интуитивно понятно, если возникли трудности то смотрите мануалы по этой прошивке.
Тюнинг, полезный, но не обязательный.
Поскольку я хочу чтоб бот функционировал без моего «ручного» вмешательства то мне необходима докстанция для подзарядки. Делам это опять очень просто — берем обрезок кабеля microUSB и припаиваем его к «усам-контактам» как в прошлый раз. Добавляем диод для исключения возможности переплюсовки.
Экспериментальным путем мною было установлено что роутер во включенном режиме все равно «дозаряжается», что нам как нельзя кстати. Сама докстанция делается из двух пластин жести, к ним подключаем блок питания. Можно даже комплектный. В этот раз все проще так как внутри роутера есть обвязка зарядки-разрядки аккумулятора и все что нам надо это подать напряжение 5В на вход для зарядки роутера.
Планы на будущее.
Еще при эксплуатации предыдущего бота было отмечено одно неудобство — всегда приходилось вручную заводить бот на парковку и следить за тем что зарядка началась, иначе можно было попасть в ситуацию когда бот умер от «голода».
Поразмышляв над способами борьбы с подобной проблемой, пришел к выводу — бот должен сам становится на зарядку. Поскольку надежных и простых систем глобального позиционирования по квартире я не придумал решил пока ограничится малым — поставить ультразвуковой дальномер и обучить парковаться бота автоматически используя характерную форму докстанции (стена с прорезью по середине, эта прорезь будет являться «маяком» для центровки бота при приближении к станции).
Конкретные попытки создать эту станцию я уже предпринял, но к сожалению не правильно прикинул размер прорези и необходимо все переделать.
Дальномер это такой датчик который может «узнать» расстояние до препятствия. Если мы сделаем докстанцию в виде сходящихся поверхностей мы сможем заставить бота ехать прямо по центру и стать на до зарядку. Алгоритм простой — вручную примерно выводим бота на центр докстанции и отдаем команду начать парковку. Бот циклически «нащупывает» дальномером прорезь и шагами стремится к нему. После каждого шага проверяется не появилось ли напряжение на «усах», если появилось то мы припарковались!
Если такая идея будет интересна то опубликую дополнительный пост с уже отлаженной парковкой.
И как обычно немного видео с «покатушками»:
Р.S. Статья получилась немного не законченная, но я подумал что лучше я ее представлю так как есть на текущий момент, так как в свете последних событий (как личных так и глобальных) есть вероятность ее не закончить вообще никогда или в обозримом будущем уж точно.
Сегодня хочу рассказать о интересном мобильном роутере HAME MPR-A100 (аналог HAME MPR-A2). Устройство показалось интересным, особенно для «кухонного» роботостроения и я решил рассказать о нем. Статью построю следующим образом — сначала расскажу о самом роутере, а потом построим на его основе максимально простой и дешовый бот на колесном шасси из подручного материала. Будет проще и дешевле чем в прошлый раз.
И самое главное найден ответ на вопрос — «Что делать с вашим старым флоппиком который лежит в шкафу?»
Основное преимущество — сразу с коробки будем иметь довольно большой аккумулятор (5000mAh) со всей обвязкой, и туда можно установить OpenWrt. Если подключить фантазию то может получится множество новый решений на основе этого роутера.
![](https://habrastorage.org/getpro/habr/post_images/021/bf5/535/021bf55356f98e969244a1795a1b7772.png)
1. Краткий обзор самого роутера.
Обзор получается очень странный так как тут не будет сказано ничего о стоковой прошивке и стандартном применении этого роутера. Обзор стокового функционала без проблем можно найти в сети. Например.
Итак совершенно случайно у одного из продавцов на нашем украинском интернет аукционе (если нужны координаты продавца то пишите) увидел интересное устройство — мобильный роутер который может также заряжать потребителей (Powerbank) так как имеет на борту аккумулятор аж на 5200mAh.
Немного погуглив выяснилось что внутри находится вполне приличное железо и более того туда устанавливается OpenWrt.
Так как цена и возможности приятно удивили я решил заказать это чудо и поэкспериментировать. Устройство доступно по цене около 40$ (в разных местах цена очень разнится), при этом имеет внутри аккумулятор и его обвязку. Легко можно выяснить сколько стоит один лишь внешний аккумулятор подобной емкости, поэтому цена и удивляет. Если еще вспомнить стоковый функционал то становится еще интереснее.
Внешний вид вполне дружелюбный, назначение всех портов предсказуемо и сюрпризов не преподносит. Что полезно, сбоку есть кнопка для проверки состояния аккумулятора. Жмем и по четырем светодиодам понимаем сколько осталось «электричества».
Пеленка из фото.![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/d8c/9e4/91e/d8c9e491e3f4db0d8d53cd0eac4e6d7b.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/730/07f/73f/73007f73fb4ad013a85e720d7528ec65.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/090/3b3/12c/0903b312c3540b492ba67bc1cc01b736.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/256/ec1/866/256ec18665a6b2857cb50edcfdb9b1c0.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/cf5/df4/c8d/cf5df4c8d3720bca82ffa08eaf0517ed.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/b77/8f3/3a6/b778f33a6b15e7e8116ff24290a23f8c.jpg)
![](https://habrastorage.org/getpro/habr/post_images/d8c/9e4/91e/d8c9e491e3f4db0d8d53cd0eac4e6d7b.jpg)
![](https://habrastorage.org/getpro/habr/post_images/730/07f/73f/73007f73fb4ad013a85e720d7528ec65.jpg)
![](https://habrastorage.org/getpro/habr/post_images/090/3b3/12c/0903b312c3540b492ba67bc1cc01b736.jpg)
![](https://habrastorage.org/getpro/habr/post_images/256/ec1/866/256ec18665a6b2857cb50edcfdb9b1c0.jpg)
![](https://habrastorage.org/getpro/habr/post_images/cf5/df4/c8d/cf5df4c8d3720bca82ffa08eaf0517ed.jpg)
![](https://habrastorage.org/getpro/habr/post_images/b77/8f3/3a6/b778f33a6b15e7e8116ff24290a23f8c.jpg)
Внутренности тоже предсказуемы, аккумулятор состоит из двух элементов 18650 и кажется даже с платой защиты. Аккумуляторы безродные, но 4000mAh есть точно, может есть и больше, сильно с измерением не заворачивался. (Не будем вдаваться в дебри преобразования напряжений и эталонных методов измерения емкости. По желанию туда можно поставить самые именитые 18650.) В общем чем сто раз Описать лучше один раз показать:
Пеленка из фото.![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/cb2/4e6/45f/cb24e645f0d014de2d07b6c3b6fe24ed.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/d00/89c/17c/d0089c17cd1cedb4b83c7149710b0a3e.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a51/be2/c43/a51be2c434dbde4eb5a73f55f0338b37.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/14b/4bd/243/14b4bd243a611a87c703eefe20c59500.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/2b4/cc4/f49/2b4cc4f49a010323bc87d1a510959a8c.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a1b/b9a/b0c/a1bb9ab0c195f3c2729a42cb01169f83.jpg)
![](https://habrastorage.org/getpro/habr/post_images/cb2/4e6/45f/cb24e645f0d014de2d07b6c3b6fe24ed.jpg)
![](https://habrastorage.org/getpro/habr/post_images/d00/89c/17c/d0089c17cd1cedb4b83c7149710b0a3e.jpg)
![](https://habrastorage.org/getpro/habr/post_images/a51/be2/c43/a51be2c434dbde4eb5a73f55f0338b37.jpg)
![](https://habrastorage.org/getpro/habr/post_images/14b/4bd/243/14b4bd243a611a87c703eefe20c59500.jpg)
![](https://habrastorage.org/getpro/habr/post_images/2b4/cc4/f49/2b4cc4f49a010323bc87d1a510959a8c.jpg)
![](https://habrastorage.org/getpro/habr/post_images/a1b/b9a/b0c/a1bb9ab0c195f3c2729a42cb01169f83.jpg)
Подробно тут разбирать схемотехнику не вижу смысла, кому интересно можете рассмотреть название микросхем на фото. Замечу только что без аккумулятора роутер не работает, а это значит что он питается от него и есть некая обвязка которая занимается зарядкой и дозарядкой аккумулятора на ходу. Конечно может быть что такое «буферное» использование аккумулятора приводит к его износу, но цена самих аккумуляторов не сильно высока и они стандартные. Можно установить любые 18650.
2. Пробуем кататься.
Далее мы соберем самую простую трехколесную «телегу» которая тем не менее будет иметь достаточную проходимость, разворот на месте (танковый) и минимальную стоимость компонентов. Использовать ее можно не только с таким роутером, а вообще как угодно, хоть полностью автономно.
Давно у меня бродила мысль собрать простое шасси для различных целей использую компоненты доступные каждому. Надеюсь что получилось.
Кататься мы будем с помощью всего 4 основных вещей (и кучи незначительное мелочи):
1. Пары самых простых и дешевых сервоприводов (3$ * 2)
2. Arduino Mini (9$)
3. Старый флоппик (0$)
4. Роутер (25-45$)
Итак начинаем подготовку компонентов:
Флоппик или по научному floppy drive.
Вообще подойдет любая достаточно плоская панель. К ней нужно будет лишь прикрутить или приклеить два сервопривода и третье свободное, опорное, самопальное колесо. Но так было бы не интересно. А еще если разобрать флоппик можно добыть сразу несколько таких панелей-платформ из довольно мягкого метала который просто сверлить. Ну и как бонус кучу всякого другого симпатичного мусора. По желанию можно задействовать штатные шаговые двигатели, я оставил один на будущее. Можно взять весь внешний корпус дисковода и спрятать все внутри, я так и поступил.
![](https://habrastorage.org/getpro/habr/post_images/dd9/487/e44/dd9487e4480ee26fe9d5972cad8c202f.jpg)
![](https://habrastorage.org/getpro/habr/post_images/038/635/0bc/0386350bc2ffd259a2756a8243a6e7ac.jpg)
Размер этих панелей вполне подходит для небольшого бота, а также мы имеем много отверстий для крепежа оборудования. При этом конструкция остается вполне крепкая благодаря металлическому шасси. Это не пластмассовый корпус от РУ машинок.
Arduino
Я опять взял Arduino mini из-за размера, но подойдет любая схожая плата. Главное чтобы вы могли с нее рулить сервами. Ну и чтоб хватило памяти. Так как в этом проекте я столкнулся с тем что в Atmega8 было уже трудно впихнуть все требуемое.
![](https://habrastorage.org/getpro/habr/post_images/17f/7cf/8b8/17f7cf8b8e8d8e7634f736c0971e7ff6.jpg)
К самой плате припаиваем удобные разъемы для подключения к роутеру, а также для подключения двух серв. При желании можно все сделать навесным монтажом, но я для порядка поставил еще дешевую макетную платку. Так удобнее что-то «перекоммутировать».
Припаиваем USB хвост который будет брать питание от роутера и питать ардуину с сервами. Я это сделал с помощью USB хвоста «папа-мама» с расчетом запитать все что нужно и иметь возможность подключить еще и вебку.
![](https://habrastorage.org/getpro/habr/post_images/410/826/2db/4108262dbb730e9eda1a8c110577e937.jpg)
Если вы хотите к роутеру подключить больше устройств можно использовать USB хаб, как я это делал в статье про поворотную вебкамеру.
Еще добавил конденсатор побольше, напряжением более 5 вольт. Это такая детская защита от проседания напряжения при старте сервоприводов хотя они и маленькие совсем. И возможно он поможет сгладить прочие пульсации в «бортовой сети».
![](https://habrastorage.org/getpro/habr/post_images/200/414/ace/200414ace5e4c31838bfee90922c4c9d.jpg)
Сервы
Это самое интересное. По идее сервопривод может только отклоняться на 180 или 360 (почти) градусов. Как же на нем ездить? Ответ прост — доработать напильником (ножом и паяльником).
Сервопривод это обычный редуктор, но со стопором который не дает сделать полный оборот. На ось насажен переменный резистор, управляющая плата следит за положением этого резистора, сравнивает с сопротивлением для требуемого угла и крутит двигатель пока не достигнет требуемого угола (нужного сопротивления).
Угадайте что будет если заменить переменный резистор на постоянные? Сервопривод будет постоянно пытаться достичь заданного угла поворота, а если убрать стопор то мы получаем двигатель-редуктор с платой управления! До свидания LM293!
Пеленка из фото.![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/021/d2d/d7e/021d2dd7e3d366404798343e12a75d61.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/04d/a56/a6e/04da56a6e2730e87e678f847e36fd0c2.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a6a/f2a/199/a6af2a199a12c4aabab2c16f6c5e4e7c.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/245/86a/b38/24586ab38cf765e95e8831d4f6982033.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/2e3/783/735/2e378373527a77cbdc10920fc9fea596.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/36d/e67/161/36de6716126769b5d1e7301caca9921d.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/767/ccc/d89/767cccd898a0d610f72d23d6430f812a.jpg)
![](https://habrastorage.org/getpro/habr/post_images/021/d2d/d7e/021d2dd7e3d366404798343e12a75d61.jpg)
![](https://habrastorage.org/getpro/habr/post_images/04d/a56/a6e/04da56a6e2730e87e678f847e36fd0c2.jpg)
![](https://habrastorage.org/getpro/habr/post_images/a6a/f2a/199/a6af2a199a12c4aabab2c16f6c5e4e7c.jpg)
![](https://habrastorage.org/getpro/habr/post_images/245/86a/b38/24586ab38cf765e95e8831d4f6982033.jpg)
![](https://habrastorage.org/getpro/habr/post_images/2e3/783/735/2e378373527a77cbdc10920fc9fea596.jpg)
![](https://habrastorage.org/getpro/habr/post_images/36d/e67/161/36de6716126769b5d1e7301caca9921d.jpg)
![](https://habrastorage.org/getpro/habr/post_images/767/ccc/d89/767cccd898a0d610f72d23d6430f812a.jpg)
Разбираем сервопривод, фотографируем на память положение шестеренок. Меряем полное сопротивление переменного резистора и заменяем его двумя постоянными половинного номинала. То есть если полное сопротивление 5 КОм то впаиваем два по 2,5 КОм. У меня даже получилось задействовать smd резисторы добытые со старой мамки. Можно просто достать переменный резистор, но у меня на нем держалась конструкция. Если не считать срезанного стопора то сервы можно вернуть в первоначальное состояние.
Теперь если серву установить в положение 90 градусов (программно из скеча) то наш «редуктор» будет стоять, если установить в положение 100 градусов то начнет крутится в одну сторону, а если 80 то в другую. Чем больше разница между 90 градусами и тем что мы устанавливаем тем быстрее крутится наш редуктор. В итоге мы получили возможность регулировать скорость. Вот такой вот «лайфхак».
Однако на практике оказалось что есть небольшой дрейф (сервы ооочень медленно прокручиваются или тарахтят) и методом подбора я выставил «среднюю точку» у одного сервопривода на 89 градусов, а у второго на 85 (прямо в скетче). В таком положении только одна серва тихонько тарахтит, но не крутится.
Так как предполагалось что бот будет исполнять все те же наблюдательные функции я с помощью КМОП транзистора добавил возможность обесточивать сервоприводы когда тележка стоит. Таким образом удалось избежать «кряхтения» сервы и лишних затрат энергии.
Пеленка из фото.![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/138/ca2/f04/138ca2f0475bd13ed13cc358ee059a5a.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/e31/2b0/6ae/e312b06aec760c7dc46d6ee5b4e064d2.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/4b7/b28/789/4b7b287892a5714a80fbc3cc69186f5e.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/917/32f/6b1/91732f6b147b2772c6195b0b27aaa18f.jpg)
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/7fb/89d/aaf/7fb89daaf172842ceb402ab3fe53223f.jpg)
![](https://habrastorage.org/getpro/habr/post_images/138/ca2/f04/138ca2f0475bd13ed13cc358ee059a5a.jpg)
![](https://habrastorage.org/getpro/habr/post_images/e31/2b0/6ae/e312b06aec760c7dc46d6ee5b4e064d2.jpg)
![](https://habrastorage.org/getpro/habr/post_images/4b7/b28/789/4b7b287892a5714a80fbc3cc69186f5e.jpg)
![](https://habrastorage.org/getpro/habr/post_images/917/32f/6b1/91732f6b147b2772c6195b0b27aaa18f.jpg)
![](https://habrastorage.org/getpro/habr/post_images/7fb/89d/aaf/7fb89daaf172842ceb402ab3fe53223f.jpg)
Пару слов о колесах. Сами колеса вы уже поняли из чего) Доступны любые размеры) Для сцепления наклеил пару офисных резинок для денег. Третье опорное колесо проще всего изготовить из большой бусины насаженной на скрепку изогнутую буквой «П» или из подручных материалов (как у меня). Можно совершить набег на мебельным супермаркет.
Роутер
Для того чтобы роутер делал то что мы от него хотим его необходимо правильно приготовить.
В плане железа нужно припаять только провода к внутреннему УАРТУ (UART). Контактные площадки расположены под аккумуляторами и подписаны. А если вы будете использовать ардуину с USB то и этого можно не делать.
![](https://habrastorage.org/getpro/habr/post_images/399/d0b/0db/399d0b0dbdc9f778576286167e5ab16c.jpg)
С софтом дело обстоит серьезнее. На роутер необходимо установить OpenWRT. Готовая сборка уже существует. Как прошить можно почитать вот тут.
Говорят что можно прошить прям из вебморды, но у меня что-то пошло не так и в итоге я залил прошивку через tftp. Я издевался над роутером долго и изощренно, но он выжил, убить его довольно сложно. Прошиваем прошивку mpr-a1-32m-luci-usb-mjpg.bin
Как видно из названия прошивки MJPG-streamer уже установлен. Это программа для транслирования видео с бортовой вебкамеры бота. Для полного набора не хватает только пакета ser2net. Это программа которая выполняет роль моста между TCP портом и последовательным портом роутера. Эта программа, когда мы отправляем управляющие команды нашему боту, переправляет их через последовательный порт роутера в ардуину. Я нашел пакет с этой программой, проверил и оставил тут.
Работает все это так: mjpg-streamer «стримит» видео поток с вебкамеры, а команды мы передаем на 2000 порт роутера и ser2net посылает их на ардуину.
У многих возникает вопрос как можно посылать команды на произвольный порт хоста (роутера, ПК или любого другого узла сети)? Для этого можно использовать вот такую програмку. Она может не только это. Почему-то подобный софт сложно найти, видимо спрос не велик.
И снова у многих возникнет вопрос — Как «засунуть» в роутер свои файлы или их редактировать там, если ты не линкс-гуру. Для этого есть отличная утилита WinSCP Работает по принципу ТоталКомандера.
В этот раз я не стал лепить вебморду для бота так как она раздражает меня своей медлительностью и глючностью, в будущем думаю написать приложение на C#, а пока можно обойтись VLC или браузер + Hercules SETUP utility для управления.
Мои личные настройки роутера совсем незначительны и касаются только установки скорости внутреннего «уарта» и все. Дополнительно нужно будет сконфигурировать сам роутер чтоб он был или клиентом вашей домашней сети wifi или сам выступал точкой доступа. Но это уже относится к вопросам настройки OpenWrt. Все интуитивно понятно, если возникли трудности то смотрите мануалы по этой прошивке.
Тюнинг, полезный, но не обязательный.
Поскольку я хочу чтоб бот функционировал без моего «ручного» вмешательства то мне необходима докстанция для подзарядки. Делам это опять очень просто — берем обрезок кабеля microUSB и припаиваем его к «усам-контактам» как в прошлый раз. Добавляем диод для исключения возможности переплюсовки.
Экспериментальным путем мною было установлено что роутер во включенном режиме все равно «дозаряжается», что нам как нельзя кстати. Сама докстанция делается из двух пластин жести, к ним подключаем блок питания. Можно даже комплектный. В этот раз все проще так как внутри роутера есть обвязка зарядки-разрядки аккумулятора и все что нам надо это подать напряжение 5В на вход для зарядки роутера.
Планы на будущее.
Еще при эксплуатации предыдущего бота было отмечено одно неудобство — всегда приходилось вручную заводить бот на парковку и следить за тем что зарядка началась, иначе можно было попасть в ситуацию когда бот умер от «голода».
Поразмышляв над способами борьбы с подобной проблемой, пришел к выводу — бот должен сам становится на зарядку. Поскольку надежных и простых систем глобального позиционирования по квартире я не придумал решил пока ограничится малым — поставить ультразвуковой дальномер и обучить парковаться бота автоматически используя характерную форму докстанции (стена с прорезью по середине, эта прорезь будет являться «маяком» для центровки бота при приближении к станции).
Дальномер это такой датчик который может «узнать» расстояние до препятствия. Если мы сделаем докстанцию в виде сходящихся поверхностей мы сможем заставить бота ехать прямо по центру и стать на до зарядку. Алгоритм простой — вручную примерно выводим бота на центр докстанции и отдаем команду начать парковку. Бот циклически «нащупывает» дальномером прорезь и шагами стремится к нему. После каждого шага проверяется не появилось ли напряжение на «усах», если появилось то мы припарковались!
Если такая идея будет интересна то опубликую дополнительный пост с уже отлаженной парковкой.
И как обычно немного видео с «покатушками»:
Р.S. Статья получилась немного не законченная, но я подумал что лучше я ее представлю так как есть на текущий момент, так как в свете последних событий (как личных так и глобальных) есть вероятность ее не закончить вообще никогда или в обозримом будущем уж точно.