The Meridian Orrery: a Simple 3D Printed Solar System With a Working Moon

by illusionmanager in Workshop > 3D Printing

8127 Views, 62 Favorites, 0 Comments

The Meridian Orrery: a Simple 3D Printed Solar System With a Working Moon

The Meridian Orrery - a 3D Printed Solar System With a Working Moon

For most of history, models of the solar system were complex machines with countless gears. This one takes a different approach. It is an exercise in simplicity.

The Meridian Orrery is the simplest fully functional 3D-printed orrery, or planetarium I have designed so far. It shows all eight planets, and even includes a working Moon orbiting the Earth.

Once per night, the mechanism performs a short sequence of precise clockwise and counterclockwise movements to bring every planet and the Moon into their correct positions. The system is driven by a small stepper motor and controlled by an ESP32 running a very precise astronomical simulation.

A built-in real-time clock allows the device to calculate planetary positions locally, without any internet connection. Earlier versions relied on WiFi and external data sources such as NASA, but this design runs entirely on its own.

To build it, you only need a 3D printer, a soldering iron, some super glue, and sandpaper.

A simple mechanism, with a surprisingly accurate result.


A Short History


During the Enlightenment, devices such as orreries and planetaria became popular because they made abstract ideas about the universe tangible. Thinkers such as Newton and Kepler had shown that the motion of the planets could be explained by universal physical laws rather than tradition or theology. Orreries translated those laws into visible, mechanical motion.

They demonstrated how planets orbited the Sun in a predictable way. For a society increasingly interested in reason and empirical observation, these instruments provided a clear, almost self-evident proof that the universe operated according to consistent principles.

At the same time, orreries were also objects of education and status. Wealthy patrons and institutions used them to showcase intellectual sophistication and alignment with Enlightenment values such as curiosity, science, and progress. Public lectures often featured demonstrations with these devices, turning complex astronomy into something accessible and engaging.

In that sense, orreries were not just scientific tools, but also cultural symbols of a shift toward a rational and mechanistic understanding of the world.

Supplies

soldering-iron.png
stepper-motor.png



  1. ball head pins for the planets
  2. superglue
  3. esp32C3 super mini
  4. stepper motor with gearbox (1:603 recommended, 1:236 optional)
  5. tmc2209 stepper motor controller
  6. DS3231 real time clock
  7. reed switch
  8. magnet 2x5 mm (note that I used rare earth metal ones, but couldn't find the exact item anymore. I guess these are strong enough as they only have to activate the tiny reed switch)
  9. Small ball (1.5 mm or 2 mm, for the Moon - I used a ball bearing)
  10. soldering iron
  11. 3d printer
  12. sanding paper (I used 150, 240, 320 and 400 grid)


The magnet and reed switch help the system find its starting position more quickly. You can leave them out, but they are required if you want the Moon mechanism to work correctly.

If you decide not to include the Moon, simply do not print the small Moon gear. The rest of the system and software will work fine for the planets alone.

For the stepper motor there are two options, one with a 1:603 ratio and one with a 1:236 ratio. I recommend the 1:603 as it is much stronger. The 1:236 version has the advantage of being faster, which is useful for demonstrations, but it is only just strong enough and requires very smooth prints and low friction.

If reliability is your priority, use the 1:603 motor. If you want faster visible movement and are confident in your print quality, the 1:236 motor is a good alternative.

Before building it, it helps to understand the idea behind the mechanism.

How Does It Work

All the rings can rotate freely. Each ring has a small tab on the inside and one on the outside. Mercury is attached directly to the motor. When it starts rotating, its outer tab eventually engages the inner tab of the Venus ring, pushing it along. Shortly after, Venus engages Earth, and so on, until all planets and the zodiac ring are moving together.

A magnet in one of the rings, together with a reed switch below it, defines an exact reference position. When this position is detected, all planets are aligned with the vernal equinox (21 March).

Once this point is reached, the motor reverses direction and begins placing the planets. It first rotates until Neptune reaches its correct position. Then it reverses again to set Uranus, and continues this process step by step until all planets are in place.

The Moon is handled differently.

It has a small gear with 6 teeth running inside a ring with 66 teeth. When the Earth ring moves, the Moon rotates around it. With this ratio of 1:11, a full rotation of the Earth causes the Moon to end up in exactly the same location. In other words, when the system has calculated the Earth's rotation, it also knows where the Moon would end up.

This is not yet the position where the Moon is in reality. To fix this, immediately after finding the equinox, the system rotates the whole zodiac and all the planets with it (a.k.a. the whole universe) a little bit further. This causes the Moon to rotate just enough extra to make sure it ends up in the correct location.

Printing

printing-grooves.gif

For the best visual result, print all planetary rings and the zodiac ring in their default orientation and enable ironing. The zodiac ring would be easier to print flipped upside down, but that produces a different surface finish. I chose a consistent ironed top surface instead.

To make this work, the zodiac model includes a strange intermediate layer on the inside surface. It may look unusual, but it prevented my slicer from starting with an unsupported inner wall. Print it with a layer thickness of 0.16 mm and a first layer thickness of 0.22 mm.

The zodiac ring requires support. All other rings are designed to print with minimal support, only under the small tabs.

The central Mercury assembly includes pre-modeled support. This avoids slicer-generated support inside the motor axle hole, which would otherwise be difficult to remove cleanly.

The Earth ring needs additional support at the hole for the small Moon gear. This support can be difficult to remove, and you may need a file to clean up the opening afterward.

Print the Venus and Earth rings at 100 percent infill. The added mass helps them stay properly seated in their grooves.

The small tabs on each ring are pretty sturdy. In your slicer make sure you don't have a Z-Seams at the position of the tabs, as that might weaken them.

The small Moon gear prints best with a 0.2 mm nozzle. If you only have a 0.4 mm nozzle, set the line width to 0.33 mm. This is generally not recommended, but in this case it is a very good idea and it worked great for me. (look at the different way it sliced the gear with 0.4mm and with 0.33mm line width to see why)

The planetary rings and zodiac require a lot of sanding. Not only to look good, but also to run very smoothly. I used grit 150, 240, 320 and for the final finish 400. Make sure you get rid of z-seams, elephant's foot, etc. It helps when you set the Initial Layer Horizontal Expansion (or what ever it is called in your slicer) to -0.3 mm.

When you put a ring inside its groove and give it a push, it should be able to rotate by itself for at least two full rotations. If it doesn't, keep sanding.

Assembly

earth.jpg
planets.jpg

To reduce the need for support, the base is split into two parts: bottom_plate.stl and electronics.stl. First insert the motor axle through the hole in the bottom plate. This helps align both parts correctly. Once aligned, glue them together using a small amount of super glue.

For the planets I cut some ball head pins to about 7 mm length. Print Saturn-rings.stl in a different color and slide it around one of the pins. Use a drop of super glue on the back to hold them in place. For the Earth I used a dark blue ball head pin and glued a 1.5 mm ball bearing onto its side, representing the moon.

Use a file to make a nice smooth opening for the gear that rotates the moon. The pin goes through the top hole, the small gear and into a not very deep hole to stabilize the axle. Don't glue the gear to the axle, it should be a friction fit. This is done so you can calibrate the orientation of the Moon. If needed, use a small drill to make sure it is free. Check if it can rotate freely and easily in its groove.

The 2 mm magnet goes into the bottom hole of the ring that holds Saturn.

For the Sun, you can use another ball head pin, but I chose to use an earring instead.

Electronics

inside.jpg
schematic.png

The wiring is pretty straightforward. Remove the pin header and connectors from the Real-Time Clock DS3231 and from the stepper motor controller TMC2209. Then follow the wiring diagram shown above.

The Reed switch fits into the small opening underneath the screw hole on the right side in the picture. Make sure its wires are long enough. When the magnet in Saturn’s ring passes over the reed switch, it closes. This gives the system a precise reference position (zero point).

In order to get maximum power to the motor, rotate the variable resistor on the TMC2209 counter clockwise.

Before using some hot glue to keep the motor and electronics in place, it is best to test everything first using the software in the next step.

Software

Arduino-ide-preferences.png
arduino-ide-library.png

Let's get to the exciting part - programming! To get started, you'll need to download the Arduino IDE (https://wiki-content.arduino.cc/en/software/) and connect your ESP32 to your computer with a USB cable.

Once you've installed Arduino IDE, go to File/Preferences and add "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json" to the line after "Additional boards manager URLs." Then select "ESP32C3 Dev Module" as your processor and specify the USB com port your device is connected to.

To get your Meridian Orrery up and running, you'll need to install the RTClib from Adafruit libraries. You should do that directly from the Arduino IDE.

In the Arduino IDE under Tools set USB CDC on boot to "enabled".

Once you've installed the necessary library, download the Meridian_orrery.ino file below and open it in Arduino IDE. You might want to read the comments near the beginning of the file.

Open the Serial Monitor in the Arduino IDE and set the baud rate to 115200.

Next, compile the code and send it to your orrery through the USB connection.

After uploading, the orrery will immediately start running.

It will take a couple of minutes to complete its initial sequence of rotations. When it finishes, it is ready to receive commands over the serial monitor.

Use 'h' to ask for help on how to use the commands. First you might check the time and date. Use the 'd' command to do so. Using some compiler magic, it should already be set correctly.

Next use 'r', it should do clockwise rotations and if you installed the magnet it should tell you it detected zero. After at most 9 revolutions it will stop. If it went counterclockwise, switch the values of #define CLOCKWISE and #define COUNTERCLOCKWISE in the beginning of the program.

If the motor doesn't run but does make some noise, you might want to increase the value of PULSE_TIME (try 100).

Putting It All Together

Once everything works, put it together as shown in the video earlier. For each ring, slide the side with the tabs in first. You may need to rotate the zodiac ring slightly before it drops into place.

Now you are ready to calibrate the moon. This needs to be done once after assembling the rings. The fastest way is to send the 'r' command. It will rotate and grab all planets and the zodiac. On the console in the Arduino IDE you should see the message "zero detected", which means it has seen the magnet. Without the magnet being detected, the Moon mechanism will not work correctly.

When the command is finished, hold the Earth ring in place and rotate the Moon (on its friction fit) so it points directly at the Sun (New Moon). That's it.

If you ever need to re-calibrate, without a computer connection, just wait for a full Moon or New Moon and do the same: hold the Earth ring in place and rotate the Moon to match the real Moon’s phase.

Decoration

orrery.jpg
decoration-planets.png
decoration-zodiac.png

My 3D printer is a 3-in-1 Snapmaker machine, which allows me to replace the print head with an IR laser. I used this to engrave the names of the zodiac on the outer ring, along with tick marks every 10 degrees. The inner rings were labeled with the names of the planets. If you have an IR laser, you can use the images above. You need to scale them to 120mm square so they match the size of the orrery. The tick marks are on purpose a bit too long, so when engraving the zodiac with the laser, be sure to first remove Neptune's ring.

I realize most people won’t have access to a laser module, so you will need to find your own solution. Perhaps you can use a set of these Zodiac beads or these or you could print some as I did for my much more complicated astronomical clock.

It might be helpful to get the correct placement by first pressing 'r', which resets the orrery. When it is done, all the planets should be at the line between Aries and Pisces. This is the equinox (21 March) and is generally used as 0 in astronomy. To get 10 degrees divisions you can enter '-10' repeatedly and mark the spots.

This step is intentionally flexible. The decoration is what gives your orrery its character, so it is worth taking your time here.

Final Thoughts.

That's it. Once a day, the orrery springs to life and sets the planets and Moon to their correct positions.


If you build one, I'd love to see it.

If you enjoyed following along with these instructions, please consider subscribing to my channel on YouTube at youtube.com/@illusionmanager or showing your support by buying me a coffee at https://ko-fi.com/illusionmanager. Thank you for joining me on this fun project!

Upgrade #1... Touch

touch.gif
schematic touch.png

After publishing this Instructable, someone asked if the orrery could show its motion during the day instead of only in the middle of the night. That turned out to be an easy change, but it also made me realize that people simply want to see it move on demand.

So I added a small touch sensor and used a metal ("gold") earring as the Sun, both of which I already had lying around.

Supplies

  1. TTP223 touch sensor
  2. "Gold" earring (I used an 8 mm one, but there are plenty of similar options available)

Construction

Replace the existing Sun with the earring.

Connect the TTP223 to 3.3 V and GND, and connect its signal pin to GPIO4 on the ESP32. Then run a wire from the sensor’s "antenna" pad to one of the brass pillars on the motor. The idea is that the earring is electrically connected through the motor’s gearbox to the touch sensor.

Of course changes are needed in software, but I replaced the software in step 5 with a version that should work with and without touch sensor.

When you tab the Sun, the orrery will spring to live and perform its little dance.

Upgrade #2... Web Interface

webinterface.png

If you do not want to add the touch sensor upgrade, you can instead use this software update, which gives the orrery its own small web interface. From there you can see what the orrery is doing, reset it without touching it, or temporarily set it to any date you like, for example your birthday.

Download the much bigger code below. The code should work on any version of the orrery. To enable the web interface, uncomment the line:

#define HAS_WEBSERVER

near the beginning of the code. A little further down you can set

#define WEB_USERNAME "your_username"
#define WEB_PASSWORD "your_password"

You can also leave them empty, as I did, but then anyone within WiFi range can reset or move the orrery.

After uploading the code, search on your phone for the WiFi access point named "Meridian Orrery" and connect to it. The network does not provide internet access, which is normal. Then open a browser and go to:

192.168.4.4

The web interface should appear.

Most browsers allow you to add the page to your home screen. I recommend doing that, so you do not have to type the address every time. (More than 200 lines of code were used, just to give you a nice icon on your home screen.)

I do not recommend using Chrome for this interface, because its date picker only scrolls one month at a time, which makes changing years rather tedious. Firefox and Dolphin both work much better for this. In the image above you can see the Dolphin date selection interface. You do not need to make either browser your default browser; you can simply use one of them for the orrery and create the shortcut from there.

Even when using the shortcut, you still need to first connect your phone to the "Meridian Orrery" WiFi network before opening the page.


When you have suggestions for Step 11: upgrade #3, don't hesitate to leave a comment.