Skip to content

Releases: pybricks/pybricks-micropython

Release v3.2.0b4

21 Oct 19:18
Compare
Choose a tag to compare
Release v3.2.0b4 Pre-release
Pre-release

Added

  • Indicate that the hub is shutting down by quickly flashing the hub light for
    half a second. This makes it easier to see when you can stop pressing the
    button.
  • Indicate that the SPIKE Prime hub is booting and shutting down by fading
    the stop sign in and out.
  • Implemented iterator protocol on geometry.Matrix class.
  • Added support for multi-file projects (pybricks-micropython#115).
  • Added new System.storage() API (support#85).

Changed

  • Battery full indication (green light) comes on earlier (support#647).
  • New indication for over-charging battery (blinking green light).
  • On Move Hub, City Hub, and Technic Hub, programs can now be restarted with
    the button after downloading them. They are saved on shutdown.
  • Improved program download process. Reduces the likelihood of getting errors
    about incompatible .mpy files when accidentally entering characters in the
    terminal window when no program is active.
  • On Prime Hub and Essential Hub, there is no longer a wait time after boot
    before you can start programs.
  • On Prime Hub and Essential Hub, the user program is now stored in a section
    of the external flash that is not used by any file system of other known
    firmwares, in order to avoid compatibility issues when changing firmware.
  • Restored the Motor.speed() method and DriveBase equivalent to provide
    speed as a numerical derivative of the motor position, instead of a
    model-based estimate. For most use cases, this is a more intuitive result
    because this speed value is not affected by mechanical load.
  • When using the REPL, everything from all Pybricks modules was automatically
    imported for convenience. Now, MicroPython modules are also automatically
    imported (support#741).
  • Updated Bluetooth to Pybricks Profile v1.2.0.
  • Bluetooth now uses random private address instead of static public address
    (support#600).

Fixed

  • Fixed motors going out of sync when starting program (support#679).
  • Fixed motor torque signal overflowing under load (support#729).
  • Fixed city hub turning back on after shutdown (support#692).
  • Fixed IMU I2C bus lockup on SPIKE hubs (support#232).
  • Fixed REPL history corrupt after soft reset (support#699).
  • Fixed "ValueError: incompatible .mpy file" when pressing the button when
    there is no program yet (support#599).

Release v3.2.0b3

20 Jul 21:01
Compare
Choose a tag to compare
Release v3.2.0b3 Pre-release
Pre-release

Fixed

  • Fix integral control not working properly due to mistakes introduced while converting the controllers to use millidegrees.

Changed

  • Motor.run_time no longer raises an exception for negative time values. Negative times are now treated as zero, thus producing a stationary
    trajectory.

Release v3.2.0b2

06 Jul 18:07
Compare
Choose a tag to compare
Release v3.2.0b2 Pre-release
Pre-release

Added

  • Added Motor.stalled(). It can detect stall during speed and position
    control (run, run_angle, ...) just like Motor.control.stalled(), but
    it also detects stall for dc() command when the user controls the voltage
    directly.

Fixed

  • Fixed motor not stopping at the end of run_until_stalled (support#662).
  • Fixed incorrect battery current reading on Technic hub (support#665).
  • When the motor was pushed backwards while stalled, the control.stalled()
    was inadvertently cleared because a nonzero speed was detected. This is fixed
    by checking the intended direction as well.
  • Fixed I/O devices not syncing at high baud rate.
  • Fixed ENODEV error while device connection manager is busy (support#674).

Changed

  • Reworked internal motor model that is used to estimate speed. This results
    in better speed estimation at low speeds, which makes PID control smoother.
  • The Motor.speed() method and DriveBase equivalents now provide the
    estimated speed instead of the value reported by the motor. This is generally
    more responsive.
  • Overhauled the control code to make it smaller and more numerically robust
    while using higher position resolution where it is available.
  • Changed drive base default speed to go a little slower.
  • Updated MicroPython to v1.19.

Release v3.2.0b1

03 Jun 17:29
Compare
Choose a tag to compare
Release v3.2.0b1 Pre-release
Pre-release

Added

  • Added Stop.NONE as then option for motors. This allows subsequent
    motor and drive base commands to transition without stopping.
  • Added Stop.COAST_SMART as then option for motors. This still coasts the
    motor, but it keeps track of the previously used position target. When a new
    relative angle command is given (e.g. rotate 90 degrees), it uses that
    position as the starting point. This avoids accumulation of errors when using
    relative angles in succession.
  • Made motor deceleration configurable separately from acceleration.
  • Enabled ujson module.
  • Added ability to use more than one DriveBase in the same script.
  • Added support for battery charging on Prime and essential hubs.

Changed

  • Changed how DriveBases and Motor classes can be used together.
    Previously, an individual motor could not be used when a drive base used it.
    From now on, devices can always be used. If they were already in use by
    something else, that other class will just be stopped (coast).
  • Changed how unexpected motor problems are handled, such as a cable being
    unplugged while it was running. Previously, this raised a SystemExit no
    matter which motor was unplugged. Now it will return an OSError with
    ENODEV, which is consistent with trying to initialize a motor that isn't
    there. The Motor class must be initialized again to use the motor again.
  • Changing settings while a motor is moving no longer raises an exception. Some
    settings will not take effect until a new motor command is given.
  • Disabled Motor.control and Motor.log on Move Hub to save space.
  • Changed LED color calibration on Prime hub to make yellow less green.
  • Updated to upstream MicroPython v1.18.
  • Changed imu.acceleration() units to mm/s/s (pybricks-micropython#88) for
    Move Hub, Technic Hub, and Prime Hub.

Fixed

  • Fixed color calibration on Powered Up remote control (support#424).
  • Fixed 3x3 Light Matrix colors with hue > 255 not working correctly (support#619).

Release v3.1.0

16 Dec 21:52
Compare
Choose a tag to compare

Release v3.1.0c1

19 Nov 21:01
Compare
Choose a tag to compare
Release v3.1.0c1 Pre-release
Pre-release
v3.1.0c1

Release v3.1.0b1

21 Sep 15:29
Compare
Choose a tag to compare
Release v3.1.0b1 Pre-release
Pre-release

Added

  • Support for LEGO Technic Color Light Matrix (support#440).
  • Support for the SPIKE Essential hub/Technic Small hub (support#439).

Fixed

  • Fixed Ultrasonic Sensor and Color Sensor turning off when a user script ends (support#456).
  • Hub reset due to watchdog timer when writing data to UART I/O device (support#304).
  • City/Technic hubs not connecting via Bluetooth on macOS 12 (support#489).

Changed:

  • Updated to MicroPython v1.17.

Release v3.1.0a4

30 Aug 16:25
Compare
Choose a tag to compare
Release v3.1.0a4 Pre-release
Pre-release

Added

  • Enabled builtin bytearray (pull#60).
  • Enabled ustruct module (pull#60).
  • Added alpha support for dual boot installation on the SPIKE Prime Hub.
  • Added pybricks.experimental.hello_world function to make it easier for
    new contributors to experiment with Pybricks using C code.
  • Added ability to import the main.mpy that is embedded in the firmware from
    a download and run program (support#408).
  • Added pybricks.iodevices.LWP3Device to communicate with a device that supports
    the LEGO Wireless Protocol 3.0.00 (pull#68)

Changed

  • Move Hub Bluetooth optimizations to reduce firmware size (issue#49).
  • Disabled pybricks.iodevices module on Move Hub to reduce firmware size.
  • Improvements to pybricks.pupdevices.Remote:
    • Check if a remote is already connected before attempting to create a new
      connection.
    • Rename first argument from address to name to match documentation.
    • Implement connecting by name.
    • Add name() method.
    • Add light attribute.

Release v3.1.0a3

19 Jul 21:26
Compare
Choose a tag to compare
Release v3.1.0a3 Pre-release
Pre-release
v3.1.0a3

Release v3.1.0a2

06 Jul 15:09
Compare
Choose a tag to compare
Release v3.1.0a2 Pre-release
Pre-release
v3.1.0a2