/* MuTech Robotics - Sit-Too-Long Reminder Board : ESP32 development board (30-pin), USB power Radar : 24 GHz mmWave presence radar (3.3 V). It senses a person even when sitting still (breathing). Wiring Radar V -> 3V3 | Radar G -> GND | Radar IO -> D23 Active buzzer (3.3 V) + -> D26 | - -> GND How it works: sitting (present) for 60 minutes -> beeps. Walk away for 2 minutes -> timer resets. */ const int RADAR = 23, BUZZER = 26; const unsigned long SIT_LIMIT = 60UL * 60UL * 1000UL; // 60 minutes (change to suit you) const unsigned long AWAY_RESET = 2UL * 60UL * 1000UL; // away 2 minutes = break taken unsigned long sitStart = 0, lastSeen = 0, lastBeep = 0; bool sitting = false; void beep(int n) { for (int i = 0; i < n; i++) { digitalWrite(BUZZER, HIGH); delay(150); digitalWrite(BUZZER, LOW); delay(150); } } void setup() { Serial.begin(115200); pinMode(RADAR, INPUT); pinMode(BUZZER, OUTPUT); delay(5000); // let the radar settle } void loop() { unsigned long now = millis(); bool present = digitalRead(RADAR) == HIGH; if (present) { lastSeen = now; if (!sitting) { sitting = true; sitStart = now; } } else if (sitting && now - lastSeen > AWAY_RESET) { sitting = false; // break taken -> reset Serial.println("Break taken - timer reset"); } if (sitting && now - sitStart > SIT_LIMIT && now - lastBeep > 60000UL) { beep(4); lastBeep = now; // remind once a minute until you get up Serial.println("Time to stand and stretch!"); } delay(100); }