- Removed secondary decoder
- Updated image encoding at tracker firmware
- Updated image encoding at decoder software
- Implemented more sophisticated website
- Added error transmission
- Adjusted MCU speed to the highest rate
- Implemented configuration that allows GPS to be switched on permanently at a certain battery voltage
- Decreased humidity sensor accuray
- Imcreased voltage measurement accuracy
- Added temperature measurements of STM32 and Si4464 to TrackPoint struct
- Added light intensity measurements of OV5640 to TrackPoint struct
- Cleaned up (removed unused things)
- Implemented more accurate measurements for PAC1720
- Implemented failure detection for PAC1720 and ublox chips
- Fixed bug in Si4464 driver which used power when switched off
- Added more data readouts for GPS receiver (pDOP, gpsFixOK)
- Changed way of determination if GPS fix is good
- Implemented temperature measurement of STM32
- Added error detection of I2C bus
- Removed Milliseconds from ptime_t
- Fixed bug in timestamp conversion
- Removed RBAT measurement implementation (it was very inaccurate)
- Avoid radio being switched off when next packet is waiting for being transmitted
- Tidied up tracking manager
Implemented LOWBATT1 and LOWBATT2
Switch off camera at JPEG validation process
Moved JPEG validation section
Added GPS communication error message
Changed Watchdog behavior (1sec delay inserted)
Tidy up
Fixed receiver value in decoder.py
Limited data display on decoder map to 14 days
Implemented additional exception handlers for bad internet connections
Modified SSDV/APRS protocol: removed redundant transmitted data
Modified SSDV/APRS protocol: Increased amount of data being sent in one packet
Adjusted clocks: (in order to save energy)
- Use HSI for STM32 only
- Use HSE for Si4464 only (HSE switched off, only switched on when Si4464 needs it)
- Reduced STM32 clock to 3MHz
Improved Morse implementation
Fixed thread (module) startup delay bug
Changed behavior of Watchdog LED: Flashing instead of blinking (in order to save energy)
Fixed preamble bug from AX25 implementation
Modified APRS format of Image and Log packets
Implemented image
Added memory address to log command (Serial USB console)
Added failsafe to ADC measurements (if PAC1720 fails)
Improved radio buffer management (less memory needed now)
Changed tracking manager: Last sequence ID read from memory now (at startup)
Implemented Webserver for displaying Position, Log and Images packets
Implemented SSDV Decoding Server
a timer which is capable of triggering the DMA. Before a LPTIM1/TIM1
cascade was used which lead to errors in the DMA transmission.
The errors are not gone yet completly but a reduction was noticed
from 5.5% to 0.3%. If a picture is broken, it might get detected very
easily by the SSDV algorithm, because the encoding of those pictures
look very bad in particular.
- Fixed error in SOI-not-found flag in debug.c
- Added camera-command command (for testing different camera options while watching the livestream)
- Fixed table header in readLog USB command
- Added last-image-id to track-point struct (which is also logged), SSDV transmission will start with next ID on STM32 reset.
This has been done while habhub alway mixes up different images with the same image id.
- Added thread (module) configuration printout on USB debug
- Added GPS_LOG and GPS_OFF flag
- Changed tracking manager initialization strategy:
Tracking Manager runs all time and also logs when there is no new GPS fix
Tracking Manager logs images ID
Tracking Manager doesnt switch on GPS unless there is a position thread running (in order to save energy when position is not sent out)
Implemented several flags in decoder2.py
Added script command.c which sends camera registers via USB to the OV5640.
Fixed bug: Image transmission over USB was only possible when no image module was activated
Added feature: Print saved log on USB
Fixed camera initialization bug
Implemented dynamic camera resolution change without reinitialization
Created separated takePicture method in image.c
Changed timer implementation for 2FSK
Implemented concurrent transmission and packet encoding (not working yet)
Wrote documentation for config.c
Implemented grouped transmission (without preamble)
All dividers for all clocks are static except for HPRE.
HPRE is dynamically changed between /1 and /8. It is usually set to /8.
If the camera is capturing the image, it is set to /1. This is necessary
while the sampling method needs a to sample the fast data from the camera.
After capture, the prescaler is switched back to /8.
HPRE will affect the speed of AHB1 and AHB2. Both have the same speed.
At image capture, both are running at 48Mhz and 6Mhz at all other times.
The clock change has a drastic effect of the power consumption.
--------------------------------------------------
Running at 1.8V
Position packet transmission, APRS AFSK, one packet every 1min (GPS off)
Image transmission, APRS AFSK, one packet every 20sec, redundant TX
=> average consumption 55mW
--------------------------------------------------
Running at 1.8V
Position packet transmission, APRS AFSK, one packet every 1min (GPS off)
=> average consumption 34mW