Designed using Fusion 360, sliced using Cura, and printed in PLA on an Ultimaker 3 extended at .1mm with 50% infill.
To assemble the base, I used Cura 2.3.1. The "automatic" model merge would not correctly merge "Base.stl" and "Gear Heart Bottom.stl", so I turned off "Ensure models are kept apart" and "Automatically drop models to the build plate" features on the Cura "Preferences, General" pane. Next, , I loaded "Base.stl" then "Gear Heart Bottom.stl" onto the build plate, then raised "Gear Heart Bottom.stl" 22mm (z axis), and 1.25mm right (x axis), thus my offsets were x = 1.25, y = 0, and Z = 22.
After printing, test fit "Heart Center.stl" in "Knob.stl". Once tested, slide "Heart Center.stl" into the base assembly, then press "Knob.stl" onto "Heart Center.stl.
Finally, add the pins and gears to "Heart Center.stl", making sure each gear rotates on it's pin smoothly before proceeding to the next.
Hope you like it!