Original QST Article proof
- There is a typo in Table 1. The RA8775 costs $35, not $5.
- There is a typo in Fig 2. The 33K resistor should be 330K.
- If you do not want to use the photoresistor, ground the analog input
pin ADC (sometimes also known as A0).
Download current stable release source code
- higher resolution moon symbol on big desktop versions
- better looking J on big desktop versions
- fix occasional missing or partially drawn lines in desktop versions
- big desktop versions display commensurately higher resolution SDO images
- support self updating in desktop versions too
- tap Version to check whether an update is available (all versions)
- allow resizing desktop versions
- allow listing more satellites
- fix stray satellite path pixels at edge of Azimuthal view
- add support for linux, RPi and macOS desktop
- fix problem where a new sat selection was not always used
- add satellite and settime REST commands
- improve checking whether TLE is suitable epoch
- improve Bosch BME280 temperature and humidity accuracy
- label satellite path zenith and maximum elevation
- add memory and reboot REST commands
- remove grayline option, replace GRA button with AZM
- improve memory management for long paths
- add count down to firmware update screen
- fix sat tracks leaving pixels on map edge
- better twilight for RPi version too
- much better grayline twilight graphics
- erase dx marker and path when changing to Satellite info mode
- better screen management going into and back from sat selection page
- refresh sat info if user changes time a lot
- increase current satellite location tap area
- fix tapping area for dx lat/long
- add display of Earth satellites
- linux version now just uses existing network
- progress dots replaced with count down
- improved environment sensor initialization and expand plot to 25 hours
- better http handling
- reduce linux map raster jaggies
- fix xray level designation below A and above X
- display xray level designation
- accommodate more RPi screen resolutions
- fix rainbow on RPi
- new Earth map
- add support in RPi version for Bosch BME280 environment sensor
- first release supporting Raspberry Pi
- refresh RSS immediately when toggle map projection
- display complete IP address
- fix box around wx report that did not quite match the alternate plot
- show device MAC address before connecting
- all new RSS system that retrieves from my server
- displays round robin from ARRL, Southgate, eHam and DXNews
- label weather units
- remove eHam RSS because they now redirect to https and there is no room in Huzzah
to support https.
- add Setup option to enter initial DE lat and long
- center date better under wider call sign area
- timezone table now uses 1 degree resolution
- add photocell wiring to README
- add Setup option to rotate screen
- squeeze out a little more room for wider call signs
- offer a little more time to choose Recalibrate and Setup screens
- remove option to downgrade
- fix plot bug if sensor drops out for extended period then recovers
- More automated remote update knows when a new version is available
- Touch now supports auto-repeat in most fields
- Add degree symbol to weather temperature value
- Add more specific weather error messages
- Show weather data for 30 seconds after changing DE or DX
- a little more map detail
- more robust RSS parser
- faster WiFi retries when signal is lost
- fix RSS flashing when no WiFi signal
- increase clock from 80 to 160 MHz
- eliminate need for Shift key in setup keyboard -- show both cases at once
- Raise upper case J in smaller font
- add remote WiFi firmware updating
- smoother brightness control
- fix speckles across the bottom of RSS banner
- allow 0-length setup fields
- more efficient Grayline toggle
- new REST commands:
- better J in regular font
- softer border lines
- use separate colors for short and long path
- add more instructions for touch screen calibration
- more grid square mods
- add Azimuthal projection option
- add WiFi connection progress dots
- add degree symbol after bearing angle
- accommodate changes in ESP library version 2.4.0 and still maintain compatability with older versions
- allow Huzzah to reuse stored SSID for faster booting and faster recovery if WiFi comes back
- fix for rare compile problem related to Time.h by changing to TimeLib.h
- split right plot touch so top half cycles SDO images and bottom half cycles sensor plots (if installed)
- tweak xray download code
- further improve rendering call signs containing descending characters
- improve WiFi state reporting and resilience to NTP errors
- plot both long and short XRay wavelengths
- add padlock icon that locks screen
- tweak time zone for Bouvet Island
- alternate WiFi dBm with IP
- redirect all web accesses to CSI server
- increase wifi login timeout
- Tweak RESTful commands
- 25 hour XRay plot
- More RESTful commands, returns new values in JSON format if applicable
- avoid pressure values overflowing plot size in metric mode
- reduce clock flicker -- contributed by W2ROW
- add Metric/Imperial setup option to choose sensor plot units
- make GRA button more consistent with RSS
- fix rounding error in maidenhead grid square calc
- reset sensor queue if fails to restart
- add grayline on/off button
- add grayline down to 12° twilight
- improve rendering of call signs with descending characters J and Q
- fix display bug if solar flux prediction download fails
- improve drawing lunar phases
- reset the Bosch sensor if any value seems bogus
Here is a more detailed list of steps to prepare and load the software:
- Install the latest Arduino IDE with these
I am currently using version 1.8.5.
- Load up the ESP extension described
here then Exit the Arduino IDE.
- Download and install the following Arduino libraries:
If you need help with libraries in general try
Connect your computer to the Huzzah with a USB port
Download current stable release
unzip it any place you wish.
Start the Arduino IDE. Open the ESPHamClock.ino file you just unzipped. This will
create a new project.
In the IDE Tools menu make the following selections:
If the options you see do not look exactly like mine do these steps:
- open Tools → Board → Boards Manager...
- In the search box type esp. Look for esp8266
- Click More Info
- Click Select version and select 2.4.0
- Click Update
- Click Close
Run Sketch → Compile then Sketch → Upload
Your HamClock should start running. Follow the touch screen and setup functions carefully.
For those who prefer not to build the software, I am making available the same
Adafruit HUZZAH board
used in the HamClock already programmed with the latest HamClock software. Just wire it up
according to the schematic in the article and you are immediately ready to go.
And with the built-in network update function you can stay up to date without having to
purchase again in the future.
Click on the button below to order within the US;
you may use your paypal account or any credit card.
Please use the button below if you are outside the US to include $10 additional shipping.
To use a
9" ER-TFTM090-2 from buydisplay.com:
Select these options during purchase:
- Pin header 4 wire SPI
- VDD 5 V
- Touch panel 9" resistive
- Micro SD - none
- Font chip - none
This is the wiring list:
EP = ESP Huzzah
BM = BME280 sensor
PC = photo cell
DP = display
EP_ADC PC_1, 330k
EP_USB DP_3, 4, 37, 38
EP_GND DP_1, 2, 13, 31, 39, 40
- Larger, brighter, richer colors
- Simpler wiring because you do not need the RA8775 or flat cable
- Requires a very good USB supply, at least 2 A.
from Adafruit is known to work well.
The display stand from Adafruit can be made to work with a little ingenuity but is not perfect for the LCD.
Send suggestions for better ideas and I will post here.
One alternative I found is
that suggests normal picture framing components could be used.
The stand from Adafruit is actually made by
Pimoroni so I asked them
for better suggestions. They said they know of no stand suitable for the Adafruit
LCD but thought
might be pressed into service with less effort.
G3XOU used this
Pi screen support
with some assembly details
KF5LW suggests adopting this
Pi screen support.
He said he 3D-printed a piece to the Pi dimensions then it worked well.
W3TMC sent a
of the nice looking oak stand he built.
- N2YTF did a nice job with some simple wood and a breadboard. He sent photos
N6ROB attached the components and display to the stand with hot glue after sanding and
wiping down with alcohol. The result
looks clean and efficient.
N7EEK has taken a minimalist approach that works well using a $9 stand from
See his photos here.
ON4AEY made a nice clock and sent me
N7LVS made this
showing his construction technique.
HB9AJG shared his very nice arrangement from the
in his shack.
If you find your display idea works better if the cable exits from the top, let me
know. I can share a software change contributed by N9DK that will rotate the entire scene.
Hopefully this will eventually be picked up in a later rev of the effected library from Adafruit.
For now you will have to do a few things manually in the software build procedure to make it work.
Shack photo showing 7" version.
Rear of 7" version
Both the 7" and 9" versions.
Rear of 9" version
This is a guide to the touch controls and map symbols of HamClock. Click for a printable view in a separate window.
HamClock may now be built for linux, Raspberry Pi, macOS and any other UNIX-like
system with the X11 Windows development library.
The operation is exactly the same as the ESP8266 version (including no keyboard!) with the
- does not try to manage the network connection
- no support for the photocell auto dimming feature
- support for the BME sensor only on RPi
To give it a try, run these commands:
curl 'http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip' > ESPHamClock.zip
make -j 3 hamclock
If you get compile errors, try:
- on linux: load the X11 developers package, for example
sudo apt-get libX11-dev
- on macOS: install XQuartz
and the command line tools from
You can also run
make help to see two other build options:
hamclock-big which is a larger version of hamclock for the desktop
hamclock-fb0 which is for the Raspberry Pi raw frame buffer version.
For this version:
sudo raspi-config one time and set the following options:
- Boot Options -> Desktop/CLI -> Console
- Advanced options -> Resolution -> 1920x1080
- connect to your pi with ssh and build as above except with
make -j 3 hamclock-fb0
If you want to use the Bosch BME280 environment sensor on RPi, follow these steps:
- connect the sensor to the Pi using the 40 pin connector as follows:
Pi 1 BME Vin
Pi 3 BME SDI
Pi 5 BME SCK
Pi 9 BME GND
- install i2c-tools:
sudo apt-get install i2c-tools
sudo raspi-config and set the following options:
Interface Options: I2C: enabled
- Check the Bosch is connected correctly with these tests:
sudo i2cdetect -y 1
should see 77 in lower right corner of matrix
sudo i2cdump -y 1 0x77 b
should see a matrix of numbers, NOT XX
Click in the lower half of SDO image pane to see environmental plots.