![](https://habrastorage.org/files/870/6bf/d90/8706bfd90813434991c09e44812cae87.png)
Сейчас на рынке много носимых устройств, так почему бы не сделать что-нибудь для новорождённых. Все беспокоятся о своих детях по поводу здоровья, температуры, окружения. За детьми надо следить круглосуточно, что не всегда возможно. Часто оба родителя работают, а им ещё надо делать домашние дела и спать. Поэтому им бы очень пригодилась моя умная система слежения за ребёнком – «Smart Baby Monitoring System». Она сможет следить за здоровьем и предупреждать, есть случается что-то особенное.
Модуль Intel Edison достаточно мал для создания такого носимого устройства. Есть большой выбор языков программирования и сред разработки. Также он имеет встроенный Wi-Fi и Bluetooth, которые тоже могут быть полезны.
Наше устройство Smart Baby Monitor будет уметь:
- Следить за ребёнком, если он спит или играет.
- Сообщать родителям, если он плачет.
- Следить за температурой.
- Сразу сообщать, если температура будет ненормальной.
- Показывать данные визуально.
- Давать просматривать данные удалённо.
Нам потребуются:
- Модуль Intel Edison.
- Плата расширения Arduino.
- Аналоговый микрофон.
- Датчик температуры.
- ЖК-экран 16x2.
- Блок питания.
- USB-кабель.
- Провода.
![](https://habrastorage.org/files/84b/b53/c20/84bb53c205de431b810f6ac8ce24da76.jpg)
Аналоговый микрофон — это простой звуковой датчик, который определяет громкость окружающего звука. В этом проекте я использовала датчики Grove из набора Grove Base Shield. Программу мы будем писать в Intel XDK IoT Edition, используя Node.js.
Подключаем
- Подключите датчик звука к разъему A0.
- Подключите датчик температуры к A1.
- Подключите ЖК-экран к одному из I2C-портов.
- Подключите Edison к блоку питания и к вашему компьютеру USB-кабелем.
- Через 30 секунд система должна загрузиться.
Программирование
- Откройте Intel XDK IoT edition. Если он ещё не установлен на вашем компьютере, скачайте его.
- Если вы прошивали плату Intel Edison новой прошивкой, то у вас уже должен быть установлен Node.js.
- Подключите IDE к плате Edison. Вас спросят имя пользователя и пароль, которые вы должны были установить ранее при конфигурировании платы.
![](https://habrastorage.org/files/6cd/d06/127/6cdd0612747949459a4f1c550e1ffafa.png)
Выберите шаблон пустого проекта и создайте новый проект.
![](https://habrastorage.org/files/d7b/f39/f87/d7bf39f87aeb4548a71057de161b6153.png)
Код для микрофона:
function readSoundSensorValue() {
var buffer = new upmMicrophone.uint16Array(128);
var len = myMic.getSampledWindow(2, 128, buffer);
if (len)
{
var thresh = myMic.findThreshold(threshContext, 30, buffer, len);
myMic.printGraph(threshContext);
if (thresh)
console.log("Threshold is " + thresh);
v.saveValue(thresh);
if(thresh>50 && thresh<150)
showNormalLCD();
if(thresh>=150)
showLCD();
if(thresh<50)
showSleepLCD();
}
}
setInterval(readSoundSensorValue, 1000);
![](https://habrastorage.org/files/8ad/7b9/26e/8ad7b926ec824327a48c0d6bacbf95ed.png)
Код для датчика температуры:
var temp = new groveSensor.GroveTemp(1);
console.log(temp.name());
var i = 0;
var waiting = setInterval(function() {
var celsius = temp.value();
var fahrenheit = celsius * 9.0/5.0 + 32.0;
console.log(celsius + " degrees Celsius, or " +
Math.round(fahrenheit) + " degrees Fahrenheit");
i++;
if (i == 10) clearInterval(waiting);
}, 1000);
Посылка данных в облако
var ubidots = require('ubidots');
var client = ubidots.createClient('YOUR-API-KEY');
client.auth(function () {
this.getDatasources(function (err, data) {
console.log(data.results);
});
var ds = this.getDatasource('xxxxxxxx');
ds.getVariables(function (err, data) {
console.log(data.results);
});
ds.getDetails(function (err, details) {
console.log(details);
});
var v = this.getVariable('xxxxxxx');
v.getDetails(function (err, details) {
console.log(details);
});
v.getValues(function (err, data) {
console.log(data.results);
});
Я использую Ubidots для работы с IoT-облаком. С помощью Ubidots мы сможем эффективно визуализировать данные. Он поддерживает широкий список устройств и может выполнять некоторые действия, например, посылку почты и SMS-сообщений. Также он предлагает API, который позволит нам ускорить разработку для нашего языка программирования. Я выбрала библиотеку Node.js, чтобы взаимодействовать с Edison.
Настройка Ubidots
- Войдите в ваш аккаунт Ubidots или создайте новый на ubidots.com.
- Выберите вкладку «Source» и нажмите «Add Data Source», чтобы создать новый источник данных. Мы добавим «My Edison».
![](https://habrastorage.org/files/849/74f/183/84974f1839bc4d84ba1075b5b1feb72a.png)
![](https://habrastorage.org/files/c65/942/016/c65942016cf1408b93e3fc989fa3e652.png)
Источник данных выбран, теперь мы должны добавить переменные. В этом проекте мы собираемся посылать данные от температурного датчика и звукового, поэтому мы создадим две переменные.
![](https://habrastorage.org/files/482/938/1bd/4829381bdef24e10b0b8f84a8d19baad.png)
Нажмите на переменную и скопируйте её идентификатор. Вставьте его в свой код.
![](https://habrastorage.org/files/02d/240/607/02d240607cea46e1851e2c2d40742f5a.png)
Выберите ключи из My Profile -> API Keys:
![](https://habrastorage.org/files/351/dd5/4ad/351dd54adfea4c1e80f26b3c5cf00bbc.png)
На вашей панели управления выберите элементы просмотра, в зависимости от того, как вы хотите визуализировать данные. Я выбрала стрелочный вид для звукового сенсора и график для температуры. Глядя на стрелочный прибор вы можете легко определить громкость звука и соответственно активность вашего ребёнка, а при помощи графика вы можете увидеть изменение температуры.
Постройте, загрузите и запустите ваше приложение на Edison. Вы увидите значения датчиков в отладочной консоли, и если всё работает правильно, то заметите, что данные посылаются в облако Ubidots. Перейдите к панели управления Ubidots, там вы должны увидеть все данные, которые были посланы. Я также создала оповещения, если звуковой уровень превышает некоторый порог (это означает, что ребёнок плачет). Предупреждение будет послано на мобильный телефон по SMS.
![](https://habrastorage.org/files/870/6bf/d90/8706bfd90813434991c09e44812cae87.png)
![](https://habrastorage.org/files/ca4/bf4/a35/ca4bf4a350ef47fa9a48ff6abafd9738.jpg)
![](https://habrastorage.org/files/33c/673/bdd/33c673bddd594df3822dccf67e01300e.jpg)
![](https://habrastorage.org/files/71b/6fe/fdc/71b6fefdc89d4bd5b65359a3915b8ceb.jpg)
![](https://habrastorage.org/files/108/d03/17c/108d0317c7df4970a4918aab67966411.png)
Планы
Когда дело касается детей, ничего не может быть слишком много. Я планирую продолжить работу над этой системой, например, постараюсь увеличить чувствительностью и улучшить предупреждения.
Комментарии (3)
totuin
02.02.2016 09:16Согласен с предыдущим комментарием. И есть ещё второй вопрос. А зачем здесь Intel Edison. Дорогущая штука. С данной задачей вполне справится любая ардуинка с ценой наверное в сотню раз меньшей.
Единственное предположение — Вам плату под обзор дали. Но тогда и задачу надо придумывать более серьёзную, что бы раскрыть потенциал Intel Edison и показать что эта плата может решить задачи не доступны другим платформам.
sim-dev
На что только человек не готов пойти, лишь бы ничего не делать!
Лично я своим внукам никогда в жизни на руку-ногу и даже в изголовье не поставлю гигагерцовый излучатель, даже и маломощный! Количество детей, заболевающих раком во всем мире очень большое, тенденция роста заболеваемости вообще этим недугом склонна к росту — неужели этого недостаточно, чтобы насторожиться?
Ну сэкономите вы в своей жизни 15-20 минут (5 подходов к спящему ребенку для контроля), это что-то изменит в ней? А если выяснится, что на самом деле все-таки излучение влияет — что тогда? Неужели 20 минут в день стоят того, чтобы рисковать нарваться на шанс сделать из собственного ребенка инвалида?!
Неужели самому не приятно лишний раз поглядеть, как малыш сопит в кроватке? Неужели поиграть с ним — это такое неимоверное усилие, что надо только наблюдать по сети за этим?! Неужели в дисплей смартфона милее пялиться?! Что происходит с нами?!
roboter
«на руку-ногу»? — да скоро такое под кожу загонять начнут!