Как создают роботов андроидов

РОБОТ на базе: android, arduino, bluetooth. Начало

Создание робота, даже простенького с ограниченным функционалом, довольно интересная и увлекательная задача. В последнее время любительская робототехника переживает настоящий бум, ей начали увлекаться даже те люди, которые от электроники очень далеки (к ним отношусь и я). Прошло то время, когда нужно было сидеть ночами с паяльником, или травить платы. Все стало гораздо проще, нужно лишь купить Arduino, комплект проводков, сенсоры, датчики, моторчики и вперед к сборке своего первого робота. Таким образом, фокус разработчиков — любителей сместился с электроники и механической части к программированию.
Данная серия статей будет содержать информацию для быстрого старта по созданию своего первого робота, от покупки необходимых деталей до его запуска в наш мир.

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

Предполагается, что человек читающий статью уже имеет опыт в:

  • Установке и настройке среды разработки для android устройств.
  • Написании первой программы Hello World для android устройства.
  • Установке драйверов и среды разработки для Arduino.
  • Написании первой программы (включать, выключать) светодиоды на Arduino.
Сокращения

БТ – Bluetooth;
Андроид – устройство с ОС android, к примеру, смартфон;
Скетч – приложение для Arduino;
Ардуино – Arduino Nano.

Общая схема робота

Пусть робот имеет следующую общую схему (рис.1). Андроид, является «головным мозгом», в котором обрабатываются все данные и проводятся вычисления. На основании результатов вычислении по БТ каналу передаются команды, принимаемые БТ модулем и в дальнейшем поступающие по последовательному порту в Arduino. Arduino обрабатывает поступившие команды и выполняет их при помощи «мышц» (Моторы светодиоды и др.). Кроме того в Arduino поступают данные от «органов чувств» (сенсоры, датчики и др.), которые он приводит в удобный вид и отправляет при помощи БТ модуля в «головной мозг». И так все повторяет до бесконечности.

Рисунок 1
Обоснование именно такой схемы робота следующее:
-БТ модуль и Arduino Nano имеют низкую стоимость, а также маленький объем и вес.
-Андроид, не дорогое и доступное устройство, уже имеется у огромного количества людей, в том числе и у меня.
-Андроид имеет свои сенсоры, датчики и экран для вывода информации
-Простота написания кода для приложений как для андроида так и для ардуино.
Для упрощения задачи построения робота, предлагаю воспользоваться методом «от простого к сложному», т.е. как и при изучении языка программирования создадим первую программу «Hello word». Конечно, это будет не одна программа, а как минимум две (для ардуино и андроида). В каждой последующей статье функционал робота будет увеличиваться.

Постановка задачи

Собрать простенькое устройство, у которого имеются:
-2 кнопки (b1, b2).
-1 светодиод (Led).
И выполняется функционал:
-главное activity содержит 2 кнопки «Отпарвить 0» и «Отправить 1», при нажатии на которые от андроида к ардуино по БТ каналу передаются данные, соответствнно «0» и «1», ардуино их обработвает и зажигает либо тушит светодиод.
-данные о нажатии или отпускании кнопок от ардуино передаются в андроид, на экране главного activity выводится информация об этом.

Закуп необходимых деталей и узлов.

1) Android устройство – смартфон LG P500 (версия Android 2.3.3), либо любое другое устройство на базе Android версией 2.3.3 и выше. Цену не указываю, так как отдельно не покупал, а использую свой смартфон.
2) Arduino NanoV3.0 ( dx.com/ru/p/nano-v3-0-avr-atmega328-p-20au-module-board-usb-cable-for-arduino-118037 ) — 11,32$
3) Модуль Bluetooth ( dx.com/ru/p/bluetooth-board-module-4-pin-121326 ) — 10,57$
4) Макетные провода ( dx.com/ru/p/30cm-breadboard-wires-for-electronic-diy-40-cable-pack-80207 ) — 2,51$
5) Кнопки — 2шт., светодиод – 1 шт. – 50 рублей
Итого: 855,20 рублей.

Приступим к работе

Arduino

Соберем из имеющихся деталей схему (рис. 2)

Рисунок 2
Питание на arduino подается по USB кабелю, который подключается к компьютеру, по нему же загружается и программное обеспечение (скетч) выполняемое на нем. Необходимо отметить, что загружать скетч в arduino можно только тогда, когда отключено питание от Bluetooth модуля (Вывод (17) 3V3), в противном случае возникает ошибка.
Подробности установки среды разработки Arduino и драйверов можно найти на официальном сайте: arduino.ru/Guide/Windows
Ниже приведен скетч который необходимо загрузить в ардуино:

Объявляем переменные, напротив каждой стоит комментарий.
Инициируем последовательное соединение и задаем скорость передачи данных в бит/c (бод). Мой БТ модуль работает на скорости 38400, но может быть скорость 9600 (скорость БТ модуля можно задавать при помощи AT команд). Устанавливаем режим работы заданного входа/выхода(pin) как входа или как выхода. Подаем HIGH значение на входы и выходы.
Функция void contact_bounce(int buttton) обрабатывает нажатие кнопок и позволяет устранить дребезг контактов, который возникает при соприкосновении или расхождении контактов в механических переключающих устройствах, таких, как кнопка, происходит многократное замыкание и размыкание.
В основном цикле Loop слушаем последовательный порт, и если на него пришли данные мы их обрабатываем. Кроме того вызываем функцию обработки нажатия кнопок и устранения дребезга контактов.
Загрузив скетч в ардуино, можем проверить его работоспособность – запустив монитор порта. При нажатии кнопок в окне монитора будет выводиться надпись «Press button b». Проверить работу светодиода удастся только после написания приложения для андроида.
В данной статье для ардуино будет использоваться только этот скетч.Приступим к разработки приложения для андроида.

Читайте также:  Андроид корзина с контактами
Android

Для удобства отладки приложения андроида, рекомендую использовать не «Android virtual device», а реальный смартфон с ОС Android версии от 2.3.3 подключенный через USB кабель к компьютеру в режиме «Отладки». Существует огромное количество статей как это сделать.

Android ШАГ 1

Создаем новый проект «Android application project»
Для работы с БТ необходимо выставить права на использование его нашим приложением. Для этого заходим в манифест, выбираем закладку Permissions, нажимаем add, далее Uses permission, и устанавливаем следующие права: android.permission.BLUETOOTH, android.permission.BLUETOOTH_ADMIN
Теперь оформим основное activity, в res/layout/activity_main.xml поместим код:

Таким образом, основное activity примет вид:

Рисунок 3
Текстовое поле «txtrobot», будет отображать всю необходимую нам информацию. Кнопки b1 и b2, будут отправлять команды в arduino.
Теперь переходим в src/../MainActivity.java здесь и будет располагаться наш основной код. Подключим пакет Api для Bluetooth:

Перед тем как использовать БТ необходимо убедится, что в нашем андроиде он присутствует. Создадим экземпляр класса BluetoothAdapter (отвечающий за работу с установленным в андроиде БТ модулем):

Если андроид не имеет БТ то будет возвращено null:

В данном виде программу уже можно запустить. На экране андроида вы должны увидеть надпись: «Bluetooth присутствует».
Теперь необходимо убедиться, что БТ включен, либо предложить его включить. Добавим константу:

Запустив измененное приложение на андроиде, Вам будет выдан «Запрос разрешения на включения Bluetooth», подтвердив его, тем самым Вы активируете БТ.
Полный код приложения:

Android ШАГ 2

Для дальнейших экспериментов, необходимо «спарить» наш андроид и БТ модуль, для этого на андроиде в настройках БТ, выполним поиск и подключимся к БТ модулю, пароль «1234».
Если вдруг удаленный БТ модуль не будет нормально работать, просто отключите от него все провода (VCC, GND,RX,TX), тем самым сделав жесткую перезагрузку, и снова подключите их — это должно помочь.
Теперь попробуем программно подключится к удаленному БТ модулю: основной код подключения разместим в onResume. onResume – это одно из состояний нашего Activity, а именно, Activity видно на экране, оно находится в фокусе, пользователь может с ним взаимодействовать. Ниже приведен основной код Activity:

Доступ к удаленному БТ модулю получаем по его МАС адресу btAdapter.getRemoteDevice(MacAdress). Узнать MAC-адрес БТ модуля можно, при помощи программы для андроида: Bluetooth Terminal.
Что бы убедится, что доступ к БТ модулю получен, используем метод getName(), который позволяет получить имя удаленного БТ модуля, и выводим результат на экран андроида.
Также в этом примере, была добавлена возможность ведения лога, который по ходу выполнения программы можно просматривать, и обнаруживать существующие ошибки. Кроме того создана функция MyError, которая вызывается в том случае если нужно аварийно завершить приложение.
Запустив приложение, на экране андроида в текстовом поле «txtrobot» отобразится имя удаленного БТ модуля.

Android ШАГ 3

Доступ к удаленному БТ модулю получен, следующий наш шаг передать данные от андроида к нему. Для этого в onResume(), создадим сокет:

где UUID (Universally Unique Identifier) — это стандарт идентификации, используемый в создании программного обеспечения. Добавим в определение константу UUID:

Чтобы не тормозить соединение отменим поиск других БТ устройств:

При не удаче закроем сокет:

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

Читайте также:  Как сделать android system webview системным

В конструкторе public ConnectedThred(BluetoothSocket socket) создается объект управляющий передачей данных через сокет:

Для отправки данных из главного activity вызывается метод sendData(String message) с параметром текстового сообщения, которое преобразуется к типу byte. Метод cancel() позволяет закрыть сокет.
Напишем, обработчики нажатия кнопок b1 и b2, содержащие вызов функции sendData(String message) и сделаем запись об этом в логе. Полный код приложения приведен ниже:

Написанное нами приложение, позволяет передавать по БТ от андроида к ардуино данные – «0» и «1», которые в свою очередь для ардуино являются командами «1» — зажечь светодиод, а «0» — потушить. Таким образом, с учетом общей схемы робота, мы научились отдавать команды от «головного мозга» к «мышцам». Осталось дело за малым, научить андроид принимать данные от «органов чувств».

Android ШАГ 4

Получение данных также как и отправку, необходимо выполнять в отдельном потоке, чтобы избежать зависание главного activity. Принятые данные от БТ модуля мы будем выводить на экран главного activity в текстовом поле – MyText. Но возникает трудность — работа с view-компонентами доступна только из основного потока. А новые потоки, которые мы создаем, не имеют доступа к элементам экрана. Для решения данной проблемы воспользуемся механизмом Handler.
Handler — это механизм, который позволяет работать с очередью сообщений. Он привязан к конкретному потоку (thread) и работает с его очередью. Handler умеет помещать сообщения в очередь. При этом он ставит самого себя в качестве получателя этого сообщения. И когда приходит время, система достает сообщение из очереди и отправляет его адресату (т.е. в Handler) на обработку.
Объявим Handler:

Источник

Создаем робота андроида своими руками

Эта книга – отличный подарок для тех, кто собирается строить робота в первый раз, а также будет полезна и более опытным «роботостроителям», которые хотят отточить свое мастерство. Базовых знаний в области радиоэлектроники окажется вполне достаточно, чтобы книга помогла вам осуществить 12 отличных робототехнических проектов с использованием как промышленных частей и деталей (полные списки прилагаются), так и различного домашнего хлама, вытащенного с антресолей.

Издание окажется крайне полезным для всех любителей электроники и телемеханики как классическое руководство по функционально-блочному построению робототехнических устройств.

Глава 1 — Начало 1

Глава 2 — Искусственная жизнь и искусственный интеллект 4

Глава 3 — Системы питания 6

Глава 4 — Системы движения и привода 10

Глава 5 — Сенсорика 13

Глава 6 — Интеллект 19

Глава 7 — Передвижной робот с голосовым управлением 26

Глава 8 — Поведенчески ориентированные схемы роботов, нейронные сети, организация нервной системы и предикативная архитектура 29

Глава 9 — Робот – система телеслежения 36

Глава 10 — Передвижные платформы 38

Глава 11 — Шагающие роботы 42

Глава 12 — Робот – солнечный шар 44

Глава 13 — Подводные роботы 46

Глава 14 — Аэророботы 48

Глава 15 — Роботизованная рука-манипулятор, интерфейс IBM PC и система голосового управления 50

Глава 16 — Кисть руки – андроида 53

Джон Ловин
Создаем робота-андроида своими руками

Введение

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

• система питания устройства

• моторы и сервомеханизмы для обеспечения движения и перемещения устройства

• системы чувствительных датчиков (сенсоров)

• элементы искусственного интеллекта

По каждой из этих проблем существует многочисленная специальная литература, и очевидно, что объем одной книги не позволит охватить все многообразие применяемых технологий. Тем не менее мы коснемся большинства из них, что позволит вам получить начальные представления о задаче и может послужить основой для дальнейшего самостоятельного экспериментирования.

Робототехника является развивающейся дисциплиной. Многие подходы известны уже сегодня, но вряд ли кто-нибудь сможет сказать, какие методы и технологии конструирования будут использоваться через сто лет. Как и биологические системы, робототехника развивается в соответствии с Дарвиновской моделью «естественного отбора».

Занявшись созданием роботов, вы не останетесь в одиночестве. Я был очень удивлен, когда узнал, что многие энтузиасты, государственные организации, частные фирмы, спортивные и технические клубы занимаются вопросами любительского конструирования роботов. Наиболее «продвинутой» программой по робототехнике из тех, которые я когда-либо видел, обладает американское космическое агентство НАСА. Большинство разработок можно найти в открытом доступе. Если у вас есть Интернет – воспользуйтесь любой поисковой системой (Yahoo, Exite и т. д.) по ключевому слову robotics. Вы найдете массу информации, посвященной робототехнике, на сайтах различных компаний, университетов, клубов, форумов и просто энтузиастов.

Читайте также:  Обновление galaxy s21 до android 12

Благодарности

Я хотел бы выразить благодарность некоторым коллегам, оказавшим неоценимую помощь при создании этой книги: Мэтту Вагнеру, моему агенту в Waterside Productions, Скотту Грилло, помогавшему выдержать график работы, и Стефану Смиту за большую помощь в редактировании текста.

Глава 1
Начало

Некоторые историки считают, что началом робототехники можно считать времена античной Греции. Примерно в 270 году до н. э. греческий инженер Ктесибус создавал музыкальные органы и клепсидры (водяные часы), в которых имелись движущиеся фигуры.

Другие историки полагают, что робототехника началась с появлением механических кукол. Примерно в 1770 году Пьер Жаке-Дрю – швейцарский часовой мастер и изобретатель наручных часов изготовил три замечательные куклы. Одна из созданных им кукол «умела» писать, другая – играть на органе, а третья – рисовать картины. Эти удивительные механические куклы, предназначенные для развлечения королевской семьи, проявляли свое «искусство» при помощи рычажков, шестеренок и пружин.

Позднее, в 1898 году, Никола Тесла построил дистанционно управляемую «ныряющую» лодку. Для 1898 года это было немалым достижением, и лодка демонстрировалась в Мэдисон Сквер Гарден. Тесла планировал создать лодку, способную к автономному плаванию, но за недостатком финансирования исследования пришлось прекратить.

Слово «робот» впервые появилось в 1921 году в пьесе «Р.У.Р.» (Россумские Универсальные Роботы), написанной знаменитым чешским драматургом Карелом Чапеком. Робот по-чешски означает «рабочий». В пьесе описывались механические слуги – «роботы». Когда этих роботов наделили человеческими эмоциями, они восстали против своих хозяев и уничтожили их.

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

С легкой руки Карела Чапека роботы стали главными героями многих научно-фантастических книг и фильмов. Развитие темы «роботов» привело к появлению их многочисленных разновидностей. Наряду со старомодными «железными» людьми, появились киборги – существа частично «человеческого», а частично – «машинного» происхождения, и андроиды — роботы, имеющие человеческий облик.

Многие впервые увидели «настоящего» робота на всемирной ярмарке 1939 года. Фирма Westinghouse Electric создала робота Electro – движущегося человека. У робота Electro имелись моторчики и система приводов, позволявшие ему «двигать» ногами, руками и ртом. Робот не «умел» делать никакой полезной работы – его просто демонстрировали на сцене в компании «механической» собаки Спарко.

Зачем создавать роботов?

Применение роботов оказалось совершенно необходимым для многих производств, прежде всего потому, что стоимость «труда» робота оказалось значительно ниже стоимости такой же операции, производимой работником – человеком. Более того, робота достаточно запрограммировать один раз, и он будет совершать требуемое действие с точностью, превосходящей точность работы любого квалифицированного рабочего. С другой стороны, человек способен выполнять различные задания и с этой точки зрения является значительно более гибким. Роботы, как правило, предназначены для выполнения какой-то одной операции. Например, робота, предназначенного для сварки, вряд ли удастся «научить» считать детали в бункере.

Существующие наиболее совершенные промышленные роботы очень скоро превратятся в «динозавров». Сегодняшняя «младенческая» стадия эволюции роботов заканчивается, появляются новые, гораздо более универсальные роботы, вбирающие в себя все новые качества человеческого интеллекта.

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

Применение роботов

Понятно, что гораздо проще создать «домашнего» робота, выполняющего какую-то одну работу. Например, уже сегодня существуют небольшие мобильные роботы, которые могут «самостоятельно» постричь траву на газоне. Эти роботы работают от солнечных батарей и не требуют программирования. По периметру газона закапывается провод; робот чувствует этот провод и остается внутри периметра, не выходя за его пределы.

Создание полезного персонального робота очень сложно. Вообще говоря, эта проблема выходит за рамки данной книги, да, пожалуй, и любой современной книги по робототехнике. Резонно спросить – а какова вообще тогда цель этой книги? Я надеюсь, что, прочитав эту книгу и построив несколько моделей роботов, вы приобретете необходимый опыт и сможете внести свой вклад в развитие робототехники.

Источник

Оцените статью