Intel Edison. Первый запуск

    Intel Edison

    В прошлом году на выставке CES 2014 Intel представила Linux мини-компьютер Edison для интернета вещей. Кратко почитать об анонсе Intel Edison можно тут. Интернет вещей — безусловный тренд этого года. Теперь не только домашний компьютер, планшет, или смартфон могут подключаться к сети Интернет. Но и привычные бытовые вещи, которыми мы пользуемся каждый день. Intel Edison, не ответ компании на Raspberry Pi, а новая ниша миниатюрных энергоэффективных компьютеров, в форм-факторе модуля. Любой разработчик может взять такой модуль, добавить к нему различные датчики, механику, и средство интерактивного взаимодействия, и получить новое устройство.

    Intel Edison – мини-компьютер с Linux на борту, базис для построения нового мира вещей основанного на сетевом взаимодействии друг с другом.

    Intel Edison

    Спецификация модуля Intel Edison

    • Процессор: SoC «Tangier», включает в себя два ядра Intel Atom (Silvermont) processor (22nm) processor @ 500 MHz и 32-bit Intel Quark micro-controller @ 100 MHz
    • Оперативная память: 1 GB LPDDR3 (PoP memory) – 2 channel 32bits @ 800MT/sec
    • Пользовательская память: 4 GB eMMC (v4.51 spec) +разъем для micro SD карт
    • Сеть: 802.11 a/b/g/n Wi-Fi (с поддержкой 5 ГГц, чип Broadcom 43340) с встроенной антенной или внешней, и Bluetooth 4.0
    • USB: один разъем micro USB
    • Программируемые контакты:
      • 2x UART (1 full flow control, 1 Rx/Tx)
      • 2x I2C, 1x SPI with 2 chip selects
      • 1x I2S
      • 12x GPIO включая 4 контакта ШИМ(PWM)

    • Подключение периферийных модулей: 70-контактный разъем (Hirose DF40 series – 1.5, 2.0, или 3.0 mm высоты стека)
    • Питание: вход от 3.3 до 4.5 V; выход: 100mA @ 3.3V и 100 mA @ 1.8V
    • Режимы питания: ожидание( без радиопередачи): 13 mW; ожидание (Bluetooth 4.0): 21.5 mW (BLE in Q4 2014); ожидание (Wi-Fi): 35 mW.
    • Размеры: 35.5 × 25.0 × 3.3 mm
    • Температурный диапазон работы: от 0 до 40°C

    Для удобной разработки своих устройств на базе Edison, Intel подготовила плату Intel Edison Board для Arduino. Ссылки на магазины для приобретения комплекта Intel Edison with Arduino Breakout Kit, в конце поста.

    Intel Edison Board для Arduino
    Intel Edison

    Содержит:

    • 20 цифровых input/output контактов, включая 4 контакта вывода ШИМ(PWM)
    • 6 аналоговых контактов input
    • 1 UART(RX/TX)
    • 1 I2C
    • 1 ICSP 6-pin header (SPI)
    • Micro USB разъем или (используя переключатель на плате) выделенный стандартный USB host Type-A
    • Разъем Micro USB (для UART)
    • Слот для SD Card памяти
    • Стандартный разъем для питания DC power jack (7V – 15V DC input)


    Программное обеспечение
    Intel Edison включает в себя Intel Atom, который работает под версией Linux Yocto 1.6, и Quark MCU под ViperOS(усеченный вариант VxWorks от Wind River). В инструменты разработчика входит Arduino IDE, Eclipse с поддержкой C, C++, поддержка Python и Intel XDK для Node.JS и HTML5 разработчиков. Достаточной богатый набор средств разработки.

    Общая схема поддержки средств разработки

    Intel Edison
    Постер демонстрирующий программный стек Intel Edison

    Intel Edison

    Загрузка ОС: U-Boot version (2nd stage bootloader in source)
    Kernel/BSP: Yocto Linux 1.6, Linux kernel v3.10.17
    Native SDK: компиляция (GCC 4.8.2), GLIB 2.38.2, отладка GDB 7.6.2
    Инструменты разработчика: Arduino IDE, Node.js (Supported by Intel® XDK), Python (This package is part of BSP)
    Интерфейсы WLAN/BT (BCM43340): в виде бинарных файлов WiFi STA and BT+LE, доступен исходный код для BRCM kernel drivers и WiFi Supplicant(+BlueZ)
    Межплатформенное взаимодействие: D2D и D2C (Networking, Messaging, privacy/security)
    Облако: Веб-портал, управление идентификацией, профиль пользователя, регистрация устройства, загрузка данных с устройства и визуализация.

    Yocto Project для Intel Edison
    The Yocto Project – это Open Source-проект, целью которого является упрощение разработки специальных дистрибутивов Linux для встраиваемых систем и обеспечение их переносимости между различными платформами.

    Руководство Intel Edison Board Support Package предназначено для инженеров, которые собирают свои образы (images), ядра, разрабатывают низкоуровневый код.

    Предварительно скомпилированные BSP образы доступны на сайте Intel. BSP для Intel Edison поддерживает следующие возможности:

    • Ядро образа основано на Linux kernel 3.10.17
    • Поддержка U-boot, как второй метод загрузки ОС
    • U-boot second stage bootloader
    • Связь Bluetooth и Wi-Fi
    • Работа с Intel Cloud
    • Пакеты доступные в рамках Yocto project


    Используемая в Intel Edison, стандартная ОС Linux основана на Yocto.

    Сборка образа
    Intel Edison

    Платформа Intel IoT Analytics Platform (Beta)
    Для работы с устройствами Edison и Galileo, Intel представила облачный сервис, работающий по принципу Machine-to-Cloud. Для передачи данных используются протоколы: HTTP и MQTT. Облачный сервис предоставляет:

    • Передачу данных на удаленные сервера с устройства
    • Хранение данных
    • Обработку данных по своим алгоритмам
    • Формирование событий, и оповещений

    Intel Edison

    Платы расширения для Intel Edison
    По спецификациям Edison, компания DFRobot.com для Intel Edison разработала специальную робо-платформу Romeo for Edison Controller (With Intel Edison). Платформа предназначена для построения робота, на плате уже интегрированы драйверы двигателей, сервоприводы.

    Intel Edison

    Программирование в среде Arduino. Первый старт
    Наиболее быстрым ознакомлением с Edison, будет работа с модулем как с Arduino совместимой платой. Разработка кода осуществляется в уже привычной родной IDE среде для Arduino. Но в базовой среде, загруженной с сайта arduino.cc не будет модуля работы с Intel Edison. Поэтому драйвера и среду необходимо загрузить с сайта Intel.

    • Windows Driver
    • Arduino Software 1.5.3 — Intel 1.0.4 software

    Подключаем Intel Edison Board используя разъем J16 к ПК, и устанавливаем драйвера. После установки драйверов должно появиться вот такое окно:

    Intel Edison

    Запускаем IDE Arduino. После запуска необходимо выбрать плату. Меню Сервис-> Плата –> Intel Edison

    Intel Edison

    Демонстрация работы
    Для работы был собран небольшой демонстрационный стенд. Для демонстрации работы Intel Edison как Arduino, используется:


    Среда для датчика влажности почвы, цветочный горшок с Каланхое каландива.

    Требуется периодически замерять уровень влажности почвы, температуру окружающей среды, давление и выводить значения на дисплей.
    Для более удобного подключения кнопок, LCD, реле, LED, используется IO Expansion Shield for Arduino.

    Схема подключения
    Intel Edison

    Датчик влажности почвы
    Intel Edison


    Демонстрационный стенд с цветком

    Intel Edison
    Код arduino скетча
    Код arduino скетча

    //LCD 
    #include <Wire.h>
    #include <LCD.h>
    #include <LiquidCrystal_I2C.h>
    #define LCD_I2C_ADDR    0x20 // Define I2C Address where the PCF8574T is
    #define BACKLIGHT     7
    #define LCD_EN  4
    #define LCD_RW  5
    #define LCD_RS  6
    #define LCD_D4  0
    #define LCD_D5  1
    #define LCD_D6  2
    #define LCD_D7  3
    LiquidCrystal_I2C       lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7);
    //BMP085 Barometric Pressure & Temp Sensor
    #include <Wire.h>
    #include <Adafruit_BMP085.h>
    Adafruit_BMP085 bmp;
    //
    
    void setup() {  
      bmp.begin();
      //init LCD
      lcd.begin (20,4);
      lcd.setBacklightPin(BACKLIGHT,NEGATIVE); // init the backlight
      lcd.setBacklight(HIGH); // Backlight on
      lcd.home ();                  // go home
      lcd.setCursor ( 0, 0 );        
      lcd.print("Edison. Habrahabr");
    }
    
    void loop() {
      lcd.setCursor ( 0, 1 );  
      lcd.print("Tempera. = ");
      lcd.print(bmp.readTemperature());
      lcd.print(" *C");
      //
      lcd.setCursor ( 0, 2 );        
      lcd.print("Pressure = ");
      lcd.print(bmp.readPressure());
      lcd.print(" Pa");
      //
      lcd.setCursor ( 0, 3 );        
      lcd.print("Moisture Value = ");
      lcd.print(analogRead(0));
      //
      delay(1500);               // wait for a second
    }
    

    Видео



    Особенности
    Несмотря на Arduino-совместимость программного обеспечения Intel Edison, не всегда код на Arduino напрямую без изменений можно перенести. С элементарными функциями не возникают проблемы, например отправка логической “1” или “0”, PWM, аналоговое чтение или запись, работа с Serial LCD. Код для модулей работающие на интерфейсах I2C и SPI, приходится править. Для запуска LCD и датчика давления пришлось немного “поколдовать”

    Инструкция как запустить дисплей GY-IICLCD GY-LCD-V1 с чипом PCF8574T на I2C

    1) По пути arduino-1.5.3-Intel.1.0.4\libraries удалить папку LiquidCrystal, далее будет заменена
    2) Для работы дисплея требуется библиотека  F Malpartida’s NewLiquidCrystal library.
    3) В архиве папку LiquidCrystal необходимо скопировать в arduino-1.5.3-Intel.1.0.4\libraries
    4) Для справки Communities.intel.com. How to interface a i2c LCD to Galileo i2c port. В папке LiquidCrystal, файл FastIO.cpp. найти строку #include «FastIO.h» и ниже ее добавить #define _BV(i) (1<<i).
    5) В этой папке LiquidCrystal, удалить файл LiquidCrystal.cpp, иначе будут ссыпаться ошибки
    6) Дисплей теперь будет работать

    Инструкция как запустить датчик BMP085 на I2C

    1) Для справки Communities.intel.com. BMP085 Library Error
    2) Выполнить инструкции рекомендованные в ветке форумы или сразу загрузить модифицированную библиотеку gustafn/Adafruit-BMP085-Library · GitHub
    3) Обязательно переименовать папку библиотеки Adafruit-BMP085-Library, на что ни будь более короткое, пример AdaBMP085, иначе IDE Arduino будет ругаться что проблемы с ASCII названием.
    4) Датчик теперь будет работать
    Для решения проблем с подключением датчиком в первую очередь необходимо смотреть на communities.intel.com.
    Как и ожидалось подключение стандартного двухстрочного дисплея HD44780 на I2C с PCF8574, используя стандартную библиотеку, не увенчалось успехом.
    Библиотеки для подключения цветного LCD TFT 1.8", такого как в посте https://learn.adafruit.com/1-8-tft-display, Adafruit_ST7735 library и Adafruit GFX Library, не заработали.

    Подведем краткий итог. Некоторая несовместимость с Arduino кодом объясняется достаточно недавним появлением Intel Edison, и разработчики еще не успели полностью закончить работу на библиотеками. Проект Arduino, в этом году отметит свой юбилей, прошло 10 лет с момента создания первой Arduino. Поддержка Arduino скорее продиктована, более знакомым и удобным средством разработки для большинства гиков. Сильной стороной Intel Edison, помимо богатых технических характеристик, является проработанная программная поддержка. Каждый разработчик используя бесплатные инструменты может собрать свой образ BSP Linux, на базе Yocto Project. Учитывая высокую производительность модуля и большое количество уже разработанных проектов под Linux, разработчику открываются широкие возможности по применению данного модуля. На данный момент обеспечено выполнения кода на C++, Python, Node JS. Загружать код под Node JS можно удалено, в отличие от Arduino, что очень удобно для разработчика.

    Следующая статья будет посвящена взаимодействию Intel Edison с облачным сервисом Intel IoT Analytics Cloud. Какие возможности облако предоставляет разработчикам и конечны пользователям.

    Пока шла подготовка статьи, был обнаружен интересный проект. У гикой существует достаточно специфическое соревнование, заключающее в запуске игры Doom, на самых разнообразных устройствах, включая принтеры. Так в конце прошлого года Хакеры сыграли в Doom на принтере. Теперь очередь пришла Intel Edison, проект Edidoom, с поддержкой геймпада по bluetooth.



    Ссылки


    Дополнение. Техническая спецификация Intel Edison Board для Arduino (перевод из Intel Edison Kit for Arduino Hardware Guide)
    Контактная площадка соответствует спецификации Arduino Uno, обеспечивает подключение стандартных плат расширений (Shield board).
    Широтно-импульсная модуляция(ШИМ, англ. pulse-width modulation (PWM))
    В отличие от Arduino UNO, где доступно 6 контактов типа PWM, на Intel Edison Board можно задействовать только 4 из 6 доступных контактов.
    Выходную частоту PWM и коэффициент заполнения можно определить по формуле:

    • Заданная частота ~ = 19,2 МГц * Base_unit value(заданное значение) / 256
    • Коэффициент заполнения PWM  ~ = PWM_on_time_divisor / 256

    За переключение отвечают перемычки (джампера) J11 и J12. Более подробно на страницах 15-16

    Аналого-цифровой преобразователь (АЦП, англ. Analog-to-digital converter, ADC)

    В качестве АЦП используется микросхема ADS7951 A/D, со следующими характеристиками:

    • 12-bit A/D
    • 8 каналов
    • 1 MHz частота выборок
    • 70 SNR, дБ

    Диапазоны напряжений от 0 до 2.5 V или от 0 до 5 V, регулируется перемычкой(AREF или IOREF перемычка на плате J8)

    Интерфейс USB

    На плате размещено три порта USB 2.0. Порт J3 используется в качестве UART интерфейса. Порт J16 работает в режиме устройство (device). Порт J6 работает в режиме хаб(host port, для подключения внешний устройств). Но порты J16 и J6 одновременно не могут работать, для переключения порта используется переключатель SW1. Для включения порта J6 USB HUB, необходимо передвинуть переключатель в сторону этого порта. В противном случае будет использоваться порт J16, и Intel Edison будет работать как USB устройство (device).
    При переключение режима работы Intel Edison как USB HUB, обязательно необходимо подать внешнее питание.

    Электропитание

    Intel Edison специально спроектирован для низкого энергопотребления. При средней нагрузке питание обычно не превышает 200 mA, в случае использования Wi-Fi потребление возрастает до 430 mA. Плата Intel Edison Board для Arduino может работать от порта USB(в режиме устройство) или от внешнего источника питания от 7 до 15 V.
    Для проектом с низким энергопотреблением, можно подключить литий-ионный аккумулятор (Li-ion) (3.0 до 4.3 Vmax) к разъему J2. В этом режиме на платы расширения будет подано напряжение 3.3 V и максимальная сила тока составит 100 mA.
    Более подробно на страницах 17-20
    Индикаторы(LEDs)
    На плате размещено 3 индикатора:

    • DS1 – индикатор рабочего состояния. Включен во время работы Intel Edison, и выключен в случае перезагрузки процессора RESET_OUT# low
    • DS2 – стандартный индикатор для Arduino плат. Соответствует 13 цифровому контакту. Прямой доступ из Arduino кода.
    • DS3 – индикатор зарядки батареи. Включен во время зарядки подключаемой батареи.

    Кнопки
    Общий сброс (System reset) – кнопка SW1UI5. Полная перезагрузка Intel Edison, включая все подключенные подули.
    Сброс платы расширения(Shield reset) – кнопка SW1UI1. Сброс платы расширения(Shield board), при этом вычислительные операции  Intel Edison не прерываются.
    Подача питания(Power button) — кнопка SW1UI2. Однократное нажатие приведёт к переводу  Intel Edison в режим сна(пониженное энергопотребление). Повторное нажатие, выключит модуль полностью.
    Купить
    Приобрести Intel Edison можно в магазинах:

    Или в более доступных китайских:


    Оглавление
    1. Intel Edison. Первый запуск
    2. Intel Edison. Работа с облаком Intel IoT Analytics: регистрация и отправка данных
    3. Intel Edison. Работа с облаком Intel IoT Analytics: создание правил и отправка уведомлений
    4. Intel Edison. Облако Intel IoT Analytics: отправка SMS и RESTful клиент на ASP.NET
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 22

      +10
      Штуковина интересная, но никогда не понимал почему её позиционируют как плату для IoT.
      Зачем Atom в какой-нибудь умной розетке? Да и цена модуля для IoT должна быть в разы меньше.
        +3
        Да тоже об этом подумал, при такой цене разве что на роль главного процессора умного дома (или чему-то аналогичному) имеет смысл его использовать.
          0
          На роль главного процессора может с легкостью сойти Intel Galileo. Edison скорее подойдет для создания каких нить прототипов «умных» носимых устройств за счет маленького размера. Использование этой штуки, как ардуино мне кажеться вдвойне сомнительным с учетом его стоимости и несовместимости многих Ардуиновских библиотек с этой платой, как и с Galileo.

          PS: Большое спасибо автору за рисунки показывающие программный стэк и схему поддерживаем сред разработки для Intel Edison, давно хотел сам такие нарисовать, чтоб студентам показывать. Еще раз спасибо.
            +3
            Raspberry идеально для мозга. Гигабайт оперативной памяти — это всё таки гигабайт. Тут ощущение энтерпрайза. Эту штуку лично я бы применил в системах автоматизации работы какого-нибудь станка.
              0
              Про Raspberry согласен, а вот про автоматизацию станков не задумывался. Хорошая идея, но тут опять таки думаю, что Raspbery и дешевле, и по производительности выигрывает. Все таки главное что отличает Edison от остальных одноплатников, это компактность.
          0
          Для розетки можно использовать что то попроще. Сфера применения Intel Edison, немного другая. Например интеллектуальные роботы, летающие дроны с возможностью ИИ для автоматического облетания препятствий. Вряд ли в таких проектах лучше подойдет Raspberry Pi
          Проекты на Intel Edison:

          +5
          С таким подключением измерителя влажности нужно быть осторожнее. Быстро накроется от электролиза. Ещё и почву солями меди загадит. Нужно подавать питание на измеритель влажности только в момент измерения. А ещё лучше поменять электроды хотя бы на два гвоздя.
            0
            Вот только хотел написать. Нельзя к +5V подключать напрямую. Насчёт инертных электродов — себя хорошо показали цанговые графитовые стержни для карандаша. Графит совершенно инертный.
              0
              Спасибо за совет. В проекте измеритель влажности почвы используется только для демонстрации, дальнейшее использование в таком виде не предусматривается.
            • UFO just landed and posted this here
                0
                ntfs1984, просветите. Назовите пару одноплатников с Linux и сопостовимыми вычислительными мощностями на борту размерами сопоставимыми с Edison.
                • UFO just landed and posted this here
                • UFO just landed and posted this here
                    0
                    Вот например так? Это все равно большая плата?
                    Аналоги которые вы назвали все таки великоваты.
                    • UFO just landed and posted this here
                        0
                        1) Давайте отойдем от цены. Да она очень завышена, я тоже не рассматриваю эту плату, как «нормальный» одноплатник
                        2) Интерес именно в форм факторе, ну нет ничего подобного
                        3) По поводу юзкейсов, на базе этой штуки можно сделать например прототип «умных» часов, прототип «умных» очков и тп около «умных» «носимых» устройств
                        4) Как раз к «умному» дому на мой взгляд эта штука отношения мало имеет, контроллер «умного» дома можно и на tplink mr3020 сделать
                        • UFO just landed and posted this here
                      0
                      Или вот ссылки на интересные платы расширения для Edison

                      SparkFun Sensor Pack for Intel® Edison
                      SparkFun Block for Intel® Edison — Base

                      image
                      • UFO just landed and posted this here
                          0
                          Цена и отсутствие нормальной видеокарты меня тоже очень смущает, тут я с вами вами полностью согласен. Штука странная, но не совсем обычная, так что может найдет свою нишу.
                          Как минимум она однозначно выделяется на фоне существующих решений подобного класса, а вот в какую сторону я думаю в ближайшем бедующем будет видно, не согласны?
                          • UFO just landed and posted this here
                              +1
                              Согласен))

                    Only users with full accounts can post comments. Log in, please.