From aa6c67de0488defd6ca593c49531a79814ef0956 Mon Sep 17 00:00:00 2001 From: chrisruk Date: Sun, 23 Feb 2025 13:06:00 +0000 Subject: [PATCH 1/7] Increase interval for sensor while testing Avoids error that occurs when handling large amount of sensor data. In future, might be interesting to see if we can support faster UART baud rate. --- test/color.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/color.py b/test/color.py index 688e23c..ba23ff2 100644 --- a/test/color.py +++ b/test/color.py @@ -34,7 +34,7 @@ def test_caching(self): """Test to make sure we're not reading cached data""" color = ColorSensor('A') color.avg_reads = 1 - color.interval = 1 + color.interval = 10 for _ in range(100): color.mode(2) From dd6ee6dd32e0f99d1dc0b5812b05ef2b121c1477 Mon Sep 17 00:00:00 2001 From: chrisruk Date: Sun, 23 Feb 2025 13:09:29 +0000 Subject: [PATCH 2/7] Add W503 to ignore This is so that we can handle multiple line if statements. --- .flake8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.flake8 b/.flake8 index 732c12e..8f58749 100644 --- a/.flake8 +++ b/.flake8 @@ -1,7 +1,7 @@ [flake8] docstring_style=sphinx max-line-length = 127 -ignore = D400, Q000, S311, PLW, PLC, PLR +ignore = D400, Q000, S311, W503, PLW, PLC, PLR per-file-ignores = buildhat/__init__.py:F401 exclude = docs/conf.py, docs/sphinxcontrib/cmtinc-buildhat.py, docs/sphinx_selective_exclude/*.py From b2ca18d617bfd0b58c18a6515164e9e81abf99fb Mon Sep 17 00:00:00 2001 From: chrisruk Date: Sun, 23 Feb 2025 13:13:35 +0000 Subject: [PATCH 3/7] Allow use of own custom firmware If user creates directory called 'data/' where they run their Python script from and places following files in: * firmware.bin * signature.bin * version This custom firmware will then be used instead of bundled firmware. --- buildhat/devices.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/buildhat/devices.py b/buildhat/devices.py index 0db16b1..80dec80 100644 --- a/buildhat/devices.py +++ b/buildhat/devices.py @@ -72,7 +72,15 @@ def __init__(self, port): def _setup(**kwargs): if Device._instance: return - data = os.path.join(os.path.dirname(sys.modules["buildhat"].__file__), "data/") + if ( + os.path.isdir(os.path.join(os.getcwd(), "data/")) + and os.path.isfile(os.path.join(os.getcwd(), "data", "firmware.bin")) + and os.path.isfile(os.path.join(os.getcwd(), "data", "signature.bin")) + and os.path.isfile(os.path.join(os.getcwd(), "data", "version")) + ): + data = os.path.join(os.getcwd(), "data/") + else: + data = os.path.join(os.path.dirname(sys.modules["buildhat"].__file__), "data/") firm = os.path.join(data, "firmware.bin") sig = os.path.join(data, "signature.bin") ver = os.path.join(data, "version") From 1f5e1205dadc56e3a7f7422196fa6b8f1fb4c0f6 Mon Sep 17 00:00:00 2001 From: chrisruk Date: Sun, 23 Feb 2025 14:29:34 +0000 Subject: [PATCH 4/7] Increase timer Bump timer from 8s to 11s, to wait after receiving "Done initialising ports", to avoid geting disconnected message, even though sensor connected to port. --- buildhat/serinterface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildhat/serinterface.py b/buildhat/serinterface.py index 77ee53e..89c9c92 100644 --- a/buildhat/serinterface.py +++ b/buildhat/serinterface.py @@ -378,7 +378,7 @@ def loop(self, cond, uselist, q, listevt): def runit(): with cond: cond.notify() - t = Timer(8.0, runit) + t = Timer(11.0, runit) t.start() if line[0] == "P" and (line[2] == "C" or line[2] == "M"): From 3f33814857c86e8c463910e39857d649d5706377 Mon Sep 17 00:00:00 2001 From: chrisruk Date: Sun, 23 Feb 2025 14:31:55 +0000 Subject: [PATCH 5/7] Add new firmware --- buildhat/data/firmware.bin | Bin 54360 -> 51456 bytes buildhat/data/signature.bin | 2 +- buildhat/data/version | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildhat/data/firmware.bin b/buildhat/data/firmware.bin index 64358ee52512bf324a5201140895c78b0a7f6556..f6dcde379adcfa02e6b9ef87f8f0548548174e94 100644 GIT binary patch literal 51456 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 Y3#t@u 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 literal 54360 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 SKWmOK{=&12|JzR(|33j#kSRj| diff --git a/buildhat/data/signature.bin b/buildhat/data/signature.bin index 27ef00d..8f495fa 100644 --- a/buildhat/data/signature.bin +++ b/buildhat/data/signature.bin @@ -1 +1 @@ -Q#E]]-.T~駶e[yEV}A5L}A$I!u9Nzw`l@eK;{E \ No newline at end of file +N.2wSmQ/IӍm )io\~IAz4ĘɅPw>\w LV \ No newline at end of file diff --git a/buildhat/data/version b/buildhat/data/version index e9bf96c..1f3109b 100644 --- a/buildhat/data/version +++ b/buildhat/data/version @@ -1 +1 @@ -1674818421 +1737564117 From 31b746ac1895681a443d9b61b93515c8c0fdb2c4 Mon Sep 17 00:00:00 2001 From: chrisruk Date: Thu, 6 Mar 2025 20:17:25 +0000 Subject: [PATCH 6/7] Update documentation Add information on how to make use of custom firmware. --- docs/buildhat/index.rst | 43 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/docs/buildhat/index.rst b/docs/buildhat/index.rst index 91b48b0..0b9c94e 100644 --- a/docs/buildhat/index.rst +++ b/docs/buildhat/index.rst @@ -28,10 +28,51 @@ power supply. For best results, use the `official Raspberry Pi Build HAT power s .. _official Raspberry Pi Build HAT power supply: http://raspberrypi.com/products/build-hat-power-supply +It is now possible to use custom firmware with the library. To do this you can follow the steps below. + +.. code-block:: + :caption: Using custom firmware + + sudo apt install cmake python3 build-essential gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib + + git clone https://github.com/raspberrypi/pico-sdk.git --recursive + git clone https://github.com/raspberrypi/buildhat.git --recursive + + cd buildhat + export PICO_SDK_PATH="$(pwd)/../pico-sdk/" + make + + cd .. + mkdir test + cd test + mkdir data + + cp ../buildhat/firmware-pico/build/main.bin data/firmware.bin + cp ../buildhat/bhbl-pico/signature.bin data/signature.bin + cat ../buildhat/firmware-pico/version.h | sed 's/#define FWVERSION "//g; s/ .*//g' > data/version + +Then place your script, such as the following, within the test/ directory. + +.. code-block:: + :caption: Create test.py in test directory + + import time + from buildhat import Motor + + m = Motor('A') + m.start() + + time.sleep(5) + +Then use: ``python test.py`` in the test directory, to run your script with your custom firmware. + +Note if you want python to always reload the firmware from your **data/** directory each time +you run your script, simply write the value: -1 to **data/version**. + .. warning:: The API for the Build HAT is undergoing active development and is subject - to change. + to change. .. toctree:: :maxdepth: 2 From 6a763de85852f29100ad692aaa732720eb68b191 Mon Sep 17 00:00:00 2001 From: Greg Annandale Date: Wed, 9 Jul 2025 09:06:37 +0100 Subject: [PATCH 7/7] Whitespace fix --- docs/buildhat/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/buildhat/index.rst b/docs/buildhat/index.rst index 0b9c94e..f4f7fc4 100644 --- a/docs/buildhat/index.rst +++ b/docs/buildhat/index.rst @@ -28,7 +28,7 @@ power supply. For best results, use the `official Raspberry Pi Build HAT power s .. _official Raspberry Pi Build HAT power supply: http://raspberrypi.com/products/build-hat-power-supply -It is now possible to use custom firmware with the library. To do this you can follow the steps below. +It is now possible to use custom firmware with the library. To do this you can follow the steps below. .. code-block:: :caption: Using custom firmware