Каталог товаров
Клиенту
Тема сайта:
+38 (066) 305-77-25
Наш адрес
Харьков, времено - только доставка Новой Почтой, УкрПочтой, МистЕкспрес, ROZETKA Delivery
Телефоны:
Время работы
  • Пн-Пт: с 9 до 18
  • Сб.: с 10 до 17
  • Вс: с 11 до 16
E-mail
Мы в соцсетях
Перейти в контакты
0 0
Каталог
Главная
Закладки
0
Сравнить
0
Контакты

Умная таблетка

Чи була корисною ця стаття?
Умная таблетка
🔮 Умная Таблетка

Когда Arduino заботится о вашем здоровье лучше бабушки

Умная таблетка — это не то, о чем вы подумали! Это не таблетка из Голливуда, которая делает вас гением за одну ночь (жаль, правда?). Это устройство, которое позаботится о том, чтобы вы вовремя выпили свою обычную таблетку. Особенно полезно для тех, у кого жизнь зависит от лекарств (диабет, щитовидная железа и т.д.), или для тех, кто каждое утро час вспоминает: "А я уже выпил таблетку или нет?" 🤔

Устройство получилось настолько простым, что его может собрать даже ваш кот (если научите его паять). Все компоненты легко найти на myproject.com.ua — вашем надежном поставщике электронных чудес!

Интересный факт №1:

По статистике, около 50% людей забывают принимать лекарства вовремя. Это значит, что каждый второй из нас нуждается в таком устройстве. Или в хорошей памяти. Но устройство надежнее! 😄

🛠️ Что нам понадобится

ESP32 D1 Mini — мозг нашей операции
Датчик препятствий HW201 — глаз Саурона для ваших таблеток
Пара светодиодов — для дискотеки в 5:30 утра
Переключатель — чтобы был контроль над ситуацией
CKCS BS01 Мини повышающий модуль DC-DC — энергетик для электроники
Аккумуляторы 18650 — чем больше, тем лучше (у меня 4, потому что я параноик)
TP4056 — зарядный модуль
Бузер — будильник для соседей
Универсальный корпус от myproject — домик для нашего Франкенштейна

⚡ Схема подключения

Схема настолько проста, что ее поймет даже ваша бабушка (если она инженер-электронщик):

Схема подключения
Схема подключения — проще, чем собирать LEGO

Сначала я собирал все на макетной плате (как настоящий профессионал, который не доверяет себе с первого раза), протестировал все, убедился, что ничего не дымит, и только потом запихнул в корпус.

Интересный факт №2:

ESP32 имеет больше вычислительной мощности, чем компьютер, который отправил человека на Луну. И мы используем его, чтобы напомнить о таблетке. Прогресс! 🚀

🔨 Собираем корпус

Делаем в крышке пару отверстий под крепление датчика и еще одно под светодиод. Дрель в руки — и вперед! Только не перепутайте с крышкой от кастрюли.

Подготовка корпуса
Корпус с отверстиями — искусство минимализма

С торца делаем выход под зарядку аккумуляторов и переключатель. Это как USB Type-C, только сделанный вами!

Торец корпуса
Элегантное решение для зарядки

И внутри все с помощью паяльника и клеевого пистолета соединяем. Да, клеевой пистолет — это профессиональный инструмент, не слушайте скептиков!

Внутренняя сборка
Организованный хаос внутри

Важно! Перед загрузкой кода обязательно отключите напряжение аккумуляторов от питания ESP32! Иначе ваш компьютер может устроить вам сюрприз в виде синего экрана смерти.

💻 Программирование

Теперь самое интересное — оживляем нашего Франкенштейна! Сначала вводим свои логин и пароль от WiFi (да, устройство будет знать ваш пароль, но обещает никому не рассказывать):

const char* ssid = "ваш_wifi";
const char* password = "ваш_супер_секретный_пароль";

Далее устанавливаем время, когда нужно выпить таблетку. У меня это 5:30 утра (да, я мазохист):

if (currentHour == 05 && currentMinute == 30 && !hasAlarmTriggeredToday) {
    // Время вставать и принимать лекарства!
}

Лайфхак: Если для вас критично выпить таблетку точно вовремя — подключайте бузер к 19-му пину, а светодиод к 17-му. Если вы более расслабленный человек — можете подключить наоборот. Или вообще не подключать (шучу, подключайте!).

Интересный факт №3:

Инфракрасные датчики были изобретены для военных целей, а теперь следят за вашими таблетками. Вот такая демилитаризация! 🕊️

🎯 Как это работает

Кладете упаковку с таблетками на 2 ИК-светодиода датчика. Датчик думает: "О, что-то есть!" и спокойно ждет.

Каждый день в 5:30 начинают мигать светодиоды (желательно ультраяркие, чтобы разбудить не только вас, но и соседей). Или пищит бузер — зависит от вашего уровня садизма.

Если вы взяли упаковку и она была отсутствующей на датчике больше 5 секунд, система думает: "Молодец, выпил!" Светодиоды перестают мигать, бузер радостно пикает, подтверждая вашу дисциплинированность.

После этого устройство засыпает до следующего дня, как кот после обеда. И так каждый день — ваш персональный электронный напоминатель!

💡 Бонус: Код можно легко переделать, чтобы устройство срабатывало 2-3 раза в день. Для тех, кто любит таблетки больше конфет!

📝 Полный код для Arduino IDE

#include <WiFi.h>
#include <time.h>

// --- НАСТРОЙКИ WI-FI ---
const char* ssid = "test";
const char* password = "12345678mimi";

// --- НАСТРОЙКИ ВРЕМЕНИ (КИЕВ) ---
const char* ntpServer = "ua.pool.ntp.org";
const long  gmtOffset_sec = 7200;      // UTC+2
const int   daylightOffset_sec = 3600; // Летнее время

// --- НАСТРОЙКИ ПИНОВ ---
const int sensorPin = 16; // GPIO16
const int ledPin = 19;    // GPIO19
const int ledPin2 = 17;   // GPIO17

// --- ПЕРЕМЕННЫЕ СОСТОЯНИЯ ---
bool isAlarmActive = false;        // Активна ли "тревога" (мигание)
bool hasAlarmTriggeredToday = false; // Сработала ли тревога сегодня

// --- ПЕРЕМЕННЫЕ ДЛЯ ЛОГИКИ ---
int previousSensorState = 0;             // Предыдущее состояние датчика
unsigned long lastSensorChangeTime = 0;  // Время последнего изменения состояния датчика

// --- ПЕРЕМЕННЫЕ ДЛЯ МИГАНИЯ БЕЗ delay() ---
unsigned long previousBlinkMillis = 0;
const long blinkInterval = 800; // Интервал мигания в мс
int ledState = LOW;

void setup() {
  Serial.begin(115200);
  pinMode(sensorPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin, LOW); // Убеждаемся, что светодиод выключен при старте
  digitalWrite(ledPin2, LOW);
  
  // --- ПОДКЛЮЧЕНИЕ К WI-FI ---
  Serial.println("\nПодключение к Wi-Fi...");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWi-Fi подключено!");

  // --- СИНХРОНИЗАЦИЯ ВРЕМЕНИ ---
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  Serial.print("Ожидание синхронизации времени...");
  while (time(nullptr) < 8 * 3600 * 2) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nВремя синхронизировано!");
}

void loop() {
  // --- ПОЛУЧЕНИЕ ТЕКУЩЕГО ВРЕМЕНИ ---
  time_t now = time(nullptr);
  struct tm* timeinfo = localtime(&now);
  int currentHour = timeinfo->tm_hour;
  int currentMinute = timeinfo->tm_min;

  // --- СБРОС ТРЕВОГИ В ПОЛНОЧЬ ---
  if (currentHour == 0 && currentMinute == 0 && hasAlarmTriggeredToday) {
    hasAlarmTriggeredToday = false;
    isAlarmActive = false; // На всякий случай
    Serial.println("Систему сброшено для нового дня.");
  }

  // --- ЧТЕНИЕ ДАННЫХ С ДАТЧИКА ---
  // Датчик выдает LOW при препятствии, поэтому инвертируем для нашей логики (1 = препятствие)
  int currentSensorState = (digitalRead(sensorPin) == LOW) ? 1 : 0;

  // --- ПРОВЕРКА УСЛОВИЯ ДЛЯ ЗАПУСКА ТРЕВОГИ ---
  // Если 05:30, тревога сегодня еще не срабатывала И есть препятствие
  if (currentHour == 05 && currentMinute == 30 && !hasAlarmTriggeredToday && currentSensorState == 1) {
    isAlarmActive = true;
    hasAlarmTriggeredToday = true; // Отмечаем, что сегодня тревога уже была
    previousSensorState = currentSensorState; // Запоминаем начальное состояние
    Serial.printf("ВРЕМЯ ТРЕВОГИ! Датчик: %d. Начинаю мигать...\n", currentSensorState);
  }

  // --- ЛОГИКА АКТИВНОЙ ТРЕВОГИ ---
  if (isAlarmActive) {
    // 1. Проверяем, изменилось ли состояние датчика
    if (currentSensorState != previousSensorState) {
      Serial.printf("Состояние датчика изменилось на: %d\n", currentSensorState);
      lastSensorChangeTime = millis(); // Засекаем время изменения
      previousSensorState = currentSensorState;
    }

    // 2. Если датчик показывает 0 (нет препятствия) дольше 5 секунд
    if (currentSensorState == 0 && (millis() - lastSensorChangeTime > 5000)) {
      Serial.println("Препятствие убрано > 5 сек. Выполняю подтверждение.");
      isAlarmActive = false; // Выключаем режим мигания
      
      // Веселое подтверждение светодиодами
      digitalWrite(ledPin, HIGH);
      digitalWrite(ledPin2, HIGH);
      delay(100);
      digitalWrite(ledPin2, LOW);
      delay(200);
      digitalWrite(ledPin2, HIGH);
      delay(100);
      digitalWrite(ledPin2, LOW);
      delay(200);
      digitalWrite(ledPin2, HIGH);
      delay(200);
      digitalWrite(ledPin2, LOW);
      delay(1000);
      digitalWrite(ledPin, LOW);
      
      Serial.println("Тревогу на сегодня завершено.");
    } 
    // 3. Если условие выше не выполнено, просто мигаем
    else {
      unsigned long currentMillis = millis();
      if (currentMillis - previousBlinkMillis >= blinkInterval) {
        previousBlinkMillis = currentMillis;
        ledState = (ledState == LOW) ? HIGH : LOW;
        digitalWrite(ledPin, ledState);
      }
    }
  }
}
Интересный факт №4:

Первая "умная таблетка" появилась в 2012 году — это была таблетка с встроенным чипом, который передавал данные о приеме лекарств. Наше устройство проще, но не менее эффективно! И главное — таблетки остаются обычными. 💊

🎨 Возможности для апгрейда

Если вам мало базового функционала (вы же перфекционист, правда?), вот несколько идей для улучшения:

Добавить дисплей для отображения времени и статуса — пусть соседи завидуют!
Интегрировать с Telegram для получения уведомлений — "Шеф, все пропало, клиент не выпил таблетку!"
Добавить датчик открытия крышки — для параноиков среди нас
Сделать веб-интерфейс для настройки — потому что почему бы и нет?
Добавить голосовое напоминание — "Эй, лентяй, выпей таблетку!"

Предупреждение: Это устройство не заменяет консультацию врача! Оно лишь напоминает выпить лекарства, а не лечит. Хотя с таким количеством электроники выглядит довольно убедительно! 😊

❓ Частые вопросы и ответы

Что делать, если я просыпаюсь позже 5:30?
Измените время в коде! Или станьте жаворонком — это полезно для здоровья (говорят те, кто встает в 5:30).

Можно ли использовать для напоминания о других вещах?
Конечно! Можете класть на датчик ключи, кошелек, или даже кота (если он достаточно терпеливый).

Что делать, если соседи жалуются на бузер?
Подарите им такое же устройство. Пусть тоже не забывают о таблетках!

Работает ли устройство без интернета?
Нет, ему нужен WiFi для синхронизации времени. Но после синхронизации может работать автономно (пока не выключите питание).

Интересный факт №5:

Исследования показывают, что визуальные и звуковые напоминания повышают соблюдение графика приема лекарств на 30-40%. Так что наше устройство — это не просто игрушка, а настоящий помощник здоровья! 📊

🛠️ Устранение неисправностей

Не подключается к WiFi: Проверьте пароль (да, даже если вы уверены на 100%)
Не срабатывает в 5:30: Проверьте часовой пояс в коде (Киев это UTC+2)
Датчик не реагирует: Протрите ИК-светодиоды — пыль их худший враг
Светодиоды не мигают: Проверьте полярность (+ к +, - к -)
Все работает, но я все равно забываю: Сделайте еще одно устройство для напоминания о первом! 😄
Рекомендуемые товары
Похожие статьи
Использование TP4056 для перехода на литий-ион в домашних приборах
Использование TP4056 для перехода на литий-ион в домашних приборах
Блог, Инструкции Подключения и Обзоры
05 июня 2024
Операция "Неприступный Шкаф"
Операция "Неприступный Шкаф"
Блог, Инструкции Подключения и Обзоры, Интересное и Полезное
06 апреля
Давай измерим "его"!
Давай измерим "его"!
Блог, Инструкции Подключения и Обзоры, Интересное и Полезное
20 мая
RFID та зачинена шухлядка
RFID та зачинена шухлядка
Блог, Интересное и Полезное
22 мая

Продовжимо солов'їною?

Оберіть мову