Skip to content

Latest commit

 

History

History
83 lines (82 loc) · 6.53 KB

CHANGELOG.md

File metadata and controls

83 lines (82 loc) · 6.53 KB

Changelog

  • V0.7
    • Initial release
  • V0.8
    • Protect cadence calculation from the crank event interrupt
    • Changed the advertised name
    • Very rudimentary battery level (percentage text)
    • Changed ADC to 10 bits for improved delineation between gears
    • Measure resistance 2/sec. Simple tick-based "scheduler" to do resistance check, battery check, other stuff as needed
    • Some other cleanup of the main loop
  • V0.9
    • Settable transmit power and BLE LED interval. Default to -12 dB and 3000 ms.
    • BLE shutdown after settable time without pedaling. This will force a disconnect from any app, though apps left running are free to reconnect when the bike wakes up.
    • #define SERIAL enables debug messages to the serial monitor (no more commenting out)
    • #define DEBUG provides conditional messages to the serial monitor
  • V0.10
    • Rudimentary serial console to support calibration
  • V0.11
    • New default cal values - new test bike, and new norms for R to match the published Keiser graph
    • Stopped filtering cadence and power since apps do that (check on whether the display is OK)
  • V0.12
    • Some cleanup
    • Small tweaks to the display; improvements to dim/powersave code
    • Began inserting code to use BLEUart as an alternative to serial over USB
    • Optional (for now) power saving measures:
      • De-energize the resistance sensing pot
      • Processor power save idle in the main loop, using Open RTOS waitForEvent()
    • ADC oversampling to reduce resistance measurement noise
    • Eliminated change in ADC settings when checking the battery (higher resolution not needed)
  • V0.13
    • Table lookup instead of quadratic fit for gear determination
      • Using more evenly spaced gears than Keiser's originals. power_gear_tables.h has the Keiser originals.
    • Table interpolation instead of polynomial fits for power determination
    • Simplified crank callback
    • Wakeup after display has been off forces immediate battery check
    • #define option to power down completely, with pedaling causing a full reset
  • V0.14
    • Use the FreeRTOS tick count for crank timing, since that's how millis() is determined. This sticks us with the default 1/1024 sec tick rate. An alternative is to use micros() if that function is using a hardware counter. The available DWT counter stops when the CPU is idled, presumably including calls to delay(). See adafruit/Adafruit_nRF52_Arduino#451.
    • Added BLE battery service
    • Cleaned up display code: Whether to redraw is determined in the display function based on actual displayed values. Changes in GEAR / RES % labels handled more gracefully.
  • V0.15
    • Replaced the main loop() with a scheduled task. If not choosing full shutdown for power save mode, the timer is stopped for power save and restarted when pedaling resumes. Power savings appears to be almost the same as with full shutdown.
    • Options of most interest to end users are now in a separate options.h
    • Low battery indicator (flashing battery icon)
    • Fixed truncation error in the battery display
    • Cleaner display update code
    • Options for filtering resistance readings to reduce noise
    • The power-saving timeout is now dependent upon whether there's a Bluetooth connection. If Bluetooth is connected, the user can walk away from the bike for a longer time without ending a session.
    • Fixed missing #ifdef by which serial port code was being compiled in despite USE_SERIAL being undefined
  • V0.16
    • Bluetooth command line interface for calibration and debugging functions. See serial_commands.h for the current command set.
      • Adafruit's Bluefruit Connect app works well. Be sure that the Uart function is set to include an end-of-line. The system won't care whether or is used.
    • Calibration similar to Keiser's procedure, initiated through the calibrate command and with step-by-step prompts for using the calibration tool.
      • Calibration will not yet survive a reset. Saving parameters to nonvolatile memory (LittleFS) is next.
  • V0.17
    • Calibration is now saved to nonvolatile memory (via LittleFS). If cal files aren't present, they're created from the defaults in calibration.h and written out to nonvolatile memory. Further changes are via the console.
    • Little U8G2 log screen at startup to show parameters read from or written to nonvolatile memory
    • Bike resistance measurement
      • Set the ADC sample time (TACQ) as recommended by Nordic for higher resistance sources (such as the 20K resistance sense pot). This reduces noise in resistance measurements. This required an addition to the Adafruit analog input core which is included on Adafruit v0.25 and the current Github master. If not available, comment out the #define for SAADC_TACQ.
      • Calibration of the ADC offset - This is recommended by Nordic if the temperature could vary by more than 10 C. It's done at reset and at wakeup from low power mode.
    • Improvements and additions to the command line interface
      • Now allows calibration values to be re-read from, or written to, nonvolatile memory.
      • Now works via BLEUart or serial. It will respond to whichever is the source of input.
    • Moved globals to globals.h - start of some code cleanup
      • Moved BLE service definitions and flags to BLE_services.h
      • Cleaner struct definition for BLE data
  • V0.18
    • Calibration now checks for stable readings while the user is holding the magnets against the calibration tool.
    • analogSampleTime() and analogCalibrateOffset are now part of the Adafruit library, so removed the corresponding settings in options.h
    • Better formatting of serial command help.
    • Added a serial command to read the chip temp (of interest because Nordic recommends ADC offset cal if temp changes > 10C)
    • Changed default bike interface pin assignments:
      • Adjacent pins, ordered to match the termination of the cable in the bike, supporting use of a ribbon cable in wiring.
      • Use of an analog input pin for RESISTANCE_TOP enables measurement of Vdd
    • Option to check for sag in Vdd and trigger the low battery indicator accordingly
  • V1.0
    • V0.18 judged worthy of release.
  • V1.1
    • Changed to Vdd as the ADC reference. This makes the resistance reading truly potentiometric (independent of Vdd), so the resistance scale factor should be truly constant from bike to bike as long as the resistance in cables and connections is insignificant compared with the 10K potentiometer value.
  • V1.2working
    • Added options to separately enable CPS and FTMS services
    • Added a simple bike speed estimate, based upon power only, that mimics the one used by Keiser and Peloton computers - NOT YET TESTED