Сейчас на рынке много носимых устройств, так почему бы не сделать что-нибудь для новорождённых. Все беспокоятся о своих детях по поводу здоровья, температуры, окружения. За детьми надо следить круглосуточно, что не всегда возможно. Часто оба родителя работают, а им ещё надо делать домашние дела и спать. Поэтому им бы очень пригодилась моя умная система слежения за ребёнком – «Smart Baby Monitoring System». Она сможет следить за здоровьем и предупреждать, есть случается что-то особенное.
Модуль Intel Edison достаточно мал для создания такого носимого устройства. Есть большой выбор языков программирования и сред разработки. Также он имеет встроенный Wi-Fi и Bluetooth, которые тоже могут быть полезны.
Наше устройство Smart Baby Monitor будет уметь:
- Следить за ребёнком, если он спит или играет.
- Сообщать родителям, если он плачет.
- Следить за температурой.
- Сразу сообщать, если температура будет ненормальной.
- Показывать данные визуально.
- Давать просматривать данные удалённо.
Нам потребуются:
- Модуль Intel Edison.
- Плата расширения Arduino.
- Аналоговый микрофон.
- Датчик температуры.
- ЖК-экран 16x2.
- Блок питания.
- USB-кабель.
- Провода.
Аналоговый микрофон — это простой звуковой датчик, который определяет громкость окружающего звука. В этом проекте я использовала датчики 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. Вас спросят имя пользователя и пароль, которые вы должны были установить ранее при конфигурировании платы.
Выберите шаблон пустого проекта и создайте новый проект.
Код для микрофона:
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);
Код для датчика температуры:
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».
Источник данных выбран, теперь мы должны добавить переменные. В этом проекте мы собираемся посылать данные от температурного датчика и звукового, поэтому мы создадим две переменные.
Нажмите на переменную и скопируйте её идентификатор. Вставьте его в свой код.
Выберите ключи из My Profile -> API Keys:
На вашей панели управления выберите элементы просмотра, в зависимости от того, как вы хотите визуализировать данные. Я выбрала стрелочный вид для звукового сенсора и график для температуры. Глядя на стрелочный прибор вы можете легко определить громкость звука и соответственно активность вашего ребёнка, а при помощи графика вы можете увидеть изменение температуры.
Постройте, загрузите и запустите ваше приложение на Edison. Вы увидите значения датчиков в отладочной консоли, и если всё работает правильно, то заметите, что данные посылаются в облако Ubidots. Перейдите к панели управления Ubidots, там вы должны увидеть все данные, которые были посланы. Я также создала оповещения, если звуковой уровень превышает некоторый порог (это означает, что ребёнок плачет). Предупреждение будет послано на мобильный телефон по SMS.
Планы
Когда дело касается детей, ничего не может быть слишком много. Я планирую продолжить работу над этой системой, например, постараюсь увеличить чувствительностью и улучшить предупреждения.