กลับไปหน้ารวมไฟล์
arduino-programmatic-timed-reminder-alerting-framework-d3aad0-en.md

REM_SYS: The Ultimate Asynchronous Time Management Framework for Arduino

REM_SYS is not just a ready-made application, but a Framework (foundational structure) for developers who want to create highly complex projects and require precise and flexible time management (Timing), especially in tasks that require multiple operations concurrently (Multitasking) without halting the system (Non-blocking).


In-depth Look at Capabilities Through an Example: Multi-Sensor Sampling System

Consider a scenario where you need to design a monitoring system for 8 sensors, each with a vastly different Sampling Frequency, as follows:

  • High Speed: 2 sensors (reading every 1/100 second)
  • Medium Speed: 1 sensor (reading every 0.5 seconds)
  • Low Speed: 2 sensors (reading every 5 seconds)
  • Minute Level: 1 sensor (every 2 minutes), 1 sensor (every 15 minutes 30 seconds), and another 1 sensor (every 30 minutes)
  • Reporting System: Must send a summary of all sensor statuses to an external system at the top of every hour (hh:00:00).

In traditional programming (Standard Approach), managing Tasks with such disparate frequencies is extremely difficult and complex (Non-trivial), because using delay() halts the entire system. But with the REM_SYS Framework, this problem is easily resolved.

REM_SYS creates Elapsed Time Reminders (ETRs) for each sensor and a Real-time Reminder (RTR) for sending the hourly summary data. The system operates Asynchronously: when the set time arrives (Alert), the system immediately jumps to perform the relevant task without waiting in a Sequential queue.


Core Functions and Engineering Operation

The heart of REM_SYS is the creation of "alerts" (Reminders) whose behavior can be finely defined through two main functions:

1. create_ET_reminder (Elapsed Time Reminder - ETR)

Functions like a stopwatch, referencing time elapsed from a set point (based on millis() within the board).

  • Purpose: Create an alert when the specified time has elapsed.
  • Optional Parameters: Can define frequency and total operating duration.
  • Usage: Suitable for sensor Sampling tasks requiring a constant frequency.

2. create_RT_reminder (Real Time Reminder - RTR)

Works in conjunction with an external RTC (Real Time Clock) module to recognize real-world time (e.g., date, hour, minute).

  • Purpose: Create an alert based on real time, like on a clock face.
  • Optional Parameters: Can also define frequency and duration.
  • Usage: Suitable for tasks that need to be performed at specific times, such as "turn on light at 18:00" or "report results every top of the hour."

Technical Highlight: When creating a Reminder, we can specify a subtype and user parameters (up to 4 Integer variables). This allows developers to use a single Function to handle multiple Alerts and then use switch-case to differentiate "which sensor this Alert originated from" and "how it should be processed" based on the attached parameters.


REM_SYS Architecture – Asynchronous Alerting

New REM_SYS Version! Comes with the ability to select the operating mode (Dual Selectable Alert Timer), whether to use only Elapsed Time or both Elapsed & Real-time together, via a single Configuration setting.

Types of Alerts (Reminder Flavours):

  1. Elapsed Time Reminders (ETRs): Operate independently of world time, suitable for internal Logic tasks requiring speed.
  2. Real-time Reminders (RTRs): Connect to Hardware RTC, suitable for tasks related to real time.

Behavior Patterns (Alert Types):

Both ETR and RTR can be configured in 3 patterns:

  • One-off alert: Alerts once and completes the mission.
  • Recurring alert: Alerts repeatedly according to the set cycle (Indefinitely).
  • Recurring with duration alert: Alerts repeatedly according to the cycle, but stops operating upon reaching the set duration.

Why Use REM_SYS?

If you are developing an Arduino project that needs to:

  • Perform multiple tasks with different "timing conditions".
  • Avoid delay() to ensure the system remains Responsive at all times.
  • Requires a system for Date Manipulation and structured Alert management.

REM_SYS is a tool that helps transform complex Logic into a structure that is easy to manage (Maintainable) and can be Scalable in the future.

For detailed usage information and programming guides, please refer to: User Guide Link

The connection structure and timing system of REM_SYS

Efficient time management is the key to stable embedded systems.

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "ronbentley1"
category: "Lab Stuff"
components:
  - "1x Wire, Hook Up"
  - "1x DS1307 64 x 8, Serial, I²C Real-Time Clock"
  - "1x Arduino UNO"
description: "Framework providing multiple concurrent elapsed and real-time reminder alerting to support applications with demanding timing needs."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/93098cba-3e4d-4d74-b3a2-ae3286c2c39c.ino"
  - "https://projects.arduinocontent.cc/da9d5a75-5d14-459f-a553-62a81b59964f.ino"
  - "https://projects.arduinocontent.cc/d5eef594-fab5-4fb7-9dc8-354953b728b1.ino"
  - "https://projects.arduinocontent.cc/dc78cc70-d023-4e15-b780-e8a515ed1d06.ino"
  - "https://projects.arduinocontent.cc/31a981da-673b-4490-9fe4-b165f6833170.ino"
  - "https://projects.arduinocontent.cc/f44d631c-4b8b-4eb1-9c6e-481471927d28.ino"
  - "https://projects.arduinocontent.cc/dc78cc70-d023-4e15-b780-e8a515ed1d06.ino"
  - "https://projects.arduinocontent.cc/31a981da-673b-4490-9fe4-b165f6833170.ino"
  - "https://github.com/ronbentley1/Arduino-REM_SYS-Asynchronous-Timed-Reminders"
  - "https://projects.arduinocontent.cc/36d2d0e7-2853-4064-9a82-bd2aa95b11e2.ino"
  - "https://projects.arduinocontent.cc/da9d5a75-5d14-459f-a553-62a81b59964f.ino"
  - "https://projects.arduinocontent.cc/d6412a29-50f2-4ac2-94ef-424d8c942b2c.ino"
  - "https://projects.arduinocontent.cc/93098cba-3e4d-4d74-b3a2-ae3286c2c39c.ino"
  - "https://github.com/ronbentley1/Arduino-REM_SYS-Asynchronous-Timed-Reminders"
  - "https://projects.arduinocontent.cc/36d2d0e7-2853-4064-9a82-bd2aa95b11e2.ino"
  - "https://projects.arduinocontent.cc/d5eef594-fab5-4fb7-9dc8-354953b728b1.ino"
  - "https://projects.arduinocontent.cc/f44d631c-4b8b-4eb1-9c6e-481471927d28.ino"
encryptedPayload: "U2FsdGVkX18FCxvd227Q2oQh2V8d9naw3MoljlQCOIi90uDGxhKyGp0VmORynfWynTwkSvdrkH18iENnYB3/8qRDdurclNAYL3JagoAFosE="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-programmatic-timed-reminder-alerting-framework-d3aad0_cover.jpg"
lang: "en"
likes: 0
passwordHash: "a0d4f43b191b9f53e5668818a3605095c74acbbe587c90632ff87bf595a6b225"
price: 2450
seoDescription: "Arduino Framework for concurrent real-time and elapsed reminders. Designed for applications requiring high-precision timing and alerts."
tags:
  - "reminders"
  - "alerting"
  - "elapsed time"
  - "real-time"
  - "asynchronous"
  - "multiplexing"
title: "Arduino Programmatic Timed Reminder Alerting Framework"
tools: []
videoLinks: []
views: 5650