Оглавление:

Последовательный порт Android G1 для робота Arduino: 8 шагов
Последовательный порт Android G1 для робота Arduino: 8 шагов

Видео: Последовательный порт Android G1 для робота Arduino: 8 шагов

Видео: Последовательный порт Android G1 для робота Arduino: 8 шагов
Видео: Arduino для начинающих. Начало работы 2024, Сентябрь
Anonim
Последовательный порт Android G1 для робота Arduino
Последовательный порт Android G1 для робота Arduino
Последовательный порт Android G1 для робота Arduino
Последовательный порт Android G1 для робота Arduino
Последовательный порт Android G1 для робота Arduino
Последовательный порт Android G1 для робота Arduino

Узнайте, как ваш мобильный телефон Android может управлять роботом с помощью платы Arduino. Телефон принимает команды через Telnet с другого телефона или ПК, поэтому вы можете управлять роботом удаленно. В противном случае этот проект не изменит G1, чтобы вы могли продолжать использовать его как обычный телефон после расстыковки. Почему? Используя дешевые электронные компоненты, такие как платы Arduino, вы можете соединить их со своим телефоном за 400 долларов и создать потрясающего робота. Добавление GPS, ЖК-дисплеев, датчиков движения, Wi-Fi, сотовой связи, динамиков и т. Д. К боту-любителю обойдется в сотни долларов, но в вашем телефоне они уже есть! Вместе плата Android G1 и Arduino позволяет использовать недорогую электронику, такую как простые сервоприводы и датчики, для создания мощных устройств, таких как роботы, удаленное телеприсутствие или забавные игрушки для детей. Дополнительная информация на сайте Cellbots.com. Примечание. В настоящее время для этого проекта требуется Android G1 с root-доступом для использования последовательного вывода с телефона на робота Arduino. Вы можете добавить модуль BlueTooth за 20 долларов к своей плате Arduino, чтобы телефон разговаривал с ним через последовательный интерфейс BlueTooth, если вы хотите использовать коммерческое программное обеспечение Android. Особая благодарность: мы должны поблагодарить Hacker Dojo в Маунтин-Вью, Калифорния, за то, что связались с нами, помогли с некоторыми сложными проблемами через их список рассылки замечательных участников, а также за то, что у нас есть чипы 74LS04 на складе. Большая часть сборки была сделана в технической мастерской в Менло-Парке.

Шаг 1. Необходимые предметы

Необходимые предметы
Необходимые предметы
Необходимые предметы
Необходимые предметы
Необходимые предметы
Необходимые предметы

Для выполнения этого руководства вам понадобится следующее: Аппаратное обеспечение: - Android G1 Dev Phone (или другое устройство Android с корневым доступом и последовательным выходом) - Arduino (я использую Freeduino SB, но подойдет любой) - от 3,3 до 5 В. конвертер, если вы не используете Arduino 3,3 В (я использую микросхему 74LS04 менее чем за 1 доллар, но доступны и другие варианты) - Разъемная USB-плата HTC для G1 - Паяльное оборудование для двух быстрых подключений - Корпус робота с микро сервоприводы (картон, акрил, ступени, колеса, все, что угодно) Программное обеспечение: - Среда сценариев Android (ASE) - Клиент Telnet для вашего ПК (я использую PuTTY в Windows) - Среда разработки Arduino - (необязательно) Последовательный клиент для ваш компьютер (для этого я также использую PuTTY в Windows) - (необязательно) Android SDK. Если вы можете следовать инструкциям, вы можете завершить это руководство, не зная Python, Arduino, Android или электронику. Вы захотите знать эти вещи, если хотите выйти за рамки мигающего светодиода, но это поможет вам начать.

Шаг 2. Android G1 с включенным последовательным выходом

Android G1 с включенным последовательным выходом
Android G1 с включенным последовательным выходом
Android G1 с включенным последовательным выходом
Android G1 с включенным последовательным выходом
Android G1 с включенным последовательным выходом
Android G1 с включенным последовательным выходом

G1 не поставляются с возможностью отправки последовательных команд из порта USB, и нет встроенной опции для ее включения. Если вы опытный пользователь Android SDK, вы можете создать свою собственную сборку, но я решил использовать Cyanogenmod 4.2.13. Если вам известны другие устройства Android с работающим серийным выходом, добавьте их в комментарии.

При желании вы можете перейти по ссылкам на это руководство по разговору с G1 через USB с вашего ПК. Это последовательное соединение с USB не требуется для этого урока, но я использовал его как хорошую проверку работоспособности, чтобы убедиться, что телефон отправляет последовательный порт. Если вы не используете другое устройство для проверки работоспособности последовательного вывода, вы можете попробовать эту простую проверку: 1. Откройте приложение Terminal на G1 (поставляется с Cyanogen, но загрузите его с Market, если у вас другой образ) 2. Перейдите в каталог / dev /, набрав cd / dev / 3. Введите ls (это L) и найдите ttyMSM2 в возвращенном списке. Скрипт Python, который мы будем использовать позже, отправляет команды в '/ dev / ttyMSM2' в приказать им выйти из последовательного соединения. Поскольку для этого требуется root-доступ, вам нужно будет изменять разрешения для этого каждый раз, когда вы перезагружаете телефон. Для этого: 1. Откройте приложение терминала на телефоне. 2. Введите «chmod 777 / dev / ttyMSM2». Затем вы можете запустить сценарий Python из редактирования сценариев Android на следующем шаге, и он получит доступ для отправки последовательного вывода.

Шаг 3. Установите среду сценариев Android (ASE) с Python

Установите среду сценариев Android (ASE) с Python
Установите среду сценариев Android (ASE) с Python
Установите среду сценариев Android (ASE) с Python
Установите среду сценариев Android (ASE) с Python

Сценарии, которые мы будем использовать для создания открытого сокетного соединения на телефоне и отправки команд, написаны на Python. Чтобы запустить это на G1, нам понадобится среда сценариев Android. Если вы не видите его в Маркете, вы можете загрузить его, отсканировав штрих-код на этой странице, который ссылается на файл apk на этой странице.

После установки и запуска ASE вы захотите добавить модуль Python из меню: 1. Откройте ASE и убедитесь, что у вас есть работающее подключение к Интернету (Wi-Fi или 3G). 2. Нажмите кнопку меню на телефоне и выберите Интерпретаторы 3. Снова нажмите меню и выберите «Добавить» 4. Выберите Python (на момент написания этой статьи - v2.6.2), и он загрузит несколько zip-файлов. Возможно, вы захотите изучить создание, открытие, редактирование и запуск сценариев, чтобы познакомиться с Python через ASE, но это не обязательно.

Шаг 4. Скопируйте и запустите сценарий Cellbot.py для запуска программы Python

Скопируйте и запустите сценарий Cellbot.py, чтобы запустить программу Python
Скопируйте и запустите сценарий Cellbot.py, чтобы запустить программу Python

В этом руководстве скрипт Python используется в качестве «мозга» робота. Получите последний код из нашего проекта Google Code с открытым исходным кодом. Вам нужен только файл cellbot.py, но другие могут помочь с различными вещами, которые вы хотите изучить. Я просто подключил телефон к USB-разъему моего ПК и смонтировал диск перед копированием файла в / sdcard / ase / scripts.

Программа создает соединение с открытым сокетом для приема входящего сеанса Telnet. Он также выводит полученные команды на экран, отправляя их через последовательный порт. Поместите этот файл на SD-карту телефона в каталог / ase / scripts /. Подробные инструкции по загрузке и запуску сценариев: 1. Скопируйте сценарий cellbot.py в каталог SD-карты / ase / scripts / 2. Обязательно отключите SD-карту с вашего ПК, если вы скопировали их таким образом, поскольку телефон не может получить доступ к файлам одновременно с вашим ПК. 3. Откройте приложение Android Scripting Environment. 4. Щелкните файл cellbot.py, чтобы запустить его. Вы должны увидеть подтверждение того, что устройство готово на данный момент для приема входящих сеансов telnet на порт 9002. Совет: обязательно запустите "chmod 777". / dev / ttyMSM2 "сначала команда из шага №3. См. Шаг № 5, чтобы узнать IP-адрес телефона.

Шаг 5: Telnet в G1 и тестовая отправка команд

Telnet в G1 и тестовая отправка его команд
Telnet в G1 и тестовая отправка его команд
Telnet в G1 и тестовая отправка его команд
Telnet в G1 и тестовая отправка его команд
Telnet в G1 и тестовая отправка его команд
Telnet в G1 и тестовая отправка его команд

Телефон должен быть готов к тому, чтобы вы могли подключиться к нему через Telnet и посылать ему команды с вашего ПК. Он распечатает их на экране телефона, чтобы подтвердить полученное. Я использовал PuTTY в Windows, но мы подтвердили, что minicom отлично работает на Mac, как описано в этом руководстве.

Сначала вам нужно будет найти IP-адрес вашего телефона. Это можно сделать, выбрав «Меню»> «Настройки»> «Управление беспроводной связью»> «Настройки Wi-Fi», а затем нажав на текущее активное соединение. Появится всплывающее всплывающее сообщение с текущим IP-адресом в локальной сети. Запишите это, так как вы будете использовать это каждый раз, когда захотите открыть сеанс telnet со своего ПК. Назначение IP-адресов обычно истекает через определенное количество дней, поэтому вам может потребоваться проверить это еще раз. Примечание. В этом руководстве предполагается, что ваш компьютер и телефон находятся в одной локальной сети. Маршрутизация к телефону из-за пределов локальной сети должна быть возможна, но здесь не рассматривается. Откройте выбранный вами клиент telnet и подключитесь к IP-адресу телефона через порт 9002. В командной строке вы делаете это как «telnet 192.168.1.1 9002», используя фактический IP-адрес телефона. Введите несколько символов и нажмите Enter, чтобы увидеть их на экране телефона. Вы можете ввести q, чтобы сценарий Python завершил работу, что должно закрыть сеанс терминала. Если по какой-либо причине вы не можете подключиться через telnet и вам нужно убить программу, простая перезагрузка телефона должна помочь. Опытные пользователи могут захотеть найти идентификатор процесса с помощью ps, а затем использовать kill, чтобы остановить его. Дополнительно: в будущей версии можно будет запускать локальный веб-сервер с телефона, а не принимать команды через telnet. Мы также изучаем XMPP, чтобы общаться с вашим роботом.

Шаг 6: Подключите переключатель уровня 3.3В к 5В к Arduino

Подключите переключатель уровня 3.3В к 5В к Arduino
Подключите переключатель уровня 3.3В к 5В к Arduino
Подключите переключатель уровня 3.3В к 5В к Arduino
Подключите переключатель уровня 3.3В к 5В к Arduino
Подключите переключатель уровня 3.3В к 5В к Arduino
Подключите переключатель уровня 3.3В к 5В к Arduino

Arduino, используемый в этом руководстве, представляет собой модель 5 В, поэтому нам нужно преобразовать сигнал 3,3 В, выходящий из G1, с помощью переключателя уровня. Должно быть возможно подключение напрямую к Arduino 3,3 В, но это не то, что я тестировал.

Есть несколько способов приблизиться к этому, но в этом примере мы будем использовать микросхему 74LS04. Вы можете найти один здесь, и они, вероятно, стоят меньше 1 доллара. Мы с Тимом подобрали наши в Хакерском додзё в Маунтин-Вью, Калифорния, но они ОЧЕНЬ распространены, и их должно быть много везде, где продаются или передаются чипы. На высоком уровне мы просто собираемся отправить сигнал TX с коммутационной платы HTS USB на контакт 1 микросхемы 74LS04. Чтобы заставить его работать, мы дважды проходим чип и выводим контакт 4 на контакт RX на Freeduino SB (ваш последовательный контакт может быть другим, если у вас есть другая плата Arduino, но все должны поддерживать это). Выполните следующие действия, чтобы подключить переключатель уровня и плату HTC USB (пока не подключайте ее к телефону и отключайте питание от Arduino): 1. Вставьте микросхему 74LS04 в макетную плату. Убедитесь, что микросхема препятствует центральному разрыву, чтобы контакты не закорочены (поначалу я сделал глупый ход) 2. Подключите два провода к плате HTC USB, как описано в этой инструкции, но мы будем использовать только контакты 7 (Земля) и 8 (TX0), поскольку в этом руководстве мы используем только одностороннюю передачу. 3. Подключите другой конец провода заземления (контакт 7) к заземлению на вашей макетной плате (который должен быть подключен к заземлению на вашем Arduino) 4. Подключите другой конец провода TX0 (контакт 8) к макетной плате, где он входит в контакт 1 микросхемы 74LS04. (выполните поиск изображения, чтобы получить полную схему микросхемы) 5. Используйте провод для соединения контактов 2 и 3 микросхемы 6. Подключите контакт 4 микросхемы к точке RX Arduino (контакт 0 на Freeduino SB и Arduino Duemilanove) 7. Подключите контакт 7 (GND) на микросхеме к земле для вашей макетной платы (которая также подключается к заземлению Arduino) 8. Подключите контакт 14 (VCC) к источнику питания 5 В на макетной плате (который получает питание от Arduino). Выход 5 В) Теперь вы должны быть готовы подключить переходную плату HTC USB к нижней части телефона и включить Arduino. Проверьте, нет ли искр и запаха, и дотроньтесь до предметов, чтобы убедиться, что они прохладные. Примечание: текущий код сотового бота включает светодиод № 13, когда серводвигатели робота должны работать. Если у вас еще нет робота, вы можете убедиться, что светодиод включается и выключается, чтобы убедиться, что он работает.

Шаг 7: Загрузите программу Cellbots на Arduino

Загрузите программу Cellbots на Arduino
Загрузите программу Cellbots на Arduino
Загрузите программу Cellbots на Arduino
Загрузите программу Cellbots на Arduino

Получите исходный код Arduino с нашего сайта проекта Google Code. Откройте программу Cellbots.pde Arduino в редакторе Arduino. Затем вставьте его на плату Arduino.

Вы можете проверить взаимодействие с кодом Arduino, открыв последовательный монитор в редакторе Arduino. Это отличный способ протестировать вашего робота или устройство, поговорив напрямую с Arduino, прежде чем подключать все к телефону. Код отправляет последовательные команды обратно на последовательный монитор, чтобы подтвердить, что он делает, даже если ваш робот еще не построен. Примечание: вы не можете загружать программы в Arduino, пока провод подключен к последовательному входному контакту RX.. Так что, возможно, вы захотите установить его в качестве переключателя, но я просто отключил его, когда мне нужно было загрузить новую программу.

Шаг 8: Запустите весь процесс

Запуск всего процесса
Запуск всего процесса
Запуск всего процесса
Запуск всего процесса
Запуск всего процесса
Запуск всего процесса

Вы должны иметь возможность подключить плату HTC USB к телефону, запустить файл cellbot.py в ASE и открыть сеанс терминала в телефоне. Введите «H», чтобы телефон поздоровался, или любые другие команды из файла README.txt.

«Q» завершит выполнение сценария Python на телефоне и закроет разъем терминала. Вот краткое описание того, как все это работает: 1. Сценарий Python открывает сокет для приема входящих подключений telnet и вывода команд через последовательный порт 2 Мы подключаемся от нашего ПК к телефону через telnet на порт 9002 и отправляем ему команды, которые мы видим на экране 3. Плата HTS USB взаимодействует с USB-портом G1 и посылает сигнал 3,3 В на контакт 1. 74LS04. сигнал выходит из микросхемы на выводе 2, возвращается на вывод 3 и снова выходит на вывод 4 при 5 В 5. Наша Arduino принимает последовательный сигнал на выводе 0 RX и обрабатывает его с помощью программы Cellbot.pde 6. Мы можно ввести «q», чтобы убить скрипт Python и закрыть соединение telnet. Теперь, когда вы завершили этот очень сложный процесс отправки базовых команд роботу Arduino, пора вам взломать его, чтобы он стал еще круче! У нас пока нет двусторонней последовательной связи, поэтому Arduino не может отправлять команды обратно в телефон, но мы над этим работаем. Будьте в курсе, подписавшись на наш блог на Cellbots.com. Об авторах: Тим Хит (Tim Heath), ведущий исследователь, который первым провел этот процесс в Tech Shop в Menlo Park, членом которого он является. Райан Хикман Программист, который работал над кодом Python и Arduino и написал это руководство.

Рекомендуемые: