[Перевод] Примеры кода для интернета вещей: умная поливалка
Недавно мы опубликовали учебные примеры кода для различных проектов, которые формируют интернет вещей. Сегодня расскажем об автоматической системе полива. Построена она с использованием Intel IoT Developer Kit, Intel Edison, в её работе применяются облачные платформы, различные API и другие технологии.
- Как подключиться к Intel Edison — платформе, созданной для прототипирования и разработки носимых вычислительных решений и IoT-устройств.
- Как взаимодействовать с интерфейсом ввода вывода Edison и с датчиками при помощи MRAA и UPM из Intel IoT Developer Kit, самодостаточного аппаратно-программного решения, которое предназначено для того, чтобы помочь разработчикам исследовать возможности интернета вещей и создавать инновационные продукты.
- Как запустить код примера в Intel XDK IoT Edition, IDE для создания приложений, которые взаимодействуют с датчиками и актуаторами. Эта среда разработки позволяет быстро приступить к разработке приложений для Intel Edison и Intel Galileo.
- Как настроить сервер веб-приложения, который будет хранить данные системы полива с использованием Azure Redis Cache в Microsoft Azure. Это набор облачных служб для IoT-решений, которые поддерживают анализ данных, машинное обучение и множество полезных инструментов, упрощающих подключение устройств к облаку и позволяющих быстро вывести IoT-проект в рабочий режим.
- Как вызывать службы Twilio API для отправки текстовых сообщений на мобильные телефоны.
Возможности системы
Вот какими возможностями обладает автоматическая система полива, которую мы создадим на базе Intel Edison:
- Включение и выключение водяного насоса в соответствии с настраиваемым расписанием.
- Проверка того, действительно ли насос перекачивает воду при подаче ему соответствующей команды. Для этого используется датчик расхода воды.
- Организация доступа к системе с использованием встроенного веб-интерфейса, что позволяет задать расписание полива.
- Хранение сведений о работе системы в облачном хранилище.
- Отправка текстовых сообщений для уведомления потребителей о том, что в работе системы произошёл сбой.
Особенности работы
Система полива позволяет задавать расписание полива, открывая с помощью смартфона, или другого подходящего устройства, веб-страницу, которая хранится на Intel Edison. Она автоматически опрашивает датчик влажности и выводит полученные данные на веб-страницу.
Если предполагается, что водяной насос включён, но датчик расхода воды показывает, что вода по трубам не двигается, будет отправлено текстовое сообщение на заданный номер через Twilio. Таким образом, систему полива, которая вышла из строя, можно будет оперативно отремонтировать.
Дополнительно система может вести журнал событий с использованием кода из Intel IoT Examples Datastore, который исполняется в среде Microsoft Azure.
Аппаратное обеспечение
Аппаратная часть проекта — это Grove Environment & Agriculture Kit, включающий в себя:
Программное обеспечение
- Intel XDK IoT Edition
- Учётная запись Microsoft Azure
- Учётная запись Twilio
Предварительные приготовления
Для того, чтобы начать работу, скопируйте на компьютер Git репозиторий How-To Intel IoT Code Samples с помощью такой команды:
$ git clone https://github.com/intel-iot-devkit/how-to-code-samples.git
Если вам удобнее загрузить ZIP-архив с необходимыми материалами, откройте эту страницу и щёлкните по расположенной справа кнопке Download ZIP. Загрузив архив, распакуйте его и найдите папку с кодом к этому проекту (watering-system).
Добавление приложения в Intel XDK IoT Edition
В Intel XDK IoT Edition выберите команду Import Your Node.js Project (Импортировать проект Node.js):
Импорт Node.js-проекта
Затем перейдите к папке, в которой расположены файлы учебного проекта и выделите её.
Выбор папки с кодом проекта
Теперь нужно подключить плату Intel Edison к компьютеру и загрузить на плату программу. Для этого можно воспользоваться меню IoT Device (IoT-устройство), которое расположено в левой нижней части окна. Если система автоматически распознала подключённую плату, выберите в меню соответствующую строку.
Подключение Intel Edison
Если же плата не была распознана автоматически, выберите пункт Add Manual Connection (Добавить подключение вручную), в появившемся окне, в поле Address (Адрес), введите 192.168.2.15, в поле Port (Порт) введите 58888. Кнопкой Connect (Подключить) сохраните подключение.
Ручная установка программы на Intel Edison
Кроме того, программу можно установить на Intel Edison вручную. Для этого подключитесь к плате по SSH и выполните следующую команду:
$ git clone https://github.com/intel-iot-devkit/how-to-code-samples.git
Затем перейдите в папку с примером. Если на Edison ещё не установлен Git, сделать это можно, подключившись к плате по SSL и выполнив следующую команду:
$ opkg install git
Подключение датчиков Grove
Прототип системы полива в сборе
Нужно, чтобы к коммутационной Arduino-совместимой плате была подключена плата расширения Groove (Grove Shield), к которой будут подключаться датчики и актуаторы. Проверьте, чтобы на плате расширения Grove маленький переключатель VCC находился в положении 5V.
Необходимо подвести питание к Intel Edison от внешнего адаптера, который поставляется вместе со Starter Kit, или заменить его на подходящий внешний источник питания (12 В, 1.5 А). Можно использовать и USB-батарею на 5 В.
Кроме того, понадобится макетная плата и дополнительный источник питания на 5 В для водяного насоса. Обратите внимание на то, что для насоса нужен отдельный источник питания. Нельзя использовать один и тот же источник и для Intel Edison и для насоса, то есть, понадобится либо две батареи, либо два адаптера.
Для подключения водяного насоса понадобится реле с сухим герконом Groove. Подключение выполняется так:
- Один из концов кабеля Grove подключите к реле, второй — к порту D4 на плате расширения Grove.
- Один из проводов водяного насоса подключите к предназначенному для насоса источнику питания на 5 В.
- Другой провод насоса подключите к одному из разъёмов питания реле.
- Другой разъём питания реле подключите к «земле» источника питания насоса.
- Подключите датчик расхода воды, присоединив красный провод к выводу »5V», чёрный — к выводу «GND», а жёлтый — к цифровому выходу 2 на плате расширения Grove.
- Подключите один конец кабеля Grove к датчику влажности, другой — к порту A0 на плате расширения Grove.
Ручная установка на Intel Edison
Если вы выбрали путь самостоятельного запуска кода примера на Intel Edison, понадобится разрешить некоторые зависимости.
Для получения модулей Node.js, необходимых для того, чтобы пример запустился на Edison, выполните такую команду:
npm install
Настройки: отправка сообщений и облачное хранилище
Для того, чтобы система могла отправлять текстовые сообщения, необходима учётная запись Twilio и API-ключ. Без ключа сообщения отправлять нельзя. Пример будет работать и без отправки сообщений, но в реальных проектах подобная возможность весьма полезна.
Для того чтобы настроить пример на работу с вашей учётной записью Twilio, нужно, в файле config.json, задать значения параметров »TWILIO_ACCT_SID
» и »TWILIO_AUTH_TOKEN
». В них, соответственно, нужно указать API-ключ и маркер аутентификации.
{
"TWILIO_ACCT_SID": "YOURAPIKEY",
"TWILIO_AUTH_TOKEN": "YOURTOKEN"
}
При желании можете хранить данные, которые генерируются рассматриваемым примером, в базе данных, развёрнутой с использованием Microsoft Azure, Node.js и хранилища данных Redis. Подробности о том, как настроить облачный сервер, смотрите здесь.
Если у вас есть учётная запись Microsoft Azure и имеется сервер, готовый принимать данные, нужно внести изменения в config.json, а именно, записать в параметры »SERVER
» и »AUTH_TOKEN
» данные для подключения к серверу.
{
"SERVER": "http://intel-examples.azurewebsites.net/logger/watering-system",
"AUTH_TOKEN": "s3cr3t"
}
В том случае, если в вашем варианте примера будет использоваться и отправка текстовых сообщений средствами Twilio, и хранение данных в Microsoft Azure, настройки будут выглядеть так:
{
"TWILIO_ACCT_SID": "YOURAPIKEY",
"TWILIO_AUTH_TOKEN": "YOURTOKEN",
"SERVER": "http://intel-examples.azurewebsites.net/logger/watering-system",
"AUTH_TOKEN": "s3cr3t"
}
Запуск программы из Intel XDK IoT Edition
Прежде чем запускать программу, сохраните изменения, внесённые в файлы. После этого щёлкните по значку Upload (Выгрузка) для того, чтобы выгрузить код на Intel Edison.
Выгрузка проекта на Intel Edison
После выгрузки запустите программу на устройстве с помощью значка Run (Запуск).
Запуск проекта
Если вы, при работе над проектом, внесли в код изменения, можете воспользоваться командой Upload and Run (Выгрузить и запустить). Свежая версия программы будет выгружена и запущена на Intel Edison. В ходе выполнения программы на Edison можно будет видеть сообщения, подобные показанным на рисунке ниже.
Сообщения от программы, которая работает на Intel Edison
Ручной запуск программы
Для того, чтобы запустить программу вручную, подключитесь к Intel Edison по SSH и выполните следующую команду:
node index.js
Настройка расписания полива
Для настройки расписания полива используется веб-интерфейс, состоящий из одной страницы. Эту страницу можно открыть, запросив её у веб-сервера, который выполняется на той же плате Intel Edison, на которой выполняется основная программа.
Страница для настройки расписания полива
Серверу назначен порт 3000. Таким образом, если Intel Edison подключён к Wi-Fi-сети и ему назначен IP-адрес 192.168.1.13, то адрес сервера (при условии, что подключаются к нему из той же самой локальной сети) будет http://192.168.1.13:3000.
Как определить IP-адрес Intel Edison
Для того, чтобы узнать IP-адрес Intel Edison, можно воспользоваться следующей командой:
ip addr show | grep wlan
После её выполнения можно будет увидеть примерно следующее:
3: wlan0: mtu 1500 qdisc pfifo_fast qlen 1000
inet 192.168.1.13/24 brd 192.168.1.255 scope global wlan0
Адрес Intel Edison можно обнаружить после «inet». В нашем случае это 192.168.1.13.
Выводы
Мы рассказали о том, как, на базе Intel Edison, собрать систему полива, которая включает в себя набор датчиков и водяной насос. Системой, подключённой к Интернету, можно управлять с любого устройства, которое умеет открывать веб-страницы. Если задействовать в рассмотренном примере облачные службы для хранения данных и отправки сообщений, можно собирать статистику работы устройства, а, в случае возникновения аварийной ситуации, получить текстовое сообщение на заданный номер мобильного телефона и быстро исправить поломку.
С другими примерами кода из серии How-To Intel IoT Code Samples можно ознакомиться на Intel Developer Zone. Полный код рассмотренного здесь примера можно найти на GitHub.