Espruino:Примеры/Быстрый старт (Bluetooth LE)

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Быстрый старт (Bluetooth LE)[1]

Включение

Puck.js

Puck.js можно питать либо от отдельной батареи, либо от установленной внутрь него батарейки. Однако во втором случае нужно помнить, что между батарейкой и печатной платой находится прозрачная пластиковая вкладка – она нужна, чтобы между ними не было контакта, а Puck.js оставался в выключенном состоянии.

Чтобы включить его, выполните следующее:

  • Снимите с Puck.js верхнюю крышку.
  • Выньте печатную плату.
  • Если батарейка установлена, выньте её с помощью тупого объекта и снимите прозрачную пластиковую вкладку.
  • Вставьте батарейку обратно. Минусовая сторона батарейки должна находиться лицом к печатной плате Puck.js. В результате должен один раз очень быстро мигнуть красный светодиод.
  • Если загорелся зелёный светодиод или не выключился красный светодиод, то это произошло из-за того, что вы случайно нажали на кнопку, пока вставляли батарейку. Выньте батарейку и попробуйте снова, но в этот раз постарайтесь не нажимать на кнопку, находящуюся рядом с батарейкой.
  • Соберите Puck.js. Чтобы кнопка работала правильно, та сторона платы, на которой находится батарейка, должна смотреть на чёрную часть пластикового корпуса, а кнопка, находящаяся рядом с батарейкой, должна находиться как можно дальше от выступа на корпусе.

Изображения с демонстрацией правильной ориентации батарейки и корпуса Puck.js смотрите в этой статье.

Для простых задач прошивка, установленная на Puck.js по умолчанию, подходит нормально, но разработчики постоянно её улучшают и добавляют в неё новые функции. Чтобы выжать из Puck.js максимум, рекомендуем в самом начала работы с ним обновить прошивку до последней версии.

Pixl.js

Запитать Pixl.js можно тремя способами:

  • При помощи кабеля Micro USB (на Pixl.js нет возможности передавать данные по USB).
  • Вставив батарейку CR2032 в соответствующий держатель на плате (минусовая сторона батарейки должна находиться лицом к печатной плате Pixl.js).
  • Подключив источник питания (напряжение должно быть меньше 16 вольт) между контактами Vin и GND на Pixl.js.

Для простых задач прошивка, установленная на Pixl.js по умолчанию, подходит нормально, но разработчики постоянно улучшают её и добавляют в неё новые функции.

Чтобы выжать из Pixl.js максимум, рекомендуем в самом начале работы обновить прошивку до последней версии.

Bangle.js

Чтобы подать питание на Bangle.js, просто нажмите на кнопку BTN1 (верхняя кнопка справа).

Если Bluetooth отключен (по умолчанию он включен на Bangle.js):

  • Нажмите среднюю кнопку (BTN2) на Bangle.js.
  • При помощи нижней кнопки (BTN3) пролистайте до настроек (Settings).
  • Нажмите BTN2, чтобы выбрать пункт «Settings».
  • Далее возможны два варианта:
    • Либо: Убедитесь, что в настройках «BLE» и «Programmable» стоит «On», чтобы включить у Bangle.js режим программирования. Затем выберите «Back», чтобы выйти из меню настроек.
    • Либо: Найдите пункт «Make Connectable», выберите его и пока отложите Bangle.js, оставив на нём меню Connectable.

Более подробно читайте в ознакомительной статье, посвящённой Bangle.js.

MDBT42Q

Более подробно о питании MDBT42Q читайте на соответствующей странице.

Хотя на заранее запрограммированные модули MDBT42Q уже установлена прошивка, которая подходит для выполнения простых задач, разработчики постоянно её улучшают и добавляют в неё новые функции.

Чтобы выжать из модуля MDBT42Q максимум, рекомендуем сначала обновить его прошивку до последней версии.

Ruuvitag

Более подробно о питании Ruuvitag читайте в соответствующей статье.

Nordic Thingy:52

На устройства Thingy прошивка Espruino по умолчанию не установлена. Более подробно о том, как установить её, а также о питании Thingy:52 читайте в этой статье.

Nordic nRF52832DK

Просто подключите свой nRF52832DK к USB-коннектору. На него также нужно будет записать прошивку Espruino.

Итак, теперь, когда к вашему устройству подключено питание, оно начнёт рассылать BLE-объявления с данными о себе.

Кроме того, Puck.js и Pixl.js могут работать как NFC-метки, способные направлять ваш телефон (если он поддерживает NFC) по нужным URL-ссылкам.

Требования

Для того, чтобы пользоваться BLE, в вашем компьютере должен быть установлен адаптер с поддержкой Bluetooth 4.0 (адаптеры, поддерживающие версии до 4.0, работать не будут). Впрочем, Bluetooth 4 поддерживается почти всеми современными компьютерами, но вам, возможно, понадобится внешний Bluetooth-адаптер, если ваш компьютер...

  • ...это Apple Mac, изготовленный до 2012 года.
  • ...это ПК на Windows, чья версия Windows ниже 10.
  • ...это настольный ПК (не ноутбук), т.к. у него вообще может не быть поддержки беспроводной передачи данных.
  • ...работает на Linux. Большая часть встроенного BLE-функционала на ноутбуках по-прежнему имеет много багов. Более надёжно будет воспользоваться внешним USB-адаптером.

Если ваш компьютер не поддерживает BLE, то можно воспользоваться USB-адаптером для BLE – они компактные, недорогие (около 10 долларов), и купить их можно практически везде. В данный момент на рынке преобладают вот эти два типа USB-адаптеров для Bluetooth:

  • Адаптеры на чипсете Broadcom (например, BCM20702) – они хорошо работают на всех платформах.
  • Адаптеры производства фирмы Cambridge Silicon Radio (CSR) – адаптеры этого типа хорошо работают на Linux и Windows. Раньше они хорошо работали на Mac, но их поддержка пропала после ОС-обновления High Sierra, так что рекомендуем остановить выбор на модуле от Broadcom.

Чтобы точно купить подходящий адаптер, рекомендуем покупать ТОЛЬКО те адаптеры, в описании которых явно написано «CSR» или «Broadcom». Модуль BlueGiga BLED112 РАБОТАТЬ НЕ БУДЕТ – это устройство с последовательным портом, а не Bluetooth-адаптер общего пользования.

Вот список рабочих и протестированных USB-адаптеров для Bluetooth:

Работа с Espruino-устройством

По умолчанию ПК видит Espruino как BLE-устройство с последовательным портом. Подключаясь к этому последовательному порту, вы при помощи командной стоки получаете полный доступ к встроенному JavaScript-интерпретатору Espruino.

Примечание: Последовательные BLE-порты (также известные как «Nordic UART») не будут отображаться в списке последовательных устройств вашей ОС.

Далее, чтобы начать работать с Espruino, у вас есть два варианта:

Использование IDE Espruino

Использование IDE Espruino через Web Bluetooth

Примечание: На этом компьютере Web Bluetooth уже включен.

Если ваш компьютер поддерживает Web Bluetooth, то это простейший способ начать работать с Espruino.

Вам понадобится самая новая версия браузера Google Chrome или Opera на одной из следующих платформ:

Mac OS

Нужна версия Yosemite или новее, и также проверьте, поддерживается ли BLE на вашем Mac:

  • Кликните на логотип Apple, а затем на About this Mac слева вверху
  • Кликните на System Report
  • Кликните на Bluetooth под Hardware
  • Посмотрите, написано ли там Bluetooth Low Energy Supported

Если нет:

  • Купите USB-адаптер с поддержкой Bluetooth 4.0 или новее (он стоит примерно 10 долларов) – см. раздел «Требования» выше.
  • Откройте терминал и напишите там «sudo nvram bluetoothHostControllerSwitchBehavior=al­ways» (чтобы вернуться к старым настройкам, напишите «sudo nvram -d bluetoothHostControllerSwitchBehavior»).
  • Перезагрузите Mac.
  • Убедитесь, что отключили (или выключили сопряжение) все Bluetooth-устройства, использующие внутренний Bluetooth – они могут помешать «маку» использовать новый адаптер.

Windows

Windows 10 полностью поддерживает Web Bluetooth – с условием, если вы используете самую новую версию Google Chrome (v70 и выше) и ваш ПК оснащен функционалом для BLE-связи (он есть у всех новых ноутбуков).

Если у вас нет Windows 10, вам нужно будет установить ПК-приложение для IDE Espruino – с его помощью вы получите прямой доступ к Bluetooth-адаптеру.

Linux

В Chrome нет официальной поддержки Linux. Но благодаря наличию поддержки ChromeOS вы можете включить и поддержку Linux: Вам понадобится BlueZ 5.41+ (5.43 – более стабильная версия) – узнать версию можно с помощью bluetoothd --version. Если он не установлен, установите его (инструкции тут).

  • Впишите в адресной строке chrome://flags.
  • Выберите Enabled рядом с пунктом Experimental Web Platform Features (chrome://flags/#enable-experimental-web-platform-features).
  • Перезапустите браузер.

Chromebook

Все хромбуки с Bluetooth должны поддерживать Web Bluetooth.

Android

На устройствах с Android 6 (Marshmallow) Web Bluetooth поддерживается по умолчанию.

На устройствах с Android 5 (Lollipop) поверх ADB можно воспользоваться Chromium.

iOS (iPhone, iPad)

Встроенный веб-браузер Apple не поддерживает Web Bluetooth. Вам нужно будет установить приложение WebBLE.

После этого вы сможете получить доступ к Web Bluetooth через любую веб-страницу, просматриваемую с помощью WebBLE.

Когда Web Bluetooth будет настроен:

  • Перейдите на сайт Puck.js. Там вам должны сообщить, что у вас включен Web Bluetooth.
  • Кликните на гиперссылку Espruino Web IDE.
  • Кликните на жёлтую кнопку Connect/Disconnect слева вверху.
Quick Start BLE connect 1.png
  • Появится список доступных вариантов для подключения – выберите Web Bluetooth.
Quick Start BLE connect2 2.png
  • Должен появиться список устройств. Кликните на своё устройство (в конце названия вашего устройства должны быть 4 символа – это последние 4 символа MAC-адреса вашего устройства).
Quick Start BLE connect3 3.png

Использование ПК-приложения

На некоторых платформах (Windows или Linux со старыми версиями Bluez) Web Bluetooth пока не поддерживается.

Если это ваш случай, то вам нужно будет установить ПК-приложение для Windows. Устанавливается оно при помощи вот этого установщика – не используйте версию из Chrome Web Store, о которой рассказывалось в начале статьи, так как с её помощью доступ к Bluetooth-устройствам получить будет нельзя.

Установив, запустите IDE Espruino – не удивляйтесь, но она будет сильно похожа на онлайн-IDE Espruino, которую вы тоже, возможно, установили, если раньше уже использовали обычные USB-устройства Espruino.

Quick Start BLE webidewindows 4.png

Примечания:

  • На Windows последовательные BLE-устройства (Nordic UART Service) вроде Espruino не воспринимаются как устройства с последовательным портом. Если меню подключения в IDE показывает устройства, начинающиеся со слова «COM» (например, «COM5») – это не ваши устройства и подключиться к ним не получится.
  • При использовании Windows 8.1/10 или новее вам нужно будет выполнить сопряжение вашего Espruino-устройства при помощи Bluetooth-меню Windows – лишь после этого оно появится в онлайн-IDE. Для устройств с поддержкой Web Bluetooth это не нужно.
  • Если вы используете Bluetooth-адаптер и Windows 10, вам необходимо использовать встроенное Bluetooth-ПО Windows, а не устанавливать то, что было в комплекте с Bluetooth-адаптером. Зачастую ПО адаптера не даёт выполнить сопряжение с BLE-устройством и увидеть его при помощи API Windows 10.
  • Если вы используете Windows 7, вам нужно будет сначала настроить Bluetooth-адаптер при помощи Zadig.

На Linux, Mac OS и других платформах вам нужно будет установить NPM (инструкции можно найти на GitHub-странице онлайн-IDE).

Когда всё будет настроено, можно попробовать написать какой-нибудь код.

Через Raspberry Pi

Есть два способа использования Raspberry Pi для управления Espruino-устройствами.

Когда всё будет настроено, можно попробовать написать какой-нибудь код.

Через проводное соединение

В худшем случае у вас вообще может не оказаться компьютера для BLE-коммуникации.

Но не отчаивайтесь! Ко многим устройствам можно подключиться напрямую при помощи конвертера USB-TTL:

После этого можно воспользоваться обычной онлайн-IDE Espruino (инструкции об использовании онлайн-версии IDE Espruino при проводном последовательном соединении ищите тут).

Командная строка

Вы можете воспользоваться приложением Espruino для командной строки. Оно работает под Node.js, так что вам понадобится:

  • Установить Node.js
  • В командной строке впишите npm install -g espruino (на Linux перед командой надо будет вписать sudo)
  • На Linux вам нужно будет запустить sudo setcap cap_net_raw+eip $(eval readlink -f `which node`), чтобы дать Node.js разрешение на использование BLE (или придётся запускать его через sudo).
  • После того, как это будет выполнено, можно вызвать справку, написав espruino –help
  • Чтобы подключиться, напишите espruino --list, чтобы узнать список устройств, а затем скопируйте MAC-адрес своего устройства и напишите espruino -p aa:bb:cc:dd:ee, чтобы подключиться.
  • Дважды нажмите  Ctrl + C , чтобы выйти.
  • Можете также написать espruino -p aa:bb:cc:dd:ee -w filename.js, чтобы загрузить файл, войти в режим терминала, а затем загрузить его снова после внесения изменений (можете использовать свой любимый редактор).
  • Теперь можете попробовать написать какой-нибудь код!

Отправка отдельных команд

Использование приложения Bluefruit Connect

Это простейшее решение для iOS:

  • Запустите приложение.
  • Выберите Espruino-устройство, с которым хотите начать коммуникацию, и кликните на Connect.
  • Кликните на UART.
  • После подключения можно вводить различные команды – см. раздел «Команды» ниже.

Приложение nRF UART

  • Запустите приложение.
  • Нажмите на Connect и выберите Espruino-устройство.
  • Напишите команды в консоли – см. раздел «Команды» ниже.

Примечание: В этом приложении вам нужно будет перед отправкой строчки нажать на клавишу  ↵ Enter . Если у вас iOS, то это нужно будет cделать при помощи копирования/вставки кода в блокнот – что гораздо муторнее (при использовании приложения Adafruit, о котором говорится выше, всё это делается гораздо проще).

Веб-сайт

BLE-устройствами Espruino можно управлять с помощью веб-сайта с Web Bluetooth – с условием, что вы используете совместимый браузер.

Web Bluetooth можно использовать и напрямую, но разработчики Espruino также создали для этого специальную библиотеку. Просто добавьте в код вашего сайта, обслуживаемого при помощи HTTPS, фрагмент <script src="https://puck-js.com/puck.js"></script>, и вы сможете выполнять команды, просто вызывая JS-код вроде:

Puck.write('LED1.set();\n');

Соответствующее руководство можно найти тут.

Ваше собственное приложение

Вы можете создать собственное приложение для управления Espruino на любой платформе.

Для самого базового управления вам нужно лишь подключиться к Bluetooth-устройству Espruino и характеристике с идентификатором 6e400002b5a3f393e0a9e50e24dcca9e. После этого вы сможете многократно записывать на неё данные, чтобы отправлять команды на Espruino.

Команды

Напишите LED1.set() и кликните на кнопку отправки.

  • Должен загореться красный светодиод.
  • Теперь можете написать LED1.reset(), чтобы выключить светодиод. Светодиоды LED2 и LED3 тоже работают.
  • Обратите внимание, что вам также будут приходить ответы. Например, команда BTN.read() вернёт true или false – в зависимости от того, нажата кнопка или нет.

Возникли какие-то проблемы?

Поищите их решение здесь:

Что дальше?

Ознакомьтесь с этим руководством – оно поможет вам сделать первые шаги в написании кода.

Кроме того, по ссылкам ниже есть много подробной информации по разным платам, а также списки руководств для них:

А по этим ссылкам можно найти более общую информацию:

Примечание: Espruino работает и на многих других устройствах, и информация выше касается их всех. Если в руководстве специально не говорится о том, что оно предназначено для вашего устройства, то, возможно, вам нужно будет поменять некоторые названия контактов и немного переподключить компоненты, чтобы всё это соответствовало контактам на вашем устройстве.

Энергопотребление

По умолчанию Bluetooth-устройства Espruino не требовательны к энергопотреблению и могут спокойно работать от батареи (более подробно читайте в соответствующей статье о вашей плате). Если на них раз в минуту будет запускаться какой-то маленький JavaScript-код или нажиматься кнопка, это не сильно повлияет на срок работы батареи.

Однако есть ситуации, когда заряд батареи расходуется очень быстро:

  • Включенный светодиод расходует в 100 раз больше энергии, чем не включенный.
  • При активном Bluetooth-подключении расходуется в 20 раз больше энергии, чем при отсутствии такого подключения – но при условии, если в это время также передаются данные. Спустя 1-2 минуты без активности Espruino переключится в энергосберегающий режим с более низкой пропускной способностью – он расходует примерно столько же энергии, что и при отключенном Bluetooth-соединении. При возобновлении активности Espruino вновь переключится в режим с высокой пропускной способностью.
  • Непрерывный запуск JavaScript-кода (например, while(true);) будет расходовать в 200 раз больше энергии, чем в ситуации, когда никакой код не выполняется вообще. Если выполнять JavaScript-код по событиям (например, при помощи setWatch(myCode, BTN) или setInterval(myCode, 100000)), это будет расходовать ничтожное количество энергии.

То есть, если вы экспериментируете с устройством, но сам загруженный код пока использовать не собираетесь, рекомендуем либо отсоединить батарею, либо подключиться к устройству и напечатать reset() – чтобы этот код не работал в фоновом режиме, разряжая батарею.

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

См.также

Ссылки на полезные ресурсы

Внешние ссылки