You are on page 1of 22

Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Построение распределенных
систем сбора, анализа и
визуализации информации
на основе микроконтроллеров ARM

2014

Лабораторная работа № 10 1
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Лабораторная работа №10. Построение распределенных систем сбора,


анализа и визуализации телеметрической информации на основе
микроконтроллеров ARM.

Цель работы – исследование принципов построения распределенных


систем на основе вычислительной платформы RaspberryPi, систем сбора и
обработки телеметрической информации с использованием облачных
технологий.
В ходе работы студенту необходимо ознакомиться с теоретическим
материалом, касающимся функционирования ОС Linux на платформе
RaspberryPi, принципов взаимодействия платформы c облачным решением
Bluemix и организации распределенных телеметрических систем на его основе.

Вычислительная платформа RaspberryPi

Raspberry Pi — это миниатюрный недорогой компьютер, размещенный на


одной плате размером с кредитную карту. Raspberry Pi (далее RPi) основан на
процессоре с архитектурой ARM 11, частотой в 700 МГц. В последних версиях
платы официально разрешено разгонять процессор до 1000 МГц, что позволяет
достичь приемлемой производительности при низком энергопотреблении.
При стоимости в производстве всего 25$ за базовую модель и 35$ за более
продвинутую, RPi обладает достаточными возможностями для реализации
большого количества проектов в области обучения информационным
технологиям, управления устройствами, создания прототипов устройств.
изучения операционных систем и многие другие. В совокупности с низкими
требованиями открытого программного обеспечения (OpenSource) к аппаратной
части и специально собранным ядром операционной системы,
оптимизированным под данную платформу, это позволяет установить на него
операционную систему Linux (либо RiscOS), а также набор сопутствующего
программного обеспечения. Например в том варианте, который использован в
лабораторной работе, может быть использована специальная сборка
операционной системы Debian Linux (Raspbian), браузер Midori, офисный пакет
Koffice (аналог Word/Excel под Windows) и язык программирования Python.
Кроме того, производители обещают поддержку воспроизведения видео в
формате Full HD.
Технические характеристики Raspberry Pi Model B (использована в
лабораторной работе).

Лабораторная работа № 10 2
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Рисунок 1 — Вычислительная платформа Raspberry Pi Model B

• Процессор: ARM11 Broadcom BCM2835 (CPU + GPU) (от 700MHz до


1000 МГц).
• Память: 512MB SDRAM
• OpenGL ES 1.1/2.0, OpenVG 1.1, Open EGL, OpenMAX
• Видео: 1080p30
• Аудио: H.264 high-profile decode
• Композитный и HDMI видеовыход
• Встроенный USB-концентратор и два разъема USB 2.0
• Слот для карты памяти SD/MMC/SDIO
• Порт GPIO для управления внешними устройствами с возможностью
подключения устройств по интерфейсам: SPI, I2C, UART, TTL
• Порты MIPI CSI-2, MIPI DSI для подключения видеокамеры и другой
периферии
• Ethernet адаптер 10/100 Мбит.
• Питание 5В от разъема MicroUSB или GPIO.

Наиболее распространенные проекты на Raspberry Pi:


• Миникомпьютер для доступа к Интернет.
• WiFi роутер.
• Облачное хранилище.
• Мониторинг сети.
• Тонкий клиент.
• Игровая консоль.

Лабораторная работа № 10 3
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

• Использование офисных приложений .


• Медиаплеер Full HD видео 1080 .
• Управление устройствами и приводами через шину GPIO.
• Видео и фото регистратор с подключением к сети.

Подготовка платформы Raspbian к работе


Так как на плате RPi нет встроенной энергонезависимой памяти, для работы
компьютера предварительно необходимо подготовить карту памяти -
распаковать на неё образ желаемой операционной системы.
Необходимое оборудование и программное обеспечение:
• SD (MMC/SDIO) карта памяти объёмом от 2 до 32 Гб (6 и 10 класса) ;
• Картридер для подключения карты памяти к компьютеру;
• Образ операционной системы Raspbian (скачать Raspbian можно с
официального сайта —http://downloads.raspberrypi.org/raspbian_latest).
Для копирования образа на карту памяти в ОС Windows выполнить
следующие действия:
A. Разархивировать .img файл из образа операционной системы;
B. Подключить карту памяти с помощью картридера к компьютеру;
C. Cкачать программу Win32DiskImager -
http://sourceforge.net/projects/win32diskimager/files/latest/download
D. Разархивировать программу Win32DiskImager и из папки с
программой запускаем файл Win32DiskImager.exe
E. Указать путь к .img файлу с операционной системой, далее в поле
"Device" выбираем из списка носителей карту памяти и нажимаем
"Write", после в появившемся диалоговом окне выбираем "Yes".
Для копирования образа на карту памяти в ОС Linux выполнить
следующие действия:
A. Загрузить образ ОС Raspbian
wget http://downloads.raspberrypi.org/raspbian_latest

B. Разархивировать .img файл из образа операционной системы


unzip raspbian_latest

C. Подключить карту памяти с помощью картридера к компьютеру;


При необходимости монтировать карту памяти (в ряде
дистрибутивов OC Linux подключаемые карты памяти монтируются
автоматически):
$df -h

$mkdir ~/rpi

$mount /dev/mmc ~/rpi

Лабораторная работа № 10 4
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Внимание! Убедитесь с помощью команды df -h в том, что выбрано


верное дисковое устройсво (/dev/mmc1). В случае необходимости
скорректируйте команду (/dev/sdc1, /dev/sdd1 и т.д. и т.п.).
D. Выполнить перенос образа .img файла с операционной системой на
карту памяти (номер раздела устройства указывать не нужно, т.е.
вместо /dev/mmc1 следует указывать /dev/mmc):
$ dd bs=1M if=~/raspbian_latest/*raspbian.img of=/dev/mmc

$ sync

После подготовки карты памяти можно приступить к первому запуску RPi.


При первом запуске операционной системы будет показано диалоговое окно для
конфигурации системы (аналогичные действия можно произвести при
изменении файла /config.php на карте памяти):

Рисунок 1 - Диалоговое окно конфигурации системы


Ниже приведено описание пунктов меню:
1) "Expand filesystem"- расширение основного раздела на всю карту памяти.
Просто нажимаем "Enter";
2) "Change User Password" - установка пароля для пользователя "pi" (по
умолчанию пароль "raspberry"). При вводе пароля вводимые символы не
отображаются, пароль нужно ввести два раза (второй раз для подтверждения
корректности ввода);
3) "Enable Boot to Desktop" - загружать/не загружать графический интерфейс.
4)"Internationalisation Options" - выбор языка и месторасположения. После
выбора появится диалоговое окно с тремя пунктами:
"Change Locale" - выбор языка (например, "ru_RU.UTF-8 UTF-8") ;
"Change Timezone" - выбор часового пояса;
"Change Keyboard Layout" - настройки клавиатуры.
5)"Enable Camera" - включение поддержки камеры.
Лабораторная работа № 10 5
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

6) "Add to Rastrack"- регистрация устройства в общей базе Raspbian.


7) "Overclock" - установка частоты процессора. По умолчанию установлена
частота 700МГц.
8) "Advanced Options" - дополнительные настройки. После выбора этой
строки откроется диалоговое окно со следующими пунктами:
"Overscan" — настройка «сжатой развертки»;
"Hostname" —сетевое имя RPi, по умолчанию "raspberrypi".
"Memoy Split" — выделение памяти для работы графического процессора. Если
вы собираетесь работать в консоли, достаточно 16Мб. Для работы в
графической оболочке оставьте, как есть 64Мб;
"SSH" — удалённый доступ по SSH. Для удобного использования и дальнейшей
настройки включаем - "Enable";
"Update" —обновление операционной системы. Для обновления требуется
доступ к сети Интернет.
9) "About raspi-config" - общая информация о данном меню настроек,
пропускаем.
Некоторые полезные команды для работы в ОС Raspbian:
"top" — запуск предустановленного в Raspbian диспетчера задач;
"sudo raspi-config" — запуск первоначального меню настроек;
"sudo passwd root" — создание пароля для пользователя root;
"startx" — запуск графической оболочки;
"sudo halt" — выключение RPi;
"logout" — выход из системы;
"sudo reboot" — перезагрузка RPi;
"cd" — переход в необходимую директорию, например, для перехода в
директорию /etc/network/ - "cd /etc/network/";
"pwd" — путь до текущей директории;
"dir" — содержимое текущей директории;
"mkdir" — создание директории. Например, "mkdir /home/pitest/" создаст
директорию "pitest";
"rmdir" — удаление директории. Например, "mdir /home/pitest/" - удаление
директории "pitest";
"cat" — открыть файл для чтения. Например, "cat /etc/network/interfaces"
покажет содержимое файла "interfaces";
"nano" — открыть файл для редактирования. Например, "nano
/etc/network/interfaces" откроет для редактирования файл "interfaces";

Лабораторная работа № 10 6
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

"ifconfig" — отобразит текущую конфигурацию сети;


"df" — выведет в консоли свободное и используемое дисковое пространство для
всех разделов файловой системы;
"clear" — очистить экран терминала;
"Ctrl"+"Ins" — скопировать выделенное (текст);
"Shift"+"Ins" — вставить из буфера (текст);
"sudo" — выполнения команд c правами root пользователя. Например, это
актуально, если вы зашли под пользователем "pi" и хотите из консоли
отредактировать какой-нибудь системный файл - "sudo nano путь_до_файла";
"Ctrl"+"C" — остановка текущего действия/выход из консольного приложения;
"sudo apt-get update" — обновление списка доступных пакетов;
"sudo apt-get upgrade" — обновление установленных пакетов;
"sudo apt-get install" — установка необходимого пакета. Например, для
установки консольного браузера Links вводим "sudo apt-get install links".

Обзор технологии IoT

Интернет вещей (англ. Internet of Things, IoT) — концепция вычислительной


сети физических объектов («вещей»), оснащённых встроенными технологиями
для взаимодействия друг с другом или с внешней средой, рассматривающая
организацию таких сетей как явление, способное перестроить экономические и
общественные процессы, исключающее из части действий и операций
необходимость участия человека.
Концепция сформулирована в 1999 году как осмысление перспектив широкого
применения средств радиочастотной идентификации для взаимодействия
физических объектов между собой и с внешним окружением. Наполнение
концепции «интернета вещей» многообразным технологическим содержанием и
внедрение практических решений для её реализации начиная с 2010-х годов
считается восходящим трендом в информационных технологиях, прежде всего,
благодаря повсеместному распространению беспроводных сетей, появлению
облачных вычислений, развитию технологий межмашинного взаимодействия,
началу активного перехода на IPv6 и освоению программно-конфигурируемых
сетей.

Облачная платформа Bluemix

BlueMix — это открытое облачное предложение типа PaaS


(Platform-as-a-Service) на базе проекта с открытым исходным кодом Cloud
Foundry. Эта платформа предназначена для разработки и хостинга приложений,

Лабораторная работа № 10 7
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

а также упрощения задач по управлению инфраструктурой. Она позволяет


быстро создавать и развертывать приложения, а также управлять ими.
BlueMix обеспечивает следующие возможности:
● Быстрое и инкрементное составление приложений из сервисов.
● Непрерывное внесение изменений в приложения и обеспечение
постоянной доступности
● Поддержка высокоспециализированных моделей программирования и
сервисов для конкретных рабочих нагрузок.
● Встраивание высокой степени управляемости в сервисы и приложения.
● Оптимизация и эластичная адаптация к рабочей нагрузке.

Рисунок 2 - Каталог компонентов BlueMix

Платформа BlueMix достигает этих целей посредством абстрагирования и


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

Лабораторная работа № 10 8
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Каталог BlueMix содержит большую часть из того, что необходимо для


быстрого начала работы, большое количество шаблонов, заранее
сконфигурированны наборов сервисов, сред исполнения и примеров кода,
готовых к использованию:
● Сред исполнения, в том числе: Liberty for Java, Node.js, Ruby on Rails
● Веб-сервисов и сервисов приложений, в том числе: Data/Session Cache,
ElasticMQ, Decision, SSO, Log Analysis, Redis, RabbitMQ, Twilio
● Мобильных сервисов, в том числе: push-уведомлений, Cloud Code, Mobile
Application Management, Mobile Quality Assurance
● Сервисов управления данными, в том числе: MongoDB, реляционной
базы данных от IBM, JSON-базы данных от IBM, MySQL, PostgreSQL,
MobileData, Mobile Sync, BLU Data Warehouse, MapReduce
● Cервисов мониторинга и анализа
● Сервисов DevOps Services (прежнее название: JazzHub)

На рисунке 3 показаны принципы взаимодействия BlueMix с клинтскими


приложениями.

Краткое описание концепций BlueMix


В терминологии BlueMix приложение (application) — это созданный вами
артефакт, т. е. весь программный код (исходный код или исполняемые двоичные
файлы), который необходимо запустить или на который необходимо сослаться в
процессе исполнения. Мобильные приложения выполняются за пределами
среды BlueMix и используют сервисы BlueMix, представленные приложениями.
В случае веб-приложений приложение — это код, загруженный на платформу
BlueMix с целью хостинга. Кроме того, платформа BlueMix способна
осуществлять хостинг программного кода приложения, который вы хотите
выполнять на внутреннем сервере в среде на базе контейнера.

Лабораторная работа № 10 9
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Рисунок 3 - Архитектура IBM BlueMix

Сервис (service) — это код, работающий на платформе BlueMix и


предлагающий некоторую функциональность, которую могут использовать
приложения. Это может быть готовый сервис, используемый непосредственно
— например, push-уведомления для мобильных приложений или эластичное
кэширование для веб-приложения. Вы также можете создавать собственные
сервисы в диапазоне от простых служебных функций до сложной
бизнес-логики.
Организация (organization) и пространство (space) — это организационные
единицы инфраструктуры, способные хранить и отслеживать ресурсы
приложения. Организация содержит домены (domain), пространства и
пользователей. Пространство содержит приложения и сервисы. По умолчанию
используется три пространства: Development (разработка), Production
(производство) и Staging (подготовка).
Для приложений, которым требуется среда типа PaaS, предоставляются
buildpack-пакеты, каждый из которых представляет собой набор скриптов для
подготовки кода к исполнению на целевой PaaS-платформе. Buildpack-пакеты,
которые включают необходимую вашим приложениям среду исполнения и
могут также содержать специализированные инфраструктуры, упрощают

Лабораторная работа № 10 10
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

развертывание приложения в облаке по сравнению с самостоятельной


установкой и конфигурированием среды исполнения.
Использование сервисов в BlueMix
Использование сервисов в BlueMix включает три этапа.
1. Сообщите платформе BlueMix, что вам требуется новый экземпляр
сервиса и какое конкретное приложение будет использовать этот новый
экземпляр.
2. BlueMix автоматически инициализирует новый экземпляр этого сервиса и
свяжет его с приложением.
3. Приложение взаимодействует с сервисом.
Пакеты сервисов (Service bundles) — это коллекции API-интерфейсов,
используемых в конкретных областях. Например, пакет Mobile Services
включает сервисы MobileData, Cloud Code, Push и Mobile Application
Management. Доступные сервисы и среды исполнения представлены в каталоге
BlueMix. Кроме того, вы можете зарегистрировать собственные сервисы.
Развертывание приложения и управление приложением
Чтобы развернуть свое приложение, необходимо загрузить его в среду BlueMix
и указать, сколько экземпляров этого приложения должно исполняться, а затем
сконфигурировать BlueMix, введя необходимую информацию для поддержки
этого приложения.
В случае мобильного приложения среда BlueMix содержит артефакт, который
представляет серверную часть мобильного приложения — набор сервисов,
который использует приложение для взаимодействия с сервером. BlueMix
поддерживает серверные компоненты мобильного приложения,
взаимодействующие с сервисами PushWorks, Cloud Code и Mobile Data,
непосредственно из пользовательского интерфейса BlueMix.
В случае веб-приложения необходимо предоставить в BlueMix
соответствующую информацию о среде исполнения и среде разработки, чтобы
платформа смогла сформировать надлежащую инфраструктуру для исполнения
этого приложения.
При развертывании приложений и управлении ими можно использовать
инструмент командной строки cf, веб-интерфейс BlueMix или сервисы DevOps
Services.
Браузерные и мобильные клиенты — а также другие приложения, развернутые
на платформе BlueMix и выполняющиеся за ее пределами — взаимодействуют с
приложениями, работающими на платформе BlueMix, через API-интерфейсы
типа REST/HTTP. Каждый клиентский запрос маршрутизируется к одному из
экземпляров приложения или составляющих его сервисов. Среды исполнения
приложений в BlueMix изолированы друг от друга даже тогда, когда они
находятся на одной и той же физической машине.
В ходе управления приложениями можно запускать, останавливать,
перезапускать экземпляры приложения (или, в случае веб-приложения,
изменять их количество), а также изменять объем памяти, используемый
приложением. Ключевая конструктивная особенность BlueMix — отличные
показатели при хостинге масштабируемых приложений и артефактов
Лабораторная работа № 10 11
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

приложений. На данный момент эта платформа не масштабирует приложение


автоматически в соответствии с нагрузкой, поэтому этим процессом
необходимо управлять самостоятельно посредством создания или удаления
экземпляров при изменении рабочей нагрузки. По этой причине ваши
приложения должны сохранять все персистентные данные за пределами
приложения в одном из сервисов хранения данных, предоставляемых
платформой BlueMix. При повторном развертывании приложения после
обновления используется тот же процесс, что и при начальном развертывании.
BlueMix останавливает все исполняющиеся экземпляры и переводит новые
экземпляры в рабочее состояние автоматически.
Сервисы DevOps Services для BlueMix
При использовании DevOps Services требуется лишь несколько простых шагов
для организации взаимодействия с другими специалистами с целью
планирования, отслеживания и создания программного обеспечения в облаке.
Вы можете воспользоваться встроенным в браузер редактором программного
кода, который DevOps Services предоставляет для разработки приложений, или
использовать DevOps Services с Eclipse, с VisualStudio или с инструментом
командной строки Git для написания кода приложения и развертывания его на
платформе BlueMix.
При работе с пользовательским интерфейсом, который помогает разработчику
быстро добавлять сведения "кто", "что" и "когда" для своего рабочего проекта,
требуется потратить всего несколько минут на задание дат, документирование
первого сценария применения, назначение одной-двух задач и переход
непосредственно к написанию программного кода.
DevOps Services включает встроенные средства управления исходным кодом —
Jazz SCM и хостинговый Git. Каждый проект получает свой собственный
репозитарий DevOps Services и рабочее пространство, в котором участники
этого проекта могут регистрироваться свои изменения, ассоциировать
изменения программного кода и просматривать историю недавних изменений.
Кроме того, вы можете создать проект DevOps Services и указать на свой
репозитарий GitHub.
Вы также можете с легкостью связать элементы работы с изменениями кода в
GitHub. Кроме того, для написания кода в Git вы можете использовать
имеющиеся у вас инструменты.
Типичными сценариями использования ресурса DevOps Services являются:
● Создание приложения для анализа данных соцальных сетей с
использованием Node.js, Node-RED, Express, sentiment и ntwitter.
● Создание приложения для создания интерактивных опросов в реальном
времени с использованием Node.js, Node-RED, Express, AngularJS и
MongoDB.
● Построение сервисов уведомления с использованием Node.js, Node-RED
и MongoDB.
● Создание приложеий для управления аппаратными устройствами c
исользованием Node-RED и IoT компонент.

Лабораторная работа № 10 12
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Среда визуальной разаботки JavaScript приложений Node-RED

Node-RED - это визуальная drag-and-drop среда развработки JavaScript


рантаймов для IoT (неблокирующих приложений, управляемых событиями).
Благодаря большому количеству примитивов и возможности быстрой
визуальной настройки и созданию новых компонентов, в том числе
непосредственно на языке JavaScript, Node-RED может быть использована как
непрофессинальными пользователями, так и профессиональными
разработчиками для ускорения создания веб-приложений в облаке. Это
позволяет использовать Node-RED для взаимодействия с недорогими
аппаратными платформами в рамках подхода IoT, перенося основную часть
вычислительной нагрузки на облачную платформу. Помимо этого все созданные
рантаймы могут быть объеденены в библиотеки решений и впоследствии
перенесены в другие проекты благодаря функциям экспорта и импорта.
Терминология Node-RED
Нод (node) - функционально законченный блок.
Поток обработки (flow) - цепь соединенных нодов и соответствующий им
конфигурационный нод.
Входной нод (input node) - нод, принимающий внешние данные и задающий
начало потоку обработки (flow). Входной нод имеет один или несколько
выходных портов (output ports).
Выходной нод (output node) - нод, завершающий поток обработки и передающий
результаты во внешнюю среду.
Функциональный нод (function node or query node) - нод, находящийся внутри
потока обработки и имеющий один входной порт и один или несколько
выходных портов.
Конифигурационный нод (config node) - нод, содержащий конфигурационную
информацию, используемую в других нодах. Конфигурационный нод не связан
портами с другими типами нодов.
Набор нодов (node set) - ноды, включенные в связанные js/html файлы (пары
соответствующих друг другу файлов, содержащих связанный код JavaScript и
HTML). Ошибка в js/html паре приводит к неработоспособности всех нодов
набора.
Модуль нодов (node module) - множество свящанных js/html файлов (и,
соответственно, наборов нодов), где каждая пара описана в package.json файле.
Пакет нодов (node pack) - коллекция связанных по функциональности нодов,
которые могут быть использованы разработчиком в рамках одного проекта.

Лабораторная работа № 10 13
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Рисунок 4 - Основное окно проекта в Node-RED

Пример использования Node-RED

Примером эффективного применения технологии Node-RED может служить


проект, на разработку которого требуется около 15 минут. Приложение
позволяет автоматически отслеживать текущее местоположение мобильного
устройства, определяет прогноз погоды и сообщает о нем через твиттер самому
пользователю (Рисунок 5).

Рисунок 5 - Поток обработки для информирования о прогнозе погоды.


1. Приложение MQTTitude на мобильном телефоне передает
телеметрическую информацию о положении устройства в
обрабатывающий поток Node-RED.
2. Телементрия о местоположении преобразуется в twitter сообщение.
3. Сообщение используется для доступа к прогнозу погоды в ноде
Forecast.io.
4. Полученный прогноз форматируется в сообщение twitter.
5. Сообщение посылается на твиттер аккоунт пользователя и отображается
на мобильной платформе.

Лабораторная работа № 10 14
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Приведенный пример позволяет реализовать логику взаимодействия с


использованием протоколов MQTT, HTTP и Twitters API без глубокого
погружения в их технические особенности.

Практическая часть

Внимание! Группа разбивается на две подгруппы численностью от 6 до 12


человек. Каждое задание выполняется одним студентом подгруппы. К
следующему заданию приступает следующий студент подгруппы по
ротации.

Задание 1. Создание загрузочного образа Raspbian.


Выполнить подготовку образа SD-карты в соответствии с пунктом
“Подготовка платформы Raspbian к работе”. Установить SD-карту в RPi.
Задание 2. Настройка Raspberry Pi.
После создания образа на карте снова подключите ее к картридеру. В
устройстве boot откройте файл config.txt и установите следующие параметры:
hdmi_safe=0

hdmi_force_hotplug=1

hdmi_drive=2

hdmi_group=2

hdmi_mode=35

config_hdmi_boost=6

disable_overscan=1

test_mode=1

Подключить к RPi клавиатуру, мышь, монитор. Поключить питание


(разъем microUSB). После инициализации на экране будет показан диалог
конфигурации. Выполнить включение интерфейса ssh (Advanced
options->SSH->Enable).
Закончить конфигурирование (Finish).
Определить ip адрес устройства по интерфейсу eth0:
$ ifconfig

Результаты занести в отчет. Рекомендуется использовать перенаправление


вывода в файл отчета (>>). Например:
$ ifconfig >> report_IU0123.txt

Задание 3. Запустить графическую сессию Linux:


$ startx

Лабораторная работа № 10 15
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Ознакомиться с набором ПО. Проверить работоспособность мыши и


кавиатуры. Определить разрешение экрана. Выполлнить копирование экрана в
графический файл. Результат занести в отчет. Выполнить рестарт:
$ reboot

Задание 4. Доступ к RPi по консоли ssh.


Используя ОС Linux SUSE выполнить подключение к RPi.
ssh pi@XX.XX.XX.XX

где XX.XX.XX.XX - ранее определенный ip адрес устройства. Пароль


пользователя pi: raspberry.
Задание 5. Установка и запуск VNC сервера.
Для установки VNC сервера необходимо выполнить команды:
$ apt-get install tightvncserver

При инсталляции установить пароль для подключения к серверу:


raspberry.
$ vncserver :0 -geometry 1280x1024 -depth 24

Проверить работоспособность сервера, подключившись к RPi с


персонального компьютера. Для этого в операционной системе Windows
использовать прграмму tightvncclient:
http://sourceforge.net/projects/vnc-tight/files/latest/download
Для операционной системы Linux можно испольщовать приложение
xtightvncviewer.
Задание 6. Инсталляция IBM IoT клиента. В консоли ssh выполнить
команду:
$ curl -LO

https://github.com/ibm-messaging/iot-raspberrypi/releases/download/1.0.2/iot_1.0-1_armhf.deb

$ sudo dpkg -i iot_1.0-1_armhf.deb

Проверить работоспособность сервиса. Для этого выполнить команду:


$ sudo service iot status

Задание 7. Тестовая визуализация данных полученных с Raspberry Pi в


облаке.
Для этого выполнить команду для получения ссылки:
$ sudo service iot getdeviceid

Убедиться в работоспособности визуализации, для этого перейти по


ссылке полученной в терминале. Полученные данные зафиксировать в отчёт.
Задание 8. Создание приложения в IBM Bluemix.
Перейти по ссылке:

Лабораторная работа № 10 16
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

https://bluemix.net/
Использовать учётную запись, выданную преподавателем. После входа
кратко ознакомиться с набором доступных ресурсов (вкладка Catalog и
Dashboard).
Перейти в рабочее пространство группы (space_iuxxxx), выбрав
соответствующую строку в левом фрейме навигации. Создать приложение,
которое будет использовать Raspberry Pi и облачную инфроструктуру IBM
Bluemix. В качестве шаблона использовать компонент Internet of Things
Foundation Starter. Name и Host задать на своё усмотрение.
Задание 9. Запуск и проверка симулятора IoT Sensor.
Со смартфона/планшета/компьютера перейдите по следующей ссылке
https://quickstart.internetofthings.ibmcloud.com/iotsensor/
IoT Sensor генерирует следующие показатели
● температуру окружающей среды
● влажность воздуха
● температуру устройства
Для IoT Sensor генерируется уникальный MAC адрес. Занесите его в отчет.
Задание 10. Работа в Node-RED.
В BlueMix перейдите по ссылке Routes в настройках вашего приложения.
Зайдите в редактор Node-RED.
Для запуска шаблонного сценария необходимо выбрать узел IBM IoT App
In. В поле Device ID указать MAC адрес устройства IoT Sensor, а в поле Name -
IoT Sensor Input. Для применение изменений нажмите на кнопку Deploy в
правом верхнем углу.
Протестируйте работу сценария. Для этого активируйте узел device data,
нажатием на правый край узла. В правой панеле перейдите во вкладку debug. В
устройстве IoT Sensor измените значения. Зафиксируйте изменения. Зайдите в
настройки узла device data. Попробуйте изменить режим Output.
Дайте ответ на следующий вопрос:
● По какому ключу JSON передаётся информация, снятая с
устройства?
Добавьте новый узел Debug и подключите его к узлу temp. Изучите как
работает узел temp. Проделайте те же действия и с остальными узлами.
Результаты и ход выполнения всех иследований зафиксируйте в отчёт. В отчёт
так же включите код сценария. (Меню в правом верхнем углу)

Варианты персональных заданий по группам


Группа 1. Разработать сценарий Node-RED, который считывает данные с
устройства IoT Sensor. Сценарий считывает влажность и в зависимости от
значения формирует одно из сообщений:
● при влажности меньше 30% - “Влажность $значение$%. Очень сухая
влажность воздуха.”
● при влажности от 30%, но меньше 40% - “Влажность $значение$%. Сухая
влажность воздуха.”

Лабораторная работа № 10 17
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

● при влажности от 40% до 60% - “Влажность $значение$%. Влажность в


норме. ”
● при влажности больше 60%, но меньше 75% - “Влажность $значение$%.
Высокая влажность воздуха ”
● при влажности от 75% - “Влажность $значение$%. Очень высокая
влажность воздуха.”
Группа 2. Разработать сценарий Node-RED, который считывает данные с
устройства IoT Sensor. Сценарий считывает температуру устройства и в
зависимости от значения формирует одно из сообщений:
● при температуре меньше 35 °С - “Температура $значение$ °С.
Температура устройства низкая.”
● при температуре от 35 °С, но меньше 50 °С - “Температура $значение$ °С.
Температура устройства нормальная.”
● при температуре от 50 °С до 75 °С - “Температура $значение$ °С.
Температура устройства высокая.”
● при температуре больше 75 °С - “Температура $значение$ °С.
Температура устройства очень высокая.”

Задание 11. Регистрация Raspberry Pi в IBM Internet of Things Foundation.


Создайте новый сервис IBM Internet of Things Foundation (IoTF) в разделе
‘Internet of Things’ каталога BlueMix. После этого откройте сервис IoTF и
начните регистрацию (Launch). Укажите MAC адрес Rpi. В результате будет
предложено внести изменения в конфигурационный файл сервиса iot на Rpi.
Сохраните эту ифнормацию в отчёте. Через SSH приостановите процесс iot:
$sudo service iot stop

Внесите изменения в файл /etc/iotsample-raspberrypi/device.cfg.


Запустите процесс iot.
$sudo service iot start

API Key и Auth Token для Rpi занесите в отчёт.

Проверьте работоспособность устройства Rpi на вкладке Devices.

Если наблюдается регулярное поступление сообщений от Rpi, конфигурация


выполнена успешно (рисунок 6).

Приложение Node-RED имеет собственный токен для сервиса IoTF (Auth Token
для Node-RED). Определите его (фунция Show Credentials) и занесите в отчет.

Лабораторная работа № 10 18
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

Рисунок 6 - Пример регистрации нового устройства

Задание 12. Использование Raspberry Pi в сценарии Node-RED.


Для того что-бы устройство начало передавать данные сконфигурируйте узел
ibmiot из раздела Input следующим образом.
Authentication: API Key
API Key: из Задания 11
API Token: API Token для Node-RED из Задания 11
Input Type: Device Event
Device Type: All
Device ID: MAC адрес Raspberry Pi
Event: All
Format: json

Модифицируйте сценарий из Задание 10. Сценарий должен уметь


считывать данные с IoT Sensor и Raspberry Pi одновременно. С Raspberry Pi
необходимо считывать данные из узла “d”. Количество посылаемых сообщений
с Raspberry Pi не должно превышать 5 сообщений в минуту. Код сценария
занесите в отчёт.

Задание 13. Послать файл отчета из Rpi по электронной почте.


Для этого установить программу telnet:
$ sudo apt-get install telnet

Создать файл скрипта send_mail.sh со следующим содержимым


(NAME@DOMAIN заменить на адрес Вашей электронной почты):
#!/bin/bash

{
sleep 1;
echo 'ehlo';
sleep 1;
echo 'MAIL FROM:<elearning@bmstu.ru>';

Лабораторная работа № 10 19
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

sleep 1;
echo 'RCPT TO: <NAME@DOMAIN>';
sleep 1;
echo 'DATA';
sleep 1;
echo 'Subject: HELLO FROM RPi';
echo -e 'To:NAME@DOMAIN\nMIME-Version: 1.0 (mime-construct 1.9)\nContent-Type:
text/x-log\nContent-Disposition: attachment; filename=report.txt\nContent-Transfer-Encoding: base64\n\n';
dd if=~/report.txt bs=4 count=10 2>/dev/null | openssl base64;
echo '.';
} | telnet mx.bmstu.ru 25

Разрешить запуск скрипта:


$ chmod +x send_mail.sh

Выполнить запуск скрипта:


$ ./send_mail.sh

Требования к отчету

Отчет по работе должен содержать:


1. Номер группы. Номер подгруппы. ФИО студентов подгруппы.
2. Для каждого практического задания необходимо указать ФИО студента,
выполневшего данный пункт лабораторной работы. Например:
Задание 1. Выполнил Петров П.П. …
3. Для каждого задания необходимо предоставить информацию, указанную
в нем в качестве результата (текстовые сообщения, копия экрана и пр.), а
также краткий вывод о правильности результатов.
4. В конце отчета должны быть представлены выводы об актуальности и
области применения технологий, рассмотренных в лабораторной работе.
Допускается критическое отношение, основанное на соответствующем
обоснованнии.

Контрольные вопросы

1. Поясните термин Internet of Things.


2. Что такое BlueMix? Для чего BlueMix целесообразно использовать?
3. Какой дистрибутив и какая версия ядра Linux были использованы на RPi в
ходе лабораторной работы.
4. Поясните, как информация из RPi была передана в BlueMix?
5. Какие облачные сервисы были использованы в лабораторной работе?

Интернет-источники

Лабораторная работа № 10 20
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

1. https://internetofthings.ibmcloud.com/
2. https://bluemix.net
3. https://adafruit.com
4. http://raspberrypi.su
5. http://wikipedia.org

Приложение 1. Использование RPi для создания образа ОС Raspbian.

Для создания образа SD карты непосредственно на RPi необходимо


использовать сборку Linux, размещаемую в памяти контроллера. В данной
работе можно использовать образ:

1.Образ карты и USB диск с образом Raspbian подготавливается преподавателем


следующим образом:
http://www.arbetsmyra.dyndns.org/nard/download/nard-sdcard.img.gz
Образ необходимо разархивировать и установить на :
$ gzip -d .gz nard-sdcard.img.gz
Образ записывается на карту памяти командой:
$ sudo dd bs=1M if=sdcard.img of=/dev/mmcblk0
Изменить файл config.txt
hdmi_safe=0
hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=2
hdmi_mode=35
config_hdmi_boost=6
disable_overscan=1
test_mode=1
После этого карту и USB диск можно инсталлировать в RPi.

Лабораторная работа № 10 21
Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров

2.Для доступа к OC Linux необходимо использовать реквизиты:


логин: root
пароль: pass
Определить имена логических томов SD карты и USB накопителя. Положим
далее что карта имеет имя /dev/mmcblk0 и /dev/sda1 соответственно.
Создать каталог для USB накопителя:
$ mkdir /usb
Выполнить монтирование USB накопителя:
$ mount /dev/sda /usb
Выполнить копирование образа на карту памяти:
$ dd bs=1M if=/usb/2014-09-09-wheezy-raspbian.img of=/dev/mmcblk0
Перезагрузить RPi:
$ reboot

Лабораторная работа № 10 22