ARDUINO Напоминалка с пищалкой/вибрацией

Как вам устройство?

  • Полезная штука, пригодится

  • Хорошая идея, но нужно привести в нормальный вид

  • Норм но не более

  • Так себе

  • Вообще не понял, что это и зачем нужно

  • Вызывает негатив


Результаты будут видны только после голосования.

EandV

★★★✩✩✩✩
4 Авг 2018
271
134
Всем привет!

Я сделал ещё один незамысловатый девайс. Решил сюда тоже выложить.

Цель устройства – через определенный промежуток времени запищать/завибрировать и напомнить мне, что пора встать из-за компа(например) и немного размяться.
Осталось только в корпус оформить...

IMG_20181225_084309.jpg

Почему не использовать для этого, например таймер в телефоне, спросите Вы? На работе не хочу отвлекать окружающих. Пищалку я заменю на вибрационный двигатель для мобильных телефонов. Будет лежать в кармане и в указанное время начинать вибрировать. Опять таки можно для этой цели использовать разные приложения для телефона, которые включают вибрацию в нужное время. Проблем в том, что на работе телефон лежит на столе в основном.

Ну и наверно основная причина – мне тупо хотелось что-то сделать, а за сложные проекты пока браться не хочется.


В устройстве 2 переключателя:
1. Вкл/Выкл
2. Переключение работы режимов 40мин/10 мин

После того как устройство запищит/завибрирует выключается отключением питания.

Есть 2 светодиода, которые показывают, какой режим выбран.
Для экономии энергии светодиоды зажигаются только при нажатии тактовой кнопки.

Зарядка внешняя (TP4056 слегка переделанный на зарядку низким током)

Схема:
Digi_buzz_bb.jpg



За основу взят скетч Гайвера для простого автополива. Т.к. таймер вотчдога кривой, во временные интервалы внесены поправки. Сейчас погрешность примерно +/-30 секунд, что меня в целом устраивает.
Скетч:

C++:
long PERIOD;
int sensorValue = 0;
uint32_t mainTimer, myTimer;

#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#define adc_disable() (ADCSRA &= ~(1<<ADEN)) // disable ADC (before power-off)
#define adc_enable()  (ADCSRA |=  (1<<ADEN)) // re-enable

void setup() {
pinMode(0,OUTPUT); // P0
pinMode(1, INPUT); // P1
sensorValue = digitalRead(1);
PERIOD = 2100;
if (sensorValue  == 1) {
PERIOD = 530;
}
adc_disable();          // отключить АЦП (экономия энергии)
wdt_reset();            // инициализация ватчдога
wdt_enable(WDTO_1S);    // разрешаем ватчдог
  // 15MS, 30MS, 60MS, 120MS, 250MS, 500MS, 1S, 2S, 4S, 8S
WDTCR |= _BV(WDIE);     // разрешаем прерывания по ватчдогу. Иначе будет резет.
sei();                  // разрешаем прерывания
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // максимальный сон
}

void loop() {
mainTimer++;
if ((long)mainTimer - myTimer > PERIOD) {   // таймер периода
      myTimer = mainTimer;                // сброс таймера
     digitalWrite(0, HIGH);            // врубить
    }
  sleep_enable();   // разрешаем сон
  sleep_cpu();      // спать!
}
ISR (WDT_vect) {
  WDTCR |= _BV(WDIE); // разрешаем прерывания по ватчдогу. Иначе будет реcет.
}
IMG_20181225_084317.jpgIMG_20181224_201429.jpg
 

BoronnikovAI

✩✩✩✩✩✩✩
3 Авг 2018
17
8
Прикольно выглядит, но думаю, что корпус всему этому делу не помешал бы)
 
  • Лойс +1
Реакции: ParamonD

EandV

★★★✩✩✩✩
4 Авг 2018
271
134
Прикольно выглядит, но думаю, что корпус всему этому делу не помешал бы)
Однозначно. Как вариант хочу попробовать футляр для зубной щетки в качестве корпуса. Ну или тупо всё обмотаю изолентой (возможно даже синей)
 

Я Я

★✩✩✩✩✩✩
9 Янв 2019
9
19
Нужная штуковина. Надо сыну сделать, только еще, через задержку 15 сек, электрошокер в кресло вмонтировать.)))
 
  • Лойс +1
Реакции: ParamonD