Смартфон управляет игрушечным автомобилем / Хабр

Смартфон управляет игрушечным автомобилем / Хабр Лодки

Вводная информация про p2p режим

Учитывая тот факт, что оба канала управления и видео являются UDP, я решил сделать это P2P-соединением, чтобы видео не нужно было пересылать с клиента на сервер и обратно. Тем не менее, я это сделал 🙂 По сути, получился простой и удобный аналог адобовского RTMFP (не путать с RTMP). Пока у меня нет времени добавить передачу звука, звуковая панель отключена.

Одна из проблем с UDP – преодоление NAT. На одном конце канала связи (на передающей или принимающей стороне) всегда есть NAT, поэтому указание только адреса сервера (или клиента) и порта не сработает – NAT мешает. Windows Virt2Real Player поддерживает UPnP для включения перенаправления портов, но это не то, что мне нужно.

Только после вдумчивого изучения технологии UDP Hole Punching технология UDP Hole Punching предоставила то, что я хотел. В конечном итоге все было так, как и ожидалось – независимо от маршрутизатора, независимо от наличия клиента или сервера. Самым важным аспектом является наличие доступа в Интернет. Однако мне еще не удалось сломать ни один тип NAT. У меня постоянно крутится в голове, как он называется, например, симметричный NAT.

Да, моя собственная реализация TURN и STUN стоит на месте обычных серверов TURN и STUN. Мой обычный совет – делать что-то по-своему, если вы хотите изучить технологию, а потом сравнить свою работу с популярными решениями. Фанатики велосипедов меня поймут. С другой стороны, часто оказывается, что велосипед не так уж плох и работает лучше, чем обычные решения.

Прошу прощения, что немного отклонился от темы. Давайте продолжим о NAT. Я еще не обеспечил поддержку P2P для Android, iPhone, iPad или приложения Virt2real Player для Windows. У меня соединение работало и со свистком Yota, и со свистком Билайн 4G, и с точкой доступа на смартфоне, который выходил в интернет через Билайн 4G.

Во всех этих случаях все работает, но я увидел, что только Yota работает идеально. Соединение с Билайн (в любом из протестированных типов) также работает, но занимает немного больше времени. Никто не знает, почему так происходит. К сожалению, мне пока не удалось заставить работать связь (как команды, так и видео) при соединении клиента и сервера с помощью 4G-свистков. Возможно, это и было причиной симметричного NAT.

Что понадобится для сборки

Но сначала, чтобы продемонстрировать некоторые способы использования

Где это уже было использовано

Мы использовали rtsborda во многих местах, но я нашла только эти задокументированные случаи:

Дополнительные модули

На вкладке “Дополнительные модули” отображается список активных и неактивных модулей на rtsboard.

Как правило, модуль – это автономное приложение (исполняемый двоичный файл), которое выступает в качестве источника телеметрии. Активные модули – это те, которые автоматически запускаются при запуске rsbord и выключаются при его завершении. Вы можете перемещать модули в панели управления, нажимая на оранжевую стрелку.

Иллюстрации различных типов коннекта

Из-за часов работы Yota дома я не могу нормально ездить. Кроме того, 4G Билайна работает безупречно, как входящие, так и исходящие 3-мегабитные потоки работают без проблем.

Единственное, что меняется в каждом эксперименте – это тип общения.

Инвайты

Чтобы облегчить передачу параметров кому-либо в режиме P2P, мы создали концепцию механизма приглашений. Все понимают, что такое приглашения. Это удобная вещь. Сейчас я расскажу вам, как ее использовать. Он пока находится в тестовом, сыром виде, но, похоже, работает в плеере.

Откройте Windows Virt2real Player, щелкните правой кнопкой мыши по окну и выберите “Invite” -> “Create Invite”. Важно отметить, что плеер должен быть настроен на режим P2P. в настройках сети необходимо указать все вышеописанные параметры для подключения к машине.

Итак, подопытный кролик


Краулер для дистанционного управления хорош тем что он обладает очень высокой проходимостью.

Crawler имеет полный привод, постоянную блокировку дифференциала (все четыре колеса вращаются одновременно) и постоянную “пониженную передачу”. Автомобиль движется относительно медленно, но мощно и плавно.

Клёвый снегоуборщик под управлением рцборды

Кстати, сам снегоуборщик был разработан пермскими ребятами.

Настройка p2p режима, на борту стоит wi-fi


К Виртурилке на борту машинки подключён свисток Wi-Fi (т.е. как делали до сих пор по инструкции из этого топика). Только сначала мы управляли машинкой локально, а теперь сможем дать кому-нибудь порулить из Инета.

Смотрите про коптеры:  Квадрокоптер своими руками из подручных материалов. — Паркфлаер

Зайдите в веб-панель управления, а затем перейдите в раздел “Локальные настройки”. Там мы устанавливаем параметр

role=p2p

Настройка p2p режима, на борту стоит yota

Подключите свисток Yota (разумеется, через адаптер USB-OTG) к порту micro-USB устройства Virtualica на борту компьютера. Эти свистки, которые в настоящее время продаются на сайте Yota

В остальном все так же, как и в предыдущем пункте. Разве что было бы неплохо убрать модуль statuswifi из активных скриптов в разделе “Дополнительные модули” в настройках RCBoard, и наоборот, поставить модуль statusyota в активные скрипты, чтобы параметры сигнала Yota были видны в плеере.

Настройка виртурилки

Перед сборкой машины необходимо настроить Virturica. Давайте сначала рассмотрим опцию Wi-Fi.

Итак, пункт за пунктом:

Настройка сервера рцборды

В специальной панели управления рсбордой можно редактировать все настройки рсборды (не путать с панелью администратора Wirturilka). Сейчас панель управления рсборда выглядит следующим образом (первая версия)

Вы можете задать имя устройства (отображается при обнаружении устройства в приложениях) и определить, будет ли сервер RDBMS запускаться автоматически при загрузке виртуального портала на вкладке “Общие настройки”.

Некоторые нюансы при связи по 4g

Дикое падение самолета во время полета заставило нас выяснить проблему. Установка значения mtu на 1322 или меньше будет работать с 4G соединениями. mtu = 1322 не имеет значения, мы не паникуем. Вообще, я ставлю 16000 (максимальный размер Jumbo Frames) в локальной области, где все работает нормально, но через Интернет могут быть проблемы с прохождением пакетов.

Немного про задержку

Одним из требований дистанционного управления является небольшая задержка между действием нажатия кнопки или перемещения джойстика и изменением изображения, отображаемого устройством, встроенным в видеопоток. Вопрос, который чаще всего задают, когда пишут о дистанционном управлении, звучит так: “Что такое задержка? “?

Согласно многочисленным тестам, задержки субъективны и по-разному влияют на комфорт вождения. Максимальная скорость движущего устройства определяет все. Минимальная задержка очень важна для летающих устройств (самолетов/дронов), но не всегда для движущих устройств.

Через несколько минут после руления переоборудованного радиоуправляемого багги по залу Hobby Expo я заметил, что задержка больше не причиняет боли (что бы это ни было), вы можете управлять “с первого взгляда”. Несмотря на то, что мой багги может разгоняться до 80 км/ч, я пронесся по залу, скользя между павильонами, стульями и людьми почти в два раза быстрее.

Стабильность задержки важнее, чем ее абсолютное значение в миллисекундах. При подключении к обычному роутеру через Wi-Fi свисток минимальная задержка составила около 200 мс, а при подключении через вездесущий эталон – мощные роутеры Ubiquity, минимальная задержка составила около 100 мс.

Из Москвы я смог с легкостью прокатиться на таком же скоростном багги в Шэньчжэне, несмотря на небольшую задержку в сетевом пинге от меня до сервера китайского 4G-оператора, плюс еще 100 миллисекунд для нашего собственного. Тем не менее, это была отличная поездка 🙂

Обновление от 04.10.2022

За годы, прошедшие с момента публикации приведенной выше схемы в 2003 году, кое-что изменилось в лучшую сторону. Старая версия приложения не работала с кабелями USB-COM. В новой версии (“v2.0 TXD”) это было устранено. Также была переработана программа управления.

С COM-порта компьютера схема может синтезировать четыре независимых сигнала с минимальным количеством компонентов.

Эта схема питается от линии DTR (т.е. диод D1 играет роль защиты от обратной полярности). Сигнал на линии RTS сбрасывает счетчик перед синтезом команды. С помощью импульсов на линии TXD счетчик наматывается до нужного состояния.

Его можно подключить, например, к игрушке с дистанционным управлением. Я сделал это еще в 2002 году. Выходные сигналы работают по принципу открытого стока (общего коллектора). Другими словами, мы разбираем пульт дистанционного управления, чтобы объединить отрицательные выводы схемы управления и батарейки пульта.

Поскольку начинающие радиолюбители проявляют неугасающий интерес к любительскому радио, схема была доработана только сейчас. Тем не менее, хорошая идея управления COM-портом всегда “борется” со временем. Да, наша повседневная жизнь диктуется новыми интерфейсами. Современные ПК, как правило, не оснащаются COM-портами.

Общий принцип подключения моторов машинки

В машинах RC обычно два двигателя. Один – это обычный коллекторный двигатель, который приводит в движение колеса. В качестве альтернативы можно использовать серводвигатель для поворота колес в нужном направлении. В результате, дроссель и рулевое управление – единственные необходимые каналы управления. Все каналы изначально подключаются (если вы приобрели автомобиль в сборе) к штатной магнитоле через трехконтактные разъемы JR (стандартный разъем для сервопривода). На этой схеме черный (или коричневый) провод – это земля, красный провод – питание (5-6 В), а желтый провод – сигнал.

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

Смотрите про коптеры:  Радиоуправляемый катер для рыбалки своими руками - Все Сам

Этот регулятор содержит так называемые BEC – преобразователи напряжения, которые используются для преобразования различных напряжений батареи в стабильные 5 Вольт (иногда 6 Вольт, в зависимости от того, как вы установите перемычку), необходимые для питания серводвигателей, приемника и различной другой электроники на борту. Большинство стабилизированных источников питания имеют предел нагрузки не более 2-3А, хотя это также зависит от модели регулятора.

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

Приемник имеет несколько групп трехконтактных контактов. Их количество зависит от числа каналов, на которые рассчитан приемник. Машины обычно имеют 2 или 3 канала, поэтому существует 3 или 4 группы соответственно (одна группа для настройки моста Pair).

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

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

Наконец, белые (желтые или оранжевые) провода должны быть подключены к Virturilica, а именно к контактам CON44 и CON43, как показано на схеме. Поскольку каналы могут быть настроены позже в конфигурации rtsborda, не имеет значения, какой провод подключен к какому контакту.

Соединение должно выглядеть следующим образом

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

Кроме того, мы питаем Virturilla непосредственно от клемм аккумулятора. Поскольку он не боится напряжения до 20 В, он будет потреблять меньше энергии, и чем выше напряжение, тем меньше энергии он будет потреблять. Поскольку преобразователь питания (SEPIC в самом Virturilla) теряет эффективность только при превышении 15 вольт, идеальным вариантом является источник питания от 12 до 15 вольт при полной нагрузке (с wifi).

Проверка подключения виртурилки к сети

  • Во время процесса запуска на виртуальном маршрутизаторе загорятся светодиодные индикаторы. При включении питания загорится зеленый светодиод, если загрузка загрузочного флеш-накопителя прошла успешно. Затем во время процесса загрузки ядра загорится синий светодиод. Когда ядро полностью загрузится и подключится к сети Wi-Fi, загорится красный светодиод. Когда запускается программа rsbord (она переписывается в автозапуске), все светодиоды гаснут, а красный начинает мигать)
  • Установите программу управления. Она называется Virt2real Player и доступна для Windows (дистрибутив или zip-архив), для Android и IOS. Приложение для IOS все еще является старой версией в Appstore, новая находится на стадии оценки, поэтому нет необходимости устанавливать его прямо сейчас – управление не будет работать должным образом.
  • Откройте Проводник (если ваш компьютер Windows), если Виртуалка подключилась к вашей локальной сети по wifi – в разделе “Сеть” должно появиться устройство “RCboard (Virt2real)”. Вы можете получить доступ к области администрирования, щелкнув правой кнопкой мыши на этом устройстве и выбрав пункт меню “View device web page”
  • Запустите Virt2real Player для Windows или Android, сервер RCboard должен быть зарегистрирован. Обнаружение сервера в приложении для iOS пока не реализовано.

Самый тяжёлый девайс под управлением рцборды

Совместный проект с

Сборка машинки

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

Смартфон управляет игрушечным автомобилем

Люди с годами приобретают смартфоны, и я не исключение. Я решил использовать свой смартфон для управления автомобилем.

Изначально я выбрал машинку Lego. На пульте дистанционного управления есть несколько элементов управления, включая вперед, назад, вправо и влево. Драйвером двигателя автомобиля является микросхема LB1836, которая имеет четыре информационных входа. Они работают по схеме 0, 0, или 1, 1 – состояние покоя, In1, In2 управляют работающим двигателем, In3, In4 управляют приводом руля. Двигатель вращается в одном направлении или в другом, 0, 1, 0.

Логические 0 и 1 на входах формируют ИК-приемник игрушки при получении сигнала от пульта дистанционного управления.

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

Смотрите про коптеры:  Радиоуправляемые корабли и лодки с доставкой по Москве и России

Ниже приведена схема передачи сигнала. Используя программу для смартфона для создания световых пятен, устройство регистрирует эти пятна и формирует логические 0 и 1 на LB1836 без выполнения какой-либо логической обработки, что значительно упрощает конструкцию устройства. То есть я просто заменил ИК-приемник на свой собственный.

Световые сигналы принимаются устройством с четырьмя ячейками. Ячейки представляют собой фототранзисторы L-3DP3C, подключенные к транзисторным усилителям КТ315 npn. Управляемый аппарат обеспечивает питание. Согласно моему предыдущему утверждению, выход подключается к соответствующему входу драйвера двигателя. Двигатели, питающиеся непосредственно от выхода, могут вращаться только в одном направлении. Это будет четыре!

Смартфон управляет игрушечным автомобилем / Хабр

О выборе элементов устройства могу сказать следующее. Транзисторы я взял те, какие у меня были с давних времен. Фототранзисторы купил те, что были в магазине. Так что, желающие повторить схему, не тратьте время на поиски, воспользуйтесь теми элементами, что вам доступны. Кстати, вначале я усилитель собрал на микросхеме LM 324N с четырьмя операционными усилителями. Тоже хорошо работает, но мне показались его габариты слишком большими.
Устройство собрал на картонке, используя полоски медной фольги и элементы конструктора Лего.

Смартфон управляет игрушечным автомобилем / Хабр

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

Смартфон управляет игрушечным автомобилем / Хабр

Вот так выглядел автомобиль.

Смартфон управляет игрушечным автомобилем / Хабр

Я разработал программу, используя приложение BASIC! из Googl Play Market. Пишите программы для Android, создавайте apk-файлы и управляйте всеми датчиками и смартфонами с помощью этого приложения.

Список передач

DO
 LET s$="Говорите команду: вперёд назад вправо влево или стоп"
 TTS.INIT
 TTS.SPEAK s$
 TTS.STOP

 STT.LISTEN "Говорите"
 STT.RESULTS theList
 LIST.SIZE theList, theSize
 LET kom$="неудача"

 FOR k = 1 TO theSize
  LIST.GET theList, k, theText$
  IF (theText$="вперед") THEN kom$="вперёд"
  IF (theText$="назад") THEN kom$="назад"
  IF (theText$="вправо") THEN kom$="вправо"
  IF (theText$="влево") THEN kom$="влево"
  IF (theText$="стоп") THEN kom$="стоп"
 NEXT k
 PRINT kom$ 

 GR.OPEN 255, 0, 0, 0
 GR.BRIGHTNESS 0.7
 GR.ORIENTATION 1
 GR.SCREEN w, h

 a = 255
 r = 255
 g = 255
 b = 255
 fill = 1
 GR.COLOR a,r,g,b,fill

 LET wc=0.95*h
 LET hc=w
 LET m=36
 GR.CLS

 GR.CIRCLE n5, hc/m*9.5,wc,w/15.6
 GR.CIRCLE n4, hc/m*13.5,wc,w/15.6
 GR.CIRCLE n3, hc/m*18,wc,w/15.6
 GR.CIRCLE n2, hc/m*22.5,wc,w/15.6 
 GR.CIRCLE n1, hc/m*26.5,wc,w/15.6

 FOR i=1 TO 5
  GR.HIDE i
 NEXT i

 IF (kom$="вперёд") THEN 
  GR.SHOW 2
  PAUSE 300
  GR.HIDE  2

 ENDIF

 IF (kom$="назад") THEN
  GR.SHOW 1
  PAUSE 300
  GR.HIDE 1
 ENDIF

 IF (kom$="влево") THEN
  GR.SHOW 2
  GR.SHOW 4
  PAUSE 300
  GR.HIDE 2
  GR.HIDE 4
 ENDIF

 IF (kom$="вправо") THEN
  GR.SHOW 2
  GR.SHOW 5
  PAUSE 300
  GR.HIDE 2
  GR.HIDE 5
 ENDIF

 IF (kom$="стоп") THEN GOTO  qq
 GR.BRIGHTNESS  0.1
 GR.CLOSE
UNTIL 0    

! ONERROR:

qq:
LET s$="программа закончила работу"
TTS.INIT
TTS.SPEAK s$
TTS.STOP
GR.BRIGHTNESS 0.1
GR.CLOSE
END 

В моей ситуации наиболее полезным является голосовое управление. Переводит текст в речь с помощью объекта TTS. Преобразование текста в речь осуществляется с помощью объекта STT. Диктофон должен быть оснащен Wi-Fi, чтобы фонограмма отправлялась в интернет, где она анализируется, и в итоге получается несколько слов или фраз. Затем устройство отображает команду, выполняет ее и проверяет, есть ли она в списке. Если текст не может быть распознан программой, она выводит сообщение об ошибке. Все это повторяется в бесконечном цикле. Завершение работы программы осуществляется нажатием клавиши return или командой stop. Геометрические размеры являются относительными для того, чтобы автоматизировать привязку к местности на разных экранах с разными размерами и разрешениями, что не всегда возможно. При рисовании на экране получаются окружности, которые являются объектами и нумеруются автоматически по мере их создания.

Команда GR. Отобразить созданную окружность означает показать ее. Его номер содержится в n4. Вы могли бы написать GR. SHOW n4. В строке IF (theText$=”вперед”) THEN kom$=”вперед” есть разница в значениях “вперед” и “вперед”. В большинстве случаев STT упрямо возвращает “вперед”, но есть и такие, в которых он не подтверждает команду. Этого можно было бы избежать, но я просто исправил надпись при отображении и не стал усложнять программу. Мой компьютер также выходит из строя, когда распознает команду “влево”. Возможно, это связано с моей особенностью произносить слова.

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

Ссылки

Из-за большого количества текста я повторяю основные ссылки.

Прошивка rcboard-0.01.002.zip для настольного ПК

Это дистрибутив виртуального рабочего стола для Windows. Для Win8 программа установки неправильно проверяет наличие DirectX, поэтому вы можете просто распаковать архив. Требуется . Net 4.5 и DirectX.

Описание прошлой версии РЦборды и Virt2real PlayerЕщё описание рцборды, старый протокол

Приложение для Android. Только локальное управление. Нативное приложение для iOS, которое может использоваться только локально и не обнаруживает никаких устройств. В настоящее время оценивается новая версия, в то время как существует старая версия.

P.S. К сожалению, машина Бонда не дожила до rtsboard:-(.

Оцените статью
Радиокоптер.ру
Добавить комментарий

Adblock
detector