Smart Pill Dispenser: Intelligente Medikamentenverwaltung mit AWS Cloud
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Microchip AVR-IoT WA Development Board | 1 |
| Arduino Mega 2560 | 1 |
| SG90 Mikro-Servomotoren | 4 |
| Nextion NX8048T070 7" HMI Touch-Display | 1 |
| Adafruit 16-Kanal 12-Bit PWM/Servo Driver (I²C) | 1 |
| Lautsprecher 0,25 W, 8 Ω | 1 |
| Adafruit IR-Fototransistor | 4 |
| Adafruit 5 mm IR-LED 940 nm | 4 |
| Ultraschallsensor HC-SR04 | 1 |
| Parallax Feedback 360° High-Speed Servo | 1 |
| Adafruit 5V 2A Netzteil | 1 |
Werkzeuge
- 3D-Drucker (PLA)
- Lötkolben & bleifreies Lot
Apps & Cloud-Dienste
- Microchip MPLAB X IDE
- Arduino IDE
- Autodesk Fusion 360
- AWS IoT Core, DynamoDB, API Gateway, Lambda, S3
- Microsoft VS Code
Motivation
Aktuelle Pillendosierer sind entweder nicht-elektronisch oder automatisch, aber beide erfordern manuelles Befüllen durch Dritte – Patienten sind abhängig. Besonders in der Covid-19-Zeit haben Angehörige/Betreuer weniger Zeit. Ziel: SmartPill – autonomes Befüllen, barrierefreie Bedienung (großes Display, Audio-/Lichtfeedback), Cloud-Anbindung für ferngesteuerte Dosierungskonfiguration.
Funktionsweise
Zwei Subsysteme:
- SmartPill Dispenser: Physisches Gerät – organisiert, lagert, gibt Pillen aus. Hauptinterface für Patient.
- SmartPill Web App: Web-UI für Arzt/Betreuer – konfiguriert bis zu 4 Medikamente × 3 Einnahmezeiten/Tag, ändert Dosierung remote.
Barrierefrei: Großes Display für Befüllhilfe, Audio/Licht-Erinnerung. Smarter Mechanismus verteilt Pillen intern und dosiert zur richtigen Zeit. WLAN via AVR-IoT → AWS Cloud → Web-App. App protokolliert Einnahmen, benachrichtigt bei Ausbleiben.
SmartPill Dispenser – Hardware
Ausgabemechanik (3D-gedruckt, PLA)
- Basis: Träger, Öffnungen für Ultraschallsensor, Klappe zur Ausgabeschale.
- Slider: Trägt Pillenbehälter; innen Rampe zur Klappe; Fach für Elektronik.
- Seitenwände: Schutz vor Feuchtigkeit, Schmutz.
- Nextion 7" Touch-Display: Patientenschnittstelle.
- Obere Abdeckung: Schutz (oben) + Trennung Trommel/Behälter (unten).
- Parallax 360°-Servo: Positioniert Trommel.
- Trommel: Verbindet Außenöffnung mit jeweiligem Pillenbehälter.
- Hintertür: Entnahme/Einsetzen der Behälter mit Slider.
- Lautsprecher: Sprach-/Signalausgabe.
- HC-SR04 Ultraschall: Erkennt Entnahme der Ausgabeschale.
- 4 Pillenbehälter: Je ein SG90-Servo für Dosierung. Erweiterbar.
STL-Dateien für alle Teile sind open-source auf Thingiverse (siehe CAD-Bereich).
Montage-Schritte
- Slider in 3 Teile gedruckt → Muttern einpressen → verschrauben → Elektronik einbau → Deckel drauf.
- Pillenbehälter: Teil 1+7 verbinden, SG90 an Teil 7, Teil 3+4 (Lager) + Teil 2 → an Slider-Oberseite schrauben.
- Display an Seitenwand schrauben, Stecker verbinden. Seitenwände an Basis klicken.
- Obere Teile: Muttern einpressen, Trommel + Parallax-Servo dazwischen, verschrauben.
- Hintertür an Oberteil schrauben.
Elektronik
Arduino Mega als Zentrale: Servo-Steuerung (PWM), Nextion-Display, RTC (I²C), Sound, AVR-IoT-Kommunikation (Serial UART). IR-Lichtschranken (Pillen-Erkennung) an Analog-Pins. Aufbau auf Lochraster/PCB, empfohlen auf Holzplatte montiert.
SmartPill Web App (Ionic + Angular)
Ziele: Einfaches Setup (Patient, Medikamente, Dosierung, Zeiten), Einnahme-Überwachung.
Tech-Stack: Backend: AWS API Gateway (HTTP REST) + Lambda. Frontend: Ionic & Angular (NodeJS, HTML/CSS/JS). Ionic bietet native UI-Komponenten für iOS/Android.
Projektstart
$ npm install -g @ionic/cli
$ ionic start smartpill-webui blank
$ cd smartpill-webui && ionic serve
Wichtige Dateien & Struktur
app-routing.module.ts: Routen (Login, Config, Status, Edit-Pill, Logs) mit Parameter-Übergabe.post.service.ts: API-Kommunikation (GET/POST/DELETE/PUT), InterfacesPost,Dep,Log.page-config: Liste aller Pillenkonfigurationen; FAB-Button für Neu, Edit-Button pro Eintrag.page-edit-pill: Erkennt per Route-Parameter (:postId) ob Neu oder Bearbeiten. Nutzt Ionic UI: Multi-Select für Zeiten (Morning/Afternoon/Night), Input für Pillenname.page-status / logs: Laden per Lifecycle-Hooks (ionViewWillEnter), Anzeige mit Icons nach Tageszeit.
Amazon Web Services – Serverless Architektur
Komponenten:
- AVR-IoT Board → AWS IoT Core (MQTT, bidirektional). Topic
dispensepill(Cloud→Gerät),confirmationpill(Gerät→Cloud). - Frontend (Ionic) → Kompiliert → S3 Static Website Hosting.
- Backend → API Gateway (HTTP API) → Lambda → DynamoDB (Tabellen:
smartpill-history,smartpill-pills). - EventBridge (Cron) → 3 Rules (Morning/Afternoon/Night, UTC) → Lambda
smartpill-dispensepill→ sucht fällige Pillen → sendet MQTT an IoT Core → Dispenser.
AWS IoT Core – Thing einrichten
AVR-IoT Board mit AWS-Konto verbinden (Microchip IoT Developer Guide). Im IoT Core unter Manage → Things sichtbar. WLAN-Zugangsdaten auf Board konfigurieren (Getting Started Guide).
DynamoDB Tabellen
Zwei Tabellen anlegen (id als Primary Key): smartpill-history (Logs), smartpill-pills (Konfiguration).
Lambda Functions
Je Funktion eigene Execution Role mit AmazonDynamoDBFullAccess (nur Tutorial!). Code aus GitHub-Repo (smartpill-lambda) deployen. In IoT Core Rules anlegen: Topic confirmationpill → Lambda smartpill-confirmationpill.
EventBridge Scheduler
3 Cron-Regeln (UTC-Zeit!) für Morning/Afternoon/Night → Target: Lambda smartpill-dispensepill.
API Gateway
HTTP API „smartpill-webui“, alle Lambdas als Integrationen, Routen gemäß Tabelle anlegen, deployen → HTTPS-Endpoint. Alternativ smartpill-api.json importieren.
S3 Static Hosting
Bucket anlegen, Static Website Hosting aktivieren (index.html), Angular-Build-Artifacts hochladen, DNS-Name nutzen.
AVR-IoT Board Firmware
Basiert auf Microchip-Beispiel, erweitert:
- CLI auf USART1 (RX/TX-Pins) statt USART2 (Debugger) – für externe Kommunikation.
- Custom CLI-Command
pill+ Callbackpill_command()→ sendet JSON-Confirmation an Topicconfirmationpill. - MQTT-Subscription
dispensepillmit JSON-Parser → CallbackreceiveddispenseFromCloud()extrahiert Daten. - Header
IoTPill.hdefiniert Datenstrukturen.
Protokoll (Bidirektional)
dispensepill (AWS → IoT → Arduino):
{
"cmd": "dispensepill",
"npills": 2,
"intake": { "time": "morning" },
"pills": {
"1": { "pill": "Ibuprofen", "qty": 1, "deposit": 1, "weight": 200 },
"2": { "pill": "Paracetamol", "qty": 2, "deposit": 2, "weight": 500 }
}
}
IoT Board sendet per USART an Arduino: D Ibuprofen 1 1 200 D Paracetamol 2 2 500 \n
confirmationpill (Arduino → IoT → AWS):
Arduino sendet: pill 1 (1 = OK). IoT Board verarbeitet mit vorherigem Intake-Time → JSON an AWS: {"time":"morning","state":"ok"}. Lambda loggt in DB & Web-App.
Code-Repositories
CAD / 3D-Druck
Thingiverse-Repo: Mechanik, Gehäuse, Vollassembly (STEP, bearbeitbar).
Schaltplan
Hardware-Verkabelung im Repository.
Herstellungsprozess
- Schlafmittel: Von antiken Heilmitteln zur modernen Pharmakologie
- Antibabypille: Geschichte, Nutzen, Risiken und Produktion
- Smart Bartender: Eigenen Raspberry Pi Cocktail-Roboter bauen
- Intelligente Ampel: Adaptive Straßenbeleuchtung per IoT
- Intelligenter Mülleimer: Abfallentsorgung per IoT-Sensoren optimieren
- Smart Plant IoT: Vernetztes Gewächshaus mit Arduino, Helium & Azure
- UnifiedWater v1 – Komplettes Arduino Wasserqualitäts-Sensorkit
- Intelligente Jalousien: Automatische Lichtsteuerung mit Arduino & Solarenergie
- Autodesk Smart Manufacturing: Workflow automatisieren & Produktentwicklung vernetzen
- Smart Manufacturing erklärt: Produktion durch IoT transformieren