Как я могу интегрировать смартфон с моим робототехническим проектом? [закрыто]


24

В наши дни смартфоны обычно оснащены гироскопом, акселерометром, компасом, камерой и датчиком GPS. У них также обычно есть подключение к Интернету с Wi-Fi и мобильными сетями передачи данных. Я видел много случаев использования телефона в качестве пульта дистанционного управления для робота, но мне кажется, что сам телефон является идеальной облегченной вычислительной и сенсорной платформой для автономного робота.

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

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


Просто чтобы добавить опцию iOS, посмотрите SESO iPhone как контроллер робота
Greenonline

Ответы:


19

Accessory Kit развития Android (ADK) должны делать все , что вам нужно.

ADK

Это плата Arduino, специально разработанная для взаимодействия с Android. Вы можете соединить их через Bluetooth или USB (или WiFi / Ethernet, я думаю).

Поскольку вся архитектура открыта, вы можете использовать каждую часть для достижения наилучших результатов. Вы пишете код Android, чтобы получить данные от встроенных датчиков телефона и управлять дисплеем. И вы пишете код Arduino для управления приводами, сервоприводами и другими датчиками, которых нет в телефоне. Код для связи между ними предоставляется с открытым исходным кодом через Google.

Из блога Arduino :

Комплект разработки Android Open Accessory Development Kit (ADK) обеспечивает реализацию USB-аксессуара Android, основанного на платформе создания прототипов электроники с открытым исходным кодом Arduino, файлах аппаратного обеспечения аксессуара, коде, реализующем прошивку аксессуара, и приложении Android, которое взаимодействует с аксессуар. Файлы и код аппаратного обеспечения содержатся в загружаемом пакете ADK.

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

Adafruit даже упоминает об использовании этого робота на странице своего магазина для ADK:

Ускорьте разработку своего телефона на Android или просто спроектируйте роботов для мобильных телефонов с Arduino ADK! Arduino ADK - это микроконтроллерная плата на основе мощного ATmega2560 (таблица данных). Он имеет хост-интерфейс USB для подключения к телефонам на базе Android и повышающий преобразователь питания для зарядки телефона от источника постоянного тока, когда он подключен к ADK

(акцент мой)


11

Другой вариант - плата IOIO-OTG :

IOIO-OTG доска

Описание SparkFun продукт описывает его функциональность:

Он оснащен микроконтроллером PIC, который действует как мост, соединяющий приложение на вашем ПК или устройстве Android с периферийными устройствами низкого уровня, такими как GPIO, PWM, ADC, I2C, SPI и UART. Библиотека уровня приложения помогает вам писать управляющий код для этих периферийных устройств низкого уровня так же, как вы пишете любое другое приложение Java!

Эта доска должна делать все, что вы хотите, и у нее даже есть хороший учебник, чтобы помочь вам начать.


6

Основная проблема, как я вижу, заключается не в том, чтобы взаимодействовать с приводами: если у вас есть хороший способ беспроводной передачи цифровых (еще лучше аналоговых или достаточно хороших каналов для ШИМ), вы можете просто связать их с чип драйвера мотора (например, L293D) и будьте готовы. Для сервоприводов вам нужно хорошее время отклика, чтобы вы могли обрабатывать импульсы. Если у вас есть канал с поддержкой ШИМ, это не должно быть сложно, так как канал уже имеет высокую скорость передачи. Если у вас медленный канал, сервоприводы могут быть невозможны, поскольку вам требуется точная синхронизация импульсов.

Первый вариант, который я вижу (хотя он довольно громоздкий), это взять Raspberry Pi, подключить его через Ethernet к беспроводному маршрутизатору и подключить телефон к нему по беспроводной сети. Теперь просто напишите базовое приложение для вашего телефона, которое отправляет запросы Pi на основе ввода, и напишите другое серверное приложение для Pi, которое обрабатывает их. Может быть громоздким и несколько сложным, но это вполне расширяемо, ИМО. Вы также можете поместить маршрутизатор в автономный режим и вставить его в Pi (или использовать точку доступа и полностью исключить маршрутизатор).

Другой вариант - использовать контроллер Bluetooth, подобный показанному здесь . Я не использовал это раньше, но, похоже, вам все еще нужен микроконтроллер, чтобы справиться с этим. Я думаю, вы можете подключить его контакты RX / TX непосредственно к TX / RX на Arduino, хотя я не слишком уверен в этом.

Если вы уже использовали XBee / ZigBee, вы можете попробовать Bluetooth-пчелу .

Последний вариант - использовать USB-порт телефона с обычной настройкой беспроводного управления (XBee / что угодно), но для этого потребуется написать драйвер и все.


5

Да, отсутствие контактов GPIO на смартфонах - это позор. Если у вас уже работает ROS на роботе, вы можете использовать это приложение на телефоне Android, чтобы получить доступ к комплекту датчиков на телефоне.


4

Многие последние устройства 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+ и не требуется рутировать устройство.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.