Skip to content

Progress made - Software

Progress made - Software

This is a summative report on the progress made in software up until Wed 11/10.

Achievements

General Arduino/Teensy environment

Harder than it appears to set up.

  • Installed latest version of Arduino (2.x) so Teensy boards could compile. Needs admin privileges.
  • Installed Teensyduino libraries from link
  • All programs were stored on the D: drive so that they could open properly
  • The libraries <i2c_driver.h> and <i2c_driver_wire.h> were imported from a zip file (teensy4_i2c on GitHub) so that they could be imported into all of our code. It is an improved I2C library for Teensy 4.
  • Connected devices via USB using various COM ports
  • Connected Teensys on a breadboard using 1kΩ pull-up resistors and 5V power supply

FatController.ino

This program can:

  • Write and read data from a target address
  • Change data requested based on the program's stage
  • Pass sensor contracts
  • Copy structs from devices

LineManager.ino

This program can:

  • Receive events from the hosting device that change an internal variable
  • Send different data when requested depending on the internal variable
  • Store data in structs
  • Send a 3-axis struct (acceleration) successfully

sensor_cluster.h

This header:

  • Defines the total data package that is sent to the NAV
  • Defines a struct of 3 floats for x, y z
  • Links gravity, magnetic, gyroscope, and acceleration data to a 3-axis float

Problems

General Arduino/Teensy environment

Issues with our setup include:

  • Cannot run on other computers due to the situation above
  • COM ports are prone to closing
  • Arduino sometimes gets confused about which board is what when uploading

FatController.ino

Issues with this program include:

  • Only able to access one line manager at a time
  • Can copy gravity struct from line manager (of type axis_3, consisting of 3 floats), but cannot copy imu struct (of type IMU, consisting of 9 floats).
  • Does not have failovers for failed transmissions (previous versions did have this however)
  • Code is redundant
  • Array receiving is difficult (used in sending sensor lists). Uses Wire.read() instead of Wire.readBytes()

LineManager.ino

Issues with this program include:

  • Does not reach the "Send sensor list" print statement
  • Uses dummy sensor data; needs second I2C line (Wire1) to access actual sensor data (see working_reading_sensor.ino)
  • Uses dummy booleans for SensorList; needs to perform real sensor checks

sensor_cluster.h

Issues may include:

  • Unused structs that are renmants of a previous design
  • Struct (IMU) that is not declared here and is used in both programs