STELLA-AM (Atmosphere Monitor)
The STELLA-AM measures and records carbon dioxide concentration, particulate matter in the PM2.5 and PM10 size ranges, barometric pressure, air temperature, humidity, 3-axis magnetic field, and 3-axis acceleration. Data are recorded to a micro-SD card with a time and date stamp in CSV format.
No soldering is required to build the instrument. Components connect with small cables and can be mounted on a piece of cardboard or a paint stirring stick, or enclosed in a 3D-printable housing. All software and 3D geometry files are freely available. The software works automatically with any subset of sensors, making the instrument configurable for different budgets. All components are commercially available, with a complete set costing approximately $180 in 2025 prices.
The STELLA-AM is powered by USB-C and does not require an internal battery, apart from a coin cell to maintain the clock. The housing measures approximately 6x3x1 inches, and the completed instrument weighs 115 g (4 oz).
To build your own STELLA-AM download the STELLA-AM files and follow the build steps.
STELLA Atmosphere Instrument Highlights
“The Golden Pathos Theory” – Single Plant Testing
Students test common houseplants as space life-support systems using STELLA-Q2 sensors to measure CO2 consumption. …
Lynn Nichols now PK-12 Director of Education Technology at Gilman, showcases how NASA's STELLA technology …
Bringing NASA Technology to the Classroom: One Educator’s Mission to Transform STEM Learning
Lynn Nichols transforms STEM education using NASA's STELLA instrument, bridging 3D printing, robotics & space …
Build Your Own STELLA-AM


| STELLA-AM Atmosphere Monitor instrument parts list | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Line | Quantity | Type of part | Part Name | Manufacturer | Model Number | Part Number | Material | Color change at Z mm | Color change at Z mm | Note: | ||
| 1 | 1 | Power source required | USB-C type power supply and cable | [-] | [-] | [-] | [-] | [-] | [-] | |||
| 2 | 1 | Media | micro SD card: 8GB or greater | SanDisk or Kingston | [-] | [-] | [-] | [-] | [-] | |||
| 3 | 1 | Electronics | microcontroller | Adafruit Industries | Adalogger RP2040 | 5980 | [-] | [-] | [-] | |||
| 4 | 1 | Electronics | baro/temp/humidity sensor | Adafruit Industries | BME280 | 2652 | [-] | [-] | [-] | The instrument will work without this sensor but will be missing the relevant data. | ||
| 5 | 1 | Electronics | CO2 sensor | Adafruit Industries | SCD-41 | 5190 | [-] | [-] | [-] | SCD-41 is higher accuracy than SCD-40 which is $5 cheaper. Both will work. | ||
| 6 | 1 | Electronics | particulates sensor | Adafruit Industries | PMSA003I | 4632 | [-] | [-] | [-] | The instrument will work without this sensor but will be missing the relevant data. | ||
| 7 | 1 | Electronics | real time clock module | Adafruit Industries | PCF8523 | 5189 | [-] | [-] | [-] | |||
| 8 | 1 | Electronics | magnetometer accelerometer sensor | Adafruit Industries | LSM303AGR | 4413 | [-] | [-] | [-] | The instrument will work without this sensor but will be missing the relevant data. | ||
| 9 | 1 | Electronics | display, OLED | Adafruit Industries | 1.12” 128x128 | 5297 | [-] | [-] | [-] | |||
| 10 | 1 | Electronics | button module, red | SparkFun Electronics | BOB—15932 | BOB—15933 | [-] | [-] | [-] | |||
| 11 | 2 | Wiring | Qwiic/ QT cable 100mm | Adafruit or SparkFun | Qwiic JST SH 4 pin 100 mm | 4210 or PRT-14427 | [-] | [-] | [-] | |||
| 12 | 5 | Wiring | Qwiic/ QT cable 50mm | Adafruit or SparkFun | Qwiic JST SH 4 pin 50 mm | 4399 or PRT-14426 | [-] | [-] | [-] | |||
| 13 | 1 | 3D print | AM top housing | [-] | [-] | PLA | 0.8 | 1.6 | Use file orientation to print. | |||
| 14 | 1 | 3D print | AM bottom housing | [-] | [-] | PLA | 1.4 | [-] | Use file orientation to print. | |||
| 15 | 1 | 3D print | A. baro CO2 retainer | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 16 | 1 | 3D print | C. clock retainer | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 17 | 1 | 3D print | D. processor retainer | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 18 | 1 | 3D print | E. mag accel retainer | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 19 | 1 | 3D print | F. button retainer | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 20 | 1 | 3D print | G. screen holder | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 21 | 1 | 3D print | lamp optic cc | [-] | [-] | clear PLA | [-] | [-] | Use file orientation to print. | |||
| 22 | 1 | 3D print | wall mount: optional | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 23 | 1 | 3D print | battery holder: optional | [-] | [-] | PLA | [-] | [-] | Use file orientation to print. | |||
| 1 | Battery | Battery | Adafruit | CR1220 | 380 | [-] | [-] | [-] | Put in RTC | |||
| 24 | 1 | Battery: NOT FOR FLIGHT | Battery: optional | Adafruit Industries | Battery 3.7 V 500 mAh | 1578 | Lithium Ion Polymer | [-] | [-] | do not use primary (alkaline) batteries | ||
| Spreadsheet version: | 20250423 | parts cost as of 2025 April | ||||||||||
Step 1: Connect Components for Initial Testing
Connect the sensors in this order using the small cables:
- Microprocessor → Time Clock – insert CR1220 battery
- Time Clock → Button
- Button → Display
Large cables:
- Display → Magnetometer
- Magnetometer → Particulates
Small cables:
- Particulates → CO2
- CO2 → Barometer
Step 2: Install CircuitPython
- Hold down the BOOT button on the RP2040 microprocessor while connecting it to your computer via USB-C
- The device will appear as an RP1-RP2 drive
- Drag and drop the UF2 file onto the drive (replace any existing files)
- The device will reboot and appear as CircuitPy drive
Step 3: Install Software Libraries
- Once the CircuitPy drive appears, drag and drop the code.py and lib folder onto the drive
- Go to your test codes folder and drag the code.py file for the clock onto the drive
Step 4: Set the Real-Time Clock
- Navigate to time.is/UTC to check the current UTC time
- Open your code editor and open the serial monitor
- Set the time in UTC format
- Tip: Add 5-10 seconds to the current time to account for saving delays
- Save the time settings and verify it saved correctly
- Check the time multiple times to ensure accuracy
Step 5: Install Main Operating Code
- From your code and libraries folder, drag code.py into the CircuitPy drive
- Make sure to overwrite any other code that was previously there
- The STELLA-AM should boot up and the screen should display data
- Test to ensure everything lights up properly
Step 7: Install the Time Clock (Most Difficult Component)
- Locate the retainer marked for the clock (retainers have letters marking their positions)
- Clean up the retaining bar with an exacto knife if needed for proper fit
- Slide the time clock into its retainer
- Make sure it fits snugly but don’t push too hard
- The bar should slide in easily once properly cleaned
- Trim any rough edges if necessary
Step 8: Install Microprocessor
- Flip the housing with the long side down
- Insert the microprocessor into its designated retainer
- Ensure it sits nice and snug (no need to push down too hard)
Step 9: Install Particulate Sensor
- Slide the particulate sensor under its retainer
- Snap it into place
- The particulate sensor helps hold the time clock bar in position
Step 10: Install CO2 Sensor
- Curl the wire slightly for better wire management
- Insert the CO2 sensor into its retainer
- Tuck it right in next to the barometer position
Step 11: Install Barometer
- Place the barometer in its retainer next to the CO2 sensor
- They should sit side by side
- Get the retaining clip and install it from side to side
- The clip holds both the CO2 and barometer sensors in place
- Give it a little nudge to ensure both are held securely
Step 12: Install Magnetometer
- The magnetometer has its own dedicated clip
- Pop the magnetometer into its retainer with the clip
Step 13: Install Button
- Make sure the button orientation is correct before installing
- Place the button in its retainer
- Clip the button down with its retaining clip
Step 14: Wire Management and Screen Installation
Note: Wire length can be an issue. You may need to rearrange wires for proper fit.
- If needed, pull out the particulate sensor temporarily
- Rearrange wires to get more length for the screen connection
- Reinstall the particulate sensor and button
- Wrap and organize the wires neatly
- Ensure the screen has adequate wire length and clearance
Step 15: Install the Display Screen
- Insert the screen into the top lid/housing
- Slide the retaining door down to secure it
- Verify everything fits properly
- Tuck the wires back into the housing
- Check that all components are properly positioned
Step 16: Close the Housing
- Verify all wires are properly tucked in
- Snap the top and bottom housings together
- Ensure all clips engage properly
Step 17: Install the Translucent Window
- Place the 3D printed translucent lamp window into position
- This allows you to see indicator lights while protecting the components
Step 18: Final Boot and Testing
- Connect the USB-C power cable
- The instrument should boot up automatically
- Verify the screen displays data properly
- Check that all sensors are reporting values
- Confirm data is being recorded to the micro-SD card
Congratulations! You’ve successfully built a STELLA-AM!
Troubleshooting Tips
- Wire length issues: Rearrange wire connections or carefully extend wire routing
- Tight 3D print fits: Use an exacto knife to clean up edges and support material
- Screen clearance: Adjust wire positioning and ensure proper seating in the top housing
- Component retention: Ensure all clips are properly engaged and retainers are clean
Important Notes
- The instrument is modular – you can use any subset of sensors if working with a limited budget
- All components are commercially available
- Power: USB-C (no internal battery except coin cell for clock)
- Data format: CSV files with time/date stamps on micro-SD card
- Housing dimensions: approximately 6″ x 3″ x 1″
- Total weight: 115g (4 oz)
