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

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

От скажіть, чи завжди ви чистите зуби покладені 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.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.