Big Picture

HIL (Hardware in the Loop) testinfrastructure

TODO: Add link from second meeting TODO: change download to link. Move pdf to static pages. Create folder ‘resources’ and add this folder to the static folders in config.py.

Terms

See Terms

Goal

  • octoprobe allows to automatically test various micropython boards against various gadgets.

  • Tests should run automatically and include firmware update.

  • Tests should be triggered from the github workflow, for example on commits or pull requests.

octoprobe testenvironment

  • Software

    • dockerized on linux

    • Test script: pytest

    • github runner

  • Hardware

    • A tentacle may be ordered assembled at JLCPCB and will cost below USD50.

    • Every tentacle is equipped by a RP2040 which controls the DUT.

    • The Inkbus connects the tentacles. Typically exactly one BoardTentacle and one GadgetTentacle is connected to the Inkbus.

  • Extended Hardware

    • octoprobe may also have specialized tentacles like a scope tentacle.

    • octoprobe may also control cams to read displays, wlan hotspot, etc.

  • Firmware under test

    • Must be provided by the tester

  • Test software

    • octoprobe provides basic functionality like updating firmware, connecting the octobus, tentacle inventory.

    • However the pytest code itselve is provided by the tester together with the firmware.

Tentacles / testbed_showcase

Kicad schmatics/pcb may be found herex.

A testbed describes how test using a set of tentacles.

testbed_showcase is described here here and allows to test i2c, uart, onewire and timers.

4 tentacles - ribbon cable

_images/testbed_showcase_4-ribbon.jpg

4 tentacles - stacked

_images/testbed_showcase_4-stacked.jpg

MCU tentacle

_images/testbed_showcase_mcu_pico.jpg

Test flow

In this test the OLED display shall be tested agains PYBv1.1 and ESP32 using firmware v9.12.

        sequenceDiagram
   participant github
   participant U as octoprobe
   participant TP as Tentacle PYBv1.1
   participant TE as Tentacle ESP32
   participant TO as Tentacle OLED
   participant I as Inkbus
   github->>U: send firmware v9.12 and testcode

   Note over U,TO: Test PYBv1.1 vs OLED

   U->>+TP: update firmware
   TP->>+I: connect to octobus
   TO->>+I: connect to octobus
   U->>+TP: run pytest
   TP-->>-U: collect results
   I-->>-TP: disconnect octobus
   I-->>-TO: disconnect octobus

   Note over U,TO: Test ESP32 vs OLED

   U->>+TE: update firmware
   TE->>+I: connect to octobus
   TO->>+I: connect to octobus
   U->>+TE: run pytest
   TE-->>-U: collect results
   I-->>-TE: disconnect octobus
   I-->>-TO: disconnect octobus

   U-->>github: testresults