Tech Gyan Set
Published © MIT

IoT Based Smart Medicine Reminder for Elderly Parents

An IoT-based smart medicine reminder that alerts parents on time and keeps family updated. πŸ’ŠπŸ“‘

BeginnerFull instructions provided8 hours16
IoT Based Smart Medicine Reminder for Elderly Parents

Things used in this project

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

πŸ’Š IoT Based Smart Medicine Reminder for Elderly Parents βœ… Complete ESP32 Code

C/C++
#include <WiFi.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#include <PubSubClient.h>

#define BUZZER 4
#define BUTTON 5
#define LED 18

const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";
const char* mqtt_server = "broker.hivemq.com";

WiFiClient espClient;
PubSubClient client(espClient);

RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);

int medHour = 8;      
int medMinute = 0;    
bool alertActive = false;

void setup_wifi() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
}

void reconnect() {
  while (!client.connected()) {
    client.connect("MedicineReminderClient");
  }
}

void setup() {
  Serial.begin(115200);

  pinMode(BUZZER, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(LED, OUTPUT);

  Wire.begin();
  rtc.begin();

  lcd.init();
  lcd.backlight();

  setup_wifi();
  client.setServer(mqtt_server, 1883);
}

void loop() {

  if (!client.connected()) {
    reconnect();
  }

  client.loop();

  DateTime now = rtc.now();

  lcd.setCursor(0,0);
  lcd.print("Time: ");
  lcd.print(now.hour());
  lcd.print(":");
  if(now.minute() < 10) lcd.print("0");
  lcd.print(now.minute());

  if(now.hour() == medHour && now.minute() == medMinute) {
    alertActive = true;
  }

  if(alertActive) {
    digitalWrite(BUZZER, HIGH);
    digitalWrite(LED, HIGH);

    lcd.setCursor(0,1);
    lcd.print("Take Medicine! ");

    if(digitalRead(BUTTON) == LOW) {
      alertActive = false;
      digitalWrite(BUZZER, LOW);
      digitalWrite(LED, LOW);
      client.publish("medicine/status","Taken");
      lcd.setCursor(0,1);
      lcd.print("Medicine Taken ");
      delay(1000);
    }
  }

  delay(1000);
}

Credits

Tech Gyan Set
18 projects β€’ 6 followers
Thanks to Tech Gyan Set .

Comments