Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamHomemade pager for a restaurant on the FT61FC45
Yes, a homemade restaurant pager system can be built around the FT61FC45 / FT61FC4x family. The FT61FC4x documentation shows that this MCU family has enough resources for a simple pager: 4k × 14-bit program memory, 512 bytes RAM, 128 bytes data EEPROM, 12-bit ADC, timers, PWM, USART, watchdog, low-voltage detection, and low standby current. That is sufficient for a battery-powered RF receiver with LED, buzzer, and vibration motor control. (weixiaoic.com)
The recommended architecture is:
A restaurant pager system is basically a one-to-many wireless alert system.
┌──────────────────────────────┐
│ Base Station │
│ │
│ Keypad / buttons │
│ Display, optional │
│ MCU │
│ RF transmitter │
└──────────────┬───────────────┘
│ RF packet
▼
┌────────────────────────────────────────────┐
│ Pager / Coaster │
│ │
│ RF receiver → FT61FC45 → LED │
│ → Buzzer │
│ → Vibration motor │
│ → Battery monitor │
└────────────────────────────────────────────┘
Each pager has a unique address, for example:
0x010x020x19When the restaurant staff selects pager 25 on the base station, the transmitter sends a packet addressed to 0x19. All pagers receive the same RF signal, but only pager 25 reacts.
The FT61FC4x family is appropriate for this type of design because it has:
| Requirement | FT61FC4x capability |
|---|---|
| Low-power standby | Standby current is listed as low as 0.2 µA under typical conditions |
| Packet decoding | Timers and capture/compare functions are available |
| Buzzer drive | PWM-capable timer output can generate tones |
| Battery measurement | 12-bit ADC is available |
| Pager ID storage | Internal data EEPROM is available |
| Watchdog wake/supervision | WDT and low-voltage features are available |
| Serial RF module option | USART is documented in the FT61FC4x family |
The exact FT61FC45 package pinout must still be verified from the specific datasheet or supplier marking, because FT61FC4x devices are available in several package variants, including small and 20-pin packages. The family documentation lists package options such as SOP8, MSOP10, SOP14, SOP16, SOP20, QFN20, and TSSOP20. (weixiaoic.com)
A practical pager unit can be designed as follows.
| Block | Recommended implementation |
|---|---|
| MCU | FT61FC45 / suitable FT61FC4x variant |
| RF receiver | Certified 915 MHz, 2.4 GHz, or sub-GHz receiver module; 433 MHz ASK/OOK possible but less robust |
| Battery | 1-cell Li-ion / LiPo, typically 300–1000 mAh |
| Charger | Li-ion charger IC with protection, cradle contacts, or USB-C charging |
| Regulator | Low-IQ 3.0 V or 3.3 V LDO |
| Alert | Red LEDs, active buzzer, vibration motor |
| Storage | Pager ID stored in MCU EEPROM |
| Programming | Exposed programming pads on PCB |
Li-ion cell
│
├── Charger / protection circuit
│
├── Low-IQ 3.0 V / 3.3 V regulator
│ │
│ ├── FT61FC45
│ │ ├── RF DATA input
│ │ ├── LED outputs
│ │ ├── Buzzer driver
│ │ ├── Motor MOSFET gate
│ │ └── ADC battery monitor
│ │
│ └── RF receiver module
│
└── Battery divider → ADC input
Do not drive the vibration motor directly from the FT61FC45 pin. The MCU pins can drive LEDs, but a motor can draw tens or hundreds of milliamps during startup.
Use a low-side N-MOSFET:
+3.0 V / +3.3 V
│
Motor
│
├──── Drain N-MOSFET
│
Source
│
GND
FT61FC45 GPIO ── 100 Ω ── Gate
Gate ── 100 kΩ ── GND
Diode across motor, cathode to +V, anode to MOSFET drain
Recommended parts:
For an active buzzer, use a transistor or MOSFET switch.
+3.0 V
│
Active buzzer
│
NPN collector / MOSFET drain
│
GND
If using a passive piezo, drive it with PWM from the FT61FC45 timer output. The FT61FC4x timer/PWM functionality is suitable for this type of waveform generation. (weixiaoic.com)
For simple pagers, use 3–6 high-brightness LEDs with individual resistors.
Example at 3.3 V:
\[ R = \frac{3.3 - 2.0}{0.008} \approx 162\ \Omega \]
Use 150 Ω to 220 Ω as a practical range.
This is the cheapest option.
A simple packet could be:
Preamble 0xAA 0xAA 0xAA 0xAA
Sync 0xD5
System ID 16 bits
Pager ID 8 or 16 bits
Command 8 bits
Sequence 8 bits
CRC-8 8 bits
Send the packet several times, for example 5–10 repetitions, to improve reliability.
This is usually easier with the FT61FC45 because the FT61FC4x family includes USART functionality. (weixiaoic.com)
The base sends ordinary bytes:
[PREAMBLE][SYNC][SYSTEM_ID_H][SYSTEM_ID_L][PAGER_ID][COMMAND][SEQ][CRC]
Advantages:
For a restaurant system, I would normally choose a certified UART RF module unless the goal is specifically to learn low-level RF decoding.
If you want acknowledgments:
This requires a transceiver in every pager, increasing cost and battery consumption but improving reliability.
Use a packet format like this:
| Field | Size | Purpose |
|---|---|---|
| Preamble | 4–16 bytes | Receiver synchronization |
| Sync byte | 1 byte | Start-of-frame marker |
| System ID | 2 bytes | Prevents triggering other nearby systems |
| Pager ID | 1–2 bytes | Selects the target pager |
| Command | 1 byte | Alert, stop, test, low-power config |
| Sequence | 1 byte | Rejects duplicates if needed |
| CRC-8 | 1 byte | Error detection |
Example command values:
| Command | Meaning |
|---|---|
0x01 |
Start normal alert |
0x02 |
Stop alert |
0x03 |
Test flash/beep |
0x04 |
Silent vibration only |
0xFF |
Broadcast test |
Use CRC-8 rather than a simple XOR checksum if possible. XOR is better than nothing, but CRC-8 detects many more common RF errors.
A restaurant pager should survive at least one business day.
If the RF receiver draws 2–10 mA continuously, a small battery will drain quickly.
Approximate battery life:
\[ t = \frac{C}{I} \]
For a 500 mAh battery and 5 mA receiver current:
\[ t = \frac{500}{5} = 100\ \text{hours} \]
That looks acceptable, but real life will be lower because of regulator loss, MCU current, LEDs, buzzer, motor, and battery aging.
To extend battery life, the FT61FC45 can sleep and periodically wake using the watchdog timer. The FT61FC4x documentation lists watchdog and low-standby operating modes, which are useful for this kind of design. (weixiaoic.com)
Example strategy:
Important consequence: the base station must transmit a long enough preamble or repeat the packet long enough so that a sleeping pager catches it.
For example:
This gives good battery life while keeping call latency around one second.
For a homemade pager today, the main design trend is to avoid discrete RF design and use certified RF modules. This is especially important in the United States because intentional RF transmitters are regulated under FCC Part 15, and FCC modular-transmitter rules define conditions for using pre-certified radio modules in host products. (law.cornell.edu)
Practical modern choices:
| Technology | Suitability |
|---|---|
| 433 MHz ASK/OOK | Cheapest, simple, but noisy and regulation-sensitive |
| 915 MHz FSK / LoRa module | Good range, better for U.S. sub-GHz use if certified |
| 2.4 GHz module | Easy certification path if module is approved, but more crowded band |
| BLE | Possible, but overkill for simple one-way pagers |
| LoRa | Excellent range, slower, more expensive, good for reliable systems |
For a real restaurant installation, I would choose either:
For a learning project, cheap ASK/OOK modules are acceptable, but expect more debugging.
This is conceptual; verify against your exact FT61FC45 package.
| MCU signal | Connection |
|---|---|
| RF_DATA | RF receiver data output |
| RF_EN | MOSFET or enable pin for RF receiver power |
| LED1 | Red LED group 1 |
| LED2 | Red LED group 2 |
| BUZZER | Buzzer transistor / PWM output |
| MOTOR | Vibration motor MOSFET gate |
| VBAT_ADC | Battery divider midpoint |
| BUTTON | Pair/test/acknowledge button |
| PROG_CLK | Programming pad |
| PROG_DATA | Programming pad |
| VDD/VSS | Power and ground |
Use a high-value divider:
VBAT ── 330 kΩ ──┬── ADC input
│
330 kΩ
│
GND
This divides the battery voltage by 2.
For a 4.2 V Li-ion cell:
\[ V_{ADC} = \frac{4.2}{2} = 2.1\text{ V} \]
That is safe for a 3.0 V or 3.3 V MCU ADC input.
However, high-value dividers interact with the ADC sampling capacitor. The FT61FC4x ADC documentation notes that acquisition time must be increased when the source resistance is high; therefore either use lower divider values, add a capacitor at the ADC pin, or enable the divider only during measurement. (weixiaoic.com)
Recommended practical solution:
VBAT ── 220 kΩ ──┬── ADC
│
100 nF
│
220 kΩ
│
GND
Sample slowly and discard the first ADC reading after enabling the divider.
If the device is used only on your bench, the risk is low, but if used in a real restaurant, you should treat it as an intentional radiator.
Best practice:
FCC Part 15 Subpart C covers intentional radiators, and FCC guidance exists for modular transmitter certification. (law.cornell.edu)
For Li-ion/LiPo pagers:
Do not use a homemade pager as a safety-critical notification system. It is fine for “your table is ready,” but not for emergency evacuation, medical alarms, or fire notification.
If you want the simplest version:
No display is required. Most restaurant pagers only need to flash, beep, and vibrate.
The base station can use:
Example base UI:
[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
[*] [0] [SEND]
Workflow:
Use a simple state machine:
INIT
↓
LOAD_ID_FROM_EEPROM
↓
SLEEP / LOW_POWER_LISTEN
↓
RF_PREAMBLE_DETECTED?
├── No → SLEEP
└── Yes
↓
RECEIVE_FRAME
↓
CRC_VALID?
├── No → SLEEP
└── Yes
↓
ID_MATCH?
├── No → SLEEP
└── Yes
↓
ALERT
↓
STOP / TIMEOUT / BUTTON / CHARGER_DETECT
↓
SLEEP
main()
{
init_clock_low_power();
init_gpio();
init_timer();
init_adc();
init_rf_power_control();
pager_id = eeprom_read(PAGER_ID_ADDR);
while (1)
{
rf_power_on();
delay_ms(RF_STARTUP_TIME_MS);
if (detect_preamble())
{
if (receive_packet(&packet))
{
if (crc_ok(packet) &&
packet.system_id == MY_SYSTEM_ID &&
packet.pager_id == pager_id)
{
run_alert(packet.command);
}
}
}
rf_power_off();
enter_sleep_until_wdt();
}
}
Example:
void run_alert(uint8_t command)
{
for (uint16_t i = 0; i < 150; i++)
{
motor_on();
buzzer_on();
led_on();
delay_ms(150);
motor_off();
buzzer_off();
led_off();
delay_ms(150);
if (button_pressed() || charger_detected())
break;
}
}
A restaurant pager based on the FT61FC45 is feasible. Use the FT61FC45 in each pager to decode RF packets, store a unique pager ID in EEPROM, monitor the battery with the ADC, and drive LEDs, buzzer, and vibration motor through proper transistor/MOSFET drivers. For the RF section, a certified UART RF module is the safest and most reliable choice; cheap ASK/OOK modules can work for a hobby build but need more careful protocol design. The most important engineering points are RF legality, battery safety, low-power firmware, packet CRC, repeated transmissions, and robust output drivers.