Сегодня мы расскажем о том, как была создана современная система мониторинга для умного дома, которая контролирует входные двери и гаражные ворота. Эта система – пример того, как идея из мира интернета вещей превращается в рабочий прототип, который, в свою очередь, становится полноценным продуктом, пригодным для массового производства и использования в реальной жизни. Причём, за счёт применения удобных и доступных средств создания работающих IoT-макетов, всё это происходит очень быстро. Так же здесь мы поделимся пошаговой методикой, которая применима к работе над любыми IoT-решениями.
В нашем случае, для создания концептуальной модели применяются Intel IoT Development Kit и Grove IoT Commercial Developer Kit. После того, как модель показала, что проект оправдывает ожидания, готовый продукт строится с использованием таких технологий, как Intel IoT Gateway, Intel IoT Gateway Software Suite, Intel XDK IoT Edition, IBM Bluemix и серийно производимых компонентов. Если в двух словах описать наш проект, то получится, что система датчиков собирает сведения о входной и гаражной дверях, данные передаются на шлюз, оттуда – в облако для хранения и анализа. Кроме того, в рамках проекта реализовано несколько приложений, возможности которых опираются на облачные данные. В частности – это система администрирования и мобильное приложение для конечных пользователей.
▍IoT в умном доме
В идеале, интернет вещей – это среда, в которой к Сети подключено практически всё, что может представлять хотя бы малейший интерес для того, кто пользуется «вещами». Интерес этот может выражаться в возможности «вещью» управлять и узнавать её состояние. Причём, делать это можно в любом месте и в любое время. Особое положение в концепции IoT занимают наши жилища. Это и не удивительно. Дом – это центр жизни человека и совершенно естественно то, что ему нужно постоянное чувство уверенности в том, что дома всё хорошо. Современные технологии играют в поддержании такой уверенности очень важную роль, раньше, до IoT, о таком можно было только мечтать.
Например, каждому иногда является навязчивая мысль, от которой почти невозможно отделаться, если уж она возникла: «А запер ли я дверь?». Самое неприятное здесь то, что обычно мысль эта приходит тогда, когда узнать, заперта ли дверь, нет никакой возможности. Как кстати было бы в такой момент найти на экране смартфона значок «Проверить дверь»… И ведь это – лишь один из примеров.
Многие из нас вполне готовы к тому, чтобы купить и установить у себя дома систему, благодаря которой узнать, заперта ли дверь, можно было бы так же легко, как проверить электронную почту.
Хотя на рынке доступно множество решений для умного дома, эта область только начинает развиваться. Как результат, например, можно наблюдать недостаточную совместимость продуктов и компонентов различных производителей. Intel обнаружила, что один из критериев успеха в построении решений для умного дома – использование стандартизированных открытых платформ. Такой подход позволяет легко создавать интеллектуальные устройства, подключённые к облаку, которые можно применять в любом месте дома для организации наблюдения за самыми разными объектами и для управления ими. Кроме прочего, у подобных продуктов и служб имеется значительный коммерческий потенциал.
▍О подходе к созданию проекта
Intel организовала исследование, о котором мы сейчас расскажем, для того, чтобы выявить особенности разработки систем для умного дома. Во многом, идейным вдохновителем этого проекта стало существующее решение для умного дома от Yoga Systems. В материале, который доступен по ссылке, можно найти рассказ о ходе работы над проектом. Он начинается с общего описания структурированной методологии, разделённой на несколько фаз. Затем приводится подробное описание работ, выполненных на каждом этапе.
Если вы чувствуете, что подобная методика пригодится и вам, вы можете использовать наш рассказ для того, чтобы проследить за каждым этапом, пройденным командой разработчиков Intel от идеи до готового IoT-проекта для умного дома. И, что вероятно более важно, всё это можно обобщить и применить ту же методику разработки к другим проектам. Intel предлагает всем желающим воспользоваться описанной здесь методикой работы для реализации собственных IoT-проектов.
Нужно сказать, что, хотя здесь мы касаемся многих технических особенностей, основная цель этого материала – показать, на достаточно высоком уровне, методологию и процесс разработки. Если вам нужно больше технических деталей, здесь можно найти пошаговое руководство по созданию прототипа системы для умного дома, о которой мы будем говорить. Кроме того, вот репозиторий на GitHub, где можно взглянуть на код и документацию.
▍Методология
По своей природе, разработка для IoT – это бесконечные инновации и масса совершенно разных проектов, которые добавляют интеллекта невероятному количеству «вещей»: от устроенных очень просто, до сложных систем; от привычных каждому, до совершенно экзотических. Но, несмотря на такое разнообразие, каждый проект, так или иначе, создаётся с учётом опыта, накопленного IoT-индустрией. Опыт и практика позволяют выделить в создании разных IoT-проектов общие элементы.
Для того, чтобы воспользоваться этими вот общими чертами подобных проектов и увеличить шансы на успех в создании новых, Intel разработала структурный подход к разработке IoT-решений. Этот подход представляет собой модель работы, состоящую из шести фаз. Он позволяет проекту пройти полный путь от идеи к готовому продукту, пригодному для коммерческого использования. Предложенная здесь модель задумана так, чтобы её легко можно было адаптировать к нуждам любого IoT-проекта.
▍Начальные фазы (1-3)
Первые три фазы предлагаемой методологии – это исследования. Они сосредоточены на формировании идей и оценке возможностей проекта по решению поставленной перед ним задачи. По большому счёту, всё это — подготовка к созданию успешного коммерческого продукта. В связи с этим на данных этапах работы главную роль играют мозговые штурмы, проверки работоспособности концепции проекта. О том, чтобы заниматься разработкой, следуя неким выверенным решениям и точным планам, речи пока не идёт.
Быстрое прототипирование на данном этапе облегчается благодаря Grove IoT Commercial Developer Kit. Этот набор включает в себя компьютер Intel NUC, Intel IoT Gateway Software Suite и Grove Starter Kit Plus (производства Seed). В нашем проекте, кроме того, задействована плата Arduino 101. Эту плату, особенно за пределами США, часто называют «Genuino 101», дальше мы будем ссылаться на неё как на «Arduino 101».
Фаза №1
Первый шаг в создании IoT-продукта заключается в выявлении существующей проблемы, которую этот продукт решит, или потенциальной возможности на рынке, пустой ниши, которую можно заполнить. Документация данного этапа должна описывать проблему, ценность решения (как для конечного пользователя, так и для организаций, которые будут заниматься производством и внедрением), а также описание ограничений концепции. Так же документация должна содержать сведения о предполагаемых трудностях и ограничениях процесса реализации проекта.
Фаза №2
Здесь нужно спроектировать модель для проверки работоспособности концепции, которая покажет, способен ли продукт решить поставленную перед ним задачу. Исходный проект должен содержать описание практического подхода по созданию продукта, включая аппаратные, программные и сетевые элементы. При этом необходимо учитывать все возможные трудности и ограничения в реализации проекта, выявленные на первом этапе работы. При этом, так как физической реализации системы пока нет, нужно учитывать, что часть узких мест решения можно будет увидеть только на работающем прототипе. На этом же этапе нужно уделить внимание таким факторам, как стоимость и уровень безопасности решения.
Фаза №3
На данном этапе создают и дорабатывают макет для проверки работоспособности идеи. Этот физический прототип основан на решениях, принятых на втором этапе. Если нужно, на данном этапе в проект вносят изменения, которые так же документируются. Изменения, основанные на выявленных в результате тестирования недостатках и дополнительных возможностях, так же нужно задокументировать.
▍Завершающие фазы (4 – 6)
Через три последних фазы, входящие в эту методологию, проходят только после того, как было принято решение о том, что продукт нужно довести до стадии производства. Таким образом, здесь на первый план выходят повышение стабильности, безопасности и управляемости продукта, подготовка к массовому производству, монетизация проекта для претворения в жизнь его коммерческого потенциала.
На финальных этапах работы переходят к использованию серийных компонентов, например – датчиков. То же самое касается таких частей системы, как шлюзы для интернета вещей. Здесь же производится окончательная доработка документации, в ней фиксируется итоговый набор характеристик продукта.
Фаза №4
На данном этапе создают стабильную бета-версию. После того, как было доказано, что проект способен эффективно решить поставленную перед ним задачу, было решено, что он пойдёт в массовое производство, создают версию проекта, ориентированную на готовый продукт, и предназначенную для того, чтобы окончательно доработать конструкцию. При изготовлении этой версии понадобятся значительные вложения ресурсов, которые, кроме прочего, включают в себя серийно производимые датчики и другие компоненты, а также IoT-шлюзы.
Фаза №5
Здесь оценивают возможности продукта и расширяют его функционал. Готовую бета-версию тестируют на правильность работы в соответствии с заданными параметрами. В ходе тестирования команда разработчиков так же выявляет дополнительные возможности и функции продукта, которые внедряются в него для того, чтобы сделать его более надёжным, повысить его ценность для конечных пользователей.
Фаза №6
В финале проект окончательно дорабатывают и переходят к стадии производства. Как только решено, что продукт обладает всеми необходимыми возможностями, команда улучшает его, расширяя возможности по управлению им, показатели безопасности, оптимизируя модель из соображений маркетинга и эффективности производства. Так же на этом этапе завершается работа над пользовательским интерфейсом. В задачи, решаемые в этой фазе, входит окончательное планирование способов продвижения и продажи продукта перед переходом к полномасштабному производству.
Рассмотрим применение предложенной модели работы над IoT-проектами на примере нашей системы.
Пример применения методологии разработки IoT-проектов
▍Фаза №1: Определение потенциала проекта
Основная рабочая группа, которая начала заниматься проектом в Intel, определила, что умный дом – это подходящая основа для возможного IoT-решения, способного продемонстрировать возможности интернета вещей и проиллюстрировать применение методологии работы над проектами, описанной выше. Эта группа выявила набор навыков будущих участников расширенной группы, которые, вероятнее всего, понадобятся в ходе разработки. Среди этих навыков – управление проектами, программирование, работа с облачными платформами, документирование. Основываясь на списке необходимых навыков, основная группа сформировала полную проектную группу. Она, в основном, состояла из сотрудников Intel, но в неё были включены и некоторые другие специалисты. Сделано это для того, чтобы дополнить экспертный потенциал команды.
Первой задачей полной проектной группы была оценка потенциальных возможностей проекта, как основы исходного прототипа. Основной потенциальной возможностью, определённой в данном случае, была интеграция программного управления и системы оповещений, связанных с определёнными функциями системы умного дома. А именно, было решено остановиться на следующих объектах:
- Входная дверь. Система, на физической модели, может отпирать и запирать дверь и сообщать о том, заперта дверь или нет, а также о том, закрыта она или открыта.
- Дверной звонок. Когда нажимают на кнопку дверного звонка на модели, оповещение об этом отображается в административном приложении и в мобильном приложении.
- Дверь гаража. Пользователь может отправлять с мобильного приложения команды для подъёма и опускания гаражной двери. Кроме того, мобильное приложение может отображать сведения о ходе открывания и закрывания двери, а также оповещать пользователя о том, что дверь не может закрыться.
Датчики, которые определяют, заперта или нет входная дверь, звонит ли кто-нибудь в дверной звонок, а также то, открыта или закрыта гаражная дверь, дают нам исходные данные. Данные это, с одной стороны, очень простые, но с другой – важные, так как именно на них основана работа всей системы, именно они позволяют решить основную задачу проекта. Двойственность между простотой этой первичной информации и её важностью – основа коммерческой ценности разрабатываемой системы.
Датчики собирают и отправляют сведения в облако для того, чтобы обеспечить хранение и анализ информации, а также удалённый защищённый доступ к системе. В результате пользователь может просматривать уведомления о событиях и о состоянии различных элементов умного дома, перечисленных выше.
Кроме того, команда обнаружила возможности по дальнейшему расширению решения, которые были определены как выходящие за рамки проекта. Они включали в себя предложения по удалённому управлению как для домашних, так и для коммерческих пользователей, в том числе – встраивание в существующие системы охраны.
▍Фаза №2: Проектирование модели для проверки работоспособности концепции
Команда решила, что проект должен быть основан на легко доступных комплектующих и технологиях для того, чтобы он, как практический пример, был как можно более полезным для сообщества разработчиков. В результате было выбрано следующее: Grove IoT Commercial Developer Kit, Intel IoT Developer Kit, Intel IoT Gateway Software Suite. Кроме того, было решено использовать программные технологии, которые широко распространены и при этом либо бесплатны, либо стоят недорого, применяя везде, где это практически осуществимо, бесплатное ПО с открытым исходным кодом (free open-source software, FOSS).
Для того, чтобы ускорить прохождение проектом стадии прототипа и снизить сложность работ, ту часть системы, которая должна располагаться в доме, решили построить в виде стендовой модели. Она должна была включать в себя вычислительную платформу и датчики без включения в прототип реалистичной модели умного дома, хотя на следующих стадиях проекта такая модель будет создана и испытана.
Выбор аппаратного обеспечения для прототипа
Для использования в прототипе был выбран компьютер малого форм-фактора Intel NUC Kit DE3815TYKHE. Система эта отличается надёжностью и высокой производительностью. Кроме того, команда сочла, что, являясь одной из самых свежих аппаратных платформ от Intel, рассчитанных на сферу IoT, этот компьютер подойдёт не только для данной версии проекта, но и для возможных будущих его реализаций. Intel NUC основан на процессоре Intel Atom E3815 с пассивной системой охлаждения, оснащён 4 Гб встроенной флэш-памяти (при необходимости к нему можно подключать SATA-накопители) а также – разнообразными портами ввода-вывода. Intel NUC – это компьютер, который, будучи весьма компактным устройством, поддерживающим расширение возможностей, предоставляет функционал на уровне традиционного настольного ПК.
Компьютер Intel NUC Kit DE3815TYKHE и плата Arduino 101
Для того, чтобы упростить процесс взаимодействия с датчиками, команда воспользовалась наработками экосистемы Arduino. В частности, было решено применить платформу Arduino 101. Благодаря ей NUC может взаимодействовать с платами расширения для Arduino, кроме того, такой выбор соответствует духу проекта, нацеленному на максимальное использование открытых технологий. В текущей версии проекта не используется Bluetooth, но Arduino 101 оснащён соответствующим модулем, поэтому было отмечено, что эта возможность может использоваться в будущих версиях проекта.
Вот характеристики компьютера и платы, используемых при построении прототипа:
Характеристика | Intel NUC Kit DE3815TYKHE | Arduino 101 |
Процессор / микроконтроллер | Процессор Intel Atom E3815 (Кэш-память 512 Кб, 1.46 ГГц) | Вычислительный модуль Intel Curie, тактовая частота 32 МГц |
Память | 8 Гб DDR3L-1066 SODIMM (максимум) | 196 Кб флэш-памяти 24 Кб SRAM |
Сетевые возможности / порты ввода-вывода | Интегрированный сетевой адаптер 10/100/1000 Мбит/с | 14 цифровых и 6 аналоговых выводов |
Размеры | 190 мм x 116 мм x 40 мм | 68.6 мм x 53.4 мм |
Спецификация | Полная спецификация | Полная спецификация |
Что касается датчиков и других компонентов, необходимых для создания прототипа, то они взяты из Grove Starter Kit for Arduino (производства Seed Studio), который основан на Grove Starter Kit Plus, используемом в Grove IoT Commercial Developer Kit.
Этот комплект можно приобрести по доступной цене, и, так как он содержит заранее подобранный набор компонентов, его использование уменьшает усилия, необходимые для подбора и покупки материалов для IoT-прототипов. Выбор датчиков и других компонентов для прототипа (подробнее об этом ниже) продиктован необходимостью сбора следующих ключевых данных, жизненно важных для функционирования проекта.
- Состояние входной двери: заперта или нет, закрыта или открыта.
- Состояние гаражной двери: закрыта или открыта, заблокирована или разблокирована.
- События: нажатие на кнопку дверного звонка, запирание и отпирание входной двери, открывание и закрывание входной двери, открывание и закрывание гаражной двери, блокировка гаражной двери.
Спецификация ПО прототипа
В качестве операционных систем для вычислительных устройств, используемых в прототипе, команда выбрала Yocto Linux, а также – IoT Gateway Software Suite. Yocto Linux соответствует целям проекта по использованию бесплатного ПО с открытым кодом, она предлагает высокий уровень гибкости, а так же – надёжный контроль исходного кода и возможность создания собственных сборок встроенных ОС, привязанных к нуждам конкретного проекта. Intel IoT Gateway Software Suite, с другой стороны, даёт готовую реализацию ОС, без необходимости дополнительной настройки. Кроме того, эта система предоставляет функционал Node-RED для нужд разработки. Такая комбинация факторов была признана командой исключительно полезной, в итоге Intel IoT Gateway Software Suite была выбрана в качестве ОС шлюза для прототипа.
В рамках проекта было решено разработать следующие приложения:
- Управляющее приложение, которое будет работать в модели умного дома, собирать показатели датчиков и обрабатывать операции электромеханической части решения (например, открывать и закрывать гаражную дверь), оно же отвечает за обмен данными с пользователем (через административное и мобильное приложения) и с облаком.
- Административное приложение, предназначенное для запуска на компьютере или планшете. Оно предоставляет детальный обзор происходящего в умном доме, в том числе – сведения о событиях и о состояниях объектов. Так же оно будет давать доступ к журналам, к облачным данным и аналитике.
- Мобильное приложение рассчитано на смартфоны и другие мобильные устройства. Оно даст пользователю возможность открывать и закрывать гаражную дверь, а также – наблюдать за тем, что именно происходит дверью: открывается она, закрывается, или заблокирована.
▍Фаза №3. Создание и доводка прототипа
Концептуальный прототип был создан с использованием компьютера Intel NUC Kit DE3815TYKHE, платы Arduino 101 и набора компонентов Grove Starter Kit Plus IoT Edition.
Прототип
Прототип был построен в виде стендовой модели, не подключённой к механическим объектам, таким, как двери. Команда проекта решила, что на данной стадии работы в этом нет необходимости. Вместо этого, например, датчик угла поворота использовался для имитации запирания и отпирания двери, шаговый двигатель символизировал гаражную дверь, а обычная кнопка играла роль дверного звонка, который будет присутствовать в полной модели умного дома.
Вот перечень материалов, использованных на данном этапе работы.
Основная система:
- Intel NUC Kit DE3815TYKHE.
- Arduino 101.
- USB-кабель A-B для подключения платы Arduino 101 к NUC.
Компоненты из Grove Starter Kit Plus IoT Edition.
- Base Shield V2 (базовая плата расширения).
- Gear Stepper Motor with Driver (шаговый двигатель с платой управления).
- Button Module (модуль кнопки).
- Touch Sensor Module (модуль датчика прикосновения).
- Light Sensor Module (модуль датчика освещённости).
- Rotary Sensor Module (модуль датчика угла поворота).
- Red LED (красный светодиод).
- LCD with RGB Backlight Module (ЖК-дисплей с цветной подсветкой).
- Buzzer Module (зуммер).
Кроме того, команда проекта пришла к выводу, что система в модели умного дома должна функционировать даже в том случае, если облачная часть недоступна или связь с интернетом ненадёжна.
Управляющее приложение, используемое в прототипе, было написано на JavaScript. Оно подключается к IBM Bluemix, обменивается данными с облаком. Приложения, административное и мобильное, так же обмениваются данными с облаком для поддержки функций системы. Среди них – открывание и закрывание гаражной двери, запирание и отпирание входной двери, а также – отправка уведомлений о событиях, таких, как срабатывание дверного звонка. Мобильное приложение так же написано на JS, оно рассчитано на веб-браузеры. Сделано это для того, чтобы избежать необходимости переноса приложения на несколько мобильных платформ.
Среда разработки, используемая при создании ПО для этого решения – это Intel XDK IoT Edition, которая входит в поставку Grove IoT Commercial Developer Kit. Кроме того, её можно бесплатно загрузить здесь. XDK позволяет разработчикам создавать, исполнять и отлаживать Node.js-приложения непосредственно на платформах, основанных на архитектуре Intel, в том числе — Intel NUC Kit DE3815TYKHE. Поддерживает эта среда и Node-RED.
Для того, чтобы работать с портами ввода-вывода на NUC, необходимо воспользоваться C/C++ библиотекой MRAA, в которой предусмотрены средства взаимодействия с JavaScript и Python для работы с другими платформами. Она предоставляет структурированное и хорошо продуманное API, где имена и нумерация портов соответствуют аппаратному обеспечению. Кроме того, при разработке ПО для этого решения применялся протокол Firmata, который позволяет организовать программное взаимодействие с окружением разработки для Arduino, пользуясь возможностями аппаратной абстракции Arduino. Библиотека Libmraa позволяет улучшить программный контроль над средствами ввода-вывода на NUC, упрощая процесс сбора показателей датчиков. UPM предоставляет вызовы специальных функций, которые используются для доступа к датчикам.
Прототип умного дома включает в себя кнопку активации для гаражной двери, кнопку и зуммер для дверного звонка, датчик прикосновения, который позволяет определить, открыта или закрыта входная дверь, датчик угла поворота для имитации отпирания и запирания входной двери и ЖК-дисплей с цветной подсветкой, который отображает, закрыты или открыты гаражная и входная двери. Кроме того, когда звонит дверной звонок, на дисплей выводится сообщение. Прототип включает в себя светодиоды, которые используются для показа сведений о том, закрыта или открыта гаражная дверь.
Приложение для прототипа, работающее в среде Node.js, собирает показатели датчиков и выводит сведения на ЖК-дисплей. Если сообщение о том, что дверь открыта (Door Open) отображается на дисплее, загорается зеленый светодиод. Если выводится сообщение о том, что дверь закрыта (Door Close), загорается красный светодиод. Кроме того, приложение может управлять шаговым двигателем для открывания и закрывания гаражной двери, хотя, ради простоты, в прототипе эта функция не реализована.
▍Фаза №4. Создание стабильной бета-версии
Как только прототип, позволяющий доказать работоспособность концепции проекта, был завершён, команда убедилась в том, что его функционал достаточен для реализации на его основе готового продукта. В проекте, на данной фазе его развития, можно выделить следующие основные части:
- Физическая модель дома, которая построена в уменьшенном масштабе. Она включает в себя функциональные части, используемые в решении, а именно, это дверной звонок, входная дверь, гаражная дверь и связанные системы.
- Шлюз на базе архитектуры Intel, который можно найти в свободной продаже. На него установлено собственное программное обеспечение.
- Клиентское приложение, написанное на JavaScript. Оно используется для управления решением в целом, для создания облачной аналитики и работы с ней.
- Облачная часть системы, основанная на IBM Bluemix. Кроме прочего, Bluemix позволяет собирать сведения об особенностях работы решения, и, на их основе, оптимизировать его.
Выбор компонентов для бета-версии
Первый шаг на данном этапе заключается подборе компонентов, которые будут использоваться в готовом продукте.
Подготовка модели умного дома
Так как команда остановилась на варианте создания прототипа в виде модели, было решено построить масштабную модель дома и смонтировать на ней всё необходимое. Для создания модели команда привлекла стороннего специалиста с соответствующим опытом. Вот исходная спецификация модели умного дома и его набросок.
Набросок модели умного дома
Модель дома выполнена в масштабе 1/12 из фанеры, усиленной металлическими вставками. Размер модели – около метра по каждому измерению. Крыша и двери сделаны съёмными – для того, чтобы в ходе испытаний удобно было работать с устройствами, смонтированными внутри.
Вот основные компоненты модели, которые нас интересуют:
- Входная дверь, которую открывают и закрывают вручную. На неё установлены датчики, предоставленные Intel, которые позволяют определять, открыта дверь или закрыта. Также на дверь установлена работающая кнопка дверного звонка.
- Гаражная дверь с автоматическим открыванием и закрыванием. Здесь используются шаговые двигатели и датчики, определяющие, находится ли дверь в полностью открытом или полностью закрытом положении. Здесь же имеется пластиковый ограничитель, который позволяет предотвратить повреждения, если дверь заблокирована.
На этой стадии были приняты и другие важные решения. Они включали в себя выбор серийно производимых датчиков, шлюза, основанного на архитектуре Intel, облачной службы для хранения и анализа данных и программных технологий для клиентского приложения.
Выбор датчиков и других компонентов
Вот список серийно производимых датчиков и сопутствующих компонентов, которыми заменены соответствующие части системы, ранее взятые из Grove Starter Kit.
- IoT-шлюз Dell iSeries Wyse 3290 IoT Gateway.
- USB-кабель A – Micro USB B для подключения контроллера I2C/GPIO к шлюзу.
- Источник питания, 12 В, 10 А, который используется для электропитания системы.
- Разветвитель для цепей постоянного тока (1 – 2), который позволяет подавать питание на шлюз и датчики с одного источника постоянного тока.
- Логический конвертер (двунаправленный адаптер), который позволяет осуществлять конверсию между двумя различными логическими уровнями (например, между 3.3 В и 12 В).
- Расширитель портов IIC в GPIO, построенный на микросхеме PCA9555, позволяет расширить порт I2C в 16 GPIO-выводов.
- Расширитель портов FT4222H USB Eval 2.0 – Quad SPI, который позволяет расширить USB-порт в набор портов SPI, I2C, 4xGPIO.
- Шаговый двигатель Applied Motion NEMA23 High Torque.
- Модуль управления шаговым двигателем Applied Motion STR2.
- Прямоугольный монтажный кронштейн ST12C, который используется для крепления инфракрасных отражателей серии DM.
- Прямоугольный инфракрасный рефлектор Pad RL204-1.
- Фотоэлектрический инфракрасный датчик DMP-0N-1A.
- Магнитный переключатель OMRON GSL-1.
- Кнопка для звонка Grayhill-Inc 30.
- Концевой выключатель с роликом Highly Electric Z15G1704 (3 штуки).
Выбор шлюза
Вот некоторые из факторов выбора шлюза, который планируется использовать в готовом продукте:
- Высокая вычислительная мощность, необходимая для того, чтобы обеспечить стабильный уровень производительности и избежать ошибок, связанных с перегрузками системы во время работы.
- Доступность на рынке. Очевидно, от шлюза зависит весь проект, поэтому выбор устройства, которое непросто приобрести, затормозит работу. Кроме того, выбранный шлюз должен быть доступен в достаточных количествах в расчёте на пока гипотетическую стадию серийного выпуска разрабатываемого продукта.
В итоге для применения на следующих стадиях развития проекта был выбран шлюз Dell iSeries Wyse 3290 IoT Gateway. Он оснащён микропроцессором Intel Celeron N2807 с 1 Мб кэш-памяти и с тактовой частотой до 2.16 ГГц. В устройство установлено 4 Гб оперативной памяти DDR3 (1600 МГц). Шлюз оснащён сетевой картой (10/100/1000 BASE-T), Wi-Fi-адаптером (802.11a/b/g/n/ac) и модулем Bluetooth 4.0 Low Energy. Устройство отличается компактными размерами (69 мм x 197.5 мм x 117 мм) и небольшим весом (2.34 кг).
Выбранный шлюз предоставляет достаточный уровень производительности, причём, не только для проекта в его существующем варианте, но и для будущих версий. Кроме того, устройство легко найти в продаже, а при необходимости, на стадии производства – приобрести в больших количествах.
Команда решила продолжить использование Intel IoT Gateway Software Suite (данное ПО уже использовалось в прототипе). Это совершенно очевидный шаг, в особенности – потому что выбранный шлюз был изначально рассчитан на эту ОС. Более того, и Intel NUC, и Dell iSeries Wyse, могут работать под управлением одной и той же ОС, что упрощает процесс переноса ПО из прототипа системы в её версию, готовую к выпуску. Аналогично, другие важнейшие программные компоненты, такие, как Intel XDK и библиотеки, задействованные в прототипе, остаются неизменными, что упрощает переход проекта к фазе производства.
Вот таблица со сведениями по отслеживаемым состояниям датчиков. Для каждого датчика значение в столбце «Открыто» и «Закрыто» показывает возвращаемый логический уровень, а «Фронт сигнала» — на то, какой фронт сигнала отслеживается.
Датчик | Открыт | Закрыт | Фронт сигнала | Описание |
Инфракрасный датчик | 1 | 0 | Оба | Остановить или возобновить действие с гаражной дверью |
Датчик дверного звонка | 1 | 0 | Задний фронт | Инициировать событие срабатывания дверного звонка |
Датчик открытия или закрытия входной двери | 1 | 0 | Оба | Инициировать события открывания и закрывания двери |
Датчик запирания и отпирания входной двери | 0 | 1 | Оба | Инициировать события отпирания и запирания двери |
Датчик, указывающий на то, что гаражная дверь закрыта | 1 | 0 | Задний фронт | Остановить гаражную дверь, инициировать событие полного закрытия двери |
Датчик, указывающий открыта то, что гаражная дверь открыта | 1 | 0 | Задний фронт | Остановить гаражную дверь, инициировать событие полного открытия двери |
Архитектура системы
На рисунке ниже показана принципиальная схема рассматриваемого решения.
Принципиальная схема решения
▍Фаза №5. Оценка возможностей продукта и расширение функционала
Прежде чем оценить возможности решения для умного дома, команда установила аппаратное обеспечение в модель и настроила программные компоненты системы. Вот, как всё это выглядит.
Система, смонтированная в модели дома
Особенности административного и мобильного приложений
Команда решила, что полезным для всего проекта будет включение в него двух отдельных приложений. Одно – для администрирования, второе – для конечных пользователей.
- Первое – административное приложение-клиент. Оно предназначено для использования системными администраторами, поддерживает функционал тестирования и поиска ошибок и даёт доступ к облачным аналитическим данным.
- Второе – мобильное приложение, предназначенное для конечных пользователей. Оно позволяет управлять дверным звонком и гаражной дверью, позволяет узнать о том, открыты или закрыты двери, а также о том, заперта ли входная дверь.
Реализация административного и мобильного приложений
Вместо того, чтобы создавать несколько версий клиентских приложений для различных платформ (или усложнять проект разработкой кроссплатформенного приложения), команда решила реализовать административное и мобильное приложения на HTML5 и JavaScript, используя Intel XDK IoT Edition. Такой подход позволяет, используя единственную версию приложения, обеспечить поддержку множества аппаратных платформ, с которыми могут работать администраторы и пользователи. Вот основные платформы, на которые ориентировалась команда:
- Устройства, работающие под управлением iOS, в том числе – планшеты iPad и смартфоны iPhone.
- Устройства, на которых установлена Android – различные смартфоны и планшеты.
- Ноутбуки и настольные ПК с Windows или Linux.
Функционал запирания двери
Команда решила, что будет весьма полезным добавить в систему возможность отображения состояния входной двери – заперта она или нет, в дополнение к сведениям о том, открыта она или закрыта, а также о том, открыта или закрыта гаражная дверь. В результате, в спецификацию проекта, которая была передана изготовителю модели, был добавлен дверной замок.
Облачные оповещения
В проект были добавлены следующие возможности, основанные на облачной платформе:
- Когда открывается гаражная дверь, внутри гаража включается свет. Свет автоматически выключается через заданный период после закрывания двери.
- Если гаражная дверь остаётся открытой в течение заданного отрезка времени, пользователю отправляют оповещение.
- Если входная дверь остаётся открытой или не запертой некоторое время, пользователь так же получает оповещение.
Дополнительные методы авторизации для доступа к системе
Существует потенциальная возможность интегрировать практически неограниченное количество способов идентификации пользователей в системе умного дома. Диапазон методов авторизации весьма широк – от применения встроенного в смартфон NFC-чипа, до биометрических датчиков, вроде сканера отпечатков пальцев. Это расширение функциональности в модели реализовано не было, но модульная природа проекта и доступность дополнительных датчиков делают систему авторизации вполне вероятным дополнением в будущем.
▍Фаза 6. Завершение работы и выпуск готового продукта
Основной сферой интересов команды, которая занималась проектом, были его технические аспекты. Дизайн пользовательского интерфейса выходил за рамки ключевых навыков разработчиков, поэтому для его создания привлекли сторонних специалистов, которые участвовали во встречах команды.
Главный экран административного приложения
В ходе этих встреч интерфейс был доработан, в него были включены дополнительные возможности и функции. Например, в интерфейс была добавлена более надёжная система индикации состояния дверей, позволяющая легко понять, закрыта или открыта дверь, заперта она или нет, увидеть, не заблокирована ли дверь. Мобильное приложение было приведено к виду, когда оно стало сильно напоминать обычный брелок для открывания дверей.
Интерфейс административного приложения
Интерфейс административного приложения, показанный на рисунке выше, разработан в расчёте на удобную работу с программой на планшетном компьютере и с учётом того, что администратор с его помощью будет работать с облачными данными. Административный интерфейс включает в себя следующие основные элементы:
- Главное меню, которое содержит следующие кнопки:
- Панель уведомлений отображает уведомления о событиях, связанных со звонком, входной и гаражной дверями. Эти показатели основаны на данных, которыми система обменивается с облаком и сохраняет их там, а не на локальных данных. Здесь выводятся сведения о событиях и о датчиках, которые эти события фиксируют.
- Панель состояния выводит наиболее свежие записи по каждому типу событий с отметками времени.
- Изображение входной двери показывает, открыта она или закрыта, а также содержит анимированный значок, позволяющий понять, заперта дверь или нет. При срабатывании дверного звонка выводятся визуальные уведомления
- Изображение гаражной двери так же анимировано, оно показывает процесс открывания и закрывания двери, а та же – блокировку каким-либо объектом. Если дверь заблокирована, приложение показывает эту блокировку визуально, с помощью анимации, и предотвращает закрытие двери.
Административное приложение, кроме того, выводит всплывающие уведомления о запрошенных действиях, которые нельзя выполнить. Например, такие: «Входная дверь заперта. Сначала её надо отпереть». Уведомление появляется и в том случае, когда пользователь пытается запереть дверь, которая открыта.
Интерфейс мобильного приложения
Интерфейс мобильного приложения, показанный на рисунке ниже, разработан в расчёте на смартфоны. Он позволяет пользователю открывать и закрывать гаражную дверь умного дома. Кроме того, приложение сообщает о состоянии двери, основываясь на запросах к облаку, которые выполняются с частотой один раз в секунду.
Мобильное приложение
Интерфейс мобильного приложения включает в себя следующие основные элементы:
Панель уведомлений показывает, открыта или закрыта гаражная дверь, а также – анимированный процесс открывания или закрывания двери. Кроме того, она, так же с анимацией, показывает, заблокирована ли дверь каким-либо объектом, и, если это так, выводит диалоговое окно с предложением убрать препятствие перед продолжением работы.
Кнопки открывания и закрывания двери, как и следует ожидать, позволяют пользователю дистанционно открывать и закрывать гаражную дверь. Когда кнопку нажимают, приложение передаёт данные в облако, получает оттуда ответ и отображает состояние гаражной двери, основываясь на этом ответе. Административное приложение мгновенно реагирует на действия, которые выполняются с мобильного приложения.
▍Выводы
Структурированный подход, о котором мы рассказали, позволяет превращать идеи в готовые для массового производства продукты. Этим подходом могут воспользоваться все желающие, адаптировав его под нужды собственных проектов. Одно из важных достоинств представленной методики заключается в скорости создания работающих прототипов, основанных на недорогих, доступных компонентах. Это позволяет очень рано, когда в проект ещё вложено не слишком много сил и средств, понять, есть ли у идеи коммерческий потенциал, решает ли она некую важную задачу, стоит ли доводить её до стадии готового продукта. Это ограничивает риски и даёт команде разработчиков свободу во внедрении инноваций.
Надеемся, наш рассказ поможет вам претворить ваши IoT-идеи в жизнь.
Автор: Intel
Советы конечно дельные. Но, может напишите мини заметку, где посоветуете модели роутеров, с самой простой настройкой. Недавно, пытались подключить купленный на famaga Zyxel Keenetic 4G III , но так ума и не хватило). PS: не стоит писать, мол там всё просто. Два взрослых мужика, не смогли настроить.