Skip to content
Super-cloud0Public

About

ESP32 dual-pump prototype (insulin + dasiglucagon): OLED, buttons, auto-mode, glucose chart and a mobile web panel. Educational project, not a medical device.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💉 DualPump

Автономная двухпомповая система на ESP32 — инсулин + дасиглюкагон с OLED-дисплеем, физическими кнопками и веб-панелью управления прямо с телефона

ESP32 C++ Web License

Веб-панель DualPump

Warning

Это учебный прототип, а не медицинское изделие. Уровень глюкозы в прошивке симулируется, реального датчика нет. Не используйте устройство для введения лекарств людям.


✨ Возможности

🩸 Глюкоза в реальном времени Уровень, тренд (↑ → ↓) и зона LOW / NORMAL / HIGH — на OLED и на сайте
🤖 Авто-режим При LOW сам вводит дасиглюкагон, при HIGH — инсулин. Доза считается автоматически: 15 U = 1 ммоль/л
🛡️ Защита Инсулин заблокирован при LOW, дасиглюкагон — при HIGH; отсчёт 3 с перед авто-уколом и пауза между уколами
📈 График История глюкозы за 30 минут на <canvas>, с метками каждого впрыска и подсказками при наведении
📱 Веб-панель Адаптивный тёмный интерфейс: дозы, удалённый впрыск, журнал, кнопка «СТОП». Работает без интернета
🎛️ Кнопки на корпусе 5 кнопок: уровень, выбор препарата, доза ±, старт. Удержание — быстрая прокрутка (×1 → ×5 → ×10)
🔋 Батарея Заряд Li-Ion аккумулятора на экране и на сайте, звуковое предупреждение при <15%
📶 Wi-Fi AP + STA Своя точка доступа всегда включена + подключение к роутеру/телефону с авто-переподключением
⚙️ Шаговые моторы Неблокирующее управление в отдельной задаче FreeRTOS, обмотки обесточиваются после каждой подачи

🖥️ Попробовать без железа

Это тот же самый интерфейс, что зашит в ESP32, только «устройство» симулируется прямо в браузере (моторы ускорены в 5 раз).

Мобильная версия

🔌 Железо

Компонент Пины ESP32
OLED SH1106 128×64 (I2C) SDA 21, SCL 22
Мотор 1 — инсулин (28BYJ-48 + ULN2003) IN1–IN4: 19, 18, 5, 17
Мотор 2 — дасиглюкагон (28BYJ-48 + ULN2003) IN1–IN4: 13, 12, 14, 27
Кнопка «уровень сахара» 32
Кнопка «выбор препарата» 33
Кнопки «доза +» / «доза −» 25 / 26
Кнопка «старт» 23
Буззер 15
Замер батареи (делитель 100к / 100к) 34

Все кнопки — на INPUT_PULLUP, второй контакт на GND.

📐 Полная схема подключения
Схема подключения

Моторы питаются отдельными 5 В (step-up от аккумулятора), логика ESP32 остаётся на 3.3 В. Делитель для замера заряда ставится на сыром напряжении батареи — до step-up модуля.

🚀 Прошивка

  1. Установите Arduino IDE и плату ESP32 (Boards Manager → esp32 by Espressif).
  2. Установите библиотеки (Library Manager):
    • U8g2 — by oliver
    • ESP Async WebServer и Async TCP — by ESP32Async
  3. Откройте firmware/DualPump/DualPump.ino, выберите плату ESP32 Dev Module и загрузите.
  4. Подключитесь к Wi-Fi DualPump (пароль 12345678) и откройте http://192.168.4.1.
⚙️ Настройки в начале файла
const char* STA_SSID = "";          // Wi-Fi роутера/телефона (пусто = только своя точка)
const char* STA_PASS = "";

#define MOTOR1_REVERSE  false       // развернуть направление мотора 1
#define MOTOR2_REVERSE  true        // развернуть направление мотора 2
#define STEPS_PER_UNIT  512         // калибровка: шагов мотора на 1 единицу дозы
#define MAX_DOSE        150         // максимальная доза, U
#define GLU_LOW_MMOL    3.9f        // граница LOW
#define GLU_HIGH_MMOL   10.0f       // граница HIGH
#define AUTO_DEFAULT_ON true        // авто-режим при включении

Калибровка: запустите подачу, например, 10 U и замерьте, сколько жидкости реально вышло из шприца. Если вышло вдвое больше нужного — уменьшите STEPS_PER_UNIT вдвое, и наоборот.

🌐 API

Веб-панель общается с ESP32 через простой REST — им можно управлять и из своих скриптов.

Метод Путь Параметры
GET /api/status — текущее состояние (глюкоза, дозы, моторы, батарея, журнал)
GET /api/history — история глюкозы для графика
POST /api/inject drug (0 — инсулин, 1 — дасиглюкагон), units
POST /api/dose drug, units или delta
POST /api/select drug — выбрать препарат на устройстве
POST /api/glucose value — задать глюкозу, ммоль/л
POST /api/level level (0 LOW, 1 NORMAL, 2 HIGH)
POST /api/auto on (0/1)
POST /api/stop — аварийная остановка обоих моторов

📁 Структура

DualPump/
├── firmware/DualPump/DualPump.ino   # прошивка + встроенная веб-панель
├── demo/index.html                  # интерактивное демо без железа
└── docs/                            # скриншоты и схема подключения

📄 Лицензия

MIT

About

ESP32 dual-pump prototype (insulin + dasiglucagon): OLED, buttons, auto-mode, glucose chart and a mobile web panel. Educational project, not a medical device.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages