Совсем недавно нам в руки попал мини-компьютер Intel Edison(далее IE) в комплектации breakout-kit, в которую кроме самого IE также входил и mini-breakout board. Эта статься является чем-то вроде мини-гайда getting started именно по breakout-kit.
Она разбита на разделы:
1)Общая информация;
2)Установка ПО и настройка Yocto Linux;
3)Удаленный доступ и SSH;
4)Mini-breakout board и Arduino IDE;
5)Mini-breakout board и GPIO;
6)Intel Edison и IoT;
Общая информация:
Несмотря на свои малые размеры(35.5 × 25.0 × 3.3 мм) и невысокое энергопотребление( с выключенными радиомодулями- 13мВт; с включенным BLE -21,5мВт; с включенным Wi-Fi –35мВт), IE имеет довольно мощные характеристики, с которыми вы можете ознакомиться по ссылкам ниже:
http://www.intel.ru/content/www/ru/ru/d ... dison.html
http://download.intel.com/support/ediso ... 189004.pdf
На нем предустановлен дистрибутив Embedded Linux ОС Yocto Linux( что было приятным удивлением) с полным пакетом софта для комфортного программирования и взаимодействия с внешними устройствами и серверами. Наличие встроенных Wi-fi и Bluetooth модулей является значительным бонусом и упрощает процесс программирования различных устройств, считывания их состояний и просто взаимодействия с ними. Сами программы можно писать либо через терминал, либо используя Arduino IDE, Eclipse или IoT XDK. Видеовыходов Edison не имеет, так что общение проходит через сторонний терминал.
Кроме Mini-breakout board, доступны также: Edison Board for Arduino и множество разновидностей плат от Sparkfun.
Линейка плат под Edison от sparkfun
Для тестирования мы получили Mini-breakout board, что значило:
1)Мы будем сразу иметь 2 micro usb порта, один из которых рассчитан на подпитку IE( нижний(J16)), второй( mini AB, OTG(J3))- на работу в двух режимах( в зависимости от типа коннекта- device/host) и через который происходит общение IE с компьютером.
2)Несколько выходов под питание: нижний правый(J21) рассчитан на питание от внешнего источника с напряжением от 7-15 В, левый верхний(J2), рассчитанный на питание от Li-ion аккумулятора( максимальное напряжение- 4,2 вольта) и который также может заряжать Li-ion аккумулятор, если IE питается через USB кабель. Кроме этого, снизу есть место под не идущий в комплекте Power Jack.
3)Все пины рассчитаны на подачу 1,8 вольт напряжения. Для нормальной работы(и работы с GPIO вообще) перед сборкой всего комплекта стоит припаять сами пины, к примеру, как показано выше…
(Карта расположения контактов представлена в нижней ссылке. Скажу лишь, что под GPIO выделено 40 контактов, включая 4 под ШИМ)
Дополнительные параметры платы и карта пинов:
http://download.intel.com/support/ediso ... 190006.pdf
Установка ПО и настройка Yocto Linux:
При первом запуске вам потребуется воспользоваться портом J3, ибо он отвечает за общение с IE через терминал( позже необходимость использования такого метода связи пропадет).
Установка всего требуемого софта, выбор IDE( в нашем случае Arduino IDE) сейчас не занимает много времени и строго линейно:
https://software.intel.com/en-us/iot/li ... ng-started
Удаленный доступ и SSH:
Если вы настроили Wi-Fi и запоролили IE, то теперь можете кроме всего прочего полностью контролировать ваш IE из-под root. В нашем случае, это происходит через SSH(Secure Shell) в PuTTY(вам потребуется IP адрес вашего IE устройства. Посмотреть его можно с помощью команды ifconfig в терминале после настройки Wi-Fi соединения):
После всех проделанных шагов встал вопрос: А как, собственно, программировать в IE?
Mini-breakout board и Arduino IDE:
Первым делом, как использовать Arduino IDE для того, чтобы, к примеру, зажечь тот же самый светодиод? На самом деле, программирование IE в Arduino IDE точно такое же, как и программирование самой Arduino или IE через Board for Arduino. Отличие лишь в проблематичности сбора самой схемы( ибо на Mini-breakout board не понятно, где тот самый знакомый 13 выход, а где земля), да и в том, что IE дает 1,8 В на пинах.
Нами был использован простой способ решения данной проблемы:
Для адаптации схемы под Breakout board потребуется два данных документа.
Hardware guide для Mini-Breakout board:
http://download.intel.com/support/ediso ... 190006.pdf
и HG для Arduino board:
http://download.intel.com/support/ediso ... 191007.pdf
Суть такова: Нам нужен 13-ый пин( ибо базовый скетч связан именно с ним). Ищем в первой таблице IO13( таблица for Arduino HG). Находим его, сопоставляем с колонкой Linux GPIO pin: 40-ой пин. Ищем GP40 во второй таблице( Breakout kit HG). Находим и в итоге имеем точное место данного выхода на Mini-breakout board: J19-pin 10. Ищем GND: J19- pin 3. Собираем схему и получаем результат.
Mini-breakout board и GPIO:
Но не стоит забывать, что у нас в руках не просто МК( а ведь в нем действительно есть МК), а также и целый компьютер. Вы также можете напрямую контролировать поведение каждого GPIO! Рассмотрим это на примере работы в shell.
Основная информация представлена здесь:
http://www.intel-software-academic-prog ... Edison.pdf
Но, к сожалению, она не совсем подходит для Breakout board, ибо, строго говоря, в нашей мини плате нет некоторых аспектов, на которые опирается данная документация.
Так что обращу ваше внимание лишь на следующее: вся наша работа в данном направлении будет проходить в папке /sys/class/gpio. В ней отображаются задействованные GPIO.
Вы сами можете задействовать их или же освобождать следующим образом:
echo –n “48” > /sys/class/gpio/unexport // освобождаем
echo –n “48”> /sys/class/gpio/export // вновь можем с ним работать
Каждый GPIO%d является директорией.
Мы работаем с gp40. Пока что нам интересен файл direction, который определяет, будет ли порт задействован на прием(in) или передачу сигналов(out). Нам нужно следующее:
echo –n “out” > /sys/class/gpio/gpio40/direction
Далее работаем с файлом value, который задает, какое напряжение подается, где 0- это 0В, а 1- это 1,8В:
echo –n “1” > /sys/class/gpio/gpio40/value
В итоге теперь мы можем программировать наше оборудование через терминал. Использование данного метода вместе с удаленным доступом SSH, на мой взгляд, делает IE достаточно интересным и мощным инструментом.
Intel Edison и IoT:
Кроме этого, вы можете отслеживать состояние датчиков и вашей системы в целом с помощью сервиса IoT Analytics. Данный ресурс позволит вам вести статистику получаемых данных в режиме онлайн. Более того, этот сервис предоставляет возможность контроля некоторых возможностей самой IE!
Подробная инструкция работы с сервисом изложена здесь:
https://software.intel.com/en-us/intel- ... user-guide