Intel corporate blog
June 2015 24

T.E.E.T.H. на основе Intel Edison найдёт способ замотивировать вас почистить зубы и отправит отчет в облако

Original author: Nathan Carver
Translation
Как было бы здорово, чтобы кто-то или что-то помогало нам заниматься ежедневными, ну, может не особенно развлекательными, но важными занятиями. Такими как чистка зубов. Например, такое устройство, чтобы подбадривало нас, помогало следить за нашими успехами и было очень просто в использовании.

Вот скажите, всегда ли вы чистите зубы положенные 2 минуты?



В этом DIY-проекте мы переделаем обычную, купленную в магазине подставку для зубных щёток в современную бытовую технику интернета вещей.

Плата Intel Edison обладает небольшим размером и необходимой вычислительной мощностью, чтобы приучать к здоровым привычкам – правильному использованию зубной щётки и пасты.

Уверен, у вас уже есть знания, необходимые для разработки под Intel Edison. Так как эта плата содержит встроенный Wi-Fi и использует node.js для работы со своей аппаратной частью, то вы можете программировать на JavaScript. Это значит, что большинство веб-разработчиков может использовать плату Intel Edison, чтобы быстро начать программировать для интернета вещей.

Шаги, описанные ниже, показывают, как добавить выключатели, экран и сенсоры, чтобы переделать любую подставку для зубных щёток в T.E.E.T.H. (Timer Encouraging Everyone To Health – Таймер, побуждающий каждого к здоровому образу жизни). В исходниках видно, как достаточно простой node.js-проект управляет этими компонентами и подключается к интернету, чтобы использовать облачную аналитику и отправлять почту.

Использование T.E.E.T.H. — умного таймера для зубной щётки


Для начала выньте вашу щётку из держателя. Это подготовит таймер, который будет ожидать, когда вы начнёте чистить зубы. Затем начнётся двухминутный отсчет, и ЖК-экран будет показывать вам слова одобрения. Две минуты – это время чистки зубов, рекомендованное Американской Ассоциацией Дантистов. Экран будет менять цвета и надписи, пока вы не закончите. Не беспокойтесь, если вы чистите зубы с закрытыми глазами, звуковой сигнал прозвучит в начале и в конце процедуры. Таймер остановится, когда вы поставите щётку обратно или когда вы выключите свет, выходя из ванной. После этого подставка сохранит данные вашего таймера в облаке. Если вы достигните цели, она пошлёт email с поздравлением. Потом вы можете зайти в облако и увидеть прогресс для каждой щётки в подставке. Вы можете отслеживать эти IoT-данные, чтобы поощрять здоровые привычки всех домочадцев.

Покупки и планирование


Приблизительное время исполнения проекта: 2-3 часа.
Цена: 75-100 долларов.

Детали, использованные в проекте




Материалы:

  • Подставка для зубных щёток.
  • Процессорный модуль Intel Edison.
  • Плата подключения для Intel Edison.
  • Кнопки-переключатели, по одному на каждую щётку.
  • Пластиковая платформа (по одной для каждой щётки).
  • Резисторы 10к (по одному на каждую щётку, и ещё один для фоторезистора).
  • ЖК-экран с RGB-подсветкой. (http://www.seeedstudio.com/depot/Grove-LCD-RGB-Backlight-p-1643.html?cPath=34_36).
  • Датчик освещения (фоторезистор).
  • Пьезоэлектрический динамик.
  • Аккумулятор с USB-разъёмом.
  • Силиконовый клей или герметик.
  • Исходный код проекта.
  • Монтажные провода.

Инструменты:

  • Компьютер с установленным Intel XDK IoT Edition и USB кабели.
  • Паяльник и припой.
  • Режущие инструменты в зависимости от материала вашей подставки.

Шаги


1. Подготовка подставки


Я выбрал бамбуковую подставку для зубных щёток, поэтому мне было достаточно просто вырезать дырки, необходимые для установки компонентов, и поместить провода, чтобы их не было видно спереди. Инструменты, которые вам понадобятся, зависят от материала подставки. Ну, или вы можете сами сделать подставку.

Установка ЖК-экрана на переднюю стенку


Вырежьте кусок сверху, достаточно большой, чтобы поместился весь ЖК-экран. Затем прорежьте дырку поменьше в этом куске для самого экрана. Вклейте полученную часть обратно в подставку.



Кроме того, вы можете просто прикрутить все компоненты снаружи. Это зависит от вашего чувства прекрасного. Но неважно, как вы это сделаете, главное помнить, чтобы провода от вашего экрана смогли достать до платы Intel Edison, которая будет прикреплена сзади.

Добавим кнопку на дно подставки


Подойдет любой датчик, который сможет определить наличие щётки. Я выбрал кнопку с рычажком, вместо какого-нибудь ИК-сенсора, чтобы минимизировать потребление. Однако, зубная щётка весит всего 15 граммов, поэтому понадобится достаточно чувствительный датчик.

Поскольку выключатель достаточно мал, я добавил пластину, чтобы зубную щётку можно было оставлять в любом месте подставки. Я вырезал пластину из пластиковой перегородки от коробки инструментов (мне кажется, у меня их всегда больше, чем надо, поэтому я просто взял одну из них). Припаяйте провода к выключателю. Один провод к общему пину (земля) и один к нормально замкнутому.



Из-за того, что нажатие на заднюю часть кнопки не приводит к срабатыванию, я установил кнопку так, чтобы её задняя часть фактически была внутри стенки подставки. Также как и с ЖК-экраном, убедитесь, что провода достанут до основной платы. Я просверлил дырки сзади подставки, поэтому провода в основном не видны.

Добавление датчика освещения спереди и пищалки сзади


Приготовьте датчик освещения и пищалку, припаяв соединительные провода достаточной длины, чтобы достать задней стенки, где будет расположена основная плата. Я просверлил дырку спереди, достаточную для светового датчика. Его переднее расположение позволяет точно реагировать на освещение в комнате. Сзади я прорезал дырку побольше для пищалки. Такое размещение позволит минимально изменить внешний вид подставки и издавать громкий звук по утрам.



Защита чувствительной электроники от воды


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



Подсоединение компонентов к основной плате


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



Используйте следующую схему соединения компонентов к пинам на монтажной плате.



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

Прим. пер. – У вас есть четыре способа подключить кнопки. Но в зависимости от их подключения, возможно, придётся поменять исходный код, так как он настроен на появление «0» при нажатии кнопки:


Фоторезистор подключается по такой схеме:


Добавим процессорный модуль Intel Edison к основной печатной плате. Железная часть вашего проекта почти закончена. Вскоре мы добавим батарейку. На данный момент ваш проект должен выглядеть как-то так.



2. Подготовка платы Intel Edison и Облачного сервиса


Запуск платы Intel Edison описан на сайте Intel IoT. Чтобы подсоединить компьютер к плате, следуйте инструкциям http://intel.com/Edison/getstarted

Настройка Wi-Fi


Так как наш проект использует Wi-Fi для соединения с облаком и отсылки почты, надо будет соединить плату с Wi-Fi-роутером. Это достаточно просто сделать, используя утилиту configure_edison, которая уже есть на плате Intel Edison. Больше информации можно получить из intel.com/Edison/getstarted

Настройка аккаунта IoT Analytics


Этот проект использует Intel IoT Developer Kit Cloud-based Analytics, чтобы хранить данные в облаке. Вы можете настроить аккаунт по ссылке https://dashboard.us.enableiot.com/v1/ui/auth#/login

Добавление компонентов к облаку


После того как вы зарегистрируете вашу плату Intel Edison на IoT Analytics, вы должны приготовить облако для ваших данных, создав специальные компоненты. Создайте по одному компоненту для каждой зубной щётки. Имена, которые вы дадите компонентам, будут именами, которые показываются в отчёте. Следуйте инструкциям по созданию компонентов https://software.intel.com/en-us/intel-iot-developer-kit-cloud-based-analytics-user-guide

Регистрирование компонентов на плате Intel Edison


Когда компоненты созданы в панели управления IoT Analytics, вам надо зарегистрировать их на плате. Имена, которые вы используете на этом шаге, будут использоваться в исходном коде, который посылает данные в облако. Вот ссылка на подобные инструкции по регистрации компонентов на плате https://software.intel.com/en-us/intel-iot-developer-kit-cloud-based-analytics-user-guide

Запуск Intel агента на плате Intel Edison


Плата Intel Edison использует встроенный сервис для взаимодействия с облаком. Этот сервис должен быть запущен, чтобы программа соединялась и посылала данные. После того как вы последуете инструкциям по ссылке выше, вы сможете протестировать, что плата может соединиться с облаком и посылать данные вашим компонентам.

3. Программирование платы Intel Edison


Ну, раз аппаратная часть и сервисы готовы, время загрузить на плату исходный код T.E.E.T.H.

Подключение к плате из Intel XDK IoT Edition


Среда разработки Intel XDK IoT Edition позволяет строить Node.js проекты на плате. Она поставляется с кучей проектов-примеров. Документация доступна здесь https://software.intel.com/en-us/html5/documentation/getting-started-with-intel-xdk-iot-edition

Загрузка программы


Загрузите или клонируйте исходники с GitHub. Файлы имеют структуру небольшого node.js-проекта https://github.com/ncarver/TEETH

  • readme.md – документация и лицензия;
  • package.json – описатель проекта и зависимых библиотек;
  • main.js – основной код, необходимый для запуска T.E.E.T.H.;
  • node_modules – директория с зависимыми библиотеками, созданная, когда вы первый раз построите проект.

Настройка службы SMTP


В начале файла main.js определяется несколько констант. Вы можете изменить их, чтобы они соответствовали параметрам вашего домашнего окружения и вашим предпочтениям. Как минимум, вам надо изменить значения для MAIL.user, MAIL.pass, and MAIL.brushTo. Эти свойства определяют, как почтовый сервер SMTP соединяется с интернетом и куда должен слать письма T.E.E.T.H.



Использование имен зарегистрированных аналитических компонент


Используйте имена, которые вы зарегистрировали в панели управления IoT Analytics в секции констант, METRICS.brushComponent. Это массив всех компонент, использованных в вашем проекте. У меня он состоит из двух элементов.



Больше, ещё больше зубных щеток


Если вы построили подставку более чем для двух щёток, вам надо будет изменить секцию констант, чтобы код соответствовал этому. Код использует массив структур со значениями специфичными для щёток. Добавьте дополнительные элементы массива для каждой щётки, такие константы как: METRICS.brushComponent, MAIL. brushTo.PINS.brushSwitch, SCREEN_MSG.brushName, TIME.brushPreptime, and TIME.brushGoaltime.

4. Разбор исходного кода


Хотя было возможно разбить проект на несколько файлов по модулям, мне кажется, будет проще, если всё будет находиться в одном файле main.js. Этот проект не требует много кода, поэтому дополнительные файлы могут только усложнить понимание.

Требуемые библиотеки


Так как у нас node.js-проект, то используются дополнительные модули для взаимодействия с железом, демоном аналитики и почтой.

constants


Эта единственная секция, в которой надо что-то редактировать. Измените эти константные значения для изменения цвета сообщений на экране, текста писем и временных интервалов.

timers


Для простоты все таймеры хранятся как глобальные объекты. Это позволяет при вызове методов из setTimeout и setInterval всегда иметь доступ к таймерам.

Logger


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

Sensors


Используя класс Sensors, вы увидите, как просто работать с пинами ввода/вывода. Состояние выключателей под зубными щётками и значение фоторезистора считываются в этом классе.

Buzzer


Большая часть кода в классе Buzzer нужна для воспроизведения щебечущего звука и используется при запуске и остановке таймера.

Screen


Класс Screen отвечает за все команды к ЖК-экрану. У него две обязанности — показывать текстовые сообщения и изменять цвет фоновой подсветки.

Mailer


Класс Mailer использует nodemailer для отправки почты, используя SMTP. Он содержит проверку ошибок, если невозможно послать письмо.

Metrics


Класс Metrics использует локальный сокет на плате, чтобы послать аналитические данные демону iotkit-agent. Если возникает ошибка соединения, на консоль посылается сообщение об ошибке.

Teeth


Это главный класс, содержащий всю логику проекта. Teeth вызывает класс Sensors для мониторинга кнопок и света, класс Buzzer для воспроизведения звука, класс Screen для показа сообщений, класс Mailer для посылки почты, класс Metrics для обновления IoT Dashboard. Если вы хотите изменить возможности вашего устройства, надо обновить этот код.

5. Протестируем


Потратьте некоторое время для тестирования платы и подставки для щеток, пока они подсоединены к компьютеру. Это наиболее простой путь, так как можно увидеть консольный вывод.

Проверка сенсоров и дисплея


Используйте кнопку Install/Build в Intel XDK IoT Edition для того, чтобы загрузить исходный код на плату и запустить NPM для постройки node-проекта. Нажмите кнопку Run для запуска T.E.E.T.H.

Протестируйте подставку, используя зубную щётку для каждой кнопки на подставке. Вы должны увидеть, что ЖК-экран включается, и вы можете следить за консольным выводом. Также пищалка должна бибикнуть и таймер должен выключиться, если вы закроете датчик освещения.

Проверка почты


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

Просмотр аналитики


Используйте все зубные щётки на вашей подставке, чтобы протестировать каждую кнопку. Залогиньтесь в панель управления, чтобы убедиться, что вы видите все настроенные компоненты.

6. Добавим питание


Наконец-то вы готовы отсоединить плату Intel Edison от вашего компьютера и поместить подставку для щёток на раковину в ванную комнату как автономное IoT устройство.

Присоединение аккумулятора


Используйте аккумулятор с USB-разъемом, чтобы запитать плату. Мне такой подарили на конференции. Он предназначен для заряда сотового телефона, но замечательно работает и в этом проекте. Я оставил его USB-порт доступным для зарядки.



Финальный шаг


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



Двигаемся дальше


В этом проекте мы только начали получать преимущества от использования беспроводного интернета и облачных данных на платформе Intel Edison. Исходный код может быть легко модифицирован для использования других технологий. Может быть, вы захотите послать твит вместо письма. Или вы захотите использовать другой облачный сервис вместо IoT Analytics, например, Xively. Даже звук запуска и остановки таймера может быть заменён на ваш любимый mp3-файл, который будет послан на динамик. Вы можете быстро внести эти изменения, просто заменяя одни модули другими, которые вы хотите использовать.

Но эту умную подставку для щёток можно сделать ещё более умной. Например, как домашние системы Nest. Сейчас данные только передаются наружу в облако, но взяв эти данные как входные для таймера, они станут средством обучения. Например, если вы никогда не чистите полные две минуты, таймер поставит более короткую цель, и будет увеличивать её понемногу при каждом успехе. И вместо использования фиксированных временных интервалов, сенсор, который реагирует на внешний звук чистки зубов, может сам адаптироваться к вашим привычкам. Но даже без каких-либо дополнений это большой проект по привнесению IoT в достаточно важное помещение в вашем доме. Подумайте, это может быть первая часть движения «Ванная комната 2.0».

Об авторе


Натан Карвер пришёл в область IoT извилистой дорогой. Начиная клоуном в Ringling Brothers, сейчас он вице-президент по инженерии в Crisp Media – мобильной рекламной компании, где он работает с веб-технологиями и технологиями больших данных. Предыдущая работа включала запуск отдела профессионального сервиса, основание софтверной компании, исполнение музыки на пиле («Singer and Saw») и хождение под парусом по реке Гудзон. Он живет в Нью-Йорке. Его другие проекты доступны на Github.
+13
9.7k 41
Comments 21