24 April 2015

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

IOTDIY
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
Tags:intelintel edisonинтернет-вещиiotIntel IoT Analytics PlatformYocto
Hubs: IOT DIY
+23
69k 168
Comments 22
Top of the last 24 hours