- Android + Arduino = ♥
- Настройка Arduino ПО
- Загрузка прошивки
- Тестовое Android приложение
- Запуск
- Немного кода
- Arduino
- Android
- Выводы
- Связываем Arduino и Android через Bluetooth
- Нам понадобится
- Создание приложения для Android
- Заготовка
- Настройка эмулятора
- Заполнение Activity
- Пробный запуск
- Написание кода для Android
- Правка манифеста
- Добавляем основной код
- Написание скетча
- Особенности заливки скетча
- Результат
- Заключение
- Creating Bluetooth Android App to Control Arduino Board
- Development environment
- How this app works
- Creating Bluetooth Connection on Android
- Creating Activities and Java Class
- AndroidManifest.xml
- MainActivity Layout
- SelectDeviceActivity Layout
- MainActivity Code
- SelectDeviceActivity, DeviceListAdapter and DeviceInfoModel
- Modifying the Arduino Code
- Connecting Android to Arduino…
- …And Test the Data Exchange
- What’s next
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, акселерометр и многое другое.
Источник
Связываем Arduino и Android через Bluetooth
В данной статье будет подробно расписано создание небольшого приложения для мобильной операционной системы Android и скетча для Arduino. На Arduino Uno будет стоять Wireless Shield с Bluetooth-модулем. Приложение будет подключаться к Bluetooth-модулю и посылать некую команду. В свою очередь скетч по этой команде будет зажигать или гасить один из подключенных к Arduino светодиодов.
Нам понадобится
Создание приложения для Android
Заготовка
Разработка для ОС Android ведется в среде разработки ADT, Android Development Tools. Которую можно скачать с портала Google для разработчиков. После скачивания и установке ADT, смело его запускаем. Однако, еще рано приступать к разработке приложения. Надо еще скачать Android SDK нужной версии. Для этого необходимо открыть Android SDK Manager «Window → Android SDK Manager». В списке необходимо выбрать нужный нам SDK, в нашем случае Android 2.3.3 (API 10). Если телефона нет, то выбирайте 2.3.3 или выше; а если есть — версию, совпадающую с версией ОС телефона. Затем нажимаем на кнопку «Install Packages», чтобы запустить процесс установки.
После завершения скачивания и установки мы начинаем создавать приложение. Выбираем «File → New → Android Application Project». Заполним содержимое окна так, как показано на рисунке.
В выпадающих списках «Minimum Required SDK», «Target SDK», «Compile With» выбираем ту версию, которую мы скачали ранее. Более новые версии SDK поддерживают графические темы для приложений, а старые нет. Поэтому в поле «Theme» выбираем «None». Нажимаем «Next».
Снимаем галочку с «Create custom launcher icon»: в рамках данной статьи не будем заострять внимание на создании иконки приложения. Нажимаем «Next».
В появившемся окне можно выбрать вид «Activity»: вид того, что будет на экране, когда будет запущено приложение. Выбираем «Blank activity», что означает, что мы хотим начать всё с чистого листа. Нажимаем «Next».
В нашем приложении будет всего одно Activity, поэтому в появившемся окне можно ничего не менять. Поэтому просто жмем на «Finish».
Все, наше приложение создано.
Настройка эмулятора
Отладка приложений для Android производится на реальном устройстве или, если такового нет, то на эмуляторе. Сконфигурируем свой.
Для этого запустим «Window → Android Virtual Device Manager». В появившемся окне нажмем «New». Заполняем поля появившейся формы. От них зависит сколько и каких ресурсов будет предоставлять эмулятор «телефону». Выберите разумные значения и нажимайте «ОК».
В окне Android Virtual Device Manager нажимаем кнопку «Start». Это запустит эмулятор. Запуск занимает несколько минут. Так что наберитесь терпения.
В результате вы увидите окно эмулятора подобное этому:
Заполнение Activity
Activity — это то, что отображается на экране телефона после запуска приложения. На нем у нас будет две кнопки «Зажечь красный светодиод» и «Зажечь синий светодиод». Добавим их. В панели «Package Explorer» открываем res/layout/activity_main.xml . Его вид будет примерно таким же, как на скриншоте.
Перетаскиваем 2 кнопки «ToggleButton» на экранную форму. Переключаемся во вкладку «activity_main.xml» и видим следующий код:
Это ни что иное, как наша Activity, которая отображается не в виде графики, а описанная в формате XML.
Сделаем имена компонентов более понятными. Изменим поля android:id следующим образом.
А еще добавим им подписи, изменим их цвет и размер текста. Результирующий код разметки будет выглядеть следующим образом.
Эти же изменения можно сделать и в графическом режиме, воспользовавшись вкладкой «Outline/Properties».
Пробный запуск
Мы можем запустить только что созданное приложение на эмуляторе. Идем в настройки запуска «Run» → Run Configurations», в левой части нажимаем на «Android Application». Появляется новая конфигурация «New_configuration». В правой части окна выбираем вкладку «Target» и выбираем опцию «Launch on all compatible devices/AVD».
Нажимаем «Apply», а затем «Run». Приложение запустится в эмуляторе.
Можно понажимать кнопки. Но ничего происходить не будет, поскольку обработчики нажатий еще нами не написаны.
Чтобы запустить приложение на реальном устройстве, необходимо включить в его настройках опцию «Отладка USB» и подключить его к компьютеру.
На реальном устройстве приложение выглядит абсолютно аналогично.
Написание кода для Android
Правка манифеста
Каждое Android-приложение должно сообщить системе о том, какие права необходимо ему предоставить. Перечисление прав идет в так называемом файле манифеста AndroidManifest.xml . В нем мы должны указать тот факт, что хотим использовать Bluetooth в своем приложении. Для этого достаточно добавить буквально пару строк:
Добавляем основной код
Пришла пора вдохнуть жизнь в наше приложение. Открываем файл MainActivity.java (src → ru.amperka.arduinobtled). Изначально он содержит следующий код:
Дополним код в соответствии с тем, что нам нужно:
Передавать на Arduino мы будем один байт с двузначным числом. Первая цифра числа — номер пина, к которому подключен тот или иной светодиод, вторая — состояние светодиода: 1 — включен, 0 — выключен.
Число-команда, рассчитывается очень просто: Если нажата красная кнопка, то берется число 60 (для красного светодиода мы выбрали 6-й пин Arduino) и к нему прибавляется 1 или 0 в зависимости от того, должен ли сейчас гореть светодиод или нет. Для зеленой кнопки всё аналогично, только вместо 60 берется 70 (поскольку зеленый светодиод подключен к 7 пину). В итоге, в нашем случае, возможны 4 команды: 60, 61, 70, 71.
Напишем код, который реализует всё сказанное.
Написание скетча
Данные, которые принимает Bluetooth-модуль, приходят через UART (он же Serial-соединение) на скорости 9600 бит/с. Настраивать Bluetooth-модуль нет никакой необходимости: он сразу готов к работе. Поэтому скетч должен уметь следующее:
Особенности заливки скетча
Для связи Bluetooth-Bee с контроллером используются те же пины (0 и 1), что и для прошивки. Поэтому при программировании контроллера переключатель «SERIAL SELECT» на «Wireless Shield» должен быть установлен в положение «USB», а после прошивки его надо вернуть в положение «MICRO».
Результат
Заключение
В данной статье мы научились создавать приложения для операционной системы Android и передавать данные по Bluetooth. Теперь при нажатии на кнопку на экране телефона на базе операционной системы Android, произойдет изменение состояния светодиода на плате.
Вы можете развить мысль и сделать более дружественный интерфейс на Android, управлять с его помощью гораздо более сложными устройствами, публиковать классные приложения в Android Market и ещё много-много всего интересного!
Источник
Creating Bluetooth Android App to Control Arduino Board
This tutorial is about creating your custom Android app to connect with an Arduino board using Bluetooth. Consequently, some basic prior knowledge of Android programming is required to follow this tutorial.
But don’t worry, if you don’t have basic knowledge on Android programming but still want to create your own Bluetooth app, then you can take the Basic Android Programming for Arduino Makers that is available in Udemy. You will learn how to create a Bluetooth app that can talk with your Arduino board from scratch and without prior knowledge in Android programming required.
The codes presented in this tutorial is the minimum codes that enable an Android phone and Arduino board to send and receive messages (that can be translated into commands) with each other through Bluetooth.
Development environment
To manage some expectations in case the app doesn’t work like it’s supposed to be, this is the environment I use to develop this app:
- Samsung Galaxy S8, with Android version 9.
- Android Studio version 3.6.3 with compatible Gradle version.
- Minimum SDK Version: 19 (You need to select this when creating a new project using Android Studio).
- Mac OS 10.15.4 (Windows machines also works perfectly)
How this app works
This app will create a Bluetooth connection with a nearby Arduino board that has been connected with the HC05 Bluetooth module. It is created to be compatible with Arduino board from this tutorial. However, it is easy to modify the codes so that it can be used together with Arduino boards with different configurations.
To test Bluetooth connection functionality, you can press the button on this App to control a built-in LED on the Arduino board. Once a predefined command message is received from Android, Arduino will transmit a return message to Android as a status message.
Creating Bluetooth Connection on Android
Before we dive into the coding part, I would like to describe the step by step flow to create a Bluetooth connection on Android. This is a summary of the more detailed documentation from Google.
- Initialize the default Bluetooth adapter (device) on your Android phone.
- Get the MAC Address from the remote device that you are connecting to. In this case, the MAC Address of HC05 Bluetooth module connected to Arduino board.
- Create a separate thread in your code to initiate a connection using the MAC Address that we previously obtained. This thread will manage what happens if a connection is successfully established or failed to be established. It also handles if we want to close the Bluetooth connection.
- Once a connection is successfully established, the thread will do callback for the codes that manage data exchange (transmit and receive between 2 devices). For this, we need to create another thread.
- This thread will read incoming data transmission and parse it if necessary (or you can parse it elsewhere on the code) and transmit the message or command that is generated by the Android app.
Now, the flow above needs to be translated into codes.
Creating Activities and Java Class
Create a new project with the empty activity template and select the appropriate name for your app. For this app we will create 2 activities and 2 Java classes :
- MainActivity. This is automatically created when you create a new project. This is where most of the interactions take place.
- SelectDeviceActivity. The UI where you select the Bluetooth device that you want to connect.
- DeviceListAdapter. A class to display a list of paired Bluetooth devices for you to connect. The list will be displayed in SelectDeviceActivity.
- DeviceInfoModel. A class that acts as a placeholder for the remote device information.
AndroidManifest.xml
Once you created all the activities and classes above, your AndroidManifest.xml file will look something like this :
Please note that you should add the Bluetooth permission so that you can access your phone’s Bluetooth device.
MainActivity Layout
MainActivity is the main UI where you can interact with the interfaces that will connect you to a remote Bluetooth device and control it.
The XML code for the layout above is like this:
SelectDeviceActivity Layout
This activity will display a list of remote Bluetooth devices that are already paired with your phone. It is shown when the “Connect” button is clicked on the MainActivity. The layout XML code for this activity is as follows:
MainActivity Code
Now we continue with the code. Code in MainActivity is the one creating a Bluetooth connection to a remote device. You can just copy and paste the code below to your project. Some comments have been added to the code you can understand it better.
I make some minor style changes to the color resources.
SelectDeviceActivity, DeviceListAdapter and DeviceInfoModel
This activity works with DeviceListAdapter class and DeviceInfoModel class to display the list of paired devices.
The whole Android project is also available on Github.
Once you build the whole project, you need to install the app to your actual device to be able to use the Bluetooth function.
Note: Due to periodic update to the app, the Github version might slightly different from the code in this post. But the core function remains the same.
Modifying the Arduino Code
We need to make some small modifications to the Arduino code from this tutorial. You can create a new Arduino sketch and copy-paste the code below.
Don’t forget to compile and upload the code to your Arduino board. You can also go to Github to get this code.
Connecting Android to Arduino…
Follow the steps below to connect your phone to the Arduino board
- Connect HC05 module to the Arduino board as described in the previous post then connect it to a power supply. The LED on HC05 module should be blinking fast.
- Activate Bluetooth on your phone and pair HC05 with your phone. The device name you’re looking for is “HC-05”. You don’t need your app yet for pairing with HC05.
- Now open your app and press the “Connect” button. A list of paired devices will be shown on screen. If you change the device name when you’re pairing with HC05, you actually only change the alias name. Your app only shows the device name, so select “HC-05”.
- Once HC05 is connected, there will be status on the toolbar and the LED button will be enabled. You know when HC05 is connected when the LED on HC05 blinks slowly.
…And Test the Data Exchange
Now, you can press the LED button and watch the built-in LED on Arduino turned on and off. Visually, you can also see the light bulb image on your phone change color to indicate LED status. The color changes when your phone receives the status message from Arduino, so you might notice some delay between the change on LED on Arduino with the light bulb image on your phone.
What’s next
You have now understood one of the methods to connect your Android phone to an Arduino board. Exciting new possibilities are now available for you. For example, you can:
- Improve the app so that it shows alert when Bluetooth function on your phone is not yet activated.
- Add more codes on Arduino so now your app can control 2 LEDs
- Connect a simple sensor on Arduino e.g. proximity sensor and read the values on your phone.
- And many more. If you can imagine it, you can create it.
If you find this tutorial is too difficult to follow or if you don’t have prior knowledge in Android programming, then you can always take the course Basic Android Programming For Arduino Makers in Udemy which will guide you to create your own Bluetooth app from scratch.
Источник