Size: a a a

Кадавры профессора Новикова

2019 June 26
Кадавры профессора Новикова
Пару недель назад посмотрел это видео: https://youtu.be/LjJCkGUTHlA и захотел оживить свой старый проект управления роботом через интернет.
В моём случае всё будет несколько проще, с общим для всех игроков видом сверху и стилизацией под игру Batlle City с Денди.
источник
Кадавры профессора Новикова
Порылся в закромах, нашёл необходимое (слева-направо):
1. Беспроводной WiFi модуль на ESP8266 с аналоговым входом (будем измерять напряжение аккумулятора)
2. Плату управления двумя двигателями постоянного тока на MX1508, силовая часть которой может коммутировать от 2 до 9 вольт
3. Два низковольтных мотор-редуктора
4. Ошибочная ревизия одной из моих плат, от которой я отпилил схему беспроводного зарядника LiPo аккумулятора на BQ51050B
5. Беспроводную зарядку за 300 рублей
6. Сам LiPo аккумулятор из одной банки 3.7В 200 мАч
источник
Кадавры профессора Новикова
На имевшемся у меня модуле Wemos D1 mini (китайская копия китайского модуля) аналоговый вход имел перед собой делитель напряжения, так как аналоговый вход самого ESP8266 принимает максимум 1 вольт. Этот делитель позволяет подавать на аналоговый вход платы A0 до 3.3В, но напряжение нашего аккумулятора может быть и 4.2В, поэтому нужно немного поменять коэфициент делителя.
Находим по маркировке или омметром резистор R2 (он рядом со входом A0) с сопротивлением 100 кОм и меняем его на что-то в диапазоне 30-50 кОм.
Вуаля, теперь можем подавать на A0 до 5В.
источник
Кадавры профессора Новикова
Я набросал в Arduino IDE примитивный скетч, который крутит двигателями, выдаёт напряжение аккумулятора, управляется по UDP и поддерживает обновление по воздуху.
Для уменьшения акустического шума, частота ШИМ для управления двигателями установлена в 16 кГц, которые слышно только если приложить двигатель непосредственно к уху (ну или если у вас слух летучей мыши).
источник
Кадавры профессора Новикова
Для изготовления самих танков у меня было два варианта: начертить всё самому и напечатать на 3D принтере или купить готовый набор РУ танков и поставить в них свою электронику. Я выбрал второй вариант из-за лени. Если что, набор называется "AirZoft Battle Tank 1:48".
источник
Кадавры профессора Новикова
Честно говоря я ожидал, что они будут крупнее, но и в такой корпус можно всё засунуть.
источник
Кадавры профессора Новикова
После трёх или четырёх итераций впихивания с заменой WiFi модуля на вариант ESP-WROOM-02 родился этот красавец (уродец).
источник
Кадавры профессора Новикова
источник
Кадавры профессора Новикова
источник
Кадавры профессора Новикова
источник
Кадавры профессора Новикова
Вот он стоит заряжается. В финальной версии танк будет просто вставать в определённую область на игровой карте для подзарядки. Коричневые пятна - канифольный флюс. Я уверен, что флюса много не бывает.
источник
Кадавры профессора Новикова
Набросал приложение на electron, которое опрашивает геймпад и отправляет сигналы управления роботу. Каждый стик управляет своей гусеницей.
источник
Кадавры профессора Новикова
Proof-of-concept показал свою жизнеспособность, поэтому был разведён бутерброд из двух плат, но уже с добавлением микросхемы гироскопа+акселерометра MPU6050 для выравнивания курса танка при движении и питание сделано от buck-boost конвертера TPS63021 с выходом 3.3В для максимального использования ёмкости аккумулятора.
источник
Кадавры профессора Новикова
источник
Кадавры профессора Новикова
​​Пока ко мне идут новые платы и комплектация, расскажу как сделано управление с компьютера.

Сам Electron представляет собой связку из браузера Chromium и node.js

Большую часть функционала я реализовал подключением готовых модулей, как в конструкторе:
Танк вещает по mdns свой локальный домен tank1.local, доступный из моей домашней сети. Для его обнаружения компьютером используется модуль mdns-js
Отправка UDP пакетов реализована через модуль самой ноды dgram. UDP логично выбран за низкие задержки передачи, относительно TCP.
Опрос геймпада делается модулем gamepad, который легко ставится на чистую ноду, но для электрона его нужно пересобрать по инструкции.

В будущем передачей команд управления танкам и отправкой изображения игрокам будет заниматься один сервер на той же node.js
источник
Кадавры профессора Новикова
​​Разбавлю эту техническую галиматью эффектным случаем из работы:

- Ой, что это так бумкнуло?
- Это IGBT-модуль за $200.
источник
2019 June 28
Кадавры профессора Новикова
​​Китайское производство сообщает, что платы готовы к отправке и через пару недель будут у меня. Пока я немного упрощу управление ботом.
Сейчас танк крутит гусеницами с задаваемой с геймпада скоростью, и не имеет «органов чувств» для получения информации об окружающем мире. Из-за этого он не может узнать, что упёрся в какое-то препятствие и при проскальзывании или брокировке гусеницы немного сбивается с курса во время движения.
Одним из датчиков танка будет интегральный гироскоп, который при регулярном опросе выдаёт значение углов поворота относительно трёх пространственных осей с предыдущего измерения. Если короче - скорость поворота. Интегрируя эту скорость, мы получим угол поворота танка относительно начального положения. Идеально для корректировки ориентации на коротком отрезке времени.
На гифке гироскопически стабилизированный подвес для видеосъёмки смартфоном.
источник
Кадавры профессора Новикова
​​Донором гироскопа станут останки модели аппарата на воздушной подушке, где гироскоп использовался с той же целью - для стабилизации курса.
источник
2019 June 29
Кадавры профессора Новикова
​​В аппарате на предыдущей фотографии для поворота вокруг вертикальной оси используется тот же принцип, что и в популярных сейчас коптерах. Считаю, что вам интересно будет узнать, как это работает без использования рулей направления.
Если объяснять просто, то винт толкает воздух, а воздух этому сопротивляется. Это сопротивление передаётся на раму коптера, которая в воздухе ни за что не закреплена, и потому начинается вращаться в обратном пропеллеру направлении для компенсации сопротивления воздуха. Это называется реактивным моментом винта.
Возьмём для примера коптер с четыремя пропеллерами. Два его пропеллера вращаются по часовой стрелке, и ещё два против часовой. Такая схема позволяет пропеллерам разного направления компенсировать реактивные моменты друг друга. Теперь, чтобы повернуть коптер против часовой стрелки, нам нужно увеличить обороты винтов, вращающихся по часовой стрелке, увеличивая их реактивный момент.
источник
Кадавры профессора Новикова
​​И наглядная демонстрация (пропеллер крутится по часовой стрелке):
источник