Создание андроид приложения для ардуино. Как управлять Arduino с помощью телефона на Android и модуля Bluetooth. Основы приема-передачи данных

Сегодня мы покажем вам как загружать код на плату Arduino с помощью Android. Это очень просто с бесплатным программным обеспечением доступным под названием ArduinoDroid. Итак, давайте начнем.

Шаг 1: Что нам нужно

Нам нужно, на самом деле, всего 4 вещи.

  1. Любая плата Arduino;
  2. Кабель OTG;
  3. Кабель USB, совместимый с платой Arduino;
  4. Устройство с Android.

Технология USB OTG (On-The-Go) предназначена для подключения периферийных устройств друг с другом без использования компьютера как посредника. С ее помощью к смартфону на Android можно подключить флешку, компьютерную мышь, принтер или другую периферию. Для этого используется специальный кабель OTG.

Шаг 2: Устанавливаем ArduinoDroid на Android-устройство

Достаточно простой шаг, открыть Google Play, найти ArduinoDroid и установить. Скачать приложение можно . Но не все смогут перейти по ссылке.

Теперь приготовьте кабели и плату Arduino. Мы на самом деле собираемся загрузить код.

Шаг 3: Подключаем все и открываем ArduinoDroid

Возьмите кабель OTG и подключите его к своему устройству Android. Возьмите USB-кабель и подключите его к кабелю OTG и плате Arduino. Откройте приложение ArduinoDroid на Android-устройстве.

Шаг 4: Наберите свой код в приложении ArduinoDroid

Наберите свой код, на который должна реагировать Arduino. Ввод кода происходит примерно также как в Arduino IDE на компьютере.

Чаще сохраняйте свой код, т.к. как многие говорят, что он иногда падает. Не переживайте, со временем у вас будет достаточно опыта по работе с приложением.

Шаг 5: Заключение

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

Надеемся, вы получили представление о том, как загружать код на плату Arduino с помощью устройства Android.

В данном проекте я хочу показать, как залить скетч в Arduino с помощью обычного устройства на базе операционной системы Android. Это устройство может быть полезно для стационарно установленных плат Arduino, например, таких, как контроллеры освещения...

Шаг 1: Материалы и инструменты

Материалы:

Кабель USB-A – USB-B
Кабель USB-Host (OTG-кабель)
Arduino
1 светодиод (для тестирования)
Android устройство, версия ОС Android 4.0.0+ (или c поддержкой режима host)

Программное обеспечение:

ArduinoDroid или ArduinoCommander, которые можно загрузить из магазина Google Play

Шаг 2: Кабель USB-Host

Кабель USB-Host в основном аналогичен кабелю USB, но в разъеме micro USB установлены другие резисторы. Внутренние резисторы позволяют Android устройству активировать режим USB-Host. В этом режиме вы также можете использовать USB-флешки или другие устройства с поддержкой usb интерфейса. Это очень полезная функция, и теперь можно подключать даже usb-принтер.

Проблема состоит в том, что после подключения USB устройства, оно будет получать питание от ведущего (host) устройства, тем самым разряжая его аккумуляторную батарею.

Шаг 3: Соединения

Этот очень простой шаг и не требует особого внимания. Просто вставьте кабель USB-A – USB-B в USB разъем типа мама Host кабеля. Затем вставьте USB-B разъем в Arduino, а Micro USB в Android устройство.

Шаг 4: Включение Arduino

Все соединения должны быть выполнены как на фотографии. Далее можно включить ваш Arduino и загрузить в него последний скачанный код. На своем Arduino я использовал Blink скетч. Если Arduino не запускается, тогда проверьте правильность соединений.

Шаг 5: Приложения

Теперь Arduino уже готов к загрузке кода, но ваше Android устройство пока нет...

Давайте изменим эту ситуацию!

На данный момент существует два приложения, которые позволяют работать с нашим Arduino через режим Host.

Для их загрузки перейдите на сайт Play Store, затем в строке поиска введите "Arduino". Далее щелкните на "Apps", после этого будут отображаться только приложения. Нам нужно два приложения: "ArduinoDroid" и "ArduinoCommander". Установите их, затем запустите "ArduinoDroid". Это приложение должно обновить IDE, на что понадобится некоторое время. Приложение "ArduinoCommander" потребуется далее.

Примечание: Оба приложения использовать одновременно необязательно, просто я хочу показать работу обеих!

Шаг 6: ArduinoCommander, автор программы Антон Смирнов

Ну, что ж, начнем с приложения "ArduinoCommander". Его разработал Антон Смирнов для версии Andorid 2.2 или выше.

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

С данным приложением легко разобраться, даже если управление нестандартное. Оно автоматически определяет Arduino и функционирует очень стабильно.

Однако некоторые функции не работают. Надеюсь, в дальнейших версиях приложения эти баги будут исправлены. Загрузка скетча прошла успешно!

Ставлю данному приложению 4.0 из 5 звездочек.

Теперь давайте кратко рассмотрим подключение к Arduino.

Шаг 7: Часть 1

Другие опции включают:
Ethernet
Bluetooth
USB-extras

Шаг 8: Часть 2

Теперь щелкните на "Autodetect". Android устройство начнет автоматический поиск Arduino, затем покажет его на экране. А сейчас выберем наш Arduino (просто щелкнем на нем).

Шаг 9: Часть 3

После выполнения предыдущего шага на экране будет показан наш Arduino. Обычно он отображается в цвете, и вы можете щелкать на выводы, чтобы изменить их режим. Однако у меня выбор режимов не работал, и эту проблему у меня не получилось устранить; возможно, у вас все будет работать без сбоев. Когда вы щелкните в нижнем правом углу, то перейдете в меню, с помощью которого сможете загрузить ваши скетчи с SD-карты. Эта функция работает очень хорошо.

Шаг 10: ArduinoDroid

Теперь перейдем к рассмотрению другого приложения, которое позволяет загружать скетчи в ваш Arduino. Это приложение называется "ArduinoDroid" и работает для версии Android 4.2.2 или выше. Автор этого приложения также Антон Смирнов!

Очень часто в ваших проектах возникает необходимость в дистанционном управлении или передачи данных с ваших телефонных гаджетов.

Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.

Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.

Нам понадобится:

  • Набор проводов ПАПА-МАМА
  • HC-06 Bluetooth

Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА .

Arduino Bluetooth
Pin 1 (TX) RXD
Pin 0 (RX) TXD
GND GND
5V VCC

Будьте внимательны, подключать подключать нужно TX -> RXD ,RX -> TXD .

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

Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.

Int val; int LED = 13; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); } void loop() { if (Serial.available()) { val = Serial.read(); // При символе "1" включаем светодиод if (val == "1") { digitalWrite(LED, HIGH); } // При символе "0" выключаем светодиод if (val == "0") { digitalWrite(LED, LOW); } } }

После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.

Подключение Bluetooth к телефону

Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.

  1. Включаем Bluetooth на телефоне и ищем новые устройства
  2. Находим в списке расстройств "HC-06" и подключаемся к нему.
  3. Телефон спросит пин-код. необходимо ввести "1234 " или "0000 "
  4. Ура. Устройство подключено.

Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.



Вы можете установить разные bluetooth терминалы, как правило они отличаются только разными дизайнами, функционал от этого не меняется. Так же можно найти и терминал и для продуктов ios.

После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.

Пришло время попробовать проект в деле. Пишем в терминале цифру "0" и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру "1" и светодиод L должен зажечься.

Демонстрация работы:


Домашняя работа:

  • Изменить скетч так, что бы светодиод зажигался и потухал с помощью одной и той же команды например "G".
  • Дописать скетч и научить его преобразовывать текстовые данные приходящие через блютус в цифровые и реализовать димер, зажигать светодиод с помощью ШИМ, на заданную яркость от 0 до 254 приходящую через bluetooth.

Мы рассмотрели установку и настройку необходимого нам программного обеспечения для разработки под ADK и Android. Теперь, когда у нас все готово для работы, мы можем создать наш первый проект. И по традиции - это будет проект со светодиодом.

Проект будет очень простой - на экране Android-устройства будет отображаться кнопка, при нажатии на которую на отладочной плате будет загораться светодиод, а при отпускании - гаснуть.

Программа для Arduino

Создаем новый проект. Наш исходный код будет очень простой:

#include #include Connection * connection; void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data) { if (event == ADB_CONNECTION_RECEIVE) // Если приняли данные { digitalWrite(13, data); // Изменяем состояние LED в зависимости от принятой переменной } } void setup() { pinMode(13,OUTPUT); // Используем встроенный светодиод L платы Seeeduino ADK ADB::init(); connection = ADB::addConnection("tcp:4568", true, adbEventHandler); } void loop() { ADB::poll(); }

Вкратце - мы инициализируем и создаем ADB соединение, а также определяем функцию adbEventHandler() , которая будет вызываться каждый раз, когда будут приниматься данные от Android-устройства. Когда данные приняты, то мы записываем принятый байт при помощи функции digitalWrite() , тем самым зажигая или гася светодиод.

Теперь компилируем скетч и загружаем его в нашу плату.

Программа для Android

Открываем Eclipse IDE и создаем новый проект: New -> Project... Откроется окошко, в котором находим папку Android и выбираем пункт Android Application Project. Нажимаем кнопку Next, и заполняем название проекта и некоторые параметры.

Далее нажимаем Next и формируем иконку приложения и др. После нажатия кнопки Finish ваше приложение готово. Теперь в окне Package Explorer щелкните правой кнопкой на вашем проект и выберите свойства проекта: Properties. Удостовертесь, что в качестве Target Name у вас выбран Google API, а не Android.

Затем открываем файл манифеста AndroidManifest.xml и в нем прописываем строку, для того, чтобы ОС Android дала нам разрешение на доступ к соответствующим службам:

Далее, копируем необходимые библиотеки для обеспечения работы MicroBridge режима: /src/org/microbridge/server и в этой папке 4 файла. Взять их вы можете с архива в конце статьи или с оригинального примера от seeed studio.

Теперь нам необходимо на activity (окно приложения) добавить графические элементы для взаимодействия с пользователем. Пока что у нас будет всего 2 элемента: текст и ToggleButton (кнопка с 2-мя состояниями).
Формировать пользовательский интерфейс можно двумя способами: при помощи графического расположения (простым перетаскиванием и компоновкой) и при помощи XML-файла. Воспользуемся Graphical Layout. Для этого, в окне ресурсов приложения щелкаем по файлу /res/layout/activity_main.xml . И в появившееся окно перетаскиваем ToggleButton:

Теперь открываем наш основной файл /src/com/example/arduino52/MainActivity.java , все в нем удаляем и копируем следующие строки:

Package com.example.arduino52; import java.io.IOException; import org.microbridge.server.Server; import android.os.Bundle; import android.util.Log; import android.app.Activity; import android.widget.ToggleButton; import android.widget.CompoundButton; public class MainActivity extends Activity implements CompoundButton.OnCheckedChangeListener { Server server = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ToggleButton mButton = (ToggleButton)findViewById(R.id.toggleButton1); mButton.setOnCheckedChangeListener(this); // Создаем TCP сервер (на основе сервера MicroBridge LightWeight) try { server = new Server(4568); //Этот же порт необходимо использовать и на ADK-плате server.start(); } catch (IOException e) { Log.e("arduino52", "Unable to start TCP server", e); System.exit(-1); } } @Override protected void onDestroy (){ super.onDestroy(); server.stop(); } public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { byte data; if(isChecked) // Если кнопка нажата { data = 1; } else { data = 0; } try { //Посылаем данные server.send(new byte {(byte) data}); } catch (IOException e) { Log.e("arduino52", "Problem sending TCP message", e); } } }

Приложение на Android несколько сложнее, всю структуру его я расписывать не буду, для этого есть специализированные сайты и книги. Расскажу лишь основные моменты, которые нужны для нашего проекта.
Итак вначале инициализируется наш MicroBridge сервер, которые вешается на 4568 порт. Точно такой же порт должен стоят в вашем скетче Arduino.
Затем обьявляется обработчик onCheckedChanged () , который вызывается каждый раз при изменении состояния нашей кнопки ToggleButton. Далее, в зависимости от состояния кнопки, в переменную data мы сохраняем 1 или 0. И после, происходит попытка отправить эти данные функцией server.send ()

Далее подключаем наше Android устройство к компьютеру, запускаем наш проект Run, выбираем там наше реальное устройство (а не виртуальное) и ждем пока программа скомпилируется и проинсталлируется в ваш телефон или планшет.

В этом уроке вы узнаете, как использовать модуль bluetooth и приложение MIT для создания беспроводной последовательной связи между телефоном android и платой arduino. В этой статье описывается, как выполнить подключение, написать скетч для arduino, который может принимать базовые команды и отправлять их и как самому создать приложение. Предполагается, что вы уже знакомы с некоторыми из основ, вы сделали несколько проектов arduino и знакомы с arduino IDE. Если вы пытались выполнить последовательную связь с платой arduino, все должно быть полностью понятным. Если у вас есть какие-либо проблемы или вопросы, не стесняйтесь спрашивать их на странице обсуждения.

О ЧЁМ СТАТЬЯ?

Действия

1. Используйте следующий код для arduino

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

  • const int ledPin = 2; // the pin that the LED is attached to byte serialA; void setup() { // initialize the serial communication: Serial.begin(19200); //baud rate — make sure it matches that of the module you got: // initialize the ledPin as an output: pinMode(ledPin, OUTPUT); } void loop() { if (Serial.available() > 0) {serialA = Serial.read();Serial.println(serialA);} switch (serialA) { case 1: digitalWrite(ledPin, HIGH); break; case 2: digitalWrite(ledPin, LOW); break; case 3:digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); default: break; } }

2. Если все, что вы хотите, это получить приложение и посмотреть, как оно работает

скачайте приложение, а затем загрузите его на свой телефон. Скачать можно по адресу -> https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing. На вашем телефоне должна быть разрешена установка приложений из сторонних источников.

3. Если вы хотите изменить приложение, перейдите по адресу


  • http://appinventor.mit.edu/explore/learn.html, чтобы узнать, как подготовить компьютер и установить программное обеспечение для разработчиков приложений. Как только вы его запустили, сделайте хотя бы один или два из своих основных уроков. Ниже приведено приложение, используемое здесь. Вы можете загрузить его в App Inventor, а затем загрузить на свой телефон или изменить его. https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing

Вещи, которые вам понадобятся

  • плата arduino
  • bluetooth serial module (в этой статье был использован модуль btm222 с встроенным регулятором)
  • Единственная проблемная часть здесь — модуль bluetooth. Существуют разные модули по всему Интернету, поэтому убедитесь, что вы проверили вывод в таблице данных, которые у вас есть, поскольку они могут отличаться. Также обратите внимание, что есть два общих класса модулей bluetooth: Class 1 имеет дальность около 100 метров. Класс 2 имеет дальность около 10 метров. Если вам интересно, что они полностью совместимы, и вы можете получить только 100 м, если оба устройства поддерживают такую дальность
  • Используемый здесь последовательный модуль bluetooth имеет следующие контакты слева направо (земля, RX, TX, не подключено, VCC). Очевидно, что земля и VCC идут соответственно на землю и + 5В контакт на arduino. Поскольку мы будем получать данные через модуль, а затем, в свою очередь, отправляя его на плату arduino, нам нужно только использовать вывод TX на модуле. Запустите провод от этого штыря к выходу RX на плате arduino. Led контролируется с помощью PIN 2 на ардуине.
  • светодиод
  • резистор (100 Ом)
  • провода
  • макетная плата

  • Этот учебник может быть немного сложным для вас, если вы новичок. Если вы никогда не пытались выполнить последовательную связь с платой arduino или не выполняли по крайней мере большинство эскизов примеров arduino, тогда выполните некоторые из более простых руководств и вернитесь к ним позже.