3af958b69f
- LED matrix doorbell display with scrolling text - Non-blocking HTTP poll state machine for ntfy.sh - Ticker tape pressure gauge (12 cols, 3-min window, PWM decay) - Unix timestamp message filtering (readyTime after NTP sync) - BUILTIN LED sine-wave brightness heartbeat - Pending: remove backup file before merge
3.4 KiB
3.4 KiB
Uno R4 WiFi Doorbell - Quick Start Guide
Overview
This is a simplified doorbell notification system for the Arduino Uno R4 WiFi that displays incoming ntfy.sh messages on the built-in 12x8 LED matrix.
Features
- Connects to WiFi and monitors a ntfy.sh topic
- Displays incoming messages as scrolling text on LED matrix
- Scrolls at 2 columns per second (configurable)
- Auto-silences after 60 seconds of display
- Simple state machine: CONNECTING → IDLE → DISPLAYING → SILENCED
Setup Instructions
1. Configure WiFi Credentials
Edit boards/uno-r4-wifi/uno-r4-wifi.ino:
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASS "YOUR_WIFI_PASSWORD"
2. Configure ntfy.sh Topic
Edit boards/uno-r4-wifi/uno-r4-wifi.ino:
#define NTFY_TOPIC "YOUR_TOPIC_HERE"
Create a free topic at https://ntfy.sh/ (e.g., "my-doorbell-12345")
3. Upload the Sketch
arduino-cli compile --fqbn arduino:renesas_uno:unor4wifi boards/uno-r4-wifi/uno-r4-wifi.ino
arduino-cli upload --fqbn arduino:renesas_uno:unor4wifi -p /dev/ttyACM0 boards/uno-r4-wifi/uno-r4-wifi.ino
4. Test the System
Open a terminal and run the test script:
chmod +x boards/uno-r4-wifi/test_messages.sh
./boards/uno-r4-wifi/test_messages.sh
Or manually send a message:
curl -X POST https://ntfy.sh/YOUR_TOPIC_HERE -d "Hello from ntfy!"
How It Works
State Machine
- CONNECTING_WIFI - Attempts to connect to WiFi
- IDLE - Polls ntfy.sh every 5 seconds for new messages
- DISPLAYING_MESSAGE - Shows scrolling text for 60 seconds
- SILENCED - Clears matrix for 5 seconds before returning to IDLE
LED Matrix Display
- Text scrolls from right to left across the 12x8 matrix
- Scroll rate: 2 columns per second (500ms per column)
- Characters are 5 pixels wide with 1 pixel spacing
- Only alphanumeric characters (A-Z, 0-9) and spaces are supported
ntfy.sh Integration
- Uses HTTP GET with polling (
/json?poll=1) - Tracks last message ID to avoid duplicates
- Parses JSON response for message body
Pinout Reference (Uno R4 WiFi)
- D0-D13: Standard digital pins
- A0-A5: Analog inputs
- D26/D27: Qwiic (I2C) connector (SCL/SDA)
- LED Matrix: Built-in 12x8 matrix (pins handled internally)
Customization
Adjust Timing
Edit constants in uno-r4-wifi.ino:
#define POLL_INTERVAL_MS 5000 // How often to check for messages
#define DISPLAY_DURATION_MS 60000 // How long to display each message
#define SCROLL_SPEED_MS 500 // Scroll speed (lower = faster)
#define SILENCE_DURATION_MS 5000 // Time between messages
Add More Characters
The font array in drawCharToFrame() can be extended to support additional characters.
Troubleshooting
WiFi Won't Connect
- Check WiFi credentials
- Ensure 2.4GHz network (Uno R4 WiFi doesn't support 5GHz)
- Verify WiFi signal strength
LED Matrix Not Showing Text
- Ensure
matrix.begin()is called in setup() - Check that
matrix.loadFrame()is called with valid data - Verify text contains only supported characters
No Messages Received
- Check ntfy.sh topic name matches exactly
- Ensure the topic is publicly accessible
- Test with curl command manually
- Check serial monitor for error messages
Next Steps
- Add support for more characters in the font
- Implement different message types (Alert, Silence, etc.)
- Add color coding with different LED patterns
- Integrate with the main doorbell codebase