As described in my last post, I was inspired by an APOD entry last December featuring a solar analemma captured by a security camera on someone's driveway to create my own timelapse video tracing the path of the Sun over a year, capturing the distinctive figure eight shape of the analemma as the shadow moves day by day. This project recreates a technique used for timekeeping, calendar making, and as the basis for religious and cultural rituals going back thousands of years. But as with the APOD that inspired it, I'm putting a modern spin on this ancient concept by leveraging programming, computers, digital cameras, photo and video editing software, design software, and 3D printing. In this post, I'll provide an overview of my setup, including how I planned out the project, created a custom gnomon (the part of a solar timepiece that casts the shadow), set up the camera and automation system, and the initial image processing and results.
Decision #1: What to Shoot With
Blink camera
First off, I had to pick a camera to capture each image with. As the subject is outdoors - and the project lasts for a year - using a DSLR like my Nikon D750 wouldn't be feasible. I could easily dedicate one of the IP cameras I have for a year but they aren't weather-proof and they have to be plugged in. Luckily, we have a set of Blink outdoor cameras around the house. They are weather-proof, battery-powered and can be accessed over a network connection. The only concern I had with them is the mount is easy to move which could interfere with having the same point of view for every image over the course of the year. I solved that by 3D printing a new mount that I could lock in place with a set screw.
Decision #2: Where to Shoot
My first thought was to do something like in the referenced APOD... shoot to the north with the shadow to track being cast in front of the camera with the Sun shining from behind. I even considered mounting the camera so that its own shadow would be what traces out the analemma. However, while our house faces north-northeast, we have 6 huge cedar elm trees out front; during the summer any shadow cast from the edge of the house would be lost in the shade of the trees. Given that, I settled on shooting in the back yard.
Decision #3: When to Shoot
View to be captured
The decision of when to shoot and where to shoot go hand-in-hand. Deciding to shoot in the back yard was fine but incomplete till I figured out what time of day to shoot. Long story short, as we already have a Blink camera on our side fence, I figured out that as that fence runs on a line that's about 153 degrees (approximately south-southeast), I could shoot at just after noon each day and the shadow would trace out the figure eight of an analemma on the ground just on our side of the fence and in the field of view of that camera.
Decision #4: What to Shoot
Gnomon on fence
Although I could have mounted just anything on top of the fence to cast a shadow, I took advantage to having access to a 3D printer and designed and printed my own gnomon in the form of a stylized Sun mounted on a post. It was printed in black but I took yellow Plasti-Dip both for a "sunny" look and also to give it a bit of additional protection against the elements.
Decision #5: How to Shoot
Early photographic attempts to capture a solar analemma in the sky with a film camera required incredible dedication, shooting at the exact same time of day, one day a week or every few weeks for an entire year. Because I am creating a timelapse video rather than a composite photo, I need to capture an image more frequently (every day) so I decided to automate the process. I have a home automation solution called Home Assistant. With it, I was able to write a script that takes a photo with the Blink camera in the back yard at 12:30pm (1:30pm during Daylight Saving Time) every day. The system also records metadata about weather conditions (overcast, sunny, etc.) in a text file, storing both the images and data on a home computer for later use in assembling the video.
Progress To-date
Although I only recently began posting about this project, I started planning it in December and started shooting the day after the winter solstice which fell on December 21st. Things are going well but there have been a few bumps in the road:
It turned out that the shadow cast by the first gnomon I created was a little too small so I redesigned a larger version and replaced the first one with it at the end of December.
Although the camera mount is locked in place, it appears that the image framing shifts a very small amount over the course of several days. My guess is that the weather going from sub-freezing to springtime temperatures, the plastic mount is expanding and contracting, affecting the alignment of the camera. Thankfully, the difference from image to image is small enough that I can align all the images using Photoshop so that they don't shift from day to day.
Early on, rain left water drops on the camera lens that affected the images but we've had quite a bit of rain since then and it hasn't happened again. If it does, I may need to add a hood to the camera mount.
In spite of these issues, my first pass at assembling the images into timelapse format looks promising. This version has two sections. In the first, watch for the yellow dot on the ground... it overlays the gnomon's shadow. In the second section, watch that same area of the ground and you'll see the shadow of the gnomon trace out the beginning of an analemma.
Timelapse showing 6 weeks of daily shadow captures (with gnomon shadow highlighted and with raw video)
As you can see, at just 6 weeks, there is not enough of the analemma yet to make out its distinctive figure eight shape but a pattern is beginning to take form. And there are some oddities in the video - gaps from overcast days (and some rain) and other things moving besides the shadow cast by the fence and gnomon (leaves, chairs, our dog, etc.) - all things I expected given my past experience creating timelapse videos.
But how exactly did I create the gnomon? What tools did I use to automate the daily image capture? And what techniques am I using to process and align the images? To create the video? In my next post, I'll dive into these technical details and more, sharing the nuts and bolts of my analemma timelapse setup for those who want to explore further.
Update: One Year Later
Having had an issue with the video camera a month or so after this post was originally made, I've postponed wrapping up the project, intending to have the final video run from the June solstice of 2025 through the June solstice of 2026. Stay tuned!
As I shared in an earlier post, one of the many projects I planned for the total solar eclipse involved doing data collection with a variety of sensors based on ESP32 microcontrollers. I haven't done any detailed analysis of the results yet but based on a quick review of some of the sensor data there are clear changes that are in line with what I expected.
First up is the ambient air temperature measured with a BME280 sensor for temperature, relative humidity and air pressure.
The air temperature certainly dropped which makes sense given the gradual and then sudden drop in UV sunlight. Interestingly, the drop lagged the eclipse by about 15 minutes with totality starting at 1:40pm local time and the lowest temperature being reached at about 1:55pm. The higher temperature in towards the end of the eclipse makes a little sense given before totality had been mostly cloudy and after totality was mostly clear. I am not yet sure what explains the dip at 2:55 or the temperature reaching over 110 at the end of the eclipse. It wasn't that hot where we were so I have some research to do.
For air pressure, it appears there was a general trend down. Obviously, air pressure changes are related to broader atmospheric conditions. I suspect I needed to have data from a much longer period before and after the eclipse to have any chance of seeing any form of correlation.
As relative humidity generally has an inverse relationship to temperature (though it can be influenced by other factors), these results are what I would have expected.
Next up is light level measurements. I used two sensors, an AS7341 color spectrum sensor and a TSL2591, a light level sensor. The AS7341 data will take more analysis to make sense of though it does show light levels in all frequencies it measures dropped to nearly zero during totality. The light levels in lux from the TSL2591 are pretty easy to understand.
This completely aligns with totality which in the location in Ellis County, Texas, where we were started at 1:40pm and ended 4 minutes 16 seconds later. The left side of the graph makes sense as it was mostly overcast with the Sun occasionally poking through in the period prior to totality, hence the graph peaks and valleys before 1:40pm. The right side of the graph also makes sense. It was generally clear for about an hour after totality but with it turning partly cloudy again in the last half hour. Unlike the start of the eclipse, it was mostly clear skies with large clouds blocking the sun here and there.
Although this is all very preliminary, just taking a glance at data results via the Home Assistant UI, these seem very much in line with changes expected during a total solar eclipse. If I find other meaningful results as I get time to do a more detailed analysis, particularly the sound level data and the color spectrum data, I'll post that, too. \
Click on a graph to see them enlarged.
PS. As I expected, the magnetometer data collected with a QMC5883L doesn't appear to show any magnetic field changes that might correlate to the eclipse. I'll leave that science to the professionals!
First of all, if you've been watching the weather forecasts, you may have concluded that the total solar eclipse passing through Dallas on Monday will be a bust. Well, don't give up hope, yet. Even though we got clouded out in 2017 on our trip to Marshall, Missouri, as you would see in my post from back then, I still managed to capture of view of totality through the clouds. All it takes is for the clouds to part a bit at just the right time or the clouds to be high altitude and thin for us to still be able to see totality. Regardless of the forecast, be sure to get outside to see what there is to see!
Even if we are clouded out, you'll still experience one aspect of a total solar eclipse: it will get dark! With that in mind, I expect to have a successful day whether I get to see the total eclipse or not. I have a bunch of microcontrollers (ESP32) with sensors that I'll be using to collect data that day.
That said, you may find that my approach to data collection is a bit unorthodox. Here's part of my setup for data collection. Yes, that is a Nonni's biscotti box. :-D
Seriously, here's the type of data I'll be collecting:
- light levels for visible light and near infrared (lux)
The architecture I'm using builds on infrastructure I already have in place. I use Home Assistant running on a Raspberry Pi for my home automation, control and historical data. Home Assistant supports integrating data sensors using microcontrollers called an ESP32 via a system called ESPHOME. By attaching various sensor components to an ESP32 then configuring it in ESPHOME, it makes it simple to automatically collect sensor data in Home Assistant for storage, retrieval, monitoring and analysis.
Here is an example of a historical data graph in Home Assistant. The beauty of this besides being able to quickly visualize data is that Home Assistant also makes it easy to download the data for analysis in other tools.
My original plan was to set things up to collect data through three full days, the day before, of and after the eclipse. Given the prospect of clouds and, more importantly, the forecast for rain on Tuesday, I've scaled back to just trying to collect data in the hours around the eclipse. I considered creating weatherproof enclosures for the sensors but that would have turned a shoestring-budget project into something quite a bit more expensive.
After things have wrapped up, I'll pull up history for all the sensor devices in Home Assistant and download the data for further analysis.
As for the details of the sensors I'm planning to deploy, let's start with the light sensors. You can see details of the code plus the specific sensors in this gist on github.com. For this sensor package, the ESP32 and the sensors are mounted on a breadboard that is in the bottom of the biscotti box.
The reason is that my goal is to measure changes in ambient light. For various (and technical) reasons, direct sunlight would be more challenging to measure with these sensors. Given we should see a drop in ambient light levels (and color levels) during totality even if it is cloudy, I think the data will be more predictable and meaningful just measuring ambient light. Pointing the sensors straight up and blocking them from direct sunlight should accomplish this.
One thing you'll see in the ESPHOME code for each sensor package is that they generally report data back to Home Assistant once a minute but include a switch I can turn on that tells the sensor to send measurements every second (or faster). I have Home Assistant automations set up to flip the high speed data collection switch on for each sensor package a little while before the eclipse starts and turn it back off a little while after the eclipse ends. That way once I set things up Sunday evening or Monday morning, I can focus my attention on the eclipse, leaving the data collection to happen automatically.
On one side of the outside of the box is another ESP32 mounted on a breadboard with a sensor to measure the environment. Here's the gist with the ESPHOME including details on the sensor. It will collect data on temperature, relative humidity and air pressure. The code also derives absolute humidity and dew point.
Based on things I have read including published eclipse science projects, we should certainly see a change in temperature as the Moon's umbra passes over us during totality. Relative humidity has an inverse correlation to temperature so I expect to see changes to it that are similar to the temperature changes (but inverted). I have no idea what to expect in terms of changes in absolute humidity, air pressure and dew point but it will be interesting to see if there are changes that match the timing of the eclipse.
On the other side of the box is an ESP32 with a digital microphone. This one is set up to measure changes in sound levels throughout the eclipse. You'll see in the gist, this is based on a custom ESPHOME component. It provides sound levels in several forms but my interest is in just having the unfiltered (raw) sound levels.
Measuring changes in sound levels that can correlate to the total phase of the eclipse may be challenging. Although it may "get quiet" in terms of reactions to the darkness by birds and insects, my guess is that loud expressions of joy during totality by folks gathered with us to observe the eclipse may offset any drop in sound levels by nature.
The last sensor package I've put together was an afterthought. I had one more ESP32 and also had a sensor that is a magnetometer, one that measures changes in magnetic fields in 3 axis. See this gist for the ESPHOME code which includes details of the sensor. The ESP32 I'm using in this case also happens to be much smaller than the others which seemed like to a good idea for a sensor trying to measure changes in local magnetic fields.
Based on my research, there have been changes in magnetic fields around Earth measured during past total eclipses but those measurements were performed with sophisticated equipment in the upper reaches of the atmosphere or in space. I don't have any reason to expect that I'll measure any changes that correlate to the timing of the eclipse with my simple magnetometer setup but I figure I'll do the data collection and see what happens.
For this sensor package, I've mounted the sensor on top of a wooden yardstick with the ESP32 below and a Wi-Fi antenna below that. My plan is to have this mounted on a stake well away from structures and people to minimize other magnetic fields nearby. However, that means it's further to the Wi-Fi router, hence the extra antenna. I'm also using a power pack instead of using a power adapter plugged into AC power. This means the only limitation on where I can put this will be how far from the house I get before the Wi-Fi signal drops.
Sometime next week when I have had time to review and analyze the data collected on Monday, I'll write up my conclusions and share them here.