SeraphIV - IV Fluid Monitoring System
- A capstone project developed and presented by Tulio, Diaz, Austria, Debatian, Bulanhagui, and Gacusan.
- Presented to Mr. Brian Kenneth T. Fortin
- Presented at Lyceum of Subic Bay INC.
- Presented on A.Y. 2024-2025
SYSTEM OVERVIEW: This Arduino Mega-based system monitors intravenous (IV) fluid levels in real-time using a load cell and HX711 amplifier. It tracks remaining fluid percentage, sends SMS alerts at critical thresholds (30%, 15%, 5%), and provides visual feedback via LEDs. The system stores patient bed numbers and nurse contact information for quick recall.
HARDWARE COMPONENTS:
- Arduino Mega microcontroller
- 20x4 LCD display (I2C interface, address 0x27)
- 5x4 matrix keypad for user input
- HX711 load cell amplifier (pins 30, 31) for weight measurement
- SIM900 GSM module (Serial1) for SMS functionality
- Three status LEDs: GREEN_LED1 (pin 11), GREEN_LED2 (pin 12), RED_LED (pin 13)
- SD card module via SPI for potential data logging
- EEPROM for persistent storage of nurse contact numbers
KEY VARIABLES:
- calibration_factor: Load cell calibration value (-104.5 for this setup)
- startingWeight: Reference weight when IV bag is first locked (prevents recalibration)
- percentage: Current IV fluid remaining as percentage of starting weight
- weightLocked: Flag indicating whether starting weight is finalized
- savedNumbers[]: Array storing up to 10 previously used nurse phone numbers
- State flags: enteringPatient, selectingSaved, enteringNurse control application flow
OPERATIONAL FLOW:
- User enters patient bed number (numeric input)
- System prompts to load previously saved nurse number or enter new one
- User enters 10-digit nurse phone number (formatted as +63XXXXXXXXXX)
- System displays live weight readings and IV fluid percentage
- User locks starting weight by pressing '#' key
- System continuously monitors percentage and triggers SMS/LED alerts at thresholds:
- 30%: GREEN_LED1 on, SMS notification sent
- 15%: GREEN_LED2 on, urgent SMS alert sent
- 5%: RED_LED blinking, critical SMS alert sent
- System persists nurse numbers to EEPROM for quick future access
SMS ALERT THRESHOLDS:
- 30% remaining: Notification to prepare for replacement
- 15% remaining: Alert to prepare for critical stage
- 5% remaining: Critical alert for immediate IV bag replacement
KEYPAD BUTTON MAPPING:
- 0-9: Numeric input
- A/B: Navigate menus (up/down)
- C: Reset all inputs and return to initial state
- D: Confirm/proceed to next step
- E: Cancel saved number selection, return to manual entry
- F: Delete character or reset scale tare
- L/R: Move cursor left/right during text input
- #: Lock the starting weight during monitoring
- *: Clear current input field
EEPROM STORAGE:
- Stores up to 10 nurse phone numbers (13 bytes each)
- Numbers are shifted when array is full; newest number always appended
- Duplicates are removed before storage
TIMING INTERVALS:
- Weight reading: 200ms (readingInterval)
- LCD display update: 300ms (updateInterval)
- LED blink period: 1000ms (blinkInterval)
- SMS threshold: Sent once per monitoring session when threshold crossed
ERROR HANDLING:
- Validates nurse number is exactly 10 digits
- Prevents division by zero by checking startingWeight > 0
- Handles negative weight readings (clamped to 0)
- GSM module connectivity check with AT command
- EEPROM initialization check for first-time setup
REQUIRED EXTERNAL LIBRARIES:
- LiquidCrystal_I2C: LCD I2C communication
- Keypad: Matrix keypad scanning
- HX711: Load cell amplifier interface
- SPI, SD, EEPROM, Wire: Arduino standard libraries