[Перевод] Эксперименты с Arduino 101

Однажды, жарким зимним днём, в канун Рождества, меня неудержимо потянуло сделать что-нибудь интересное. У меня был приличный запас фуа-гра (на юго-западе Франции, где я живу, производят много этого деликатеса), хороший фильм и плата Arduino 101. С ней-то я и решил поэкспериментировать. Присоединяйтесь!

a342c917326e783bb3aa050579b5d329.jpg


Arduino 101
Возможно, вы слышали о том, что плата Arduino 101 была представлена на выставке Maker Faire Rom 2015. Мне довелось побывать на этом замечательном мероприятии и увидеть презентацию своими глазами.

Первое, что хочется сказать об Arduino 101, заключается в том, что устройство это, несмотря на миниатюрность и невысокую цену, отлично укомплектовано. А именно, в нём установлен 32-битный микроконтроллер Intel Quark, что делает его экономичным. Оно имеет 384 Кб флэш-памяти, 80 Кб SRAM (для скетчей доступно 24 Кб). Arduino 101 оснащён DSP-хабом датчиков, Bluetooth LE и 6-осевым комбинированным сенсором с акселерометром и гироскопом. Всё это — благодаря модулю Intel Curie.

Итак, экспериментируя с Arduino 101, я решил опробовать его возможности по работе с цифровыми и аналоговыми устройствами, посмотреть, что можно сделать с гироскопическим датчиком (IMU) и модулем Bluetooth LE (BLE).

Hello World


Итак, с чего начнём? Для начала — подключим Arduino 101 к компьютеру с помощью USB-кабеля, затем загрузим свежую версию Arduino IDE (1.6.7. в моём случае) и установим необходимый пакет с помощью менеджера плат.

346d695363be1cf97b185adc1c31ee9a.png


Запуск менеджера плат

d26405a2a84bbadf9bb50ad283cd182b.png


Установка пакета

После завершения установки в меню должна появиться новая плата — «Arduino 101».

6b8b2d66e0fe5c403873ff7cf1aedd32.png


Arduino 101 в меню

Перед началом работы нужно указать COM-порт, с которым ассоциирована плата.

fdd5275b4f9266444812b69929ab2fad.png


Выбор COM-порта

Среда разработки установлена, плата к компьютеру подключена, теперь попробуем первый пример — «Blink».
Для запуска примера дополнительных устройств к плате подключать не придётся. В нём используется встроенный светодиод, который будет мигать, если всё пойдёт как нужно. Загрузим пример из соответствующего меню.

712bc2267902c6a7561024c09edb3909.png


Загрузка примера из меню

Когда код откроется в редакторе, нужно нажать на кнопку «Upload» (на ней нарисована стрелка) для выгрузки скетча, собранного из него, на плату.

03683ff5db47bdc92a77e5e043a0eb01.png


Выгрузка скетча на плату

После нажатия на кнопку происходит компиляция кода и выгрузка на плату по USB. Если всё сделано верно, через несколько секунд светодиод на Arduino 101 начнёт мигать. Вы можете внести в код изменения, например — поменять период мигания светодиода. После этого снова выгрузите его на плату и оцените работу изменённого варианта.

Аналоговый датчик


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

У меня есть Grove Starter Kit Plus, датчик я выбирал оттуда, а начать решил с чего-нибудь простого. Например — с потенциометра, который в документации Grove называется «Rotary Angle Sensor». Датчик подключим к аналоговому разъёму, а именно, к A0, а потом, в режиме реального времени, будем считывать его показания.

2e28eb12af4618a3980c0572d0eb7a3a.jpg


Подключение потенциометра

Загрузим пример «AnalogReadSerial» из меню.

68a6071e1c2a9234fc04e108de41d93e.png


Загрузка примера

Выгрузим скетч на плату и откроем монитор последовательного порта («Serial Monitor») из меню «Tools».

b60b1da85a34799319f29f20c5885cdd.png


Показания потенциометра

Теперь в окне монитора можно будет увидеть данные с потенциометра, которые меняются при повороте его ручки.
А вот ещё одна полезная возможность — построение графиков по аналоговым данным с помощью средства «Serial Plotter» (его можно найти в меню «Tools»). График выводится в режиме реального времени.

da6bec8f89f1d2fc791a435ec1299e32.png


Визуализация данных

Цифровые датчики


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

Испытаем простой датчик прикосновения из набора Grove. Подключим его к цифровому разъёму D2 и загрузим пример «DigitalReadSerial».

33b5d2442e58b6f91b98bc97754716f9.jpg


Подключение датчика прикосновения

После загрузки скетча на плату в мониторе последовательного порта можно будет видеть нули и единицы.»0» — касания нет,»1» — касание есть. Ничего другого сюда не выводится. Всё дело в том, что данные поступают от двоичного цифрового датчика.

c51f3f5cf6d12d550633490af69c26f5.png


Показания датчика прикосновения

Гироскопический датчик


Так как Arduino 101 использует модуль Intel Curie, к нашим услугам — гироскопический датчик. В этом эксперименте к плате ничего подключать не нужно, так как датчик уже в неё встроен.

Откроем пример «RawIMUDataSerial», выгрузим его на плату, запустим монитор последовательного порта и встряхнём устройство. В мониторе можно будет наблюдать за шестью группами показателей. Датчик обладает шестью степенями свободы, так как является комбинацией акселерометра и гироскопа.

b888e9e624273527fdcddac22a55f051.png


Необработанные данные встроенного датчика

Эти данные можно обрабатывать средствами платы для того, чтобы выяснять, являются ли перемещения, например, шагами или ударами. Взглянем на пример «ShockDetect», который выдаёт в монитор обработанные данные об ударах.

e69c23e2aadacefe36c1fe3696a81e8f.png


Анализ показаний датчика, выполняемый на плате

Хотите больше примеров? Загляните сюда.

Bluetooth LE


Благодаря модулю Intel Curie, Arduino 101 оснащён Bluetooth LE. Пользоваться Bluetooth очень просто, внешние BT-передатчики не нужны.
Загрузим пример «BatteryMonitor» и подключим к аналоговому разъёму A0, например, потенциометр. В скетче берутся данные потенциометра и отправляются в виде сообщения Bluetooth LE. В рамках примера они трактуются как уровень заряда некоей батареи. В Bluetooth LE имеются стандартные профили, например, для данных о частоте сердечных сокращений или об уровне заряда батареи. Мы будем пользоваться последним.

При запуске примера плата ожидает сопряжения с BLE-устройством. Здесь можно использовать смартфон или ноутбук с поддержкой Bluetooth LE и инициировать с него сопряжение с «BatteryMonitorSketch».

fae91b2227822f0c7318a13c07ebbad7.png


Начало подключения по Bluetooth

В процессе сопряжения вы увидите имя устройства (Genuino 101).

e3bab6025b40224ab0d4b91240f5df6c.png


Сопряжение с Genuino 101

Итак, устройство подключено к ноутбуку на Windows. Теперь нужно приложение, которое будет использоваться библиотеки BLE для чтения данных, которые генерирует скетч, эмулирующий датчик заряда батареи. Я установил программу «Newbit BLE Tool» из Windows App Store. Затем — выбрал BLE-устройство и службу с ID »*180f*». Такой ID означает, что мы подключаемся к датчику заряда батареи (список с примерами идентификаторов служб можно видеть в левой части окна).

02365e611b1f4a25b97f52044b53fa6e.png


Выбор службы

Теперь, когда всё готово, можно прокрутить окно вправо и взглянуть на данные, которые выдаёт скетч. Кроме того, на изменения этого показателя можно подписаться и получать данные по мере их обновления.

2136cd3db407031d7bcff14211a756be.png


Показания датчика, полученные по Bluetooth

Выводы


Arduino 101, который ещё называют Genuino 101, легко использовать, чего вполне можно ожидать от Arduino-совместимого устройства. Писать скетчи для него можно с помощью IDE Arduino, к нему подходят наборы датчиков и других модулей для Arduino. Кроме того, стоит помнить о том, что Arduino — это не только устройство и среда разработки, но и сообщество энтузиастов, которые охотно делятся знаниями и опытом.

Помимо стандартных для плат Arduino возможностей, Arduino 101 обладает очень интересными встроенными модулями — Bluetooth LE и комбинацией из гироскопа и акселерометра.

Вышесказанное делает Arduino 101 отличным выбором для тех, кто только начинает осваивать разработку устройств на базе микроконтроллеров. Но плата, о которой мы говорим, предназначена не только для новичков. Это, кроме того, ещё и мощная платформа для профессионалов, которая позволяет быстро собирать прототипы интеллектуальных устройств для интернета вещей.

Если прототип, построенный на Arduino 101, работает правильно, значит, руководствуясь теми же идеями, можно создать собственный продукт, используя платформу Intel Curie. Устройство на этой платформе будет оснащено тем же микроконтроллером, будет обладать теми же коммуникационными возможностями, что и Arduino 101. Как результат, благодаря Arduino 101 мы получаем простой, быстрый и дешёвый способ пройти путь от прототипов к серийному производству IoT-решений.

© Habrahabr.ru