STELLA-1.2
The STELLA-1.2 Base Platform is a modular foundation for monitoring, featuring GPS positioning, onboard data logging, real-time display, and audible feedback (beeper) for user responsiveness. This versatile computing core accepts interchangeable sensor module plugins, allowing users to configure the instrument for different applications by simply swapping sensor packages in and out. Following our soft launch beta program, we incorporated extensive user testing and feedback to create the official STELLA-1.2 with redesigned 3D-printed housing featuring improved manufacturing tolerances, enhanced structural integrity, and better environmental protection for field deployments.
Important for beta users: The official STELLA-1.2 and plugins require a new 3D printed housing and is not compatible with beta sensor modules. A conversion video guides beta testers through rewiring for the new platform.
Modules
STELLA-Lab_Spec (Excitation Spectrometer) **coming soon**
STELLA-AA (Air Analyzer) **coming soon**
STELLA-1.2 Highlights
From Orbit to Earth: Agricultural Workforce Development using Real-Time Spectrometry
At Garden City Community College in Kansas, Assistant Professor Elisa Mai integrated STELLA spectrometers into …
Garden City Community College Completes Pilot Course with NASA Acres
Garden City Community College (GCCC) in Garden City, Kansas has successfully concluded the first offering …
Petya in the Field
Watch Dr. Petya Campbell, a NASA Goddard research scientist with over 20 years of field …
STELLA-1.2 Base Platform
Commercial Off The Shelf (COTS) Parts
| Line | Description | Quantity each | Manufacturer/ Vendor | Manufacturer PN | Unit Price | ||
|---|---|---|---|---|---|---|---|
| 1 | Permaproto board, full size | 1 | Adafruit | 1606 | 7 | ||
| 2 | Feather ESP32-S3 | 1 | Adafruit | 5477 | 18 | ||
| 3 | rotary encoder with knob | 1 | Adafruit | 377 | 5 | ||
| 4 | POPO power button switch | 1 | Digikey | CW181-ND | 2 | ||
| 5 | Eyespi breakout board | 1 | Adafruit | 5613 | 2 | ||
| 6 | Eyespi cable, 100mm | 1 | Adafruit | 5239 | 1 | ||
| 7 | Cap touch TFT display | 1 | Adafruit | 2090 | 30 | ||
| 8 | SD card module | 1 | Adafruit | 4682 | 4 | ||
| 9 | 8GB micro SD card | 1 | Adafruit | 1294 | 10 | ||
| 10 | Ultimate GPS breakout | 1 | Adafruit | 5440 | 30 | ||
| 11 | 0.1uF capacitor | 1 | Digikey | C315C104M5U5TA7303 | 0 | ||
| 12 | PCF8523 RTC clock module | 1 | Adafruit | 5189 | 5 | ||
| 13 | 10kΩ resistor | 3 | Digikey | RNF18FTD10K0CT-ND | 0 | ||
| 14 | CR1220 coin cell battery | 2 | Adafruit | 380 | 2 | ||
| 15 | TPS61023 5V 1A boost | 1 | Adafruit | 4654 | 4 | ||
| 16 | Qwiic cable 100mm | 1 | Adafruit | 4210 | 1 | ||
| 17 | 2200 mAh cylindrical battery (alt bat) | 0 | Adafruit | 1781 | 10 | ||
| 18 | 4400 mAh battery pack (alt bat) | 0 | Adafruit | 354 | 20 | ||
| 19 | 6600 mAh battery pack (first choice bat) | 1 | Adafruit | 353 | 25 | ||
| 20 | magnet connector pair, RA, 4 positions | 1 | Adafruit | 5358 | 7 | ||
| 21 | magnet connector pair, RA, 3 positions | 1 | Adafruit | 5360 | 6 | ||
| 22 | USB C cable | 1 | Digikey | 1568-CAB-16905-ND | 5 | ||
| 23 | Qwiic buzzer | 1 | Digikey | 1568-24474-ND | 11 | ||
| 24 | 1/4-20 Hex Nut 7/16 wide x 7/32 thick | 1 | McMaster Carr | 95462A029 | 0.09 | ||
| 25 | Purse Strap | 1 | Amazon | 10 | |||
| Total | 185 |
3D Printed Parts
| Line | Description | Quantity |
|---|---|---|
| 1 | Lower housing | 1 |
| 2 | Upper Housing | 1 |
| 3 | Tail lights | 1 |
| 4 | Rec window | 1 |
| 5 | GPS window | 1 |
| 6 | clock spacer | 1 |
| 7 | swing door | 1 |
| 8 | Qwiic Buzzer retainer | 1 |
| 9 | Assembly fixture | 1 |
| 10 | magnet coupler alignment fixture for main body w flats | 2 |
| 11 | SD Card Alignment | 1 |
| 12 | GPS card alignment | 1 |
Follow along with the STELLA-1.2 Build Video.
1. Setting up Microcontroller and Testing - Programming
Initial Setup
Extract Files: Unzip the STELLA-1.2 file to access its contents.
Enter Bootloader Mode:
- Hold down the BOOT button on the microprocessor
- Connect the USB-C data cable from your computer to the microprocessor
- A drive labeled FEATHERBOOT should appear in your file explorer
- If the drive doesn’t appear: Press the RESET button twice quickly, then press the BOOT button
Install Firmware:
- Navigate to the UF2 folder
- Drag and drop the .uf2 file onto the FEATHERBOOT drive
- Wait for the copy to complete
- The FEATHERBOOT drive will automatically eject and be replaced by CIRCUITPY
Install Software:
- Open the STELLA-1.2-code-and-libraries folder
- Drag and drop the following items onto the CIRCUITPY drive:
code.pyfilesetting.tomlfileconfiguration_filesfolderlibfoldersoftware_modulesfolder
Testing the Microcontroller
Prerequisites:
- Microcontroller connected via USB-C data cable
- Mu Editor installed and open
Test 1: Unique Identifier
- In Mu Editor, click Serial at the top
- Navigate to:
S12_test_codes→main unit test codes→A0._microcontroller_unique_identifier - Drag and drop
code.pyinto the CIRCUITPY drive - Check the serial output in Mu Editor for the Unique Identifier
Test 2: Blink Indicator
- Navigate to:
S12_test_codes→main unit test codes→A1._microcontroller_blink_indicator - Drag and drop
code.pyinto the CIRCUITPY drive - Verify the microprocessor LED is blinking
Note: Each time you drag a new code.py file to the CIRCUITPY drive, it will replace the previous version and automatically restart the microcontroller.
2. Microcontroller to Test Clock - Build
| Line | Description | Function / instructions | MC pin | Front/ Rear | Location 1 | Location 2 | color/ note |
|---|---|---|---|---|---|---|---|
| 1 | 3D print | coupler installation fixture | magnetic coupler alignment fixture | ||||
| 2 | 3D print | clock spacer | clock holder | ||||
| 3 | soldering tools | use SAC305 alloy solder | lead-free solder (SAC 305 alloy, 0.020” = 0.5mm diameter), safety glasses, fume exhauster, iron tip size: 1.5-2.0mm, iron temperature 290ºC/550ºF | ||||
| 4 | cut traces | bus traces | Rear | 1 AB, BC, CD | 2 AB, BC, CD | cut traces with a sharp knife, remove segment | |
| 5 | cut traces | analog traces | Rear | 1 Hi, iJ | 2 Hi, iJ | cut traces with a sharp knife, remove segment | |
| 6 | magnet coupler 4 pos | 4 pin, flat face | Front | use alignment fixture labelled “Flats” | |||
| 7 | magnet coupler 3 pos | 3 pin, flat face | Front | use alignment fixture labelled “Flats” | |||
| 8 | test before install | microcontroller | TEST A. microcontroller: Install CircuitPython by clicking reset twice in the specified cadence. Then copy the UF2 file onto the FEATHERBOOt drive. Connect to Mu Editor, ctrl-c, ctrl-d, checkoutputs. |
||||
| 9 | install pins on microcontroller: use two layers of protoboard as a fixture | NOTE: install the header pins long ends from the bottom of the microcontroller board to the top, sticking out about 4mm above the top of the microcontroller board, with the plastic spacer up against the bottom of the microcontroller board. Neatness is important: the sticking out portion of the pins will be used to connect to later accessories, so keeping the upper portion of the pin free of solder is important. Do not trim the pins, even after installation is complete. | |||||
| 10 | install microcontroller on rear of main board. | install microcontroller on rear of main board | Rear | C44-C59 | i44-i55 | ||
| 11 | ground | microcontroller ground | GND | Front | A56 | GND (-) below A | GND |
| 12 | power | microcontroller 3V3 out | 3V | Front | A57 | 3V (+) below A | +3.3V |
| 13 | SCL | microcontroller SCL | SCL | Front | J45 | SCL (-) above J | i2c Serial Clock |
| 14 | SDA | microcontroller SDA | SDA | Front | J44 | SDA (+) above J | i2c Serial Data |
| 15 | bus coupler wires | GND | Front | B2 short to B1 | GND (-) below 2A | GND |
|
| 16 | bus coupler wires | 3V | Front | A2 short to A1 | 3V (+) below 2A | +3.3V |
|
| 17 | bus coupler wires | I2C_SDA | Front | E1 | SDA (+) above 2J | i2c Serial Data |
|
| 18 | bus coupler wires | I2C_SCL | Front | C2 short to C1 | SCL (-) above 2J | i2c Serial Clock |
|
| 19 | clock battery | insert clock battery | |||||
| 20 | test bus coms | QT connect test/ clock set | clock module | qwiic connector | TEST B. clock set |
3. QT Connect Test and Clock Set - Programming
Hardware Setup
- Connect the RTC clock module to the microprocessor using the Qwiic cable
- Connect the microprocessor to your computer via USB-C data cable
Testing and Configuration
I2C Bus Scan
- Open Serial in Mu Editor
- Navigate to folder:
B0._i2c_bus_scan - Drag and drop
code.pyonto the CIRCUITPY drive - Check the serial output in Mu Editor for the I2C device response
Real-Time Clock Setup
- Navigate to folder:
B1._real_time_clock_and_clock_set - Drag and drop
code.pyonto the CIRCUITPY drive - Go to time.is/utc to get the current UTC time
- Add approximately 5 seconds to the time to allow buffer for entering all prompts
- In Mu Editor’s serial window, enter the adjusted date and time in UTC format when prompted
4. Rotary Encoder to Display - Build
| Line | Description | Function / instructions | MC pin | Front/ Rear | Location 1 | Location 2 | color/ note |
|---|---|---|---|---|---|---|---|
| 21 | install rotary encoder | rotary encoder | Rear | H37, H39 | D37, D38, D39 | trim off the bottoms of the mounting ears, then install the encoder on the rear of the board |
|
| 22 | rotary encoder | GND | Front | A38 | GND (-) below A | GND |
|
| 23 | rotary encoder | GND | Front | F35 | GND (-) below A | GND |
|
| 24 | rotary encoder | GND | Front | i35 | i37 | GND |
|
| 25 | rotary encoder | A4 | Front | B39 | B51 | rotary line B |
|
| 26 | rotary encoder | A3 | Front | B37 | B52 | rotary line A |
|
| 27 | rotary encoder | A2 | Front | i39 | B53 | pushbutton switch |
|
| 28 | test rotary encoder | rotary encoder test | TEST C. rotary encoder | ||||
| 29 | solder pins onto eyespi | instructions: Use breadboard as a fixture | |||||
| 30 | install display eyespi breakout board | tape the eyespi board in place | Front | D24-32 | G24-32 | connector latch bar [black] towards J | |
| 31 | trim pins | ||||||
| 32 | display breakout | 3V | Front | A24 | 3V (+) below A | +3.3V |
|
| 33 | display breakout | GND | Front | A26 | GND (-) below A | GND |
|
| 34 | display breakout | SCL | Front | J27 | SCL (-) above J | i2c Serial Clock |
|
| 35 | display breakout | SDA | Front | J28 | SDA (+) above J | i2c Serial Data |
|
| 36 | display breakout | TFT_CS | D12 | Front | A32 | J51 | TFT_CS |
| 37 | display breakout | TFT_D/C | D11 | Front | B30 | J50 | TFT_D/C |
| 38 | display breakout | MISO | MISO | Front | A29 | A47 | MISO |
| 39 | display breakout | MOSI | MOSI | Front | A28 | A48 | MOSI |
| 40 | display breakout | SCK | SCK | Front | A27 | A49 | SCK |
| 41 | modify display | close jumpers on center back of display (not at the edge vias) | IM1, IM2, IM3 | Do Not close IM0 | |||
| 42 | test display | TEST D. display | |||||
| 43 | test touchscreen | TEST E. touch screen |
5. Rotary Encoder and Display Tests - Programming
Rotary Encoder
- Open Serial in Mu Editor
- Navigate to folder:
C._rotary_encoder - Drag and drop
code.pyonto the CIRCUITPY drive - Twist and push the rotary encoder and observe the results in the serial output
Display Testing
Hardware Setup: Connect the screen to the EYESPI module using the cable
TFT Display
- Navigate to folder:
D._2.8in_tft_display - Drag and drop
code.pyonto the CIRCUITPY drive - Check the display screen for visual output
Capacitive Touch Screen
- Open Serial in Mu Editor
- Navigate to folder:
E._capacitive_touch_screen - Drag and drop
code.pyonto the CIRCUITPY drive - Tap on the display with your finger and observe touch coordinates in the serial output
Note: Each test replaces the previous code.py file on the CIRCUITPY drive and automatically restarts the microcontroller.
6. 5V to Analog - Build
| Line | Description | Function / instructions | MC pin | Front/ Rear | Location 1 | Location 2 | color/ note |
|---|---|---|---|---|---|---|---|
| 44 | install boost pins | pins only, 4 positions | Front | G17-20 | - | pins | |
| 45 | install resistor | 10kΩ resistor (not polarized) | Front | H20 | H23 | brown-black-orange, enable pull-down | |
| 46 | install resistor | 10kΩ resistor (not polarized) | Front | H16 | H19 | brown-black-orange, divider high | |
| 47 | install resistor | 10kΩ resistor (not polarized) | Front | G13 | G16 | brown-black-orange, divider low | |
| 48 | boost GND | GND (leave some slack to make room for the clock module spacer) | Front | F13 | GND (-) below A | GND |
|
| 49 | boost GND | GND | Front | J13 | J18 | GND |
|
| 50 | boost GND | GND | Front | i18 | i23 | GND |
|
| 51 | boost enable | 5V boost enable | D10 | Front | J20 | J49 | 5V enable |
| 52 | boost 5 monitor | 5V/2 monitor | A1 | Front | i16 | B54 | 5V monitor at 2.5V |
| 53 | Vbat distribution | Vbat | Vbat | Front | J12 | J55 | Vbat, unregulated lithium battery output |
| 54 | Vbat supply to boost | Vbat | Vbat | Front | i12 | J17 | Vbat, unregulated lithium battery output |
| 55 | boost 5V out | 5V power | Front | J2, J1 | J19 | 5V |
|
| 56 | install boost module | boost module | Front | G17-20 | - | components up, body towards J | |
| 57 | test 5V power | 5V test | TEST F. 5V boost (connect LiPo battery for test) | ||||
| 58 | cut trace | disable clock LED | front of the clock module | ||||
| 59 | clock header pins | on front of board, use breadboard as fixture | |||||
| 60 | install clock module | install clock module on printed spacer | Front | B16-20 | - | on printed spacer, battery up, body towards J | |
| 61 | clock | GND | Front | A19 | GND (-) below A | GND |
|
| 62 | clock | 3V | Front | A20 | 3V (+) below A | +3.3V |
|
| 63 | clock | SCL, run under spacer | Front | A18 | SCL (-) above J | i2c Serial Clock |
|
| 64 | clock | SDA, run under spacer | Front | A17 | SDA (+) above J | i2c Serial Data |
|
| 65 | test clock | clock test | repeat TEST B. clock set | ||||
| 66 | analog input | Analog input 0 | A0 | Front | i2, i1 | B55 | Analog input 0 |
| 67 | analog inout test | analog input test | TEST |
7. 5V, Clock and Analog Tests - Programming
5V Boost Converter
- Open Serial in Mu Editor
- Navigate to folder:
F0._5V_boost - Drag and drop
code.pyonto the CIRCUITPY drive - Check the serial output for results
Analog Input
- Open Serial in Mu Editor
- Navigate to folder:
F1._analog_in - Drag and drop
code.pyonto the CIRCUITPY drive - Check the serial output for results
RTC Clock Verification (Post-Soldering)
After soldering the clock module:
- Repeat Test 1 (I2C Bus Scan) and Test 2 (Real-Time Clock Setup) from the RTC Clock Module Setup section to verify proper installation.
Note: If the battery was installed and you already set the clock you should not need to reset the time. Just verify that it is working.
8. SD, GPS, Power Switch - Build
| Line | Description | Function / instructions | MC pin | Front/ Rear | Location 1 | Location 2 | color/ note |
|---|---|---|---|---|---|---|---|
| 68 | SD card pins | install pins, 9 positions | Rear | B3-B11 | |||
| 69 | GPS pins | install pins, 9 positions | Rear | H3-H11 | |||
| 70 | trim pins | trim pins | |||||
| 71 | SD card power | 3V | 3V | Front | D3 | 3V (+) below A | +3.3V |
| 72 | GPS enable | GPS enable | Front | E3 | F10 | GPS Enable |
|
| 73 | SD card & GPS ground | GND | GND | Front | D4 | GND (-) below A | GND |
| 74 | GPS ground | GND | Front | E4 | F5 | GND |
|
| 75 | GPS power | Vbat | Front | G4 | G12 | Vbat, unregulated lithium battery |
|
| 76 | GPS power noise filter | capacitor 0.1μF (not polarized) | Front | i4 | i5 | component | |
| 77 | SD card reader spi | SCK | SCK | Front | D5 | B27 | SCK |
| 78 | SD card reader spi | MOSI | MOSI | Front | D7 | B28 | MOSI |
| 79 | SD card reader spi | MISO | MISO | Front | D6 | B29 | MISO |
| 80 | SD card reader spi | SD_CS | A5 | Front | D8 | A50 | SD_CS |
| 81 | GPS module uart | TX0 to RXin | TX | Front | F6 | B45 | TX0 to RXin |
| 82 | GPS module uart | RX0 from TXout | RX | Front | F7 | B46 | RX0 from TXout |
| 83 | install SD card reader | SD Card | Rear | B3-B11 | on rear, SD card socket visible, body towards A | ||
| 84 | test SD card reader | SD card test | TEST G. sdcard | ||||
| 85 | GPS module | Rear | H3-H11 | on rear, square body unit visible, body towards J | |||
| 86 | test GPS | TEST H. GPS (connect LiPo battery for test) | |||||
| 87 | power control | 3V system regulator enable / disable | En | Front | J54 | B43 | 3.3V Supply Enable |
| 88 | power switch | switch | Rear | A43 | GND (-) below A43 | trim solder joints at B45, B46, and A47 flush to board, then install switch with body parallel to the board edge, with body towards A60 | |
| 89 | test power control | TEST: unit should cycle off on alternate click of power button. |
|||||
| 90 | test system | TEST |
9. SD, GPS and System Tests - Programming
SD Card
- Open Serial in Mu Editor
- Navigate to folder:
G._sdcard - Drag and drop
code.pyonto the CIRCUITPY drive - Check the serial output for results
GPS Module
- Open Serial in Mu Editor
- Navigate to folder:
H._GPS - Drag and drop
code.pyonto the CIRCUITPY drive - Check the serial output for results
Final Setup: Install Main STELLA Code
- Navigate back to the STELLA-1.2-code-and-libraries folder
- Drag and drop
code.pyonto the CIRCUITPY drive - Coding installation is now complete
Final Hardware Test: Power Button
- Test the power button by cycling the power on and off
- Verify the button is working properly
Congratulations! You now have a fully functional STELLA-1.2 Base module.
STELLA-1.2 Operation - Indicatos, Controls and Main Menu
Charging and Indicators
Charging
Indicators
SD Card and Holders
SD Card
Holders
Navigation Controls and Control Bar
Navigation Controls
Control Bar
System Settings and Status
System Settings page
Status page
Sensors
Sensors page
(Three examples)
Time and Place
Time and Place
Sample Data
Sample Data
