Каталог товарів
Клієнту
Тема сайту:
+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 травня