[Перевод] Эксперименты с Arduino 101
Однажды, жарким зимним днём, в канун Рождества, меня неудержимо потянуло сделать что-нибудь интересное. У меня был приличный запас фуа-гра (на юго-западе Франции, где я живу, производят много этого деликатеса), хороший фильм и плата Arduino 101. С ней-то я и решил поэкспериментировать. Присоединяйтесь!
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. в моём случае) и установим необходимый пакет с помощью менеджера плат.
Запуск менеджера плат
Установка пакета
После завершения установки в меню должна появиться новая плата — «Arduino 101».
Arduino 101 в меню
Перед началом работы нужно указать COM-порт, с которым ассоциирована плата.
Выбор COM-порта
Среда разработки установлена, плата к компьютеру подключена, теперь попробуем первый пример — «Blink».
Для запуска примера дополнительных устройств к плате подключать не придётся. В нём используется встроенный светодиод, который будет мигать, если всё пойдёт как нужно. Загрузим пример из соответствующего меню.
Загрузка примера из меню
Когда код откроется в редакторе, нужно нажать на кнопку «Upload» (на ней нарисована стрелка) для выгрузки скетча, собранного из него, на плату.
Выгрузка скетча на плату
После нажатия на кнопку происходит компиляция кода и выгрузка на плату по USB. Если всё сделано верно, через несколько секунд светодиод на Arduino 101 начнёт мигать. Вы можете внести в код изменения, например — поменять период мигания светодиода. После этого снова выгрузите его на плату и оцените работу изменённого варианта.
Аналоговый датчик
Итак, с мигающим светодиодом мы разобрались, подключим теперь к плате какой-нибудь датчик, но, прежде чем это сделать, присоединим к Arduino 101 плату расширения.
У меня есть Grove Starter Kit Plus, датчик я выбирал оттуда, а начать решил с чего-нибудь простого. Например — с потенциометра, который в документации Grove называется «Rotary Angle Sensor». Датчик подключим к аналоговому разъёму, а именно, к A0, а потом, в режиме реального времени, будем считывать его показания.
Подключение потенциометра
Загрузим пример «AnalogReadSerial» из меню.
Загрузка примера
Выгрузим скетч на плату и откроем монитор последовательного порта («Serial Monitor») из меню «Tools».
Показания потенциометра
Теперь в окне монитора можно будет увидеть данные с потенциометра, которые меняются при повороте его ручки.
А вот ещё одна полезная возможность — построение графиков по аналоговым данным с помощью средства «Serial Plotter» (его можно найти в меню «Tools»). График выводится в режиме реального времени.
Визуализация данных
Цифровые датчики
Бывают аналоговые датчики, бывают цифровые. В документации к устройствам можно найти указания на это, а также сведения о том, как тем или иным датчиком пользоваться.
Испытаем простой датчик прикосновения из набора Grove. Подключим его к цифровому разъёму D2 и загрузим пример «DigitalReadSerial».
Подключение датчика прикосновения
После загрузки скетча на плату в мониторе последовательного порта можно будет видеть нули и единицы.»0» — касания нет,»1» — касание есть. Ничего другого сюда не выводится. Всё дело в том, что данные поступают от двоичного цифрового датчика.
Показания датчика прикосновения
Гироскопический датчик
Так как Arduino 101 использует модуль Intel Curie, к нашим услугам — гироскопический датчик. В этом эксперименте к плате ничего подключать не нужно, так как датчик уже в неё встроен.
Откроем пример «RawIMUDataSerial», выгрузим его на плату, запустим монитор последовательного порта и встряхнём устройство. В мониторе можно будет наблюдать за шестью группами показателей. Датчик обладает шестью степенями свободы, так как является комбинацией акселерометра и гироскопа.
Необработанные данные встроенного датчика
Эти данные можно обрабатывать средствами платы для того, чтобы выяснять, являются ли перемещения, например, шагами или ударами. Взглянем на пример «ShockDetect», который выдаёт в монитор обработанные данные об ударах.
Анализ показаний датчика, выполняемый на плате
Хотите больше примеров? Загляните сюда.
Bluetooth LE
Благодаря модулю Intel Curie, Arduino 101 оснащён Bluetooth LE. Пользоваться Bluetooth очень просто, внешние BT-передатчики не нужны.
Загрузим пример «BatteryMonitor» и подключим к аналоговому разъёму A0, например, потенциометр. В скетче берутся данные потенциометра и отправляются в виде сообщения Bluetooth LE. В рамках примера они трактуются как уровень заряда некоей батареи. В Bluetooth LE имеются стандартные профили, например, для данных о частоте сердечных сокращений или об уровне заряда батареи. Мы будем пользоваться последним.
При запуске примера плата ожидает сопряжения с BLE-устройством. Здесь можно использовать смартфон или ноутбук с поддержкой Bluetooth LE и инициировать с него сопряжение с «BatteryMonitorSketch».
Начало подключения по Bluetooth
В процессе сопряжения вы увидите имя устройства (Genuino 101).
Сопряжение с Genuino 101
Итак, устройство подключено к ноутбуку на Windows. Теперь нужно приложение, которое будет использоваться библиотеки BLE для чтения данных, которые генерирует скетч, эмулирующий датчик заряда батареи. Я установил программу «Newbit BLE Tool» из Windows App Store. Затем — выбрал BLE-устройство и службу с ID »*180f*». Такой ID означает, что мы подключаемся к датчику заряда батареи (список с примерами идентификаторов служб можно видеть в левой части окна).
Выбор службы
Теперь, когда всё готово, можно прокрутить окно вправо и взглянуть на данные, которые выдаёт скетч. Кроме того, на изменения этого показателя можно подписаться и получать данные по мере их обновления.
Показания датчика, полученные по 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-решений.