Matter PSoC6 Lock Example

An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board.

Introduction

The PSoC6 lock example provides a demonstration of a door lock control device, built using Matter and the Infineon Modustoolbox SDK. It can be controlled by a Matter controller over Wi-Fi network.

The PSoC6 device can be commissioned over Bluetooth Low Energy where the device and the Matter controller will exchange security information with the Rendezvous procedure. Wi-Fi Network credentials are then provided to the PSoC6 device which will then join the network.

Building

  • Download and install Modustoolbox Software v3.2

    Refer to integrations/docker/images/stage-2/chip-build-infineon/Dockerfile or scripts/examples/gn_psoc6_example.sh for downloading the Software and related tools.

  • Install some additional tools (likely already present for Matter developers): $ sudo apt install gcc g++ clang ninja-build python python3-venv libssl-dev libavahi-client-dev libglib2.0-dev git cmake python3-pip

  • Supported hardware: CY8CKIT-062S2-43012

  • Build the example application:

      $ source scripts/activate.sh
      $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-lock' build
    
  • To delete generated executable, libraries and object files use:

      $ cd ~/connectedhomeip
      $ rm -rf out/
    

To build with Infineon Hardware Security Module-OPTIGA™ Trust M for Device attestation and other security use cases, please refer to the Building with OPTIGA™ Trust M as HSM for more instructions

Flashing the Application

  • Put CY8CKIT-062S2-43012 board on KitProg3 CMSIS-DAP Mode by pressing the MODE SELECT button. KITPROG3 STATUS LED is ON confirms board is in proper mode. (Modustoolbox Software needs to be installed)

  • On the command line:

      $ cd ~/connectedhomeip
      $ export CY_TOOLS_PATHS=<Modustoolbox install location>/tools_3.2
      $ python3 out/infineon-psoc6-lock/chip-psoc6-lock-example.flash.py
    

Commissioning and cluster control

Commissioning can be carried out using BLE.

Setting up Chip tool

Once PSoC6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to perform commissioning and cluster control.

  • Set up python controller.

       $ cd {path-to-connectedhomeip}
       $ ./scripts/examples/gn_build_example.sh examples/chip-tool out/debug
    
  • Execute the controller.

       $ ./out/debug/chip-tool
    

Commissioning over BLE

Run the built executable and pass it the discriminator and pairing code of the remote device, as well as the network credentials to use.

     $ ./out/debug/chip-tool pairing ble-wifi 1234 ${SSID} ${PASSWORD} 20202021 3840

     Parameters:
     1. Discriminator: 3840
     2. Setup-pin-code: 20202021
     3. Node ID: 1234 (you can assign any node id)
     4. SSID : Wi-Fi SSID
     5. PASSWORD : Wi-Fi Password

Notes

Raspberry Pi 4 BLE connection issues can be avoided by running the following commands. These power cycle the BlueTooth hardware and disable BR/EDR mode.

      $ sudo btmgmt -i hci0 power off
      $ sudo btmgmt -i hci0 bredr off
      $ sudo btmgmt -i hci0 power on

Cluster control

  • After successful commissioning, use the doorlock cluster command to toggle device between lock or Unlock states.

    $ ./out/debug/chip-tool doorlock lock-door 1234 1 --timedInteractionTimeoutMs 100

    $ ./out/debug/chip-tool doorlock unlock-door 1234 1 --timedInteractionTimeoutMs 100

  • Cluster OnOff can also be done using the USER_BTN1 button on the board. This button is configured with APP_LOCK_BUTTON in include/AppConfig.h. Press USER_BTN1 on the board to toggle between lock and unlock states. The Lock/Unlock status of door can be observed with ‘LED9’ on the board. This LED is configured with LOCK_STATE_LED in include/AppConfig.h.

Factory Reset

  • Commissioned Wi-Fi Credentials can be cleared by pressing USER_BTN2 button on the board. All the data configured on the device during the initial commissioning will be deleted and device will be ready for commissioning again.
  • Pressing the button again within 5 seconds will cancel the factory reset of the board.

Building with Optiga Trust M as HSM

Infineon Hardware Security Module-OPTIGA™ Trust M is a high-end security solution that provides an anchor of trust for connecting IoT devices to the cloud, giving every IoT device its own unique identity.

  • Supported hardware setup: CY8CKIT-062S2-43012

    OPTIGA™ Trust M MTR

    OPTIGA™ Trust Adapter

  • Building:

    Follow the steps to build with OPTIGA™ Trust M for device attestation use case:

      $ source scripts/activate.sh
      $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-lock-trustm' build
    
  • To delete generated executable, libraries and object files use:

    $ cd ~/connectedhomeip
    $ rm -rf out/
    
  • Proceed to OPTIGA™ Trust M Provisioning section to complete the credential storage into HSM.

Optiga Trust M Provisioning

For the description of OPTIGA™ Trust M Provisioning with test DAC generation and PAI and CD storage, please refer to Infineon OPTIGA™ Trust M Provisioning

After completing OPTIGA™ Trust M Provisioning, proceed to Flashing the Application section to continue with subsequent steps.

OTA Software Update

For the description of Software Update process with infineon PSoC6 example applications see Infineon PSoC6 OTA Software Update