Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ define rsync_to_dest
exit 1; \
fi

@rsync -avh ./config.json $(2)/version.py $(1)/*.py $(1)/lib --exclude=".*" --exclude='requirements.txt' --exclude='__pycache__' $(2) --delete --times --checksum
@rsync -avh ./config.json $(1)/version.py $(1)/*.py $(1)/lib --exclude=".*" --exclude='requirements.txt' --exclude='__pycache__' $(2) --delete --times --checksum
endef

##@ Build Tools
Expand Down
89 changes: 0 additions & 89 deletions config.json

This file was deleted.

44 changes: 44 additions & 0 deletions src/flight-software/boot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# from busio import _spi_init
# import os
# from lib.pysquared.nvm.counter import Counter

# import board
# import sdcardio
import storage

# This tells the computer to disconnect from the board's mass storage device (CIRCUITPY drive).
# This is the correct method for CircuitPython 9+
storage.disable_usb_drive() # disable CIRCUITPY
try:
with open("/sd/leaderboard.json", "r") as file:
pass # File exists
except OSError:
with open("/sd/leaderboard.json", "w") as file:
file.write("{}")


# After the USB drive is disabled, we can remount the /sd filesystem
# as writable for our CircuitPython code.
# storage.remount("/sd", readonly=False)

# os.mkdir("/sd") # Ensure the lib directory exists'

# from lib.pysquared.logger import Logger

# logger: Logger = Logger(
# error_counter=Counter(0),
# colorized=False,
# )

# spi1 = _spi_init(
# logger,
# board.SPI1_SCK,
# board.SPI1_MOSI,
# board.SPI1_MISO,
# )

# sd = sdcardio.SDCard(spi1, board.SPI1_CS1)
# vfs = storage.VfsFat(sd)

# storage.mount(vfs, "/sd")
# os.listdir("/sd")
23 changes: 7 additions & 16 deletions src/flight-software/main.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import gc
import os
import time

Expand All @@ -21,10 +20,15 @@
from lib.pysquared.rtc.manager.microcontroller import MicrocontrollerManager
from lib.pysquared.sleep_helper import SleepHelper
from lib.pysquared.watchdog import Watchdog
from utils import listener_nominal_power_loop
from version import __version__

boot_time: float = time.time()

# Satellite configuration constants
CUBE_IDS = ["Listener1", "Listener2", "Listener3"]
MY_CUBESAT_ID = "Listener1"

rtc = MicrocontrollerManager()

(boot_count := Counter(index=Register.boot_count)).increment()
Expand Down Expand Up @@ -128,25 +132,12 @@
boot_count,
)

def nominal_power_loop():
logger.debug(
"FC Board Stats",
bytes_remaining=gc.mem_free(),
)

uhf_packet_manager.send(config.radio.license.encode("utf-8"))

beacon.send()

cdh.listen_for_commands(10)

sleep_helper.safe_sleep(config.sleep_duration)

try:
logger.info("Entering main loop")
while True:
# TODO(nateinaction): Modify behavior based on power state
nominal_power_loop()
listener_nominal_power_loop(logger, uhf_packet_manager, sleep_helper)
# nominal_power_loop(logger, uhf_packet_manager, sleep_helper, cube_ids=["Listener1", "Listener2", "Listener3"])

except Exception as e:
logger.critical("Critical in Main Loop", e)
Expand Down
70 changes: 46 additions & 24 deletions src/flight-software/repl.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,64 @@

import board
import digitalio
import microcontroller
import storage
from lib.adafruit_mcp230xx.mcp23017 import (
MCP23017, # This is Hacky V5a Devel Stuff###
)
from lib.adafruit_tca9548a import TCA9548A # This is Hacky V5a Devel Stuff###

# from lib.pysquared.Big_Data import AllFaces ### This is Hacky V5a Devel Stuff###
# from lib.pysquared.Big_Data import AllFaces ### This is Hacky V5a Devel Stuff##
from lib.pysquared.beacon import Beacon
from lib.pysquared.cdh import CommandDataHandler
from lib.pysquared.config.config import Config
from lib.pysquared.hardware.burnwire.manager.burnwire import BurnwireManager
from lib.pysquared.hardware.busio import _spi_init, initialize_i2c_bus
from lib.pysquared.hardware.digitalio import initialize_pin
from lib.pysquared.hardware.imu.manager.lsm6dsox import LSM6DSOXManager
from lib.pysquared.hardware.light_sensor.manager.veml7700 import VEML7700Manager
from lib.pysquared.hardware.magnetometer.manager.lis2mdl import LIS2MDLManager
from lib.pysquared.hardware.power_monitor.manager.ina219 import INA219Manager
from lib.pysquared.hardware.radio.manager.rfm9x import RFM9xManager
from lib.pysquared.hardware.radio.manager.sx1280 import SX1280Manager
from lib.pysquared.hardware.radio.packetizer.packet_manager import PacketManager
from lib.pysquared.hardware.temperature_sensor.manager.mcp9808 import MCP9808Manager
from lib.pysquared.logger import Logger
from lib.pysquared.nvm.counter import Counter
from lib.pysquared.protos.power_monitor import PowerMonitorProto
from lib.pysquared.rtc.manager.microcontroller import MicrocontrollerManager
from lib.pysquared.sleep_helper import SleepHelper
from lib.pysquared.watchdog import Watchdog

# Local imports
from version import __version__


def erase_system():
"""Erase the filesystem to allow new code to be written to the board."""
storage.erase_filesystem()


def hard_reboot():
"""Perform a hard reboot of the microcontroller."""
microcontroller.reset()


def get_temp(sensor):
"""
Get temperature readings from a sensor for testing purposes.

Args:
sensor: Temperature sensor object
"""
for i in range(1000):
print(sensor.get_temperature().value)
time.sleep(0.1)


# Initialize RTC
rtc = MicrocontrollerManager()

logger: Logger = Logger(
# Initialize logger
logger = Logger(
error_counter=Counter(0),
colorized=False,
)
Expand All @@ -44,13 +71,7 @@
software_version=__version__,
)


def get_temp(sensor):
for i in range(1000):
print(sensor.get_temperature().value)
time.sleep(0.1)


# Initialize watchdog
watchdog = Watchdog(logger, board.WDT_WDI)
watchdog.pet()

Expand Down Expand Up @@ -100,6 +121,7 @@ def get_temp(sensor):
100000,
)


sleep_helper = SleepHelper(logger, config, watchdog)

uhf_radio = RFM9xManager(
Expand Down Expand Up @@ -200,21 +222,21 @@ def all_faces_on():
tca = TCA9548A(i2c1, address=int(0x77))


light_sensor0 = VEML7700Manager(logger, tca[0])
light_sensor1 = VEML7700Manager(logger, tca[1])
light_sensor2 = VEML7700Manager(logger, tca[2])
light_sensor3 = VEML7700Manager(logger, tca[3])
light_sensor4 = VEML7700Manager(logger, tca[4])
# light_sensor0 = VEML7700Manager(logger, tca[0])
# light_sensor1 = VEML7700Manager(logger, tca[1])
# light_sensor2 = VEML7700Manager(logger, tca[2])
# light_sensor3 = VEML7700Manager(logger, tca[3])
# light_sensor4 = VEML7700Manager(logger, tca[4])


## Onboard Temp Sensor ##
temp_sensor5 = MCP9808Manager(logger, i2c0, addr=25) # Antenna Board
temp_sensor6 = MCP9808Manager(logger, i2c1, addr=27) # Flight Controller Board
temp_sensor0 = MCP9808Manager(logger, tca[0], addr=27)
temp_sensor1 = MCP9808Manager(logger, tca[1], addr=27)
temp_sensor2 = MCP9808Manager(logger, tca[2], addr=27)
temp_sensor3 = MCP9808Manager(logger, tca[3], addr=27)
temp_sensor4 = MCP9808Manager(logger, tca[4], addr=27)
# ## Onboard Temp Sensor ##
# temp_sensor5 = MCP9808Manager(logger, i2c0, addr=25) # Antenna Board
# temp_sensor6 = MCP9808Manager(logger, i2c1, addr=27) # Flight Controller Board
# temp_sensor0 = MCP9808Manager(logger, tca[0], addr=27)
# temp_sensor1 = MCP9808Manager(logger, tca[1], addr=27)
# temp_sensor2 = MCP9808Manager(logger, tca[2], addr=27)
# temp_sensor3 = MCP9808Manager(logger, tca[3], addr=27)
# temp_sensor4 = MCP9808Manager(logger, tca[4], addr=27)


battery_power_monitor: PowerMonitorProto = INA219Manager(logger, i2c1, 0x40)
Expand Down
Loading
Loading