We live in a world where many of us spend hours every day sitting at a desk — coding, working, or watching screens. But research shows that sitting too long without moving increases the risk of obesity, heart disease, and even early death. Doctors call it “sitting disease”, and it’s been linked to poor blood circulation, back pain, and reduced focus.
The best cure? Stand up and move regularly. Even standing for a few minutes every half hour helps your heart, your muscles, and your brain.
This project is a stand-up reminder device built with the M5Stack Core2. It vibrates, flashes lights, and shows a big red warning on its screen every 30 minutes, reminding you to get out of your chair and stretch your body.
Features- ⏱ Timed reminders every 30 minutes (using ESP32 deep sleep for power saving)
- 📺 LCD screen with bold yellow warning text.
- 💡 NeoPixel strobe effect (10 LEDs on GPIO25).
- 📳 Vibration motor alarm until you acknowledge the reminder.
- 👆 Touchscreen control — tap to stop the alarm and start the next countdown.
- 🔋 Low power mode — LCD and LEDs switch off during sleep to save battery.
- Sitting too long is dangerous: It reduces circulation, raises blood pressure, and stresses your heart.
- Regular movement matters: Standing up for just a few minutes each half hour can cut these risks dramatically.
- Habits need nudges: A device like this acts as your “accountability buddy”, nudging you to move before it’s too late.
Remember: “Don’t get yourself a heart attack. Time to stand up!”Hardware Required
- M5Stack Core2
- 10x NeoPixels connected to pin 25. the core2 AWS already have this onboard
- USB-C cable for programming and power
When first started, the device shows a “Sitting Reminder Active” message.
It enters deep sleep for 30 minutes, saving power.
After 30 minutes, it wakes up and:
- Vibrates in strong pulses.
- Strobes the NeoPixels in bright red.
- Displays a warning message:
“Don’t get yourself a heart attack. Stand up!”
- The alarm continues until you touch the screen.
- Once acknowledged, the device goes back into deep sleep for another 30 minutes.
The project makes use of the ESP32 deep sleep feature. Normally, if you just delay for 30 minutes, the device would waste a lot of power keeping everything running. With deep sleep, the Core2 turns off most of its components (CPU, WiFi, screen, vibration motor, LEDs) and only keeps the RTC timer alive. After 30 minutes, the RTC triggers a wake-up event, and the ESP32 reboots into the setup()
function.
Here’s the flow:
1.First Boot
When you power up the device for the first time, it just shows
“Sitting Reminder Active”
and then enters deep sleep.
2.Wake from Timer
After 30 minutes, the ESP32 wakes up, detects that the reason was
ESP_SLEEP_WAKEUP_TIMER
, and starts the alarm sequence.
3. Alarm Loop
After 30 minutes, it wakes up and:
- Vibrates in strong pulses.
- Strobes the NeoPixels in bright red.
- Displays a warning message:
“Don’t get yourself a heart attack. Stand up!”
- The alarm continues until you touch the screen.
- Once acknowledged, the device goes back into deep sleep for another 30 minutes.
4.Acknowledgement
When you tap the screen, the device stops the alarm, clears the display, and goes back into deep sleep for another 30 minutes.
Why Deep Sleep?Deep sleep is essential because:
The Core2 can consume over 100mA when awake with the LCD on, but in deep sleep, it drops to just ~1–2mA.
This means your reminder device can run for days or even weeks on a small power bank or the onboard battery.
It also prevents unnecessary screen burn-in by turning off the LCD power (M5.Axp.SetDCDC3(false)
).
Want to tweak the project? Here are some simple modifications you can make:
- Change the interval:Adjust the line:
#define SLEEP_TIME 30 * 60 * 1000000ULL
For example, 20 * 60 * 1000000ULL
gives you a 20-minute reminder.
- Change LED colors:Replace
pixels.Color(255, 0, 0)
with(0, 255, 0)
for green,(0, 0, 255)
for blue, or mix values for custom effects. - Change vibration pattern:Right now, the motor just buzzes on/off in sync with the screen. You could make it pulse faster, or even vibrate in Morse-code style patterns if you want to get creative.
- Add sound:The Core2 has a built-in speaker, so you can add a short alarm beep by using
M5.Speaker.tone(1000, 500);
. - Track your habits:Store the time you acknowledge the alarm into the SD card to keep a log of how often you stood up during the day.
This is more than just a gadget — it’s about forming a healthy habit.
- Stand up, stretch, walk a little every 30 minutes.
- Your heart, back, and brain will thank you..
- Sometimes the simplest reminders can prevent the biggest health problems.
💡 Don’t wait until your body forces you to move — build the habit now.
Comments