Нам потребуется:
- Телефон или планшет с 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
- Скачайте библиотеку Intel-Edison-BT-SPP-Library.zip.
- Распакуйте файл в папку с библиотеками Arduino, например, C:\Users\username\Documents\Arduino\libraries. Путь можно проверьте в среде разработки Arduino IDE в меню File->Preferences->Sketchbook Location.
- Перезапустите ваш Intel® Arduino IDE версии 1.6.0 или выше.
- Откройте пример bt_test из File->Examples->Intel Edison BT SPP Driver Library.
- Проверьте и загрузите ваш скетч на плату Edison.
- Откройте Serial Monitor, чтобы проверить вывод после того, как мы что-нибудь пошлём.
Настройте ваш телефон
- Скачайте и установите любое приложение для BT SPP из PlayStore. Например, BLE_SPP_PRO.
- Включите Bluetooth на телефоне и присоединитесь к вашему Edison модулю.
- Введите пин-код, по умолчанию это 8888. В дальнейшим его можно будет поменять в строке 70 в файле bluetooth-pin-service.py.
- В приложении подключитесь к вашей плате Edison (myedison).
- Пошлите что-нибудь на 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)
lenz1986
04.09.2015 17:09+1Каждый раз видя такие вещи все больше и больше поражаюсь развитию технологий. BT вещь вроде бы уже древняя, со всех сторон разжеванная. Протокол SPP работает везде и всюду практически. И применение для этих целей эдисона и аналогичных плат каждый раз кажется выстрелом по мухам из пушки. Какие огромные задачи по serial порту можно возложить на эдисон? Чего не осилит примитивная аврка, даже не ардуина? SPP реализован в 3-х долларовых адаптерах, которых у китайцев вагон, и он на выходе дает уже нормальный serial.
Даже никаких знаний и навыков критичных не требуется, просто уметь работать с сериал на аврке и все.IronHead
04.09.2015 17:14+1Все до безобразия просто: AVR'ка и bluetooth адаптер за 3 бакса не принесут интелу ни цента.
varerysan
05.09.2015 01:43-1Это не применение эдисона для BT. Это использование BT в edison при необходимости.
IronHead
Может лучше так: Вы можете обращаться к вашему BT SPP из скетча Arduino, работая с ним как с SerialPort. И подключаться к Edison проекту с Android устройства для управления им через BT SPP.