Подключение arduino uno к android. Создаем Android-приложение для управления домашним роботом через Bluetooth

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

Один из самых популярных и распространенных методов обмена данными посредством 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, выбираем там наше реальное устройство (а не виртуальное) и ждем пока программа скомпилируется и проинсталлируется в ваш телефон или планшет.

Многие сегодня мечтают жить в «умном» доме. Но коммерческие решения в наше время отталкивают своей немалой ценой. К счастью, систему домашней автоматики можно сделать самостоятельно на основе дешевых и легкодоступных компонентов.



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


Для проекта потребуется немного элементов: плата Arduino или любой клон, интерфейсный модуль TTL-UART Bluetooth с рабочим напряжением 5 В, несколько реле и драйвера (цепи управления) к ним, ну и, конечно же, смартфон или планшет на Android.


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


Разработчики приложений для Android-устройств в большинстве своем знают язык программирования Java, но в данном случае знание этого языка не понадобится, поскольку есть довольно простая и понятная онлайн среда разработки App Inventor, созданная в MIT. Она специально создана для людей, не разбирающихся в программировании на Java, и предлагает собирать приложение визуально из блоков операций. Вот так выглядит наша программа для Android:



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


Теперь нужно собрать схему, как показано на рисунке ниже.



Учтите, что линия RX на Arduino должна быть соединена с линией TX модуля Bluetooth, а линия TX на Arduino должна быть соединена с линией RX модуля Bluetooth.


Для программирования платы Arduino у вас должна быть установлена среда разработки Arduino IDE. Ниже приведен скетч для Arduino.


const int led1 = 2; const int led2 = 3; const int led3 = 4; const int led4 = 5; byte serialA; void setup() { Serial.begin(9600); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); } void loop() { if (Serial.available() > 0) {serialA = Serial.read();Serial.println(serialA);} switch (serialA) { case 1: digitalWrite(led1, HIGH); break; case 11: digitalWrite(led1, LOW); break; case 2: digitalWrite(led2, HIGH); break; case 22: digitalWrite(led2, LOW); break; case 3: digitalWrite(led3, HIGH); break; case 33: digitalWrite(led3, LOW); break; case 4: digitalWrite(led4, HIGH); break; case 44: digitalWrite(led4, LOW); break; } }

После того, как вы записали скетч в Arduino и установили приложение под Android, нужно подключиться с телефона к модулю Bluetooth. Для этого включите питание Arduino и модуля Bluetooth и активируйте Bluetooth на вашем телефоне, сделав его также видимым для всех устройств. После этого в списке поиска других Bluetooth-устройств вы сможете найти этот модуль. Введите код сопряжения, который, как правило, представляет собой «1234» или «0000».



Устройство, с которым вы сопрягаетесь, в данном случае будет носит название. После сопряжения включайте приложение EG-HOME и нажмите на кнопку Bluetooth, чтобы выбрать сопряженное устройство в программе. После этого ваш телефон будет подключен к цепи управления, и, нажимая соответствующие кнопки, вы будете включать или выключать лампы.

В этом уроке вы узнаете, как использовать модуль 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, тогда выполните некоторые из более простых руководств и вернитесь к ним позже.

В этой статье представлена пошаговая инструкция, которая поможет вам самостоятельно создать приложение для Android-смартфона, предназначенное для управления чем-либо через Bluetooth. Для демонстрации мы подробно разберем пример мигания светодиодом на Arduino по командам с телефона или планшета. В результате выполнения наших инструкций вы научитесь делать вот так:

Для управления домашним роботом достаточно добавить кнопок и обработать их команды на стороне Arduino.

Что для этого потребуется

  1. Любая Arduino-совместимая плата
  2. Bluetooth-модуль
  3. Устройство на котором установлена ОС Android

В качестве Bluetooth-модуля лучше всего использовать HC-05. Его легко купить в китайском интернет магазине или на eBay. Модуль питается от 3.3 В, но его линии I/O могут работать и с 5-вольтовой логикой, что позволяет подключать его UART к Arduino.

Bluetooth-модуль HC-05

Подключение Bluetooth-модуля к Arduino

Так теперь нам нужно подключить нашу Arduino с Bluetooth. Если на Arduino нет вывода с 3.3В, а только 5В то нужен будет поставить стабилизатор чтобы снизить питание. Назначение выводов HC-05 легко найти в интернете. Для использования рекомендуем вам сделать плату с выведенными линиями питания, Rx и Tx. Подключение к Arduino необходимо производить в следующем порядке:

  • вывод Arduino 3.3В или (5В через стабилизатор!) — к 12 пину модуля Bluetooth
  • вывод Arduino GND — к 13 пину модуля Bluetooth
  • вывод Arduino TX — к 2 пину модуля RX Bluetooth
  • вывод Arduino RX — к 1 пину модуля TX Bluetooth

После подключения необходимо проверить работоспособность Bluetooth модуля. Подключим Светодиод к 12 выводу Arduino и загрузим на плату следующий скетч:

Char incomingByte; // входящие данные int LED = 12; // LED подключен к 12 пину void setup() { Serial.begin(9600); // инициализация порта pinMode(LED, OUTPUT); //Устанавливаем 12 вывод как выход Serial.println("Press 1 to LED ON or 0 to LED OFF..."); } void loop() { if (Serial.available() > 0) { //если пришли данные incomingByte = Serial.read(); // считываем байт if(incomingByte == "0") { digitalWrite(LED, LOW); // если 1, то выключаем LED Serial.println("LED OFF. Press 1 to LED ON!"); // и выводим обратно сообщение } if(incomingByte == "1") { digitalWrite(LED, HIGH); // если 0, то включаем LED Serial.println("LED ON. Press 0 to LED OFF!"); } } }