Открытая платформа для создания заботливой квартиры
Чтобы не пропустить момент пробуждения вашего малыша, совсем необязательно покупать дорогую радионяню. Вы легко можете собрать аналог из стандартных модулей и микрофона, итак, вам потребуется
Название | Назначение | Цена, руб. |
---|---|---|
BLE CC41-A | Радиомодуль Bluetooth LE | 150 |
Arduino Pro Mini | Микроконтроллер для детектирования плача | 135 |
Микрофон | Чувствительный микрофон | 60 |
Запитать устройство можно от двух батареек AA. Разместить компоненты можно внутри или снаружи какой-то игрушки, чтобы не смущать спящего малыша.
Программируем микроконтроллер
О том как настроить Arduino IDE и подключить микроконтроллер к ПК читайте в этой коротенькой инструкции. Для компиляции программы необходимо загрузить библиотеку CC41A и добавить в Arduino IDE через меню Sketch - Install library.
#include <cc41a.h>
#include <LowPower.h>
#define SENSOR_PIN A3
#define MAX_NOISE_LEVEL 600
#define NOISE_DURATION_SECS 3
CC41A ble(7, 6, 8); // RX, TX, Reset
int noiseTimeline[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
int mode = 0;
int waitForReset = 0;
void setup() {
ble.configure("Noise-1");
}
void loop()
{
// fall a sleep
LowPower.powerDown(SLEEP_250MS, ADC_OFF, BOD_OFF);
delay(50);
pinMode(SENSOR_PIN, INPUT);
int sensorValue = analogRead(SENSOR_PIN);
// store noise history
for( int i = sizeof(noiseTimeline) / sizeof(int); i > 1; i-- ) {
noiseTimeline[i - 1] = noiseTimeline[i - 2];
}
noiseTimeline[0] = sensorValue > MAX_NOISE_LEVEL ? 1 : 0;
// calculate times of noise detected
int noiseTimes = 0;
for( int i = 0; i < sizeof(noiseTimeline) / sizeof(int); i++ ) {
noiseTimes += noiseTimeline[i];
}
switch( mode ) {
case 0: // waiting for noise
if ( noiseTimes >= NOISE_DURATION_SECS ) {
ble.major(1);
mode = 1;
waitForReset = 30;
}
break;
case 1: // waiting for reset
if ( --waitForReset < 1 ) {
ble.major(0);
mode = 0;
}
break;
}
}
Собираем по схеме
Программируем HASS
Файл: /config/configuration.yaml
binary_sensor:
- platform: cutecare
name: Noise sensor
mac: 00:15:84:00:6F:40
notify:
- name: baby_monitor
platform: pushbullet
api_key: YOUR_API_KEY
alert:
baby_monitor:
name: Notify when baby is crying
entity_id: binary_sensor.noise_sensor
repeat: 20
notifiers:
- baby_monitor
Для получения уведомлений необходимо зарегистрироваться в сервисе Pushbullet, установить приложение на телефон и в конфигурации HASS значение YOUR_API_KEY заменить на ключ, который можно получить в настройках сервиса.