» » Практикум «Intel IoT». Galileo Gen2 — Первое знакомство

 

Практикум «Intel IoT». Galileo Gen2 — Первое знакомство

Автор: admin от 26-01-2015, 15:43, посмотрело: 604

Компания Intel выпускает несколько устройств для разработчиков: Galileo, Galileo Gen2 и Edison — продукты, совместимые с платформой Arduino, основное назначение которых – создание решений в сфере интернета вещей (перегрузки по питанию
  • USB (зелёный) – готовность к подключению через USB

  • L (зелёный) – пользовательский светодиод (подключен к D13)

  • ON (зелёный) – питание

  • SD (зелёный) – индикация доступа к SD-карте


  • Посмотрим на плату с нижней стороны:

    Практикум «Intel IoT». Galileo Gen2 — Первое знакомство

    Первое, что бросилось в глаза – остатки флюса почти на всей нижней поверхности платы. Странно видеть подобное у именитого производителя (да ещё и с такой привлекательной упаковкой). Ну да ладно, «на скорость не влияет».

    Зато на нижней стороне платы размещён полноценный mini-PCI Express слот для возможных расширений (модули WiFi, модемы и т.п.). Рядом с ним находится 10-пиновый разъем JTAG для отладки. Там же предполагается подключать и опциональный модуль PoE (соответствующие контакты подписаны «POWER OVER ETHERNET»).

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

    Let's go!


    Плата подобного класса для меня – большая новинка. До этого я довольно плотно работал сначала с различными ардуино-платами, а потом и просто с устройствами на базе МК atmega.

    Intel Galileo позиционируется (по крайней мере, как это декларируется в маркетинговых материалах Intel) как плата с большими возможностями linux-систем и простым прототипированием Arduino, а так же с возможностью организации взаимодействия двух этих «подсистем». Посмотрим, как обстоят дела на самом деле.

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

    Плата в заводском состоянии (без какой-либо подготовки) уже пригодна для работы в среде Arduino (в 8Mb встроенного флеш-хранилища находится облегченная версия linux, которая обеспечивает этот функционал).

    Но «хватит откладывать – пора высиживать»: жахнем из главного калибра по воробьям (поморгаем светодиодом). Первое, что требуется – скачать и установить специальную версию Arduino IDE (доступна в Galileo Software Downloads) для своей ОС.
    Практикум «Intel IoT». Galileo Gen2 — Первое знакомство

    Теперь, наконец-то, можно подключить саму плату. Тут есть небольшой нюанс – после подключения питание необходимо немного подождать (несколько секунд), пока система загрузится. При этом на плате последовательно загорятся два зелёных светодиода (по разные стороны от USBhost-разъёма) – только после этого можно подключать microUSB-кабель.

    В Arduino IDE необходимо выбрать свою плату (в этой среде доступны варианты Intel Galileo, Intel Galileo Gen2 и Intel Edison) и появившийся после подключения платы порт. Для Mac адрес порта имеет вид: /dev/cu.usbmodemXXXXX, где XXXXX выглядит как fd121.

    В первый раз рекомендуется сделать проверку версии прошивки и обновление, если оно требуется, конечно. Моя плата такое обновление получила:

    Практикум «Intel IoT». Galileo Gen2 — Первое знакомство

    Обновление прошивки занимает около 5 минут.

    Теперь плата полностью готова к работе. В качестве первого эксперимента загружаем «Hello World!» для МК – пример Blink. Привычно нажимаем кнопку «загрузить» и через несколько мгновений на плате начинает задорно моргать зелёный светодиод у USB-разъёма.

    Готово! Первый скетч уже работает. После перезагрузки системы – начнёт работать заново. Таким образом, можно сразу использовать Arduino-возможности платы. В Arduino IDE находятся все основные примеры и включены базовые библиотеки (со своими примерами), позволяющие быстро ознакомиться с возможностями платы и её программирования. Собственно, ничего необычного в этом пока не обнаружено – всё работает, как ожидалось (пусть и «поморгать светиком» это слишком уж просто и банально).

    Интересно, что через ардуино-составляющую можно работать с Ethernet-портом (через штатную адаптированную одноимённую библиотеку) и SD-картой. При этом не задействуются никакие пины для подключения шилдов.

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

    Все шилды я, конечно, проверять не буду (тем более, что есть вот такой документ) – под руку попался EM Shield. Этот модуль содержит популярный жк-дисплей (аналогичный Nokia 5510), две кнопки (подключенные к одному аналоговому пину), три разъёма для подключения токовых датчиков (тоже заведены на аналоговые пины) и интерфейс для подключения популярного трансивера nRF24l01+ (на ардуино используется аппаратный SPI). Цель экспресс-проверки – попробовать запустить какие-нибудь примеры из готовых библиотек, не входящих в состав «подготовленнои» IDE.

    Для наглядности начал с дисплея. И библиотека LCD5110_Graph (ожидаемо) не «завелась»… Основные ошибки при компиляции: работа с регистрами напрямую. А вот если переписать соответствующие куски кода на digitalWrite() и т.п. – дисплей «оживает». Собственно, КДПВ сделана именно при этих экспериментах.

    Аналогичные проблемы (не компилируется, не работает) появились при работе с таймерами. Обнаружились проблемы и при работе с прерываниями – они (прерывания) обрабатываются, но только «при изменении» (напомню, в обычной Arduino можно настраивать прерывания «по фронту», «по спаду» и «при изменении»).

    Вероятно, есть какие-то еще особенности – проявятся в дальнейшем изучении. Пока писал этот пост, нашёл вот такой документ – в нём описаны соответствующие ограничения. Лучше их предварительно изучить, чтобы не ходить по уже известным «граблям». Особо следует обратить внимание на существенно меньшие токи с каждого пина: 16мА@5В или 8мА@3.3В (на обычной Arduino – 50мА@5В). То есть в случае чего можно запросто выжечь пин – будьте внимательны.

    Также было очень интересно, насколько быстрее Intel Galileo выполняет «стандартные» функции – например, digitalWrite(). Для этого я взял скетч blink, убрал задержки из цикла loop() и залил один скетч в ардуино (atmega328p), и аналогичный – в Galileo. Подключил осциллограф и увидел следующее:

    Практикум «Intel IoT». Galileo Gen2 — Первое знакомство

    Первый канал (голубой) – Arduino, второй (жёлтый) – Intel Galileo.

    Получается, что плата от Intel работает примерно в четыре раза быстрее (385кГц, против 116кГц у Arduino).

    Несмотря на предупреждение, я все-таки потрогал SoC во время проведения последнего эксперимента… и практически обжег палец.

    Практикум «Intel IoT». Galileo Gen2 — Первое знакомство
    Горячее «сердце» системы – Intel® Quark™ SoC X1000 и две микросхемы памяти (DDR3, 256Mb).

    На сегодня всё


    Можно смело сказать, что плата от Intel (если рассматривать исключительно Arduino-составляющую) – обеспечивает такой же низкий уровень входа, как и Arduino (правда, при существенно большей стоимости платы). Но ведь это даже не половина возможностей!

    На Intel Galileo можно запустить вполне функциональную версию linux – Yocto, при этом можно использовать плату как обычный linux-компьютер. А организовав взаимодействие «linux-компьютера» и «arduino-устроиства» – реализовывать гораздо более функционально-продвинутые вещи.

    В следующих частях «практикума» я постараюсь осветить и эти возможности. Продолжение следует…

    Источник: Хабрахабр

    Категория: Программирование, Веб-разработка

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

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *