Outer Wilds Signalscope Inspired Planet Finder!

by Areeeeen in Circuits > Microcontrollers

9961 Views, 68 Favorites, 0 Comments

Outer Wilds Signalscope Inspired Planet Finder!

cuvah2.png
IMG20250818212255.jpg
IMG20250818211306.jpg
IMG_20250818_222731137_HDR.jpg
IMG_20250818_222520856_HDR.jpg
IMG20250818212233.jpg
IMG20250818212502_BURST000_COVER.jpg
IMG_20250818_215415277_HDR.jpg

I am Areen Phaltankar, studying in 12th grade at Mastermind Highschool, Bhosari, Pune, India


For those who’ve played Outer Wilds, I bet it was a magical and formative experience. It’s much more than just a game—it’s an immersive journey you can truly appreciate only once: on that very first playthrough. I made this project in hopes of capturing a bit of that whimsy in reality, a way to hold onto a relic from the masterpiece by Alex Beachum, the creator of Outer Wilds.

Of all the gadgets in Outer Wilds, the Signalscope always stood out to me. Maybe it’s because it’s the first significant tool you receive at the start of the game, or maybe it’s the simple charm of its HUD when you’re tuning into signals. Either way, I knew that if I was going to bring something from Outer Wilds into the real world, it had to be the Signalscope—reimagined here as a Planet Finder.

While I could’ve stuck to its original functionality—detecting frequencies—I wanted the device to exude a sense of cosmic connection. Which is how i landed on making a planet finder themed around the Signalscope


Features

  1. Identifies which planet (from the solar system) you’re aligned with while pointing the device in a direction
  2. Visual “lock-on” arcs (on the display) that merge into a full circle when perfectly aligned with a planet
  3. Plays discrete audio tracks from Outer Wilds for each planet, with volume that adjusts based on pointing accuracy
  4. Works completely offline using RTC, GPS, and SD card storage
  5. Boots with a custom splash/loading screen

Github Project Link (https://github.com/Areeeeen/OW_Signalscope_Planet_Finder/tree/main)

Github Account Link (https://github.com/Areeeeen)

Supplies

Electronic components-

  1. ESP32-WROOM Devkit x1
  2. ICM20948 IMU x1
  3. MAX98357a DAC x1
  4. 30Ω Speaker (50mm diameter) x1
  5. NEO6M GPS with Ceramic antenna x1
  6. DS1307 RTC x1
  7. TP4056 USB-C Charging module x1
  8. 3.7v to 5v Boost converter x1
  9. 3.7v Li-Po battery x1
  10. 0805 SMD 100Ω Resistors x2
  11. ILI9341 2.8 inch TFT Display x1
  12. 3-pin Lever Switch x1
  13. 4-8 GB SD card x1
  14. 10mm Leds: Red x1 - Green x1
  15. SIGNALSCOPE PCB (file attached below) x1

3D Models-

  1. Main body (file attached below)
  2. Handle (file attached below)

Screws, Nuts and Heated Inserts-

  1. M2.5 sized
  2. Screws - 3mm - x2
  3. Inserts - 4mm - x2
  4. M3 sized⠀⠀⠀⠀ Length
  5. Screws - 10mm - x22
  6. Inserts - 10mm - x22
  7. M4 sized
  8. Screws - 4mm - x4
  9. Inserts - 4mm - x4
  10. M6 sized
  11. Screws - 6mm - x2
  12. Nuts - x2

Connectors and Wires

  1. Male/Female JST Connectors/Wires
  2. 3 pin - 2.54mm pitch - 15cm length - x1
  3. 4 pin - 2.54mm pitch - 30cm length - x1
  4. 7 pin - 2.54mm pitch - 30cm length - x1
  5. 8 pin - 2.54mm pitch - 30cm length - x1
  6. Female header strips
  7. Male header strips
  8. Loose Wires

3D Printed Enclosures

Screenshot 2025-08-16 115853.png
Screenshot 2025-08-14 164847.png
Screenshot 2025-08-14 165055.png
Screenshot 2025-08-16 115920.png
Screenshot 2025-08-16 115956.png
Screenshot 2025-08-14 164858.png

the entire model consists of 3 colors: White, black and brown.

Signalscope_STL_v1.0.stl - either print in white and black simultaneously using a multi-color filament printer for a cleaner look, or print it in white and paint the black sections afterward.

Handle_STL_v1.0.stl - either print it in brown, or paint it brown afterward.


As for the material, use PLA for both prints.

Painting the Models (If You Used Single Filament Printer)

IMG20250816003305.jpg
IMG20250816003319.jpg
WhatsApp Image 2025-07-18 at 11.53.17_6748cb76.jpg

Once you have printed the parts, you can paint it first if you printed it all in white.

Refer to the image above to see which colors to use where.

Inserting the Brass Inserts

IMG_20250816_004504697_HDR (1).jpg
IMG_20250816_004421397_HDR (1).jpg
IMG_20250816_004356555_HDR.jpg
IMG_20250816_004437968_HDR.jpg
IMG_20250816_004447473_HDR.jpg
IMG20250817011447.jpg
inserts


Use a heated soldering iron to push the brass inserts into the designated holes in the models

Uploading the Code

Screenshot 2025-08-19 033426.png
Screenshot 2025-08-18 135004.png
Screenshot 2025-08-17 000730.png
Screenshot 2025-08-17 000137.png

The libraries needed to be installed are-

  1. TFT_eSPI
  2. ICM20948_WE
  3. RTClib
  4. ESP8266Audio
  5. TinyGPSPlus and TinyGPSPlusPlus
  6. PNGdec


Before uploading the code, make sure the User_Setup.h from the TFT_eSPI library folder has these lines in them -

#define TFT_MOSI 15

#define TFT_SCLK 14

#define TFT_CS 22 // Chip select control pin

#define TFT_DC 21 // Data Command control pin

#define TFT_RST -1


Make sure that the folder containing the Signalscope_v2.0.ino file is in a folder called Signalscope_v2.0, along with the following files

  1. loading.h
  2. astronomy.h
  3. astronomy.c

Don't forget to fill in important details at the top of the code for the device to work properly.

NOTE: Make sure that the ESP32 is not plugged into the PCB while uploading code to it.

NOTE: If you are getting an "i2c master..." error (or any error which allows the code to get flashed to the esp, but doesnt run), try to

  1. go to boards manager in Arduino IDE
  2. search for esp32
  3. under the versions list, select and install v3.1.3
  4. DO NOT click on the update button when prompted to update to v3.3.0


Get the files from here (https://github.com/Areeeeen/OW_Signalscope_Planet_Finder/tree/main/firmware/v2.0/Signalscope_v2.0)

Setting Up the PCB for Assembly

PCB_assembly_instructions.png
IMG_20250816_004821350_HDR.jpg
IMG_20250816_013421.jpg
schematic.png
Screenshot 2025-08-17 002405.png

The first step to making the Signalscope would be to assemble the SIGNALSCOPE PCB.


The female header strips will hold the modules and the ESP32 microcontroller itself, while the JST connectors will be used for the peripheral devices, i.e. the display, SD card slot and speaker. The male header strips will be used for the status LEDs, which will be installed in a later step


Get the PCB Gerber files from here - Github (https://github.com/Areeeeen/OW_Signalscope_Planet_Finder/tree/main/PCB%20design%20files/Compositus/v1.1/Gerber)

Making the Power Circuit

general POWER CIRCUIT schematic.png
TP4056.gif
IMG_20250727_195314943_HDR.jpg

Since the USB-C charging module will be out of the PCB, it will require external circuitry to work

follow the wiring as shown in the image above. The boost converter converts the 3.7v from the lipo battery to 5v, which we can then feed the ESP32 to power it and its peripherals.

The lever switch connects (when flipped on) or disconnects (when flipped off) the Ground of the battery to the Ground of the ESP32 and the boost converter, working as a power switch. This arrangement allows the battery to be charged even when the device is powered off.


NOTE: the battery is not connected to this circuit directly, but rather through the PCB. Therefore, no changes need to be made to this circuit when replacing the battery.

PCB Assembly

pcbA.jpg
pcb1.JPG
pcbB.jpg
PCBc.jpg
IMG20250810160631.jpg

ESP32 Placement

  1. The ESP32 development board must be mounted with its USB port pointing towards the bottom edge of the PCB.
  2. Ensure the board is fully seated and aligned with the header pins.

Antenna Placement

  1. The GPS antenna should be secured to the PCB using double-sided tape.

ICM20948 Orientation

  1. The positive X-axis marking on the IMU module must be oriented towards the top of the PCB.


The Peripherals:

  1. Speaker
  2. TFT display
  3. Status LEDs:
  4. Green LED - lights up with intensity depending on how closely you're pointing at a planet
  5. Red LED - lights up when esp32 is powered on and starts up

Dumping Audio Files to the SD Card

IMG20250819040319.jpg

The audio that will play from the speakers will be files from the SD card.


Get the files from here (https://github.com/Areeeeen/OW_Signalscope_Planet_Finder/tree/main/SD%20card%20files/Audio%20Tracks)

Assembling the Speaker Unit

Signalscope Speaker Assembly
IMG_20250816_005710715_HDR.jpg
IMG_20250816_005647807_HDR.jpg
IMG20250816001545.jpg
IMG_20250816_012602.jpg
IMG_20250816_005304213_HDR.jpg
IMG_20250816_005519575_HDR.jpg

These are the instructions to assemble the speaker unit of the Signalscope


NOTE: When soldering the JST wires to the MAX98357a, make sure that the pins correctly correspond to the place it will fit on the JST connector's order on the PCB

Assembling the Display Unit

Signalscope Display Assembly
IMG_20250816_010237558_HDR.jpg
IMG_20250816_010225991_HDR.jpg

These are the instructions to assemble the display unit of the Signalscope


NOTE: When soldering the JST wires to the TFT display, make sure that the pins correctly correspond to the place it will fit on the JST connector's order on the PCB

Final Assembly

Signalscope Final Assembly
IMG20250817222436.jpg
IMG20250817221454.jpg

Charging the Signalscope

Untitled video.gif

use a USB-C charger with a 5v DC output.


A solid red light means that the battery is charging

A flickering red light means that the battery is disconnected

Adding Stickers!

Screenshot 2025-08-16 000705.png
IMG20250818205453.jpg
IMG_20250818_220316.jpg
IMG20250818220942.jpg
IMG20250818221016.jpg
IMG20250818221005.jpg

While functionally the device is now ready to be powered on and to be used to find planets in the cosmos, it lacks the visual charm of the original Signalscope from the game.

For which, I have made a PDF with images that you can get printed on sticker/adhesive paper to later stick on your new Signalscope!


Enjoy! :D

Downloads

How It Works

giphy.gif
Screenshot 2025-08-19 122134.png
Screenshot 2025-08-19 122125.png
Screenshot 2025-08-19 122111.png

When you point the Signalscope at the sky, the IMU (Inertial Measurement Unit) senses its orientation. The microcontroller then uses the real-time clock to calculate planetary positions for that exact moment and location.

It calculates the device's altitude (angle deviated from horizon) and azimuth (angle deviated from horizon) angles and compares them to the azimuth and altitude of the planets from the solar system. The lesser the difference between them, the closer the semi-circles on the display get, until eventually forming an entire circle and turning blue; implying that you are pointing directly at a planet. The display then shows you which planet you're looking at, along with the distance between Earth and that planet.

Each planet is mapped to a unique soundtrack which will play when pointed at, and at varying volume levels depending on how close you are to pointing directly at said planet.