Embedded systems and hardware engineer building the tools that sit between the shack and the sky.
| DAY | NIGHT | |
|---|---|---|
| 80m-40m | -- | -- |
| 30m-20m | -- | -- |
| 17m-15m | -- | -- |
| 12m-10m | -- | -- |
| 14.100 | -- | -- |
| 18.110 | -- | -- |
| 21.150 | -- | -- |
| 24.930 | -- | -- |
| 28.200 | -- | -- |
The beacon panel is a browser-only addition, computed straight from the public NCDXF schedule (18 beacons × 5 bands) — not yet ported to the physical clock's display.
Builds that connect firmware, RF, and the operating desk.
A day/night world clock for a 1024×600 RGB panel (Waveshare ESP32-S3-Touch-LCD-7B), built for ham radio operators: a live terminator over a real map, an NCDXF/IARU beacon panel with live map markers, an HF band-conditions panel from hamqsl.com, and a five-city clock bar with sunrise/sunset. Runs natively on ESP-IDF — Arduino's scheduling overhead was eating into the RGB panel's scan-out timing margin badly enough to cause visible display jitter that no pixel-clock tuning could fully resolve; removing that overhead fixed it outright.
A remote operating console for a FlexRadio FLEX-3000 alongside PowerSDR. The FLEX-3000 needs a real, physically-attached FireWire bus, so PowerSDR itself can't run remotely — but the operating position can: instead of streaming PowerSDR's window as video (laggy, breaks audio drivers), this streams the underlying FFT bins, meter readings, CAT state, and audio, then renders a native UI on a lightweight client anywhere on the network.
A three-node antenna rotator controller: two ESP32-C5 sensor nodes (one compass-only, one compass+tilt for azimuth/elevation) report orientation over ESP-NOW to an ESP32-S3-Touch-LCD-5 hub, which drives the rotor relays over RS485/Modbus and runs the on-screen control UI. Structurally complete but not yet compiled or run on real hardware — bench-testing each node comes before wiring in any motors.
An interactive HF propagation visualizer: rays leave the antenna, hit a virtual-height ionosphere layer, and bend back to Earth only if the operating frequency is below that layer's MUF at the ray's takeoff angle (secant law). Models D/E/F1/F2 plus patchy, time-flickering Sporadic-E openings, night-mode layer behavior, multi-hop chains, and a curved-Earth globe view alongside a to-scale flat view.
More builds and activity logged on qrz.com/db/YT3CT.
A day/night world clock for the Waveshare ESP32-S3-Touch-LCD-7B (1024×600 RGB panel), built for ham radio operators. Runs natively on ESP-IDF rather than Arduino — the framework's scheduling overhead was eating into the RGB panel's scan-out timing margin badly enough to cause visible display jitter that no pixel-clock tuning could fully resolve. Removing that overhead fixed it outright.
A full-screen day/night terminator over a real map, redrawn once a minute using the NOAA solar-position algorithm (declination plus the equation of time, no ephemeris data needed) — the same math driving every city's sunrise/sunset in the five-city clock bar below it. Local and UTC time sit in the top bar, synced via NTP, alongside a WiFi status indicator.
Shows which beacon is transmitting on each of the 5 HF beacon frequencies right now, computed purely from the clock's own accurate time — no network needed, since the schedule itself is fixed and public. Map markers highlight each of the 18 beacon locations, brightening whichever ones are currently active. Timing was verified against an existing open-source ham radio clock project's own implementation of the same schedule, not trusted from memory alone.
An HF band-conditions panel — solar flux index, sunspot number, A/K index, and day/night propagation quality per band — fetched hourly from hamqsl.com.
Temperature/humidity comes from a DHT11, read via the RMT peripheral rather than CPU bit-banging: RMT timestamps the sensor's edge transitions in hardware, independent of CPU scheduling, so nothing needs interrupts disabled and WiFi traffic can't corrupt the read. A CPU-polling implementation was tried first and proved unreliable under real WiFi load.
Ported from Waveshare's own ESP-IDF LVGL demo for this board — hardware bring-up (I2C bus, IO-expander, RGB panel init, SD card) is their example code, reused as-is. Beacon schedule timing verified against SmittyHalibut/HamClock's own implementation of the same NCDXF schedule.
This project is not affiliated with, endorsed by, or associated with Geochron, Geochronmap, or HamClock — it's an independent build inspired by the general concept those projects/products popularized (a world map with a live day/night terminator for ham radio use). Any resemblance in naming has been intentionally avoided; Geochron and Geochronmap in particular are trademarks of their respective owners.
View on GitHubA remote operating console for a FlexRadio FLEX-3000, built as a companion to PowerSDR. FireWire and PowerSDR stay on the radio PC; a lightweight client anywhere on the network gets a live waterfall/spectrum, VFO/mode/filter controls, audio, and PTT — without full screen/remote-desktop sharing.
The FLEX-3000 requires a real, physically-attached IEEE-1394 FireWire bus, so PowerSDR itself can never run "remotely." What can be remote is the operating position: instead of streaming PowerSDR's whole window as video (RDP/VNC — laggy, breaks audio drivers), this project streams the underlying data — FFT bins, meter readings, CAT state, audio — and renders a native UI on the client. Data frames are kilobytes; video frames are megabytes.
A server on the radio PC taps the FFT/meter data, captures RX/TX audio, and relays CAT commands and PTT. A client on the operator PC renders the waterfall from that FFT stream, exposes VFO/mode/filter controls, and handles audio in/out and PTT. Two links, split by need: TCP carries control/CAT (needs to be reliable), UDP carries the FFT stream and audio (needs to be low-latency).
The protocol comes first (everything else depends on it being stable), then the server's FFT source — the one piece that needs real PowerSDR source to finish, though it can be built and tested against an included simulated FFT source until then. The client can be built and tested entirely against that same simulated server, no radio required.
A three-node antenna rotator controller: two ESP32-C5 sensor nodes read orientation and report it over ESP-NOW to an ESP32-S3-Touch-LCD-5 hub, which drives the rotor via relays and runs the on-screen control UI. One node reports azimuth only (GY-271 compass); the other reports azimuth and elevation (GY-271 plus an MPU6050 for tilt). A first working build with solid structure and logic throughout — not yet compiled or run on real hardware.
Same approach as AmateurRadioClock: the hub's display bring-up (RGB LCD timing, the CH422G IO-expander, GT911 touch, backlight) is fiddly board-specific init code that's easy to get subtly wrong from a written description, so it starts from Waveshare's own ESP-IDF demo for this exact panel, confirmed working unmodified, before this project's files are merged into it.
The hub flashes first and prints its MAC address over serial; that address gets copied into both sensor nodes so they know where to send ESP-NOW telemetry. All three devices share one hardcoded WiFi channel for ESP-NOW, which has to match across all of them if it's ever changed.
Compass hard/soft-iron calibration isn't implemented yet; axis mapping on both the compass heading formula and the tilt-compensation formula depends on physical mounting and will likely need sign flips once real readings are visible; Modbus address/baud and relay-channel assignment need verifying against the actual relay board; and the deadband on the bang-bang control loop needs tuning once real overshoot/hunting behavior is visible. Testing runs bottom-up: each node alone, then the hub with sensors only, then the jog buttons/encoders, and only then the relay board and motors — with an Emergency Stop check before anything else gets trusted.
Activity logged over 30+ years on QRZ.com — pulled straight from the public profile.
Notes on how signals actually get from this station to the next continent — the working knowledge behind the projects above.