Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Створюємо Android-додаток для управління домашнім роботом через Bluetooth

  1. Що для цього потрібно
  2. Підключення Bluetooth-модуля до Arduino
  3. Установка Android SDK
  4. створення програми
  5. Робота програми

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

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

Що для цього потрібно

  1. Будь-яка Arduino-сумісна плата
  2. Bluetooth-модуль
  3. Пристрій на якому встановлена ​​ОС Android

Як Bluetooth-модуля найкраще використовувати HC-05. Його легко купити в китайському інтернет магазині або на eBay. Модуль живиться від 3.3 В, але його лінії I / O можуть працювати і з 5-вольтової логікою, що дозволяє підключати його UART до Arduino.

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!"); }}}

тепер викачуємо з Play Market програмне забезпечення Bluetooth-термінал і встановлюємо його. Включаємо нашу Arduino. У додатку Натискаємо кнопку меню-> Connect a device-Secure.
Тим самим ваш пристрій почнемо шукати Bluetooth поблизу. Наш модуль повинен називатися HC-05. Вам буде потрібно виписати його MAC-адресу, так він знадобиться в подальшому. Як тільки він виявить пристрій HC-05 виберіть його. Пароль, якщо буде потрібно: 1234 (це стандартний код). Після того як ви підключилися до нього у вас повинно вивести повідомлення яке прийшло в Bluetooth термінал від Arduino: "Press 1 to LED ON or 0 to LED OFF .." Далі введіть 1 і натисніть відправити. Тим самим ви посилаєте цифру 1 через Bluetooth на Arduino. Як тільки він прийме цифру 1 повинен спалахнути світлодіод підключений до 12 виводу Arduino. Після введіть цифру 0 і світлодіод повинен згаснути. Якщо все вийшло переходимо далі.

Установка Android SDK

Беремо з офіційного сайту програму для створення додатків для android будь-яких моделей. Розпаковуємо архів, запускаємо SDK Manager.exe і встановлюємо програму. Вам запропонують встановити API, і версію android для якої ви надалі будете встановлювати додатки.

Вам запропонують встановити API, і версію android для якої ви надалі будете встановлювати додатки

Android SDK Manager

Після натискаємо кнопку Install, чекаємо коли завершитися установка і закриваємо вікно.
Заходимо в саму програму, вона знаходитися в папці eclipse / eclipse.exe. Після відкриття програми в діалоговому вікні необхідно вказати директорію для зберігання майбутніх проектів. Краще створювати папку на локальному диску, використовуючи при цьому тільки латинські букви.

створення програми

Вибираємо File-> New-> Project.
Вибираємо File-> New-> Project
Так як ми створюємо додаток для android, вибираємо Android-> Android Application Project, і натискаємо Next

Наступне діалогове вікно:

Application Name -> пишемо ім'я додаток,
Project Name -> пишемо ім'я проекту,
Package Name -> Ні чого не пишемо він створюється автоматично!
Minimum Required SDK -> це мінімальні вимога вказуємо нашу версію Android у мене 4.1 її я і вибираю.
Target SDK -> вибираємо вашу версію Android
Compile with -> вибираємо вашу версію Android
Theme: для початку я б радив вибрати None.
Натискаємо Next.
У наступному вікні нічого міняти не потрібно. Просто тиснемо Next.

Далі нам пропонують створити свою іконку для додатка, можете змінити стандартний ярлик завантаживши свою картинку, я ж для початку пропоную просто натиснути Next.

У наступному необхідно вибрати пункт меню Blank Activity і натискати Next.

Тиснемо Finish і через кілька секунд відкривається головне вікно нашої програми. Вибираємо вкладку Activity_main.xml і бачимо наш редактор:

  1. Файли нашого проекту.
  2. Run Запуск емулятора для перевірки програми на наявність помилок
  3. Панель кнопок тексту і багато іншого від сюди ви будите вибирати що вам потрібно і додавати в якості елементів додатки
  4. Щоб змінити розмір дисплея вашого телефону або планшета
  5. Вибір орієнтації. Два види: горизонтальний і вертикальний
  6. API рівень (краще не чіпати)
  7. Тут буде відображатися все те що ви додали в додаток, так само тут можна перейменувати ваші додані елементи або видаляти їх.
  8. Показує властивості елемента, його розмір колір і т.д., так само тут можна редагувати елемент
  9. Показує наявність помилок.
  10. Вибір редагування (графічний або текстової). Для початківців звичайно краще користуватися графічним режимом
  11. Вікно вашого застосування, можна бачити інтерфейс майбутнього програми

Тепер додамо дві кнопки в інтерфейс програми. Вибираємо елемент Button і переносимо його на форму.
Тепер додамо дві кнопки в інтерфейс програми
Справа вгорі ми бачимо об'єкти які ми додали. Так само важливо, який з об'єктів обраний в даний момент. Справа внизу можна редагувати кнопку, давайте змінимо текст підпису кнопки і його колір.
Для цього в поле властивостей елемента «Text» введіть, замість button1, значення «ВКЛ», а у button2 - "OFF". Має вийти ось так:

Ми можемо запустити тільки що створене додаток на емуляторі. Йдемо в налаштування запуску «Run» → Run Configurations », в лівій частині натискаємо на« Android Application ». З'являється нова конфігурація «New_configuration». У правій частині вікна вибираємо вкладку «Target» і вибираємо опцію «Launch on all compatible devices / AVD» і додаємо пристрій. Перевіряємо що кнопки з'явилися і їх можна натискати. Якщо все добре - продовжуємо далі.
Тепер в файлах проекту вибираємо bin-> AndroidManifest.hml

Тепер натиснемо знизу на AndroudManifest.hml

У цей файл нам потрібно буде додати два рядки:

Вони будуть запитувати включення Bluetooth при старті додаток, якщо він буде виключений додаток попросить користувача його включити. Додати його потрібно сюди:
Вони будуть запитувати включення Bluetooth при старті додаток, якщо він буде виключений додаток попросить користувача його включити
Далі відкриємо інший файл: src-> com.example (name)

У цьому файлі і буде наш основний код. Всі його вміст потрібно видалити і вставити ось цей код:

package com.example.NAME; // Замість NAME введіть ім'я вашого проекту import java.io.IOException; import java.io.OutputStream; import java.util.UUID; import com.example.NAME.R; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity {private static final String TAG = "bluetooth1"; Button button1, button2; // Вказуємо id наших кнопок private static final int REQUEST_ENABLE_BT = 1; private BluetoothAdapter btAdapter = null; private BluetoothSocket btSocket = null; private OutputStream outStream = null; // SPP UUID сервісу private static final UUID MY_UUID = UUID.fromString ( "00001101-0000-1000-8000-00805F9B34FB"); // MAC-адресу Bluetooth модуля private static String address = "00: 00: 00: 00: 00"; // Замість "00:00" Потрібно нудити ввести MAC нашого bluetooth / ** Called when the activity is first created. * / @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); button1 = (Button) findViewById (R.id.button1); // Додаємо сюди імена наших кнопок button2 = (Button) findViewById (R.id.button2); btAdapter = BluetoothAdapter.getDefaultAdapter (); checkBTState (); button1.setOnClickListener (new OnClickListener () // Якщо буде натиснута кнопка 1 то {public void onClick (View v) {sendData ( "1"); // Надсилаємо цифру 1 по bluetooth Toast.makeText (getBaseContext (), "Включаємо LED ", Toast.LENGTH_SHORT) .show (); // виводимо на пристрої повідомлення}}); button2.setOnClickListener (new OnClickListener () {public void onClick (View v) {sendData ( "0"); // Надсилаємо цифру 1 по bluetooth Toast.makeText (getBaseContext (), "Вимикаємо LED", Toast.LENGTH_SHORT) .show ();}}); } @Override public void onResume () {super.onResume (); Log.d (TAG, "... onResume - спроба з'єднання ..."); // Set up a pointer to the remote node using it's address. BluetoothDevice device = btAdapter.getRemoteDevice (address); // Two things are needed to make a connection: // A MAC address, which we got above. // A Service ID or UUID. In this case we are using the // UUID for SPP. try {btSocket = device.createRfcommSocketToServiceRecord (MY_UUID); } Catch (IOException e) {errorExit ( "Fatal Error", "In onResume () and socket create failed:" + e.getMessage () + "."); } // Discovery is resource intensive. Make sure it is not going on // when you attempt to connect and pass your message. btAdapter.cancelDiscovery (); // Establish the connection. This will block until it connects. Log.d (TAG, "... Єднаймося ..."); try {btSocket.connect (); Log.d (TAG, "... З'єднання встановлено і готове до передачі даних ..."); } Catch (IOException e) {try {btSocket.close (); } Catch (IOException e2) {errorExit ( "Fatal Error", "In onResume () and unable to close socket during connection failure" + e2.getMessage () + "."); }} // Create a data stream so we can talk to server. Log.d (TAG, "... Створення Socket ..."); try {outStream = btSocket.getOutputStream (); } Catch (IOException e) {errorExit ( "Fatal Error", "In onResume () and output stream creation failed:" + e.getMessage () + "."); }} @Override public void onPause () {super.onPause (); Log.d (TAG, "... In onPause () ..."); if (outStream! = null) {try {outStream.flush (); } Catch (IOException e) {errorExit ( "Fatal Error", "In onPause () and failed to flush output stream:" + e.getMessage () + "."); }} Try {btSocket.close (); } Catch (IOException e2) {errorExit ( "Fatal Error", "In onPause () and failed to close socket." + E2.getMessage () + "."); }} Private void checkBTState () {// Check for Bluetooth support and then check to make sure it is turned on // Emulator does not support Bluetooth and will return null if (btAdapter == null) {errorExit ( "Fatal Error" , "Bluetooth не підтримує"); } Else {if (btAdapter.isEnabled ()) {Log.d (TAG, "... Bluetooth включений ..."); } Else {// Prompt user to turn on Bluetooth Intent enableBtIntent = new Intent (btAdapter.ACTION_REQUEST_ENABLE); startActivityForResult (enableBtIntent, REQUEST_ENABLE_BT); }}} Private void errorExit (String title, String message) {Toast.makeText (getBaseContext (), title + "-" + message, Toast.LENGTH_LONG) .show (); finish (); } Private void sendData (String message) {byte [] msgBuffer = message.getBytes (); Log.d (TAG, "... Надсилаємо дані:" + message + "..."); try {outStream.write (msgBuffer); } Catch (IOException e) {String msg = "In onResume () and an exception occurred during write:" + e.getMessage (); if (address.equals ( "00: 00: 00: 00: 00: 00")) msg ​​= msg + ". \ n \ nВ змінної address у вас прописаний 00: 00: 00: 00: 00: 00, вам необхідно прописати реальний MAC-адресу Bluetooth модуля "; msg = msg + ". \ n \ nПроверьте підтримку SPP UUID:" + MY_UUID.toString () + "на Bluetooth модулі, до якого ви підключаєтеся. \ n \ n"; errorExit ( "Fatal Error", msg); }}}

ОБОВ'ЯЗКОВО! Надрукуйте 00: 00: 00: 00: 00 МАС вашого Bluetooth модуля, який можна дізнатися через Bluetooth термінал !!!
Ваше додаток готове. Тепер нам потрібно перевірити, як воно поведеться на пристрої. Запустіть для цього симулятор. Якщо він запустився нормально без помилок, то в папці, де ви створювали свій проект, буде створений файл з вашою програмою. Його необхідно скопіювати і встановити на свій пристрій.

Робота програми

При натисканні на кнопку "Увімкнути" ваше Android-пристрій передасть через Bluetooth цифру 1 і, як тільки Arduino прийме цифру 1, світлодіод загориться. При натисканні на кнопку "Вимкнути" передається цифра 2 і світлодіод вимкнеться, як показано на відео на початку статті. Все просто))

Ми будемо дуже раді, якщо ви підтримаєте наш ресурс і відвідайте магазин наших товарів shop.customelectronics.ru .

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.