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



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


  • Телефон или планшет с 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:\Users\username\Documents\Arduino\libraries. Путь можно проверьте в среде разработки 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.





Заключение:


Теперь у вас есть 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 приложение с большей интерактивностью!

Комментарии (4)


  1. IronHead
    04.09.2015 16:05
    +1

    Вы можете получить доступ к BT SPP в вашем Arduino коде, рассматривая его как последовательное устройство. И присоединится к Edison проекту через Android телефон с BT SPP приложением. Это означает, что вы можете управлять вашим проектом на Edison удаленно и делать, что вы хотите.
    Какой то топорный машинный перевод.
    Может лучше так: Вы можете обращаться к вашему BT SPP из скетча Arduino, работая с ним как с SerialPort. И подключаться к Edison проекту с Android устройства для управления им через BT SPP.


  1. lenz1986
    04.09.2015 17:09
    +1

    Каждый раз видя такие вещи все больше и больше поражаюсь развитию технологий. BT вещь вроде бы уже древняя, со всех сторон разжеванная. Протокол SPP работает везде и всюду практически. И применение для этих целей эдисона и аналогичных плат каждый раз кажется выстрелом по мухам из пушки. Какие огромные задачи по serial порту можно возложить на эдисон? Чего не осилит примитивная аврка, даже не ардуина? SPP реализован в 3-х долларовых адаптерах, которых у китайцев вагон, и он на выходе дает уже нормальный serial.
    Даже никаких знаний и навыков критичных не требуется, просто уметь работать с сериал на аврке и все.


    1. IronHead
      04.09.2015 17:14
      +1

      Все до безобразия просто: AVR'ка и bluetooth адаптер за 3 бакса не принесут интелу ни цента.


    1. varerysan
      05.09.2015 01:43
      -1

      Это не применение эдисона для BT. Это использование BT в edison при необходимости.