Компания
347,21
рейтинг
26 января 2015 в 15:43

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

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

Сегодня я хочу вас познакомить с Intel Galileo Gen2:



Комплектация


Intel Galileo Gen2 позиционируется как отладочная плата для изучения ключевых возможностей и особенностей Intel-платформы и не предназначена для встраивания в конечные устройства. Для применения в готовых устройствах предназначен Intel Edison (декларируется простая миграция Gilileo -> Edison).

Galileo Gen2 поставляется в красивой (не только снаружи, но и внутри) упаковке, однако, перечень содержимого достаточно скромный:



Собственно, внутри только сама плата Intel Galileo Gen2, источник питания (12В 1.5А, в комплекте 5 различных адаптеров под разнообразные розетки) и один листочек с важной информацией о безопасности (отпечатан ультрамелким шрифтом, записи на всех возможных языках, кроме русского).
Кстати, в этой бумажке написано, что во время работы Intel Quark SoC может нагреваться и трогать его не рекомендуется.
Странно, что в комплекте нет microUSB-кабеля, который требуется для работы с платой, ну да ладно – такого добра в хозяйстве любого гика достаточно.

Внешний вид


Размер платы Intel Galileo Gen2 составляет 124х72 мм (разъёмы чуть выступают за пределы платы):


На фото для сравнения: Intel Galileo Gen 2, «малина» и компактная версия клона Arduino Mega.

Основные разъемы на плате (начиная с левого нижнего угла и далее по часовой стрелке):

  • Слот для microSD-карты
  • Разъем питания (от 7 до 15В)
  • Ethernet-порт (10/100)
  • UART (6-пиновый разъем)
  • USBclient
  • USBhost
  • Разъем DEDIPROG (белый, может понадобиться, например, для восстановления после «окирпичивания»)
  • ICSP (6-пиновый разъем)



В правой части платы также видны характерные «гребенки» для Arduino-шилдов (полностью соответствуют Arduino Uno R3). Все пины заботливо подписаны в лучших традициях Arduino-плат.

Чуть ниже UART-разъема находится единственный джампер (IOREF) на два положения (5В и 3.3В) – он позволяет выбрать планку логических уровней, с которым будут работать подключенные шилды. Неправильный выбор напряжения может повредить как шилд, так и порты ввода/вывода Intel Galileo.

Левее и чуть ниже SoC находится двухпиновый разъём для подключения резервной батарейки (3В) для RTC (подписан «COIN»). RTC интегрирован в процессор.

На верхней стороне платы также находятся две кнопки: RESET (перезагрузка ардуино-составляющей) и REBOOT (перезагрузка всей системы).

Для индикации активности на Intel Galileo Gen2 находятся 5 светодиодов (все расположены рядом с разъёмом USBhost):

  • OC (красный) – для индикации перегрузки по питанию
  • USB (зелёный) – готовность к подключению через USB
  • L (зелёный) – пользовательский светодиод (подключен к D13)
  • ON (зелёный) – питание
  • SD (зелёный) – индикация доступа к SD-карте

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



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

Зато на нижней стороне платы размещён полноценный 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) для своей ОС.

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

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

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


Обновление прошивки занимает около 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. Подключил осциллограф и увидел следующее:


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

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

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


Горячее «сердце» системы – Intel Quark SoC X1000 и две микросхемы памяти (DDR3, 256Mb).

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


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

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

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

» Вторая часть «практикума»: Galileo Gen2 — Linux & Arduino.
Автор: @avstepanov
Intel
рейтинг 347,21

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

  • +1
    А можно ли пользоваться каким-то IDE, типа Eclipse, или на ее основе (любо любую другую), писать на Си и получать полнофункциональную отладку, включая отображение памяти, значения регистров?
    • +4
      Да, можно.
      Об этом будет во второй или третьей части «Практикума». Следите за обновлениями.
      • 0
        Спасибо, буду следить за обновлениями.
  • +2
    Спасибо за обзор. Жду продолжения!
  • 0
    Когда уже на подобных платах будут делать джамперы для питания светодиодов? В рабочем устройстве эти светодиоды потребляют возможно лишний ток, который нужен не всегда. Некоторые умельцы наловчились уже их выпаивать, чтобы увеличить срок работы от аккумулятора.

    против 116кГц у Arduino

    А чего так мало? Вроде кварц на 16 мегагерц. Это из-за озадаченности что-ли?
    • 0
      Боюсь, галилео сама по себе не из экономных вещей, светодиоды там считай ничего и не потребляют.

      116кГц у Arduino из-за ардуины, собственно из-за реализации DigitalWrite.
    • +1
      Вообщето такие платы для обучения — потрогать, пощупать, а не для применения их в «продакшене».
      Я свои платы проектирую самостоятельно (в т.ч. кортексы). Да, сурово. Но мы же в России живем.
      • +2
        Intel Galileo — этот позиционируется именно для целей обучения. А вот Intel Edison — этот уже можно и в «продакшен» ставить (предварительно изучив его с помощью плат из «наборов»). Для «продакшена» достаточно будет сделать свою плату, куда Edison будет просто «вставляться».

        Про Edison тоже будет в этом практикуме (чуть позже).
    • +2
      Я погонял несложные тесты (просто в ходе освоения) и нашел возможность мониторить температуру SoC. Палец я чуть не обжег не просто так: практически ненагруженная система разогревает SoC до вполне себе «достойных» 70 градусов (потребление светодиодов на уровне такой «грелки» просто смехотворно)… Соответственно, потребление Galileo — совсем не для автономных устройств.

      С Edison ситуация гораздо лучше и вот он уже может использоваться в «носимых» устройствах. И у него нет ни одного светодиода.
      • 0
        Довольно высокая рабочая температура, относительно настольных процессоров.
        Интересно, а есть ли какие-то радиаторы/системы охлаждения?

        На «малинку» делают довольно много корпусов, интересно а на Galileo gen2 бывают корпуса?
  • 0
    Вообще это не показатель, в серьёзных чипах общение с периферией(порты ввода-вывода) это самая тяжелая по тактам операция поэтому там и вышло всего 300 с лишним килогерц.
    Надо скорость сравнить на каких-то вычислительных задачах: целочисленные вычисления, с плавающей запятой и логика, вот там галилео покажет наверно чуть ли не 100-кратный выигрыш по сравнению с ардуиной, а то может и больше.

    Слышал, там на плате имеется АЦП скоростной до 1Мс/сек, почему бы не сделать «для примера» длинноволновый SDR-приемник? скажем, на 66кГц для приема сигналов точного времени.
  • 0
    А есть хотя бы один «продакшен» пример использования данной технологии (Galileo/Edison)?
    • +1
      о каких «продакшн» может идти речь, если оно
      1. дороже
      2. меньше распространено

      Впрочем, начать можно еще раньше — о каком «продакшн» может идти речь в контексте Ардуино? Это же такие штуки, для «быстро сделать что-то работающее на коленке».

      Молодцы, конечно, в Интел, что сделали совместимый с Ардуино продукт. Но мы вроде и так знаем, что там молодцы. А продукт получился, скорее как концепт, нежели как продукт для реального применения.
      • 0
        Вот вполне себе продакшн на ардуино
        • 0
          Что-то ссылка не открывается. Неужели хабраэффект? Будем подождать…
        • +1
          Это колхоз а не продакшн. Когда речь идет о «максимально просто и дешиво» то начинают чем-то жертвовать… первой жертвой становится надежность и ограничение по условиям эксплуатации.
          Получилось дёшево но… работает только в комнатных условиях и в определенной фазе луны.
          • 0
            Почему все считают надежность изделий на ардуино низкой. Может просто завидуют простоте программирования, и удобству работы с ней. В основу ардуино положен очень надежный контроллер, минимальная внешняя обвязка не дает оснований считать что внешние цепи повлияют на надежность. Почему — же тогда Pic, STM — это гуд, а ардуино, наколенная игрушка? Когда то на хабре была статья (к сожалению не смог найти) где ардуинку подвергали достаточно серьезным испытаниям. Да и мой личный опыт говорит о надежности данной платформы. На работе на улице валяется в пластмассовой коробочке Uno в качестве погодной станции (а у нас там до -45), система контроля температуры в серверных шкафах описанная в моих постах, обе системы работают уже четвертый месяц без единого сбоя. В Казани работают автоматические мойки самообслуживания для автомобилей. Собраны то же на Uno. Работают уже почти год, и без нареканий. Считают деньги, моют машины. Эти случае дают право считать платформу аодуино не менее надежной чем другие платформы.
            А может кто ни будь аргументировано объяснить Ваше мнение, что платформа Ардуино — ненадежная игрушка
            • 0
              дело не в среде программирования и не в языке — бог с ними, они позволяют делать программы. Дело в аппаратной реализации — вот эти платки со штырьками, шилды… компоненты бытового назначения а не индустриального и т.д.

              То что оно у вас при -45 работает в пластиковой коробочке — это банально везение и большая удача. Кто-то соберет точно такую же конструкцию и у него не заработает в аналогичных условиях.
              Ключевое слово — гарантии. Ардуино ничего не гарантирует, поэтому все что сделано вами на основе ардуино не обладает никакими гарантиями вне довольно узких рамок условий работоспособности — может будет работать а может и нет.

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

              Во времена ламповых телевизоров, их можно было не распаивать — поставил на мороз и при -13 уже можно просто выгребать детали ибо припой потрескался и отвалился.
              • 0
                Шилды позволяют сделать отладку, а конечная реализация конечно через пайку. Скажите пожалуйста а «настоящие», и «серьезные» системы собирать не надо?.. Тот же монтаж на клемниках, Та же опресовка. Да и пайка часто. Вы думаете те ребята которые собирали станок, или автомойку не умеют паять?.. Ардуино как раз дает возможность людям с прямыми руками использовать контроллеры в своих задачах. Стандартный сценарий: Разработка и отладка на Uno, реализация на какой ни будь Pro-Mini. А там уже вполне себе серьезная реализация, без всяких там разъемов. Вопрос гарантии то же не актуален. Кому нужна гарантия покупает сименс по стоимости чугунного моста. А кого устраивает поддержка разработчика, может заказать и на ардуино и на Pic, и на STM. Что вполне приемлемо для небольших фирм. Разве разработчики той же малинки дают гарантию? Между тем ее считают «серьезной» платформой. Какие ни будь более серьезные аргументы за неполноценность ардуино есть?
                • 0
                  Вот когда нет гарантий это и называется колхоз.
                  Малинка — более мощная платформа, но никак не более серьезная в плане аппаратной надежности. Более серьезная она только в вычислительном плане.
                  Кастомная плата на «ардуине» под конкретную задачу с заводской пайкой — это более серьёзное изделие чем базовая версия платки с пользовательской пайкой и кучи проводов.

                  Неполноценность ардуины — в применении учебной платки в промышленном оборудовании. Особенно когда не обращают внимание на электромагнитную совместимость и защиту входов.
                  • 0
                    Так вот как раз задача инженера — разработчика правильно обвязать эту платку развязками, согласовать уровни, и т.п. И это нормальный разработчик умеет как отче наш. Так же он сможет сделать нормальную платку и правильный монтаж. Я конечно понимаю что программистам, которые составляют большую часть аудитории хабра, тяжело представить как можно правильно обвязать ту же Arduino Nano, но поверьте — хороший инженер электрик это может. А инженер электронщик тем более. И расчет сделает, и уровни напряжений согласует. Так зачем ему покупать сто то дорогое, когда его знаний с лихвой хватает что бы сделать достойное изделие на недорогой но надежной, и легко програмируемой платформе. Но тут появляются грозные дяди «настоящие» программисты и заявляют — ардуино это плохо потому что мы не можем на нем сделать ничего серьезного. Вот так и сложился образ ардуино как учебной несерьёзной платформы.
                    • 0
                      Увы… когда вы потом произведете подсчет потраченных человеко-часов на адаптацию ардуины под промышленные требования может оказаться что эта работа будет дороже чем купить дорогой контроллер который уже предназначен для этой работы.
                      Почему-то многие часто упускают этот аспект, что стоимость человеко-часа хорошего разработчика а тем более электронщика очень высока. И часто стоимость эта превышает стоимость готового уже существующего оборудования. Не говоря уж о предстоящих прогулках по граблям в самодельной разработке.

                      К примеру, почему у вас даже не возникает желания разработать аппарат такого же уровня как NOKIA 3110 — очевидно, что разработка такого аппарата обойдется раз в 100 дороже чем купить заводской.
                      • +2
                        Вопрос в том что 3110 нет необходимости разрабатывать. А вот реле превосходящее по возможностям Zelio от Shnider-a даже очень имеет. Себестоимость его будет раза в два ниже, а возможности на порядок превосходить. Да и стоимость разработки не думаю что будет зашкаливать. К сожалению из за того что все считают собственные разработки колхозом на коленке, российские стартапы и не могут пробится. Но ведь и Simens не сразу стал законодателем мод в промышленном программировании. А вы сразу «Ах наши...., безрукие, спаяют не так, входы закоротят, выходы спалят!!!». А Россия всегда славилась своими умами. К сожалению в последнее время из за всеобщего преклонения перед импортными гигантами, даже эти умы махнули рукой на себя. Пускай нет пока своих микроконтроллеров, но я считаю что надо дать возможность развиваться своим технологиям, хотя бы пока на базе импортной элементной базы. Тем более с Китаем мы сейчас дружим. А тот же сименс свои S-1500 там же клепает.
                        • 0
                          Значит, у вас есть все шансы создать офигенный бизнес и разом обанкротить остальных производителей промышленного оборудования за счет низких цен. Осталось дело за малым…
                          • 0
                            Своей честный бизнес в России? При текущих законах и и хапуг в кабинетах? Не смешите! Только не официально — иначе сожрут. Имею горький опыт.
  • 0
    Жаль, что подключить стандартный дисплей можно только путем добавления переходника и стандартной видеокарты

    image
    2GE7681 — StarTech.com Half Size to Full Size Mini PCI Express Adapter


    image
    Zotac NVIDIA GeForce GT 730 1GB DDR3 DVI VGA HDMI PCI-Express 2.0 Video Card ZT-71107-10L
    • +1
      Стандартная видеокарта… ага.
    • 0
      Для чего плате типа Intel Galileo дисплей?
      • 0
        Для отладки. Заменитель светодиода.
        • +1
          Я сейчас для этого (отладки) использую экранчик (на первой фото видно). Хотя и это лишнее, имхо… консоль позволяет многое.
      • 0
        А почему бы собственно и нет?

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

Самое читаемое Разное