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 typeaxis_3
, consisting of 3 floats), but cannot copyimu
struct (of typeIMU
, 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 ofWire.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