Соединение Arduino программы на Intel Edison c телефоном Android по Bluetooth профилю SPP (Serial Port Profile)

в 12:59, , рубрики: bluetooth, BT SPP, diy или сделай сам, Edison, galileo, Intel Edison, intel galileo, Блог компании Intel, программирование микроконтроллеров, Разработка робототехники

В среде Arduino удобно иметь доступ к Bluetooth с профилем серийного порта BT SPP (Bluetooth Serial port profile), чтобы реагировать на команды, посылаемые через последовательный Bluetooth порт. Во многих Arduino проектах используется эта возможность, чтобы удаленно управлять устройством. Раньше вам был нужен дополнительный Bluetooth шилд или Bluetooth набор, чтобы получить такую возможность на Intel Galileo. А так как сейчас на Intel Edison есть встроенная поддержка Bluetooth, то достаточно просто использовать Arduino-адаптер, чтобы создать такое Arduino устройство. Никаких дополнительных шилдов не потребуется.

Соединение Arduino программы на Intel Edison c телефоном Android по Bluetooth профилю SPP (Serial Port Profile) - 1

Нам потребуется:

  • Телефон или планшет с Android и с Bluetooth.
  • Подключенная к сети Wi-Fi плата Intel Edison, как написано в Get started with Intel® Edison technology. Задайте имя платы Edison, например, myedison.
  • Программа SCP на хост-компьютере, который подключен к той же сети.
  • Настроенный терминальный доступ к вашей плате по последовательному порту или по SSH.

Основы

Статья «Connecting the Intel Edison board to your Android Phone with Serial Port Profile (SPP)» описывает, как подсоединить плату Intel Edison к Android телефону с SPP. Тем не менее, вы не сможете получить данные от SPP в коде Arduino. В статье «Подключаемся к Intel Edison через Android с Bluetooth LE (BLE)» объясняется, как подключить Bluetooth через Arduino, но там требовался дополнительный Bluetooth шилд.

Но так как у нас есть встроенный Bluetooth, почему бы не использовать это преимущество? Здесь я предлагаю пример библиотеки, чтобы это сделать.

Один из эффективных способов общения между Arduino и Linux на Intel Edison, это использование mmap(). Об этом мы рассказывали в предыдущей статье Эффективное взаимодействие между нативными процессами Arduino и Linux. Тем не менее, совсем не просто использовать блокировку в разделяемой памяти между процессом питона и Arduino процессом.

Таким образом, я выбрал именованные каналы (named pipes) как простейший способ организовать IPC (межпроцессорное взаимодействие) между процессом скетчем Arduino и Python процессом c Bluetooth SPP.

Установка сервиса Edison Bluetooth

1. Скачайте файл bluetooth-service.tar.gz.

2. Скопируйте файл bluetooth-service.tar.gz в папку /home/root/Bluetooth и распакуйте:

mkdir /home/root/bluetooth
cd /home/root/bluetooth
mv /home/root/bluetooth-service.tar.gz ./
tar -xvf bluetooth-service.tar.gz

3. Скопируйте файл bluetooth-spp-pin.service в папку /lib/systemd/system/:

cp bluetooth-spp-pin.service /lib/systemd/system

4. Включите сервис systemd:

systemctl enable bluetooth-spp-pin

5. Перезапустите ваше устройство:

reboot

6. Ещё раз проверьте сервис:

systemctl status bluetooth-spp-pin

Установка Arduino скетча на Edison

  1. Скачайте библиотеку Intel-Edison-BT-SPP-Library.zip.
  2. Распакуйте файл в папку с библиотеками Arduino, например, C:UsersusernameDocumentsArduinolibraries. Путь можно проверьте в среде разработки Arduino IDE в меню File->Preferences->Sketchbook Location.
  3. Перезапустите ваш Intel® Arduino IDE версии 1.6.0 или выше.
  4. Откройте пример bt_test из File->Examples->Intel Edison BT SPP Driver Library.
  5. Проверьте и загрузите ваш скетч на плату Edison.
  6. Откройте Serial Monitor, чтобы проверить вывод после того, как мы что-нибудь пошлём.

Настройте ваш телефон

  1. Скачайте и установите любое приложение для BT SPP из PlayStore. Например, BLE_SPP_PRO.
  2. Включите Bluetooth на телефоне и присоединитесь к вашему Edison модулю.
  3. Введите пин-код, по умолчанию это 8888. В дальнейшим его можно будет поменять в строке 70 в файле bluetooth-pin-service.py.
  4. В приложении подключитесь к вашей плате Edison (myedison).
  5. Пошлите что-нибудь на Edison, вы должны увидеть результат Serial Monitor в Arduino IDE.

Соединение Arduino программы на Intel Edison c телефоном Android по Bluetooth профилю SPP (Serial Port Profile) - 2

Соединение Arduino программы на Intel Edison c телефоном Android по Bluetooth профилю SPP (Serial Port Profile) - 3

Заключение:

Теперь у вас есть Bluetooth устройство с фиксированным пин-кодом, которое поддерживает SPP. Вы можете подключаться к нему так же просто, как и к Bluetooth колонкам. Bluetooth заработает автоматически сразу после включения, и даже не надо подсоединяться к устройству через терминал. Вы можете получить доступ к BT SPP в вашем Arduino коде, рассматривая его как последовательное устройство. И присоединится к Edison проекту через Android телефон с BT SPP приложением. Это означает, что вы можете управлять вашим проектом на Edison удаленно и делать, что вы хотите. Основываясь на этой работе, вы можете разрабатывать большое количество интересных приложений, используя встроенный Bluetooth на Intel Edison. Получайте удовольствие и делитесь с нами вашими проектами.

Следующие шаги:

Итак, мы только реализовали способ посылать команды с вашего BT SPP устройства на Edison. Вы можете добавить fifo чтобы посылать команды с Edison’а обратно на ваше BT SPP устройство. Так как это fifo, то ваше Linux приложение также получит преимущество, посылая команды в среду Arduino. Это действительно простой способ увеличить возможности взаимодействия с Arduino. Например, вы можете обрабатывать звук в Linux и посылать команды на Arduino через fifo. Или вы можете получать твиты из Node.js и затем посылать JSON на Arduino, чтобы взаимодействовать с существующими Arduino шилдами. Сейчас всё соединено! Вы также можете написать ваше собственное Android BT SPP приложение с большей интерактивностью!

Автор: varerysan

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js