Практикум «Intel IoT». Edison — могучая «кроха»

3d2f55458ae14d729cb84e92af2c8ec8.jpg В предыдущих частях «практикума» мы рассматривали Intel Galileo, который производителем позиционируется как плата «для изучения». Но есть ещё и устройство, которое можно использовать не только для ознакомления и прототипирования, но и для встраивания в конечные изделия.Речь идет об Intel Edison. Модуль очень мощный (CPU — двухъядерный Intel Atom 500МГц, MCU — Intel Quark 100МГц), 4Гб флеш-памяти, 1Гб «оперативки», компактный (чуть больше SD-карточки), может «питаться» от батареек или аккумуляторов, оснащён беспроводными интерфейсами (Wi-Fi и Bluetooth 4.0) и многое другое.

Но не будем забегать вперёд.

Unboxing и первое знакомствоКомплект, который я изучал, поставляется вот в такой симпатичной и компактной упаковке: 44d1f5973c11446f9b69302fb66815c5.jpg Помимо самого «главного модуля» Intel Edison, в комплект входят: плата расширения (в этом наборе — «ардуино-совместимая», бывают еще более компактные платы для прототипирования); четыре пластиковые стойки с крепёжными винтами; две гайки для крепления Intel Edison на плате расширения. 94e516913d9042728207c77a6b934e63.jpg Intel Edison сразу впечатляет… своими размерами — ведь в этом маленьком устройстве (размер 35.4×25.0×3.9 мм) заключена достаточно серьёзная «начинка»: двухъядерный процессор (Intel Atom, с тактовой частотой 500МГц); микроконтроллер (Intel Quark, тактовая частота — 100МГц); оперативная память — 1Гб LPDDR3; флеш — 4Гб (eMMC); модуль Wi-Fi — Broadcom 43340 802.11 a/b/g/n (двухдиапазонный — 2.4 и 5ГГц), встроенная антенна (в моём случае, бывает вариант с внешней антенной), модуль Bluetooth 4.0 3d2f55458ae14d729cb84e92af2c8ec8.jpg Почти все компоненты скрываются под металлическим экраном. На «лицевой» стороне платы видна керамическая антенна для беспроводных модулей (слева снизу) и разъем (u.FL) для подключения внешней антенны (чуть выше).Согласитесь, мало какая система может похвастаться таким «набором». И всё это в крохотном исполнении.

На нижней стороне платы — ещё один «экранированный ящик» с компонентами и разъём, через который Edison коммуницирует с «внешним миром»:

a08a1d40c7994f5b93a3be51b56a523b.jpg Через этот разъём выведены следующие интерфейсы: SD-карта — 1 штука UART — 2 порта I2C — 2 шины SPI — 1 шина с возможностью выбора 2 чипов (2 CS) I2S — 1 шина Порты ввода-вывода (GPIO) — 12 штук (4 из них — с возможностью ШИМ) USB 2.0 — 1 порт (OTG) Часовой выход — 32кГц и 19.2МГц И этот разъём тоже впечатляет своими размерами — 70 контактов на такой малой площади.Использование именно такого разъёма, видимо, компромисс между желанием вывести как можно больше интерфейсов и желанием сделать это максимально компактно.

Плата, которая пошла в производство, выглядит не так эффектно, как первоначально презентовали Intel Edison: 2517d279ac9b4aecb1806a636f7d7c79.jpgНо всё-таки, Edison — очень выдающийся продукт.

В домашних условиях, боюсь, прототип своего устройства на базе Intel Edison будет сделать очень проблематично. Но для прототипирования отлично подходит плата из комплекта поставки: 169492a6fe8e4e908ff77a4114ee5028.jpg Помимо Edison, на плате хорошо видны «пины» для подключения ардуино-совместимых шилдов (обозначены как «ANALOG IN», «DIGITAL», «POWER»), слот для microSD-карточки, разъём для подключения источника питания и три USB-разъёма (один — type A и два — microUSB).Сразу расскажу, зачем так много usb-разъёмов, ведь сам Intel Edison обладает только одним OTG-портом. Тут всё дело в волшебных пузырьках положении микропереключателя SW1 (расположен между «полноразмерным» и microUSB разъёмами). Если рычажок переключателя находится ближе к «полноразмерному» USB-разъёму, то работает именно он (режим «хоста»: можно подключать, например, внешний USB-накопитель или клавиатуру), если же переключатель в другом положении — работает microUSB-порт (плату можно подключать к компьютеру, например, для обновления прошивки). Последний microUSB-порт (в правом нижнем углу) используется для организации терминала.

Также на плате расположены 5 кнопок:

FW и RM — для восстановления работоспособности в случае повреждения «образа» PWR — управление режимами питания SHLD RST — перезагрузка arduino-скетча, работающего в Intel Edison (не влияет на состояние самого Edison) RESET — сброс. Более подробно о функциях и возможностях использования кнопок рассказывает этот документ.Для управления различными режимами работы Intel Edison и подключения доп.модулей на плате также расположены следующие пины, разъёмы и джамперы:

IOREF — для выбора уровня напряжений, с которыми будет работать плата: 5В или 3.3В; AREF — выбор опорного напряжения для работы АЦП (также зависит от положения джампера IOREF); NTC — пины для подключения термистора (на 10кОм) для контроля температуры аккумуляторной батареи при зарядке. Когда эти пины замкнуты — функция контроля температуры заблокирована; ICSP — выполняет теже функции, что и одноименный разъем на плате Arduino UNO; BATT — пины для подключения Li-Ion или Li-Po аккумулятора для разработки «носимой» электроники (не перепутайте полярность!); PWM — джамперы для конфигурирования работы ШИМ-выходов. Подробнее можно почитать тут.У меня в хозяйстве нашелся Li-Po аккумулятор на 3.7В 1000 мАч И я его, конечно же, подключил к соответствующему разъёму — плата тут же «завелась». На плате присутствует «зарядник» для таких аккумуляторов. Соответственно, можно использовать такие АКБ, например, в качестве резервного источника питания.Более подробно ознакомиться с особенностями использования аккумуляторных батарей можно в этом документе.

Кстати, Intel Edison проектировался в т.ч. для использования в «носимой» электронике, поэтому с потреблением тут всё уже очень неплохо. В спецификакции указаны вот такие характеристики (в режиме ожидания):

все радиомодули выключены — 13 мВт; включен Bluetooth 4.0 — 21.5 мВт; включен Wi-Fi — 35 мВт; Естественно, в активном режиме будет не всё так хорошо, но тут уже зависит от того, что вы будете реализовывать и как оптимизировать потребление системы. На нижней стороне платы нет ничего интересного, кроме большого количества контактных площадок (видимо, для того, чтобы можно было подключиться «напрямую» к портам Edison): 6dd61c8b60eb466aa0f2bb6b8de9a4a3.jpg Для прототипирования более компактных устройств лучше использовать вот такую плату a50c2cef3b184e2ca87428c4d9b1488e.png После того, как мы всесторонне рассмотрели Edison и плату расширения, приступим к настройке.Прошивка Intel Edison Подготовим наше «устройство». Для этого необходимо аккуратно разместить Intel Edison на плате расширения (удобные направляющие практически не дают шанса на ошибку), чтобы разъём соединился — нужно слегка нажать на Edison до характерного щелчка (надавливать нужно в области разъёма аккуратно и без лишних усилий). Теперь можно зафиксировать платы между собой маленькими гаечками из комплекта поставки.d19e1577458646f3a4fb51f425b64d2c.jpg Для первичной настройки нужно подключить 2 USB-кабеля (в microUSB-разъёмы), переключатель SW1 должен быть в положении к microUSB. Оба кабеля подключаем к компьютеру (я снова использую mac). Если всё сделано правильно — в системе появится диск EDISON.Сначала рекомендуется удалить существующий образ, для чего просто удаляем всё с появившегося диска, включая скрытые папки, используя любой доступный инструмент (я воспользовался терминалом).

Смотрим свойства диска EDISON. Если там что-либо кроме FAT16 — всё в порядке, если FAT16 — лечим так.

f2a83805520a47b8a7d211f63d61db27.png Забегая чуть вперед После прошивки будет примерно следующая картина: root@edison:~# df -h Filesystem Size Used Available Use% Mounted on /dev/root 463.9M 365.9M 62.2M 85% / devtmpfs 479.9M 0 479.9M 0% /dev tmpfs 480.2M 0 480.2M 0% /dev/shm tmpfs 480.2M 508.0K 479.7M 0% /run tmpfs 480.2M 0 480.2M 0% /sys/fs/cgroup systemd-1 5.7M 5.3M 462.0K 92% /boot tmpfs 480.2M 4.0K 480.2M 0% /tmp tmpfs 480.2M 0 480.2M 0% /var/volatile /dev/mmcblk0p5 1003.0K 21.0K 911.0K 2% /factory /dev/mmcblk0p7 5.7M 5.3M 462.0K 92% /boot systemd-1 2.2G 5.3M 2.2G 0% /home /dev/mmcblk0p10 2.2G 5.3M 2.2G 0% /home Качаем свежую версию Yocto. Распаковываем архив и все получившиеся файлы и папки переписываем на диск EDISON. После того, как файлы переписаны, необходимо прошить Edison. Для этого открываем новое окно терминала (или воспользуемся тем, что было на предыдущих шагах).Вводим команду:

screen /dev/cu.usbserial И нажимаем клавишу Tab (для автозаполнения), потом дописываем »115200 -L», у меня при этом получилось: screen /dev/cu.usbserial-AJ035QHB 115200 -L Подтверждаем ввод (Enter) — видим «чистый экран», ещё раз Enter и получаем окно приветствия: ba96ffe4f8c64f2498270f94feef8ae3.png Вводим логин root. Вводим пароль (если у вас система уже была настроена ранее и это «обновление»). После этого проще всего запустить прошивку с помощью команды: reboot ota Внимание, при этом удалятся все настройки, которые были сделаны ранее (например, Wi-Fi и т.п.). Если же это делается впервые — вы ничего не потеряете. Процесс обновления выглядит примерно так: 64ed1f41e4db4709b0ed9505ffba980d.png be305f16787b495b8ca56bb3012fd786.png Если все хорошо, то процесс завершится приглашением для логина: 608507d6b2dd4ab5b8958a1714aace39.png Все настройки сброшены — логин root (без пароля).Версия Linux root@edison:~# cat /proc/version Linux version 3.10.17-poky-edison+ (sys_dswci@tlsndgbuild004) (gcc version 4.8.2 (GCC)) #1 SMP PREEMPT Fri Jan 30 14:16:35 CET 2015 Первичная настройка Для настройки Intel Edison необходимо запустить следующую команду: configure_edison --setup Эта команда запускает «мастер» установки, в ходе которого последовательно предлагается задать: Пароль административной записи Имя устройства 3c298793c1db4ebe9f932e3a23b1d7d6.png После этих шагов мастер предложит настроить подключение к сети Wi-Fi. Процесс сканирования сетей занимает 10 секунд, после этого в экране терминала выводится примерно следующее: 6f34fdb9bf63456d9a2b3903d5137340.png Далее нужно выбрать номер нужной сети (или ввести скрытый SSID) и ввести пароль для подключения к сети. Если всё сделано правильно — в терминале отобразится полученный IP-адрес.Готово. Теперь можно спокойно отключить Edison от компьютера и подключить блоком питания (7–15В). Устройство автоматически стартует и подключится к выбранной беспроводной сети.

Теперь Intel® Edison можно управлять через SSH (IP-адрес, логин/пароль — все уже определено на предыдущих шагах).Можно повторить настройки, которые мы уже производили в одной из предыдущих частей «Практикума».

Дополнительно можно подключить карту памяти (microSD) и использовать её на свое усмотрение.

c4f0c53059fb46489208d387844578ae.jpg Слева — Intel Galileo Gen2, справа — Intel EdisonПоморгаем светодиодом с помощью Arduino IDE C момента написания предыдущих частей «практикума» версия Arduino IDE немного «подросла» до 1.6.0. В общем-то, ничего принципиально отличного от того, что было в примере с Intel Galileo Gen2 — нужно выбрать только правильную плату (Edison) и порт (для Mac это порт с названием вида /dev/cu.usbmodemxxxx).Если всё сделано правильно, то на плате (после загрузки примера Blink) начнёт моргать светодиод DS2. Теперь можно осваивать другие возможности Intel Edison. Для того, чтобы это было быстро и просто осуществить — можно приобрести набор Grove Starter Kit Plus Intel IoT Edition, содержащий наболее востребованные элементы: различные сенсоры, дисплей и т.п.

b5abae97fc8b460fbc5103562870daaa.jpg Удобство этого набора в том, что можно очень быстро и просто создавать различные прототипы устройств, просто подключив необходимый в проекте «набор» устройств в «базовый шилд».Подобный набор я уже использовал ранее Для создании погодной станции. Возможно, что у вас уже такой «кит» (или схожий по смыслу) уже имеется в наличии (вероятность этого очень высока, если вы уже начали/осваиваете Arduino). Да и вообще, все те «шилды», что используются с Arduino (с некоторыми оговорками) можно использовать с Intel Edison и «большой» платой. И ещё больше облегчает процесс изучения наличие всех необходимых примеров. Собственно, как и декларировалось — переход с Intel Galileo на Intel Edison очень прост: всё, что было сделано для Galileo — просто переносится на «старшее» устройство.

Что дальше? Вы можете выбирать любой способ разработки, какой нравится. На выбор предлагается: Кстати, с времени публикации предыдущих частей «практикума» Intel® IoT Developer Kit тоже обновился (текущая версия — v1.0). При его разработке учли многочисленные замечания и предложения (в т.ч. и те, которые были затронуты в нашем «практикуме») — создавать проекты в Eclipse стало проще, ещё больше примеров, больше документации (причём, часть уже и на русском языке).Выводы Intel Galileo и Intel Edison — перспективные устройства, которые позволяют не только «окунуться» в мир разработки устройств на микроконтроллерах, но и использовать серьезные возможности Linux-компютеров (а в случае с Edison — ещё и достаточно мощное оснащение SoC).Взаимодействие этих богатых (самих по себе) составляющих — существенно расширяют возможности использования: например, на linux-составляющей можно поднять веб-сервер с базой данных для организации удобного веб-интерфейса по управлению какими-либо приборами, а «железная» (ардуино) составляющая — реализует это управление.

Больше устройств хороших и разных.

59d8d8c1ca3e4d1d964a590cf224ddf4.jpg » Первая часть «практикума»: Galileo Gen2 — Первое знакомство» Вторая часть «практикума»: Galileo Gen2 — Linux & Arduino» Третья часть «практикума»: Практикум «Intel IoT». Galileo Gen2 — Eclipse & libmraa+UPMНу и совсем свежая новость:

» Intel Edison официально в России: предзаказ и конкурс проектов

Спасибо за внимание!

© Habrahabr.ru