Однажды, жарким зимним днём, в канун Рождества, меня неудержимо потянуло сделать что-нибудь интересное. У меня был приличный запас фуа-гра (на юго-западе Франции, где я живу, производят много этого деликатеса), хороший фильм и плата 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-решений.
Поделиться с друзьями
-->

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


  1. KonstantinSoloviov
    16.06.2016 21:04
    +14

    Чё за хрень? «Hello world» на ардуино?
    Я отказываюсь понимать по каким принципам делятся темы между хабром и гиктаймсом.
    Это реально блог Intel? Может кто-то увел аккаунт пока серый гигант спал?


    1. Tiamon
      17.06.2016 02:54
      +3

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


      Ну да мы уже поняли, что всё в Интел очень круто. Но вот потянуло и…
      нужно было остановится или написать действительно, что то интересное


    1. DarkByte
      17.06.2016 09:50

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


  1. uterr
    17.06.2016 09:51

    А что имеется в виду, под «невысокой ценой»? вот тут ардуина стоит меньше 2-х баксов с доставкой, а эта новая, «недорогая» ардуина сколько? Я нашел цену только более чем в 50$, правда не слишком долго искал


    1. SvetlanaGEm
      17.06.2016 15:45
      +1

      Эта плата стоит 30$. В чип и дипе от 3150р.


  1. daggert
    17.06.2016 09:55

    >Вышесказанное делает Arduino 101 отличным выбором для тех, кто только начинает осваивать разработку устройств на базе микроконтроллеров.

    Вообще мимо. Для чего разрабатывать на платформе, чипы для которой доступны только компаниям и чувствую что в партиях от тысяч штук? Ту-же атмегу32 я могу заказать на ибее в количестве ~100 штук не связываясь с представительством поставщика.
    Вот в который раз убеждаюсь что в Интеле сидят странные маркетологи, которые интересный товар не умеют позиционировать.


    1. SvetlanaGEm
      17.06.2016 15:37

      Плата продается на Чип и дип. Стоимость от 3150 руб. http://www.chipdip.ru/product/genuino-101/


    1. SvetlanaGEm
      17.06.2016 15:43

      И что касается Quark — продаются от 1ой штуки, например, у одного из дистрибьюторов Intel — mouser.com


      1. daggert
        17.06.2016 20:28
        +1

        Про что я и говорил: Маркетологи странные. Я гуглил про данный МК сразу после вашего поста и не нашел где купить.

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


  1. netmans
    17.06.2016 12:23

    4 тысячи рублей? За эти деньги можно на али купить мешок ардуино-клонов с мешком датчиков.


  1. ds6328
    17.06.2016 12:24

    Судя по сайту arduino.cc
    Microcontroller Intel Curie
    Operating Voltage 3.3V (5V tolerant I/O)
    Input Voltage (recommended) 7-12V
    Input Voltage (limit) 7-20V
    Digital I/O Pins 14 (of which 4 provide PWM output)
    PWM Digital I/O Pins 4
    Analog Input Pins 6
    DC Current per I/O Pin 20 mA
    Flash Memory 196 kB
    SRAM 24 kB
    Clock Speed 32MHz
    Features Bluetooth LE, 6-axis accelerometer/gyro
    Length 68.6 mm
    Width 53.4 mm

    Замечая разницу видим, что размер флеш-память отличается на 188 kB. PWM пинов на 2 меньше, чем у Arduino UNO.


  1. unhega
    17.06.2016 12:24

    Формфактор типа как у ESP (когда плату можно припаять без штырьков к макетке) выглядел бы лучше чем текущий монстр, который невозможно нигде использовать.

    И да, чем он принципиально лучше STM32?


  1. ef_end_y
    17.06.2016 13:30
    +1

    «А что так тоже можно было»? Если бы знал, наклепал бы стопицот статей про ардуино — пока делал сегвей, с сотню задач решил посложнее хеллоуворда. Но, видимо, все дело в запасах фуа-гра, которых у меня нет


  1. abrakada
    17.06.2016 13:38
    +1

    Любопытная плата, конечно. Давно собираюсь купить для экспериментов. Вообще последние пару лет тренд у многих производителей делать устройство все-в-одном. В дополнение вот для интересующихся анонс ардуины на ARM nrf52832