- Основы взаимодействия Andriod и Arduino микроконтроллеров
- Где можно применить связь Андроида с Ардуино
- Приложения на Андроид для взаимодействия с Ардуино
- Основы приема-передачи данных
- Какие компонеты могут потребоваться для взаимодействия
- Настройка соединения
- Простейший пример
- Android + Arduino = ♥
- Настройка Arduino ПО
- Загрузка прошивки
- Тестовое Android приложение
- Запуск
- Немного кода
- Arduino
- Android
- Выводы
- Android studio usb arduino
- About
Основы взаимодействия Andriod и Arduino микроконтроллеров
Уже достаточно давно Гугл позволила связывать устройства на Адроиде через usb с различными микроконтроллерами, открыв API. Теперь могут ликовать все, кто занимается созданием разнообразных проектов на Ардуино, ведь теперь значительно проще будет провести отладку системы Аndroid Аrduino и, в принципе, отрегулировать их взаимодействие.
Мы уже начали знакомить читателей с возможностями связки микроконтроллера и смартфона — см. Управление устройствами со смартфона для чайников.
Но и до этого различные модули позволяли спокойно взаимодействовать Андроид и Ардуино. Давайте же разберёмся, каким образом можно реализовать проект, который будет управляться со смартфона, и что для этого потребуется.
Где можно применить связь Андроида с Ардуино
В первую очередь, необходимо задуматься о том, как применять возможность передачи сигнала с Андроид на Ардуино. Ведь прежде, чем изучать какие-то материалы, каждый здравый человек должен понимать, к чему это его приведёт в итоге. Даже если речь идёт про хобби. И действительно, возможность управления техникой с вашего смартфона уже давно перестала восприниматься, как нечто неординарное. Сейчас в большинстве телевизоров, холодильников и даже пылесосов, которые приобретаются средним классом, есть возможность передачи данных на смартфон.
Такое решение позволяет значительно упростить жизнь обывателя, ведь для того же телевизора нет необходимости постоянно покупать батарейки в пульт и искать его, если потеряется. Мы всё ближе к заветным умным домам, но некоторые предпочитают не покупать подобную технику, а самостоятельно её сконструировать.
В таком случае, связку Андроид Ардуино стоит расценивать в двух вариациях:
- Удалённое управление каким-либо устройством с помощью смартфона. Ещё его называют связью смартфон-МК. Всё та же техника, например, раздвижные жалюзи или освещение в комнате, которое будет выключаться по одному клику. Если вы захотите сделать последнее, то даже нет необходимости менять проводку или докупать специальные смарт-лампы, которые могут выгореть спустя месяц. Достаточно приобрести небольшой микроконтроллер Ардуино, модуль связи по беспровобному интернету или блютуз и изоленту. После чего достаточно будет спаять простейшую схему, которая замыкается в случае, если подаётся сигнал на МК.
Сигнал этот будет подаваться с вашего телефона, замыкать контакты, и свет начнет гореть. Чтобы не было проблем и для дополнительной безопасности вашего жилища, можно написать скрипт, способный автоматически размыкать цепь, если устройство управления удаляется из поля видимости. Обычные выключатели всё так же будут работать, но только, когда цепь замкнута. - Передача данных для информирования или связь МК-Смартфон. Здесь вы уже не управляете какой-то техникой, а скорее наоборот, различная техника позволяет получить определённые данные на ваш смартфон. Первое, что приходит на ум и простейшее применение, – датчик движения. Данный модуль имеется в стандартных датчиках для МК Ардуино, купить его не составит проблем, как и вмонтировать в проход. Затем останется написать код, подобие которого уже есть на многих англоязычных форумах, отправляющий СМСку или сообщение в социальных сетях, а также специальной утилите, если кто-то пересечет инфракрасный луч.
Можно создать и более сложные и автоматизированные системы, которые будут передавать не только медиа-информацию о вашей квартире, но и сообщать, если в домашней оранжерее созреют овощи или фрукты. Всё зависит исключительно от фантазии самого инженера, но основа технологии всё та же – передача данных с одного устройства на другое.
Вот вы выбрали подходящий проект и взялись за его реализацию. Модули и МК уже заказаны, а пока они идут, можно заняться и разработкой ПО. Ведь голый Андроид не взаимодействует с Ардуино при помощи магии.
Приложения на Андроид для взаимодействия с Ардуино
Разрабатывать утилиту мы будем не с нуля, ведь это не базис по программирования на java. Проще всего воспользоваться готовыми движками и средами с пользовательским интерфейсом, где вам, буквально, останется дописать 1-2 строчки кода, для расположенной кнопки, чтобы та заработала. Естественно, подобный подход значительно ограничивает функционал конечного продукта и неизбежно ущемляет творческий подход, но будет полезен для тех, кто хочет быстро реализовать простой проект без лишних проблем.
Для начала рассмотрим три базовых файла, которые вы встретите при проектировании программы:
- MainActivity.java – это весь код приложения на одноимённом языке, все функции и методы, которые вы записываете, сохраняются сюда.
- Activity_main.xml – макет, как несложно догадаться из расширения файла. Сюда сохраняется расположение кнопок, текста и прочих интерактивных компонентов, которые затем оживляются уже в коде.
- AndroidManifest.xml – этот файл также относится к макетам, но немного в другой сфере. Он определяет основные параметры для запуска приложения и разрешения, которые тому будут необходимы. В нашем случае это необходимость включить Bluetooth, ведь через него мы будем связываться с МК. Если вы делаете датчик, который должен отсылать информацию на большое расстояние, то, соответственно, необходимо включить и проверить работу беспроводного или мобильного интернета.
Основы приема-передачи данных
Чтобы понимать, как ваш будущий проект вообще будет работать, стоило бы изучить базовую физику электромагнитных полей. Но чтобы не перегружать лишней информацией, достаточно усвоить, что на сегодняшний день передача данных происходит тремя основными путями:
- Через usb-кабель, что подходит далеко не везде, но хороший вариант, дабы настроить проект.
- Через блютуз и смежные протоколы, например, в последнее время стало популярным использовать NTFS для управления умными устройствами. Но, так как мы говорим о проекте на МК Ардуино, то остановимся именно на блютуз.
- Через беспроводной интернет. Здесь ничего нового, по сути, ваш мобильный или микроконтроллер выступает сервером, принимающим и обрабатывающим полученные данные, а затем производящим вычисления или действия и отправляющим ответ.
Это основные способы передачи и приёма информации, вам остаётся выбрать подходящий. Для проектов, которые не будут использоваться на больших расстояниях, оптимальным вариантом по объемам кода и простоте настройки является блютуз.
Какие компонеты могут потребоваться для взаимодействия
Выше мы уже упоминали, что для проекта на Ардуино, который предполагает использование одного из методов передачи данных на расстоянии, необходимо приобрести дополнительные модули. Опять же, лучшим выбором будет блютуз. Данный модуль позволяет принимать и отправлять сигналы определённой частоты, которые улавливаются большей частью смартфонов, а соответственно, никаких проблем не должно возникнуть. Вы можете выбрать как одно из устройств, представленных в основной линейке Ардуино, так и китайские аналоги, что будет значительно дешевле.
Один из модулей, который можно взять — это Bluetooth Bee, который можно купить во многих магазинах, от DFRobot.
Всё зависит от конкретной системы и необходимой в ней «Пропускной способности». Ведь если это будет камера видеонаблюдения, то поток данных должен передаваться непрерывно и в большом количестве. А для простого датчика движения достаточно самого дешевого вай-фай модуля. Так же и с автоматизированными устройствами для умного дома.
Отталкивайтесь, при выборе каждого компонента, от своих потребностей и того, что вы собираетесь реализовывать в проекте, и не переплачивайте за те возможности, которые вам не потребуются.
Настройка соединения
Итак, вот вы создали и уже установили на смартфон приложение или его готовый аналог для управления вашим микроконтроллером с Ардуино, далее необходимо:
- Включить сам блютуз модуль в системе, запитав его от сети или аккумулятора.
- Запустить приложение на телефоне и найти нужное устройство.
- Подсоединиться к блютуз модулю с помощью дефоултного пароля или того, что вы задали при перепрошивке Ардуино.
- Отдать первые команды и проследить, как на них отреагирует система.
Здесь стоит сказать, что приложений под Ардуино в Google Play много, в следующем материале мы покажем 7 из них.
Простейший пример
Чтобы вы понимали, как примерно должен функционировать готовый проект, приведём пример с помощью всё той же надстройки на ваш светильник.
Самый простой урок по шагам смотрите по ссылке — см. Управление устройствами со смартфона для чайников. Логика по шагам такая:
- Вы подсоединяетесь к системе через смартфон.
- Нажимаете одну кнопку, и цепь размыкается или замыкается.
- Появляется или исчезает свет.
- Нажимаете кнопку на смартфоне ещё раз, и происходит обратный эффект.
Естественно, для этого необходимо изначально замкнуть цепь, включив лампочку с помощью настенного переключателя. Но это лишь условный пример того, что можно реализовать с помощью данной технологии.
В ближайших уроках мы более подробно остановимся на взаимодействии смартфонов и микроконтроллеров, сделаем вместе с вами несколько полезных уроков.
Источник
Android + Arduino = ♥
Не так давно Google открыл API для работы Android устройств с USB. Сегодня пришло время пощупать что же это такое и узнать какие возможности нам открываются.
Итак, у нас имеется Arduino Mega 2560, USB Host Shield и HTC Desire с прошивкой cyanogen 7.1.0 RC1 (Android 2.3.4). На всякий случай напомню, что все что будет описываться дальше — работает только начиная с Android 2.3.4 для телефонов и Android 3.1 для планшетов.
Тут стоит отметить что данный USB Host Shield не совсем удачный, особенно в сочетании с Arduino Mega 2560. Первая проблема заключалась в том что данная плата расширения сделана для Arduino UNO, а она отличается от Mega положениями контактов SPI, поэтому пришлось кидать перемычки (см. фото). Второй проблемой, хотя и вполне ожидаемой, стала потребность во внешнем источнике питания для работы этой платы расширения. Более удачной считается USB Host Shield 2.0 от Circuits@Home, но она и дороже.
Плата с перекинутыми SPI контактами
Настройка Arduino ПО
1. Если еще не установлено, то скачать и установить ПО для Arduino.
2. Скачать и распаковать пакет ADK (содержит DemoKit приложение). Должны появится папки app , firmware , и hardware .
3. Скачать библиотеку CapSense
4. Скопировать firmware/arduino_libs/AndroidAccessory и firmware/arduino_libs/USB_Host_Shield в /libraries/ .
5. Создать директорию CapSense в /libraries/ и скопировать в нее CapSense.cpp и CapSense.h из архива CapSense.
Загрузка прошивки
Google любезно предоставляет свой DemoKit скетч для Arduino. Все что нужно — это открыть его из firmware/demokit/demokit.pde , скомпилировать и залить на плату.
Тестовое Android приложение
В DemoKit пакете также находятся исходники Android приложения для демонстрации возможностей. Google предлагает нам самостоятельно создать Android проект и собрать это приложение. Для начала нам надо будет установить API Level 10. Дальше все просто — создаем Android проект и указываем путь к папке app , в Build Target указываем Google APIs (Platform 2.3.3, API Level 10). Собираем приложение и устанавливаем на телефон. Кто не хочет возится со сборкой — может скачать готовый APK.
Запуск
Просто подключаем наш телефон к USB Host Shield. Если мы все сделали правильно, то на экране появится запрос запуска DemoKit приложения.
Само приложение содержит две вкладки — In (кнопки, джойстик и сенсоры) и Out (светодиоды, реле и сервоприводы).
Я решил что для демонстрации вполне достаточно пары светодиодов и кнопки. Как это все чудо работает можно пронаблюдать на видео.
Немного кода
В рассматриваемом примере сообщения, передающиеся по USB, состоят из трех байтов:
1-й байт определяет команду или группу устройств, например светодиоды — 0x2
2-й байт указывает на конкретное устройство, например зеленый светодиод — 0x1
3-й байт содержит значение, передаваемое устройству, например максимальная яркость — 0xff
Arduino
Android
Выводы
Открывая такие возможности Google в первую очередь конечно же рассчитывает на появление большого числа активных Android аксессуаров, но далеко не последнее место занимает тот факт, что по сути мы получаем удобное устройство для взаимодействия с различными датчиками, сенсорами и приводами. Такое устройство запросто может стать мозгом чего-то роботизированного.
Также нельзя забывать о том, что Android устройство для Arduino может выполнять роль платы расширения, в которой есть GPS, Bluetooth, WiFi, акселерометр и многое другое.
Источник
Android studio usb arduino
This is a driver library for communication with Arduinos and other USB serial hardware on Android, using the Android USB Host Mode (OTG) available since Android 3.1 and working reliably since Android 4.2.
No root access, ADK, or special kernel drivers are required; all drivers are implemented in Java. You get a raw serial port with read() , write() , and other functions for use with your own protocols.
1. Add library to your project:
Add jitpack.io repository to your root build.gradle:
Add library to dependencies
2. If the app should be notified when a device is attached, add device_filter.xml to your project’s res/xml/ directory and configure in your AndroidManifest.xml .
3. Use it! Example code snippet:
then use direct read/write
or direct write + event driven read:
For a simple example, see UsbSerialExamples folder in this project.
For a more complete example with background service to stay connected while the app is not visible or rotating, see separate github project SimpleUsbTerminal.
Probing for Unrecognized Devices
Sometimes you may need to do a little extra work to support devices which usb-serial-for-android doesn’t (yet) know about — but which you know to be compatible with one of the built-in drivers. This may be the case for a brand new device or for one using a custom VID/PID pair.
UsbSerialProber is a class to help you find and instantiate compatible UsbSerialDrivers from the tree of connected UsbDevices. Normally, you will use the default prober returned by UsbSerialProber.getDefaultProber() , which uses the built-in list of well-known VIDs and PIDs that are supported by our drivers.
To use your own set of rules, create and use a custom prober:
Of course, nothing requires you to use UsbSerialProber at all: you can instantiate driver classes directly if you know what you’re doing; just supply a compatible UsbDevice.
This library supports USB to serial converter chips:
- FTDI FT232R, FT232H, FT2232H, FT4232H, FT230X, FT231X, FT234XD
- Prolific PL2303
- Silabs CP2102 and all other CP210x
- Qinheng CH340, CH341A
and devices implementing the CDC/ACM protocol like
- Arduino using ATmega32U4
- Digispark using V-USB software USB
- BBC micro:bit using ARM mbed DAPLink firmware
- .
For common problems, see the FAQ wiki page.
Are you using the library? Add your project to ProjectsUsingUsbSerialForAndroid.
About
Android USB host serial driver library for CDC, FTDI, Arduino and other devices.
Источник