В наши дни смартфоны обычно оснащены гироскопом, акселерометром, компасом, камерой и датчиком GPS. У них также обычно есть подключение к Интернету с Wi-Fi и мобильными сетями передачи данных. Я видел много случаев использования телефона в качестве пульта дистанционного управления для робота, но мне кажется, что сам телефон является идеальной облегченной вычислительной и сенсорной платформой для автономного робота.
Основное препятствие, которое я вижу, это взаимодействие с приводами. Возможность управлять моторами для управления даже настольным роботом или, например, сервоприводами. Подключение и связь с микроконтроллером также может быть препятствием.
Как любитель роботов, я хотел бы знать, как я могу преодолеть эти и другие препятствия, чтобы использовать возможности своего смартфона в своих проектах по робототехнике.
Ответы:
Accessory Kit развития Android (ADK) должны делать все , что вам нужно.
Это плата Arduino, специально разработанная для взаимодействия с Android. Вы можете соединить их через Bluetooth или USB (или WiFi / Ethernet, я думаю).
Поскольку вся архитектура открыта, вы можете использовать каждую часть для достижения наилучших результатов. Вы пишете код Android, чтобы получить данные от встроенных датчиков телефона и управлять дисплеем. И вы пишете код Arduino для управления приводами, сервоприводами и другими датчиками, которых нет в телефоне. Код для связи между ними предоставляется с открытым исходным кодом через Google.
Из блога Arduino :
Большинство примеров предназначены для использования телефона в качестве графического интерфейса для какого-либо аппаратного аксессуара, такого как часы. Но нет никаких причин, по которым вы не можете получить доступ к сенсорам телефона и передавать данные туда и обратно.
Adafruit даже упоминает об использовании этого робота на странице своего магазина для ADK:
(акцент мой)
источник
Другой вариант - плата IOIO-OTG :
Описание SparkFun продукт описывает его функциональность:
Эта доска должна делать все, что вы хотите, и у нее даже есть хороший учебник, чтобы помочь вам начать.
источник
Основная проблема, как я вижу, заключается не в том, чтобы взаимодействовать с приводами: если у вас есть хороший способ беспроводной передачи цифровых (еще лучше аналоговых или достаточно хороших каналов для ШИМ), вы можете просто связать их с чип драйвера мотора (например, L293D) и будьте готовы. Для сервоприводов вам нужно хорошее время отклика, чтобы вы могли обрабатывать импульсы. Если у вас есть канал с поддержкой ШИМ, это не должно быть сложно, так как канал уже имеет высокую скорость передачи. Если у вас медленный канал, сервоприводы могут быть невозможны, поскольку вам требуется точная синхронизация импульсов.
Первый вариант, который я вижу (хотя он довольно громоздкий), это взять Raspberry Pi, подключить его через Ethernet к беспроводному маршрутизатору и подключить телефон к нему по беспроводной сети. Теперь просто напишите базовое приложение для вашего телефона, которое отправляет запросы Pi на основе ввода, и напишите другое серверное приложение для Pi, которое обрабатывает их. Может быть громоздким и несколько сложным, но это вполне расширяемо, ИМО. Вы также можете поместить маршрутизатор в автономный режим и вставить его в Pi (или использовать точку доступа и полностью исключить маршрутизатор).
Другой вариант - использовать контроллер Bluetooth, подобный показанному здесь . Я не использовал это раньше, но, похоже, вам все еще нужен микроконтроллер, чтобы справиться с этим. Я думаю, вы можете подключить его контакты RX / TX непосредственно к TX / RX на Arduino, хотя я не слишком уверен в этом.
Если вы уже использовали XBee / ZigBee, вы можете попробовать Bluetooth-пчелу .
Последний вариант - использовать USB-порт телефона с обычной настройкой беспроводного управления (XBee / что угодно), но для этого потребуется написать драйвер и все.
источник
Да, отсутствие контактов GPIO на смартфонах - это позор. Если у вас уже работает ROS на роботе, вы можете использовать это приложение на телефоне Android, чтобы получить доступ к комплекту датчиков на телефоне.
источник
Многие последние устройства Android, такие как Nexus 7, поддерживают USB On The Go (OTG), что является причудливым способом сказать, что поддерживается «USB Host Mode». В этих случаях при наличии подходящего кабеля стоимостью менее 1 доллара США можно использовать любое совместимое USB-устройство. Вам не нужна специальная версия Arduino с аппаратным обеспечением для режима USB Host.
Я экспериментировал с этим достаточно, чтобы знать, что «нормальный» Arduino, такой как Leonardo или Teensy 2, появляется на телефоне Android как устройство TTY (например, последовательный порт) при подключении с помощью кабеля OTG.
В этой статье подробно рассказывается, как использовать API-интерфейс USB-хоста Android для связи с Arduino из приложения Android. Требуется Android 3.1+ и не требуется рутировать устройство.
источник