Smart Pill Dispenser: Умный дозатор лекарств с IoT и AWS
Компоненты и материалы
| Microchip AVR-IoT WA Development Board | ×1 |
| Arduino Mega 2560 | ×1 |
| Сервопривод SG90 (микро) | ×4 |
| Nextion NX8048T070 (7" HMI сенсорный экран) | ×1 |
| Adafruit 16-канальный PWM/Серво драйвер I2C | ×1 |
| Динамик 0.25Вт 8 Ом | ×1 |
| IR-фототранзистор (Adafruit) | ×4 |
| IR-светодиод 940 нм (Adafruit) | ×4 |
| Ультразвуковой датчик HC-SR04 | ×1 |
| Parallax Feedback 360° High-Speed Servo | ×1 |
| БП 5В 2А | ×1 |
Инструменты
- 3D-принтер
- Паяльная станция
- Припой без свинца
Софт и облачные сервисы
- MPLAB X IDE (Microchip)
- Arduino IDE
- Autodesk Fusion 360 (CAD)
- AWS IoT Core, DynamoDB, API Gateway, Lambda, S3
- VS Code
О проекте
Зачем этот проект?
На рынке два типа дозаторов: механические и автоматические. Оба требуют ручной разкладки таблеток, делая пациента зависимым. В условиях COVID-19 у родственников меньше возможностей ухаживать. SmartPill решает: автоматическая разкладка, доступность для людей с нарушениями зрения/слуха, независимость пациента.
Принцип работы
Система = SmartPill Dispenser (железо) + SmartPill Web App (веб-интерфейс врача/опекуна).
- Врач настраивает до 4 препаратов, до 3 приёмов в день, дозировки — удалённо.
- Крупный экран, голосовые и световые подсказки для пациента.
- Умный механизм сам распределяет таблетки по контейнерам и выдаёт нужную дозу в время.
- WiFi (AVR-IoT) → AWS Cloud → удалённый мониторинг и настройка.
- Приложение показывает историю приёмов, уведомляет если таблетка не принята.
SmartPill Dispenser — механика
Все детали (кроме экрана) 3D-печать PLA. STL-файлы открыты.
- База — опора, отверстия для ультразвукового датчика, клапан для выдачи в стаканчик.
- Слайдер — верхняя часть держит контейнеры, склон для таблеток, ниша для электроники.
- Боковины — защита от влаги, пыли.
- Экран Nextion — интерфейс пациента.
- Верхние крышки — защита и разделение барабана от контейнеров.
- Parallax Servo 360° — поворачивает барабан.
- Барабан — соединяет загрузку с контейнерами.
- Задняя дверца — доступ к контейнерам.
- Динамики — голосовые подсказки.
- HC-SR04 — детект снятия стаканчика.
- 4 контейнера — каждый с SG90 для дозирования. Расширяемо.
Сборка
- Слайдер печатается в 3 части — собираются с гайками (пропайка), затем крышка после монтажа электроники.
- Электроника в нишу слайдера (включая HC-SR04).
- Контейнеры: корпус + колесо с подшипником + SG90. Крепятся к верху слайдера.
- Экран к боковине, боковины к базе (щёлкают).
- Верхние части: гайки, барабан + Parallax серво между ними, затягиваются.
- Задняя дверца к верхней сборке.
Электроника
Мозг — Arduino Mega: сервоприводы (PWM), Nextion, RTC (I2C), звук, UART ↔ AVR-IoT. IR-барьеры (фототранзистор + IR LED) на аналоговых входах детектируют выдачу таблеток. Рекомендуется монтаж на деревянной плате / протоборде по схеме.
SmartPill Web App
Frontend: Ionic + Angular. Backend: AWS API Gateway (HTTP API) + Lambda + DynamoDB.
- Настройка дозатора: пациент, препараты, дозировки, время.
- Мониторинг истории приёмов.
Структура приложения
app-routing.module.ts— навигация, передача ID между маршрутами.post.service.ts— общение с API (CRUD: getPosts, getDeposit, getLogs, createPost, removePost, updatePost).page-config— список препаратов, кнопка «+» →page-edit-pill(создание/редактирование).page-edit-pill— определяет режим по наличиюpostIdв маршруте. Ionic UI: мультиселект времени (утро/день/вечер), инпут названия таблетки.page-status— логи приёмов с иконками (солнце/пицца/луна), датой, именем пациента, списком таблеток.
Пример кода (TypeScript)
// post.service.ts
getPosts() { return this.http.get(this.API); }
createPost(pill, deposit, weight, morning, afternoon, night) {
return this.http.post(this.API, {pill, deposit, weight, morning, afternoon, night});
}
removePost(id) { return this.http.delete(`${this.API}/${id}`); }
// page-edit-pill
ngOnInit() {
this.route.paramMap.subscribe(paramMap => {
if (paramMap.get('postId')) {
this.postService.getPostById(paramMap.get('postId')).subscribe(res => {
this.post = res; this.editing = true;
});
}
});
}
// Шаблон: {{ editing ? 'Update Your' : 'Create your' }} Deposit
// Кнопка: (click)="editing ? updatePost() : savePost()"
Amazon Web Services — бессерверная архитектура
Компоненты:
- AVR-IoT → AWS IoT Core (MQTT) → двусторонняя связь.
- Frontend (Ionic) → S3 (статический хостинг).
- Backend → API Gateway (HTTP API) → Lambda → DynamoDB (таблицы:
smartpill-pills,smartpill-history). - EventBridge (cron) → Lambda
smartpill-dispensepill→ IoT Core → дозатор. - IoT Rule на топик
confirmationpill→ Lambda логирования + уведомления.
Настройка AWS (кратко)
- Зарегистрировать AVR-IoT в AWS IoT Core (Microchip гайд). Настроить WiFi на плате.
- Создать таблицы DynamoDB с PK =
id. - Создать Lambda-функции (репозиторий GitHub), прикрепить роль с
AmazonDynamoDBFullAccess(только для демо!). - IoT Core → Rules:
SELECT * FROM 'confirmationpill'→ Action: Lambdasmartpill-confirmationpill. - EventBridge: 3 правила (cron UTC) для утра/дня/вечера → Target: Lambda
smartpill-dispensepill. - API Gateway: HTTP API, интеграции с Lambda, маршруты per таблице, деплой → HTTP endpoint.
- S3: бакет, Static Website Hosting → index.html, загрузка билда Angular.
Протокол AVR-IoT ↔ Arduino
Два MQTT-топика:
dispensepill(AWS → IoT → Arduino): JSON с командами дозирования.confirmationpill(Arduino → IoT → AWS): подтверждение выдачи.
Пример dispensepill:
{ "cmd": "dispensepill", "npills": 2,
"intake": { "time": "morning" },
"pills": {
"1": { "pill": "Ibuprofeno", "qty": 1, "deposit": 1, "weight": 200 },
"2": { "pill": "Paracetamol", "qty": 2, "deposit": 2, "weight": 500 }
}
}
IoT → Arduino по UART: D Ibuprofeno 1 1 200 D Paracetamol 2 2 500 \n
Arduino → IoT: pill 1 (успех) → IoT → AWS: { "time":"morning", "state":"ok" }
Прошивка AVR-IoT
На базе Microchip CLI. Добавлена команда pill с колбэком, парсящим ответ Arduino и шлющим JSON в confirmationpill. CLI перенесён на USART1 (пины RX/TX) для связи с Mega. Добавлена подписка на кастомный топик dispensepill с JSON-парсером и колбэком receiveddispenseFromCloud(). Структуры данных в IoTPill.h.
Репозитории кода
CAD и схемы
- Thingiverse: механизм дозирования, корпус, полная сборка (STEP).
- Схема подключения электроники.
Производственный процесс
- Наука и производство снотворных: от древних средств к современной фармакологии
- Противозачаточные таблетки: история, польза, риски и производство
- Умный бармен: создайте свою Raspberry Pi-станцию для коктейлей
- Умный светофор: адаптивное уличное освещение на базе IoT
- Интеллектуальное умное мусорное ведро: оптимизация сбора отходов с IoT-датчиками
- Умная теплица IoT на Arduino и Azure: датчики, автополив и удалённый контроль
- UnifiedWater v1: полный набор датчиков качества воды на Arduino MKR GSM
- Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
- Autodesk Smart Manufacturing: автоматизируйте рабочий процесс и свяжите разработку продукта
- Умное производство (Smart Manufacturing): трансформация производства с IoT