Time & Room Temperature Display for mounting on Center Microphone Stand, Temperature and CO2 levels are derived from either the Room Controller or remote ENS160+AHT21 Devices
|
|
1 maand geleden | |
|---|---|---|
| documents | 2 maanden geleden | |
| include | 1 maand geleden | |
| lib | 1 maand geleden | |
| src | 1 maand geleden | |
| .gitignore | 1 maand geleden | |
| CLAUDE.md | 1 maand geleden | |
| README.md | 1 maand geleden | |
| platformio.ini | 1 maand geleden |
A simple, clean desktop temperature and clock display built around the WaveShare ESP32-S3-RLCD-4.2.
The display is designed to make the information readable from a distance, with the current time occupying the upper half of the screen and indoor/outdoor temperatures displayed prominently across the lower half.
The display uses the full 300 × 400 pixel resolution of the 4.2-inch reflective LCD.
Top 60%
Date displayed as:
Bottom 40%
WaveShare ESP32-S3-RLCD-4.2
The board provides:
The onboard SHTC3 provides the indoor temperature measurement. The PCF85063 provides hardware real-time clock functionality.
See the official hardware documentation:
WaveShare ESP32-S3-RLCD-4.2 Documentation
The outdoor temperature will be supplied separately from the display.
The preferred architecture is:
Outdoor Sensor
│
│ Wi-Fi
▼
ESP32-S3-RLCD-4.2
│
├── Indoor Temperature
├── Outdoor Temperature
├── Date
└── Time
The outdoor sensor can be another ESP32-based device, a network temperature sensor, MQTT source, HTTP API, or another compatible data source.
The display should continue showing the last known outdoor temperature if the outdoor sensor temporarily becomes unavailable.
The project is intended to run on the ESP32-S3 using the Arduino framework.
Recommended:
WaveShare officially supports both Arduino IDE and ESP-IDF for this board.
┌─────────────────────┐
│ ESP32-S3 │
│ │
│ Main Application │
└──────────┬──────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ RTC │ │ SHTC3 │ │ Wi-Fi │
│ PCF85063 │ │ Indoor │ │ │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
│ │ │
│ │ Outdoor Temp
│ │ │
└────────────────┼────────────────┘
│
▼
┌──────────────────┐
│ Display Engine │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 300 × 400 RLCD │
└──────────────────┘
The UI should remain intentionally simple.
There should be no unnecessary menus, icons, animations, or small text.
The primary purpose of the display is to provide information that can be read quickly from across a room.
The time should be the largest element on the display.
Example:
11:08
The seconds should not normally be displayed.
The display should update once per minute.
The date is positioned directly underneath the time.
Example:
MONDAY 24 AUGUST
The indoor temperature comes from the onboard SHTC3 sensor.
Example:
INDOOR
21.5°C
The outdoor temperature is received over the network.
Example:
OUTDOOR
14.8°C
| Data | Source | Update Rate |
|---|---|---|
| Time | PCF85063 RTC | 1 minute |
| Date | PCF85063 RTC | 1 day |
| Indoor temperature | SHTC3 | 30–60 seconds |
| Outdoor temperature | Network | 30–60 seconds |
| Display | RLCD | As required |
The display should avoid unnecessary full-screen refreshes.
On startup:
During normal operation:
If Wi-Fi is unavailable:
The ESP32-S3 should synchronise the RTC from an NTP server when network connectivity is available.
Recommended configuration:
NTP Server:
pool.ntp.org
Time Zone:
Australia/Hobart
Format:
24 hour
The RTC then maintains the time locally when Wi-Fi is unavailable.
Temperatures should be displayed with one decimal place.
Examples:
21.5°C
19.0°C
7.8°C
-2.3°C
The degree symbol should be displayed as:
°C
The display continues operating from the local RTC.
OUTDOOR
--.-°C
or, if a previous value is available:
OUTDOOR
14.8°C
The previous value should preferably remain visible rather than replacing it immediately with an error value.
If the SHTC3 cannot provide a valid indoor temperature:
INDOOR
--.-°C
If the RTC has lost its valid time:
--:--
The system should attempt to correct the time as soon as network connectivity becomes available.
A suggested project structure:
/
├── README.md
├── platformio.ini
│
├── src/
│ ├── main.cpp
│ ├── display.cpp
│ ├── display.h
│ ├── rtc.cpp
│ ├── rtc.h
│ ├── temperature.cpp
│ ├── temperature.h
│ ├── network.cpp
│ ├── network.h
│ ├── outdoor.cpp
│ └── outdoor.h
│
├── include/
│ ├── config.h
│ └── secrets.h
│
├── lib/
│
└── data/
└── fonts/
User-specific settings should be kept separate from the main application code.
Example:
#define WIFI_SSID "YOUR_WIFI"
#define WIFI_PASSWORD "YOUR_PASSWORD"
#define NTP_SERVER "pool.ntp.org"
#define TIMEZONE "Australia/Hobart"
#define TEMP_UPDATE_MS 60000
#define DISPLAY_UPDATE_MS 60000
Credentials should not be committed to the repository.
A local configuration file should be added to .gitignore.
Potential future additions:
The project should follow these principles:
The WaveShare board is particularly suited to this application because the RLCD provides a reflective display without a conventional backlight, while the board already includes the RTC and indoor temperature/humidity sensor required by the application.
Official documentation:
This project is released under the terms specified by the repository owner.