Skip to content

Michael Pham Meeting Notes 27DEC24

Evan Ortiz edited this page Dec 28, 2024 · 1 revision

deprecate the battery board as an independent microcontroller

Flight controller board folder:

  • based the software structure on pycubed.org, provides an example of how circuit python works

code.py

When the board runs it runs code.py in the code base.

  1. imports time and microcontroller
  2. prints the version
  3. loiter time
  4. import main

main.py (part I)

  1. for orpheus: straight forward loop. If the power is normal then it will continue doing the main Task
  2. import lib.pysquared import cubesat as c.
    • not good programming, single object "c" that everything is assigned to.
    • if you change the values, when it reboots, then it clears the values.
  3. beacon interval - useless, Does not use asyncio

pysquared.py

  • def check_reboot - soft reset to prevent memory corruption from radiation.
    • self.radio_cfg - dictionary to change the radio frequency.
      • cr - coding rate has a bugs
      • sf - values between 0-12. trade of with output signal ( set to 8)
    • initialize the Communication buses:
    • want the board to have to have two radio modes - fsk has a higher data rate
    • line 486 is when the initialization is complete, this is a problem.
    • the rest of the library is helper functions

back to main: (part II)

  1. Hardware watchdog:
    • needs to be pet every 20 seconds.
  2. refer to def main(): for the sequence order

Functions.py

things you want the satellite to do. as objects it makes them convenient to run in shorthand.

  1. list of jokes
  2. listening function
    • cdh - command data handling
      1. checks if you have the secret code or the repeat code.
      2. if repeat - takes the arguments of what you send and send it back to you
  3. problem with the send command being abstracted twice def send()
  4. runs into a problem with the ram because it imports large libraries, and then each library would import the libraries into a feedback loop that overloads the ram
  5. def get_battery_data() problems where .get_power_metrics doesnt even work. which is why they don't know the battery levels on orpheus
  6. def safe.sleep() wakes up every 15 secs to pet the watch dog

General issues

repl.py - tries to set up the watchdog pin twice and only has 26 secs to impliment code before the watchdog starts safemode.py - resets the microcontroller to safemode, underdeveloped logic in there radio_test.py - only automated test. big shortfall. create a function check script tpo go through to test all the expected functionality is what you expect

ending action items:

  • Ability to concisely call things
  • beaconing into the ocean, more effective timing, but the board is not trusted archive
  • firmware in another repo - release packages
  • automated testing
  • improved config experience