ГлавнаяТелекомСтатьиМал да удал, или история о том, как «карлик» хотел стать «великаном»

Мал да удал, или история о том, как «карлик» хотел стать «великаном»

 Часть 1. Управляемые микроплаты

Какие ассоциации возникают у вас, когда вы слышите словосочетание «электронный конструктор»? Люди разных поколений, скорее всего, ответят на этот вопрос по-разному. Рожденные в конце 70-х и начале 80-х годов прошлого века и раньше наверняка вспомнят самодельные радиоприемники, приложение к журналу «Юный Техник», а также целую серию радио- и электронных конструкторов «Старт», с помощью которых можно было собрать вполне работающую электронику. Увлеченные радиотехникой, но более молодые читатели наверняка вспомнят прочие наборы, как для самостоятельной сборки, так и готовых узлов и даже готовых устройств. На ассортимент оказало влияние развитие такой отрасли, как микроконтроллеры — микросхемы, которые могут быть «запрограммированы» на выполнение того или иного действия. На стыке тысячелетий повальным стало увлечение по написанию программ на программируемых кулькуляторах и первых домашних ПК типа Агат или серия БK0010. Те, у кого были возможности и средства, привозили и первые Commodore 64 и Atari. Правда, писать для них можно было только на примитивных разновидностях Basic, но даже это позволяло получать радость от самого процесса, особенно если что-то получалось.

Galileo_1

Безусловно, отдельного внимания заслуживали именно зарубежный опыт. В США вокруг движения DIY (do it yourself) зародился целый бизнес. Взять хотя бы Adafruit Industries — компанию, основанную выпускницей Массачусетского Технологического Института Limor «Ladyada» Fried. Их история начинается с 2005 года и сейчас это процветающая фирма, продукция которой представляет собой электронные наборы для самостоятельной сборки под названием DIY electronic kits. Ну и, конечно же, квинтэссенцией этой «отрасли» является такой проект, как Arduino (http://arduino.cc/en/Main/arduinoBoardUno), который перевернул вообще все представление о радиоэлектронике, как хобби. В основе Arduino лежит микроконтроллер фирмы ATMEL — ATmega. Изначально плата была задумана, как учебное пособие для студентов, но ситуация начала развиваться по более благоприятному сценарию. Благодаря низкой цене, простому языку Wiring и открытости архитектуры Arduino снискал огромную популярность среди армии радиолюбителей всех стран. Второе преимущество заключалось в стандартизованном интерфейсе. Платы Arduino имеют стандартное расположение разъемов, что позволяет проектировать так называемые «шилды» (платы «второго и выше этажей»). На этих платах реализуется дополнительная периферия, как индикаторы всех мастей, средства связи, органы управления и интерфейсы с другими устройствами. Самый простой клон Arduino можно собрать на беспаечной макетной плате быстрее, чем за час, при условии, что вы знаете, что делаете, и у вас есть программатор.

Galileo_2

Сегодня приобрести или собрать Arduino не составляет труда. Arduino действительно стал знаменательным явлением и по прошествии 10 лет с момента его появления тематические форумы только множатся, устройство прекрасно продается, а проекты продолжают появляться.

Эта плата, являясь объектом абсолютно свободным от коммерческого права (ее выпуск может наладить кто угодно, не выплачивая при этом royalty владельцам авторского права), дала очень мощный толчок для развития управляемых и самое главное недорогих микрокомпьютеров. Под управлением Arduino без всяких сложных компонентов и даже не занимаясь пайкой и радиомонтажом можно просто «надевая» платы расширения на контактные ножки создавать системы удаленного и программируемого управления различных механизмов, таких, как реле, сервоприводы, электромоторы и т.д. до бесконечности. Можно даже самостоятельно воплотить идею «умного дома». Arduino стал очень важным компонентом такого модного направления, как «Интернет Вещей».

Само собой, гигант современной электронной промышленности в лице корпорация Intel не смог долго оставаться в стороне, и выпустила свой аналог под названием Galileo — Arduino-совместимый микрокомпьютер на платформе Intel. Впервые в Азербайджане модифицированная версия данной платы (Galileo Gen 2) была представлена в рамках выставки Bakutel 2014 и после нее сразу же попала в нашу редакцию. И сегодня мы с великим удовольствием познакомим читателей с ее возможностями, правда, далеко не полными.

Как известно, все лучшее познается в сравнении, поэтому мы будем частично сравнивать наш тестовый образец с его ближайшим аналогом — Arduino Uno R3, пусть хоть и заочно. Итак, давайте сначала посмотрим на начинку и компоненты. В отличие от системы Arduino Intel Galileo базируется на 32-битном процессоре Intel Quark SoC X1000. Хоть он одноядерный и однопоточный, но зато позволяет помимо программирования специализированного микрочипа запустить полноценный дистрибутив Linux. Одноядерным процессором сегодня вряд ли кого-то можно удивить, но на нем есть набор полноценных процессорных инструкций Pentium и все это работает на частоте 400 MHz. Далее на плате вы найдете полноценный слот mini-PCI Express, чип памяти 256 Mb DDR3, 8 MByte NOR Flash, сетевой порт Ethernet 100 Mb/s, USB host port, USB client port, а также слот для карт памяти формата microSD (поддерживает карты емкостью до 32 Gb).

Galileo_3Микроплата поддерживает весь спектр Arduino R3 совместимых плат расширения, а также стандартные PC-устройства, которые вы сможете вставить в слот mini-PCI Express. Работает все это или под специализированными дистрибутивами Linux (например, Yocto 1.4 Poky Linux), или программируется тем же стандартным способом, что и Arduino — через софтверный программатор, подсоединяемый на USB host port. В нашем случае вендор даже озаботился созданием специализированного программного обеспечения «Intel Arduino» IDE, которое, по сути, представляет собой среду разработки нативного и крайне несложного кода, наподобие Eclipse или Netbeans IDE, но с той лишь разницей, что код напрямую грузится и сразу исполняется на устройстве. Само ПО доступно по ссылке: https://communities.intel.com/docs/DOC-22226 или здесь https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=24355.

При распаковке комплекта вы найдете блок питания с насадками под розетки для различных регионов мира, простенькая инструкция по нормам и стандартам безопасности, а также сама плата в электростатической упаковке. Все остальное пользователь должен приобрести самостоятельно. Мы для эксперимента использовали стандартный USB host-кабель и карту памяти объемом в 1 Gb для заливки дистрибутива Linux.

На внутренней стороне коробки есть адрес web-сайта, где вы найдете всевозможные ссылки на информацию, позволяющую максимально упростить процесс работы с устройством, но мы бы посоветовали не терять время и сразу пройти по этой ссылке, где пошагово объясняется, что необходимо сделать, чтобы запустить устройство. При чем, все описывается достаточно подробно и с иллюстрациями, поэтому мы не будем заострять на этом внимание.

После того, как вы успешно скачали и установили программное обеспечение, а также драйвер, который будет объявлен как Galileo с привязкой порта (в нашем случае это был COM9), можно запускать Intel Arduino IDE и приступить непосредственно к работе с устройством.

Galileo_4

Первым делом вам следует согласно той же инструкции произвести обновление встроенной прошивки на устройстве.

Galileo_5

Данный процесс может занять до 5 минут и поэтому следует напомнить читателю еще раз, что питание устройства и соединение по USB-кабелю не должно при этом прерываться.

Galileo_6

После обновления прошивки последним из шагов по первоначальной настройке станет заливка на устройство простейшего кода, при котором установленный светодиод будет просто мигать. Мы предлагаем сделать то же самое, и залить подобный код, только лишь с той разницей, что частота мигания будет чаще, чем в примере от разработчиков. Для этого выберите следующие пункты меню «Files» -> «Examples» -> «02.Digital» -> «BlinkWithoutDelay», и после того, как код успешно отобразится во вновь появившемся окне, произведите его заливку на устройство, нажав кнопку Upload. В конце в строчке логов должна появиться надпись «Transfer complete». Как видно на фотографии, заливка кода привела к частому миганию светодиода L возле USB-порта. Отменить действие данной программы можно заливкой кода по умолчанию, который всегда доступен в стартовом окне. Точно так же залейте код через кнопку Upload и любое предыдущее действие будет остановлено.

Galileo_6

void setup() {

// put your setup code here, to run once:

}

void loop() {

// put your main code here, to run repeatedly:

}

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

Galileo_7

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

По ссылке https://software.intel.com/en-us/iot/downloads скачиваем файл Intel Galileo Board (Linux Boot Image), который представляет собой сильно урезанный дистрибутив Linux размером 207 Mb (при распаковке он превращается в образ диска объемом в 1 Gb, поэтому карты памяти с 2 Gb свободного места будет более чем достаточно). Затем, при помощи утилиты win32disk imager (http://sourceforge.net/projects/win32diskimager) распаковываем образ на данную SD-карту. Как это сделать, вам объяснит видеоролик, любезно предоставленный сотрудниками Intel (https://software.intel.com/en-us/videos/creating-a-bootable-sd-card-for-an-intel-galileo-board).

После распаковки образа диска на SD-карту, вставьте ее в специальный слот и, отключив питание, верните кабель питания обратно, запустив плату еще раз. После этого к карте памяти можно будет подсоединиться двумя способами: через сеть (при условии, что Ethernet-кабель подсоединен) или по COM-интерфейсу. Мы остановились на первом варианте и, осмотрев «админку» домашнего роутера, поняли, что устройство взяло себе адрес 192.168.1.50. После этого необходимо сразу же ввести этот адрес в адресную строку браузера (получив стандартный ответ web-сервера It works!) и ssh-клиента (putty). Получив заветное приглашение набрать логин пользователя, мы набирали root. Пароль вводить не пришлось, так как система сразу же пригласила нас в командную строку:

login as: root

root@quark019b3d:~#

Сразу же проверяем тип дистрибутива:

root@quark019b3d:~# cat /etc/issue

iot-devkit (Intel IoT Development Kit) 1.1 \n \l

Затем размер занимаемого места (как и предполагалось, это 1 Gb):

root@quark019b3d:~# df -lha

Filesystem Size Used Avail Use% Mounted on

rootfs 969M 732M 188M 80% /

/dev/root 969M 732M 188M 80% /

devtmpfs 117M 0 117M 0% /dev

proc 0 0 0 — /proc

sysfs 0 0 0 — /sys

tmpfs 117M 0 117M 0% /dev/shm

devpts 0 0 0 — /dev/pts

tmpfs 117M 4.4M 112M 4% /run

tmpfs 117M 0 117M 0% /sys/fs/cgroup

cgroup 0 0 0 — /sys/fs/cgroup/systemd

cgroup 0 0 0 — /sys/fs/cgroup/cpuset

cgroup 0 0 0 — /sys/fs/cgroup/cpu,cpuacct

cgroup 0 0 0 — /sys/fs/cgroup/freezer

tmpfs 117M 0 117M 0% /tmp

mqueue 0 0 0 — /dev/mqueue

hugetlbfs 0 0 0 — /dev/hugepages

debugfs 0 0 0 — /sys/kernel/debug

tmpfs 117M 36K 117M 1% /var/volatile

/dev/mmcblk0p1 50M 9.0M 41M 19% /media/card

fusectl 0 0 0 — /sys/fs/fuse/connections

Посмотрим, какие сервисы запущены, и на каких портах они висят. Оказалось, что здесь на 58888 порту есть даже Node.JS.

root@quark019b3d:/etc# netstat -antp | grep LISTEN

tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 165/redis-server

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 153/lighttpd

tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 131/connmand

tcp 0 0 0.0.0.0:1534 0.0.0.0:* LISTEN 146/tcf-agent

tcp 0 0 0.0.0.0:58888 0.0.0.0:* LISTEN 168/node

tcp 0 0 ::1:53 :::* LISTEN 131/connmand

tcp 0 0 :::22 :::* LISTEN 1/init

И в самом конце мы решили посмотреть, сильно ли отличается расположение каталогов системы от стандартного Linux.

root@quark019b3d:/# ls -la

total 84

drwxr-xr-x 23 root root 4096 Sep 3 10:52 .

drwxr-xr-x 23 root root 4096 Sep 3 10:52 ..

drwxr-xr-x 2 root root 4096 Sep 3 10:48 bin

drwxr-xr-x 2 root root 4096 Sep 3 10:44 boot

drwxr-xr-x 14 root root 4040 Sep 3 11:30 dev

drwxr-xr-x 39 root root 4096 Sep 3 11:30 etc

drwxr-xr-x 3 root root 4096 Sep 3 10:44 home

drwxr-xr-x 9 root root 4096 Sep 3 10:48 lib

drwxr-xr-x 2 root root 4096 Sep 3 10:46 lib32

drwx—— 2 root root 16384 Sep 3 10:52 lost+found

drwxr-xr-x 3 root root 4096 Sep 3 10:47 media

drwxr-xr-x 2 root root 4096 Sep 3 09:14 mnt

drwxr-xr-x 2 root root 4096 Sep 3 10:47 node_app_slot

drwxr-xr-x 4 root root 4096 Sep 3 10:45 opt

dr-xr-xr-x 69 root root 0 Jan 1 2001 proc

drwxr-xr-x 12 root root 300 Sep 3 11:30 run

drwxr-xr-x 3 root root 4096 Sep 3 10:48 sbin

drwxr-xr-x 2 root root 4096 Sep 3 10:47 sketch

dr-xr-xr-x 12 root root 0 Jan 1 2001 sys

drwxrwxrwt 7 root root 160 Sep 3 11:30 tmp

drwxr-xr-x 11 root root 4096 Sep 3 10:32 usr

drwxr-xr-x 8 root root 4096 Sep 3 09:38 var

drwxr-xr-x 3 root root 4096 Sep 3 10:44 www

Как видим, все выглядит довольно стандартно, за исключением, пожалуй, того, что домашняя папка /root расположена внутри папки обычных пользователей /home. В целом же это ничуть не мешает полноценному использованию системы.

Несколько слов в заключение хотелось бы сказать о том, как заполучить Intel Galileo. Сегодня это можно сделать на таких площадках электронной торговли, как http://www.seeedstudio.com/depot/Intel-Galileo-Gen-2-p-2014.html и http://www.amazon.com/Intel-Galileo-Board-Single-GALILEO2/dp/B00MF753JY/ref=sr_1_1?ie=UTF8&qid=1419341069&sr=8-1&keywords=Galileo+Gen+2. Сразу же отметим, что цена данного микрокомпьютера (более 55 долларов) не в пример выше цены любой, даже самой навороченной платы Arduino. Например, плата с множеством дополнительных модулей, LCD-экраном и даже RFID-брелком на известном китайском портале Aliexpress стоит каких-то 30 долларов с доставкой http://www.aliexpress.com/item/UNO-R3-KIT-Upgraded-version-of-the-For-Starter-Kit-the-RFID-learn-Suite-Stepper-Motor/1725140138.html. Но, как мы сказали ранее, в данном случае это уже не совсем микроконтроллерная плата, а с легкостью превращаемое в полноценный микрокомпьютер устройство, которое прекрасно подойдет тем, кто хочет заниматься тестированием и отладкой своего кода, и при этом не хочет переделывать его под ARM-процессоры. Единственное, что хотелось бы порекомендовать вам в таком случае, так это ознакомиться с книгой Intel Galileo and Intel Galileo Gen 2: API Features and Arduino Projects for Linux Programmers. Книга на английском языке, предназначена для программистов на Linux и cодержит примеры кода. Советуем вам обратить на нее внимание, так как она вам явно пригодится!

Galileo_7

Кстати, осенью прошлого года корпорация Microsoft представила новую версию операционной системы Windows 8, которая была создана специально, чтобы раскрыть потенциал инженерной платы Intel Galileo Gen2. Система доступна для скачивания на сайте Github Microsoft. Урезанная версия Windows 8 использовалась на плате Galileo, установленной на пианино, подключенном к облачному сервису Microsoft Azure, а также на роботе-доставщике напитков. Эти экспериментальные работы являются частью плана Microsoft по расширению своего участия в рынке «Интернета Вещей». Так что вы вполне можете попробовать самостоятельно создать связку Intel Galileo и Windows.

Полезные ссылки:

Описание платы на сайте вендора:

http://www.intel.com/content/www/us/en/do-it-yourself/galileo-maker-quark-board.html

Список всех совместимых Arduino-плат:

http://en.wikipedia.org/wiki/List_of_Arduino_boards_and_compatible_systems

Образцы кода Arduino:

http://arduino.cc/en/Reference/HomePage

Часть урока на Youtube, посвященного работе с Intel Galileo:

Книга Intel Galileo and Intel Galileo Gen 2: API Features and Arduino Projects for Linux Programmers:

http://www.amazon.com/Intel-Galileo-Gen-Features-Programmers/dp/1430268395/ref=sr_1_2?ie=UTF8&qid=1419341069&sr=8-2&keywords=Galileo+Gen+2

Автор статьи: Фархад Бадалов

ТЕГИ:
Övladlarınıza proqramlaşdırmanı ən sadə yol ilə öyrədin!
Cisco: в ближайшие 5 лет мобильная передача данных может вырасти почти в 10 раз
Оформление подписки
Оформить подписку на журнал InfoCity вы можете заполнив приведенную
ниже форму. Стоимость одного выпуска — 2 маната.
Ваше имя
Адрес доставки журнала и номер телефона для контактов
Число месяцев подписки
Благодарим вас за подписку!