├── README.md ├── bluetooth_ssv5_lab2_ibeacon_component ├── README.md ├── SimplicityStudio │ └── soc_empty_plus_ibeacon_component_bg22.sls └── src │ └── app.c ├── dev_lab_adafruit_13x9_rgb_led_matrix ├── Bluetooth │ └── app.c ├── Common │ ├── adafruit_light.c │ ├── adafruit_light.h │ ├── adafruit_lock.c │ └── adafruit_lock.h ├── Images │ └── SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png ├── LICENSE ├── Matter │ └── AppTask.cpp └── README.md ├── dev_lab_arduino_matter_mood_light ├── .gitignore ├── LICENSE ├── README.md ├── enclosure │ ├── enclosure-48-24-8-bottom.lbrn2 │ ├── enclosure-48-24-8-bottom.svg │ ├── enclosure-48-24-8-top.lbrn2 │ └── enclosure-48-24-8-top.svg ├── fritzing │ ├── Nano-0v8-Gerbers.zip │ └── Nano-0v8.fzz ├── images │ ├── Wiring-Dev.png │ ├── Wiring-Explorer.png │ ├── Wiring-Nano.png │ ├── Wiring-SF.png │ └── thumb-640x360.png ├── moody_1_solid │ ├── fast_hsv2rgb.h │ ├── fast_hsv2rgb_32bit.c │ └── moody_1_solid.ino ├── moody_2_gradient │ ├── fast_hsv2rgb.h │ ├── fast_hsv2rgb_32bit.c │ └── moody_2_gradient.ino ├── moody_3_noise │ ├── fast_hsv2rgb.h │ ├── fast_hsv2rgb_32bit.c │ ├── moody_3_noise.ino │ ├── noise.h │ └── noise.png └── moody_4_final │ ├── fast_hsv2rgb.h │ ├── fast_hsv2rgb_32bit.c │ ├── moody_4_final.ino │ ├── noise.h │ ├── noise.png │ ├── noise_subtle.h │ └── noise_subtle.png ├── dev_lab_arduino_matter_occupancy_sensor ├── .gitignore ├── LICENSE ├── README.md ├── btn_matter_occupancy_sensor │ └── btn_matter_occupancy_sensor.ino ├── fritzing │ ├── Arduino Nano Matter.fzpz │ ├── Nano-Matter-Occupancy-0v2-Gerbers.zip │ └── Nano-Matter-Occupancy-0v2.fzz ├── images │ ├── Wiring-Nano-PIR-BTN.png │ ├── Wiring-Nano-PIR.png │ └── thumb-640x360.png ├── pir_btn_matter_occupancy_sensor │ └── pir_btn_matter_occupancy_sensor.ino ├── pir_matter_occupancy_sensor │ └── pir_matter_occupancy_sensor.ino └── ww24 │ └── MAT-201-GM-0v6-Arduino-Nano-Matter-Hands-On.pdf ├── dev_lab_bluetooth_ai_ml_magic_wand ├── Binary │ └── bt_soc_wandy_brd2601b.s37 ├── Images │ ├── 1-2-Install-Manager.png │ ├── 10-Examples.png │ ├── 3-4-SDKs-Gecko.png │ ├── 5-Finish.png │ ├── 6-7-8-9-Preferred-SDK.png │ └── SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png ├── LICENSE ├── README.md └── Source │ ├── accelerometer.cc │ ├── accelerometer.h │ ├── app.c │ ├── app.h │ ├── config │ └── tflite │ │ └── magic_wand_model.tflite │ ├── constants.h │ ├── magic_wand.cc │ ├── magic_wand.h │ ├── predictor.cc │ └── predictor.h ├── dev_lab_circuitpython_bluetooth_find_me ├── .gitignore ├── LICENSE.txt ├── README.md ├── device_root_1_hardware │ ├── App.py │ ├── Button.py │ ├── Led.py │ ├── Piezo.py │ ├── Rtttl.py │ ├── Tick.py │ └── code.py ├── device_root_2_target │ ├── App.py │ ├── Button.py │ ├── ImmediateAlertService.py │ ├── Led.py │ ├── Piezo.py │ ├── Rtttl.py │ ├── Tick.py │ ├── code.py │ └── lib │ │ └── adafruit_ble │ │ ├── __init__.mpy │ │ ├── advertising │ │ ├── __init__.mpy │ │ ├── adafruit.mpy │ │ └── standard.mpy │ │ ├── attributes │ │ └── __init__.mpy │ │ ├── characteristics │ │ ├── __init__.mpy │ │ ├── float.mpy │ │ ├── int.mpy │ │ ├── json.mpy │ │ ├── stream.mpy │ │ └── string.mpy │ │ ├── services │ │ ├── __init__.mpy │ │ ├── circuitpython.mpy │ │ ├── microbit.py │ │ ├── nordic.mpy │ │ ├── sphero.mpy │ │ └── standard │ │ │ ├── __init__.mpy │ │ │ ├── device_info.mpy │ │ │ └── hid.mpy │ │ └── uuid │ │ └── __init__.mpy ├── device_root_3_simple_locator │ ├── App.py │ ├── Button.py │ ├── ImmediateAlertService.py │ ├── Led.py │ ├── Piezo.py │ ├── Rtttl.py │ ├── Tick.py │ ├── code.py │ └── lib │ │ └── adafruit_ble │ │ ├── __init__.mpy │ │ ├── advertising │ │ ├── __init__.mpy │ │ ├── adafruit.mpy │ │ └── standard.mpy │ │ ├── attributes │ │ └── __init__.mpy │ │ ├── characteristics │ │ ├── __init__.mpy │ │ ├── float.mpy │ │ ├── int.mpy │ │ ├── json.mpy │ │ ├── stream.mpy │ │ └── string.mpy │ │ ├── services │ │ ├── __init__.mpy │ │ ├── circuitpython.mpy │ │ ├── microbit.py │ │ ├── nordic.mpy │ │ ├── sphero.mpy │ │ └── standard │ │ │ ├── __init__.mpy │ │ │ ├── device_info.mpy │ │ │ └── hid.mpy │ │ └── uuid │ │ └── __init__.mpy ├── device_root_4_advanced_locator │ ├── App.py │ ├── Button.py │ ├── ImmediateAlertService.py │ ├── Led.py │ ├── Piezo.py │ ├── Rtttl.py │ ├── Tick.py │ ├── code.py │ └── lib │ │ └── adafruit_ble │ │ ├── __init__.mpy │ │ ├── advertising │ │ ├── __init__.mpy │ │ ├── adafruit.mpy │ │ └── standard.mpy │ │ ├── attributes │ │ └── __init__.mpy │ │ ├── characteristics │ │ ├── __init__.mpy │ │ ├── float.mpy │ │ ├── int.mpy │ │ ├── json.mpy │ │ ├── stream.mpy │ │ └── string.mpy │ │ ├── services │ │ ├── __init__.mpy │ │ ├── circuitpython.mpy │ │ ├── microbit.py │ │ ├── nordic.mpy │ │ ├── sphero.mpy │ │ └── standard │ │ │ ├── __init__.mpy │ │ │ ├── device_info.mpy │ │ │ └── hid.mpy │ │ └── uuid │ │ └── __init__.mpy └── images │ ├── piezo-dev-2.png │ ├── piezo-exp-2.png │ ├── piezo-sparkfun-2.png │ └── thumb.png ├── dev_lab_wifi_http_server ├── LICENSE ├── README.md ├── images │ ├── dev_lab_sleeping_wifi_http_server_360p.png │ └── dev_lab_wifi_http_server_360p.png ├── presentation │ └── dev_lab_wifi_http_server_3v5.pdf ├── source_1_server │ └── app.c ├── source_2_rejoin │ └── app.c ├── source_3_nwp_sleep │ └── app.c └── source_4_nwp_m4_sleep │ └── app.c ├── images ├── Arduino-Matter-Mood-Light-200p.png ├── Arduino-Matter-Occupancy-Sensor-200p.png ├── Arduino-Nano-Matter-200p.png ├── Find-Me-200p.png ├── LED-Matrix-200p.png ├── Magic-Wand-200p.png ├── dev_lab_sleeping_wifi_http_server_200p.png └── dev_lab_wifi_http_server_200p.png ├── mg24_tech_lab ├── README.md ├── doc │ ├── Edge Impulse_account.png │ ├── mg24-tech-lab-mobile-banner.png │ └── sensiML_account.png ├── session_1 │ ├── README.md │ ├── SimplicityStudio │ │ └── mg24_tech_lab_session_1.sls │ ├── doc │ │ ├── figure1.png │ │ ├── figure10.png │ │ ├── figure11.png │ │ ├── figure12.png │ │ ├── figure13.png │ │ ├── figure14.png │ │ ├── figure15.png │ │ ├── figure16.png │ │ ├── figure17.png │ │ ├── figure18.png │ │ ├── figure18.svg │ │ ├── figure19.png │ │ ├── figure2.png │ │ ├── figure20.png │ │ ├── figure20.svg │ │ ├── figure21.png │ │ ├── figure22.png │ │ ├── figure23.png │ │ ├── figure24.png │ │ ├── figure25.png │ │ ├── figure26.png │ │ ├── figure27.png │ │ ├── figure28.png │ │ ├── figure3.png │ │ ├── figure4.png │ │ ├── figure5.png │ │ ├── figure6.png │ │ ├── figure7_1.png │ │ ├── figure7_2.png │ │ ├── figure8.png │ │ └── figure9.png │ └── src │ │ ├── app.c │ │ ├── app_imu_collector.c │ │ ├── app_imu_collector.h │ │ ├── app_mic_collector.c │ │ ├── app_mic_collector.h │ │ ├── app_rht_collector.c │ │ └── app_rht_collector.h ├── session_2 │ ├── README.md │ ├── doc │ │ ├── SensiML Slide for SiLabs_FINAL.jpg │ │ └── sensiML_account.png │ └── lab_files │ │ ├── ExportedDate.zip │ │ ├── Guitar Note Recognition.zip │ │ └── SensiML_xG24_Microphone_Capture-main.zip ├── session_3 │ ├── README.md │ └── doc │ │ ├── Edge Impulse_account.png │ │ └── Edge_Impulse_Graphic.png └── session_4 │ ├── README.md │ ├── SimplicityStudio │ └── mg24_tech_lab_session_4.sls │ ├── bt_soc_empty_test │ └── app.c │ ├── docs │ ├── add-eusart-1.png │ ├── add-eusart-2.png │ ├── add-feature.png │ ├── add-legacy.png │ ├── add-log.png │ ├── add-microphone.png │ ├── admin-console.png │ ├── baudrate-set.png │ ├── baudrate-type.png │ ├── bootloader-build.png │ ├── bootloader-flash-1.png │ ├── bootloader-flash-2.png │ ├── browse-1.png │ ├── close-project-1.png │ ├── close-project-2.png │ ├── commander-kit.png │ ├── commander-launch.png │ ├── commander-select.png │ ├── delete.png │ ├── edit-1.png │ ├── edit-2.png │ ├── efr-connect-1.png │ ├── efr-connect-2.png │ ├── efr-connect-3.png │ ├── efr-connect-4.png │ ├── efr-connect-5.png │ ├── force-generation.png │ ├── fw-error.png │ ├── gatt-1.png │ ├── gatt-2.png │ ├── gatt-3.png │ ├── gatt-4.png │ ├── gatt-5.png │ ├── gatt-6.png │ ├── gatt-7.png │ ├── gatt-8.png │ ├── gatt-9.png │ ├── gatt-A.png │ ├── gatt-config-saved.png │ ├── gatt-config-unsaved.png │ ├── import1.png │ ├── import2.png │ ├── launch-console.png │ ├── launcher-soc-empty.png │ ├── launcher1.png │ ├── launcher2.png │ ├── launcher3.png │ ├── location-1.png │ ├── location-2.png │ ├── note.png │ ├── remove-feature.png │ ├── remove-ota-dfu.png │ ├── reopen.png │ ├── save-gatt-build.png │ ├── sensiml-slcc.png │ ├── toggle-mode.png │ ├── tune-bluetooth.png │ ├── unzip.png │ ├── vcom-1.png │ ├── vcom-2.png │ └── wizard1.png │ └── src │ ├── app.c │ └── knowledgepack.zip ├── quick_start_arduino_nano_matter ├── .gitignore ├── LICENSE.txt ├── README.md ├── images │ ├── Wiring-Dev.png │ ├── Wiring-Explorer.png │ ├── Wiring-Nano.png │ ├── Wiring-SF.png │ └── thumb.png └── matter_lightbulb_dimmable_ws2812 │ └── matter_lightbulb_dimmable_ws2812.ino └── zigbee_boot_camp ├── LICENSE ├── README.md ├── Zigbee_Light_ZC ├── .cproject ├── .internal_hwconfig │ ├── ZigbeeMinimalSoc.hwconf │ └── hwconfig.properties ├── .project ├── .settings │ └── com.silabs.ss.framework.ide.project.sls.core.prefs ├── GNU ARM v7.2.1 - Default │ ├── Zigbee_Light_ZC.bin │ ├── Zigbee_Light_ZC.gbl │ ├── Zigbee_Light_ZC.ld │ └── Zigbee_Light_ZC.s37 ├── Zigbee_Light_ZC-postbuild.bat ├── Zigbee_Light_ZC-postbuild.py ├── Zigbee_Light_ZC-prebuild.bat ├── Zigbee_Light_ZC-prebuild.py ├── Zigbee_Light_ZC.h ├── Zigbee_Light_ZC.isc ├── Zigbee_Light_ZC.mak ├── Zigbee_Light_ZC_callbacks.c ├── Zigbee_Light_ZC_endpoint_config.h ├── Zigbee_Light_ZC_tokens.h ├── af-gen-event.h ├── af-structs.h ├── att-storage.h ├── attribute-id.h ├── attribute-size.h ├── attribute-type.h ├── brd4162a_efr32mg12p332f1024gl125.hwconf ├── call-command-handler.c ├── call-command-handler.h ├── callback-stub.c ├── callback.h ├── client-command-macro.h ├── cluster-id.h ├── command-id.h ├── debug-printing-test.h ├── debug-printing.h ├── enums.h ├── hal-config │ └── hal-config.h ├── mbedtls-config-generated.h ├── print-cluster.h ├── stack-handler-stub.c ├── znet-bookkeeping.c ├── znet-bookkeeping.h ├── znet-cli.c ├── znet-cli.h ├── znet-mfg-token.h └── znet-token.h ├── Zigbee_Switch_ZR ├── .cproject ├── .internal_hwconfig │ ├── ZigbeeMinimalSoc.hwconf │ └── hwconfig.properties ├── .project ├── .settings │ └── com.silabs.ss.framework.ide.project.sls.core.prefs ├── Zigbee_Switch_ZR-postbuild.bat ├── Zigbee_Switch_ZR-postbuild.py ├── Zigbee_Switch_ZR-prebuild.bat ├── Zigbee_Switch_ZR-prebuild.py ├── Zigbee_Switch_ZR.h ├── Zigbee_Switch_ZR.isc ├── Zigbee_Switch_ZR.mak ├── Zigbee_Switch_ZR_callbacks.c ├── Zigbee_Switch_ZR_endpoint_config.h ├── Zigbee_Switch_ZR_tokens.h ├── af-gen-event.h ├── af-structs.h ├── att-storage.h ├── attribute-id.h ├── attribute-size.h ├── attribute-type.h ├── brd4162a_efr32mg12p332f1024gl125.hwconf ├── call-command-handler.c ├── call-command-handler.h ├── callback-stub.c ├── callback.h ├── client-command-macro.h ├── cluster-id.h ├── command-id.h ├── custom-token.h ├── debug-printing-test.h ├── debug-printing.h ├── enums.h ├── hal-config │ └── hal-config.h ├── mbedtls-config-generated.h ├── print-cluster.h ├── stack-handler-stub.c ├── znet-bookkeeping.c ├── znet-bookkeeping.h ├── znet-cli.c ├── znet-cli.h ├── znet-mfg-token.h └── znet-token.h └── images ├── license.png └── zigbee.png /bluetooth_ssv5_lab2_ibeacon_component/README.md: -------------------------------------------------------------------------------- 1 | # Adding an iBeacon Component to SoC_Empty # 2 | 3 | ## Summary ## 4 | 5 | This project illustrates how to add an iBeacon component to the base SoC_Empty Bluetooth project found in the Simplicity Studio v5 tools. The example is one of four solutions to lab exercises included in a training using the Simplicity Studio v5 project flow and highlights the use of the Universal Configurator (UC) to add components to projects. The step by step instructions for the labs and other background information can be found using the Silicon Labs [lab manual](https://docs.silabs.com/bluetooth/3.0/lab-manuals/getting-started-with-bluetooth-in-simplicity-studio-v5#lab-2---turn-soc-empty-into-an-ibeacon-using-project-configurator) and a video covering this material is available in the [Silicon Labs Training Library](https://www.silabs.com/support/training/bg22-series-adding-components-to-bluetooth-design/adding-components-to-bluetooth-Lab-2). 6 | 7 | Lab manual contents: 8 | 9 | - Lab 1: Getting Started with SoC_Empty 10 | - **Lab 2: Turn SoC_Empty into an iBeacon using Universal Configurator** 11 | - Lab 3: Enhancing an Application Using Custom Services and Components 12 | - Lab 4: A Deeper Dive into Components and Using Them with the Bluetooth Stack 13 | 14 | What you will learn in lab 2: 15 | 16 | - Add new components to a project 17 | - Component dependencies 18 | - Viewing autogenerated files 19 | - Build and download an application to a target 20 | - Introduced EFR Connect mobile app 21 | 22 | ## Simplicity Studio and SDK Version ## 23 | 24 | - Simplicity Studio v5 25 | - [Simplicity Studio v5 Docs](https://docs.silabs.com/simplicity-studio-5-users-guide/1.0/index) 26 | - [Simplicity Studio v5 Software](https://www.silabs.com/products/development-tools/software/simplicity-studio/simplicity-studio-5) 27 | - GSDK v3.0.0 28 | - UC Components used: iBeacon 29 | 30 | ## Hardware Required ## 31 | 32 | - One SLTB010A Thunderboard Sense 2 33 | - Target device -> EFR32BG22 34 | 35 | [Thunderboard 2 Kit](https://www.silabs.com/development-tools/thunderboard/thunderboard-bg22-kit) 36 | 37 | ## Setup ## 38 | 39 | 1. Please see the lab manual for step by step instructions on how to create the example from scratch starting with the SoC_Empty project. 40 | 1. To skip having to run through the lab manual and use the provided source file, create SoC_Empty project and replace the default **_app.c_** file with the one in the src directory incuded with this project. 41 | 1. To use the exported .sls project file, import the included .sls file to Studio then build and flash the project to the SLTB010A STK. 42 | 1. In Simplicity Studio select "**File->Import**" and navigate to the directory with the _.sls_ project file. 43 | 44 | ## Project Filenames ## 45 | 46 | - Exported project file: **_soc_empty_plus_iBeacon_component_bg22.sls_** 47 | -------------------------------------------------------------------------------- /bluetooth_ssv5_lab2_ibeacon_component/SimplicityStudio/soc_empty_plus_ibeacon_component_bg22.sls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/bluetooth_ssv5_lab2_ibeacon_component/SimplicityStudio/soc_empty_plus_ibeacon_component_bg22.sls -------------------------------------------------------------------------------- /dev_lab_adafruit_13x9_rgb_led_matrix/Common/adafruit_light.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Light display for Adafruit is31fl3741 RGB LED Matrix. 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2023 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * SPDX-License-Identifier: Zlib 10 | * 11 | * The licensor of this software is Silicon Laboratories Inc. 12 | * 13 | * This software is provided 'as-is', without any express or implied 14 | * warranty. In no event will the authors be held liable for any damages 15 | * arising from the use of this software. 16 | * 17 | * Permission is granted to anyone to use this software for any purpose, 18 | * including commercial applications, and to alter it and redistribute it 19 | * freely, subject to the following restrictions: 20 | * 21 | * 1. The origin of this software must not be misrepresented; you must not 22 | * claim that you wrote the original software. If you use this software 23 | * in a product, an acknowledgment in the product documentation would be 24 | * appreciated but is not required. 25 | * 2. Altered source versions must be plainly marked as such, and must not be 26 | * misrepresented as being the original software. 27 | * 3. This notice may not be removed or altered from any source distribution. 28 | * 29 | ******************************************************************************* 30 | * # Experimental Quality 31 | * This code has not been formally tested and is provided as-is. It is not 32 | * suitable for production environments. In addition, this code will not be 33 | * maintained and there may be no bug maintenance planned for these resources. 34 | * Silicon Labs may update projects from time to time. 35 | ******************************************************************************/ 36 | #ifndef ADAFRUIT_LIGHT_H 37 | #define ADAFRUIT_LIGHT_H 38 | 39 | // Includes 40 | #include "em_common.h" 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | /**************************************************************************//** 47 | * Function prototypes 48 | *****************************************************************************/ 49 | sl_status_t adafruit_light_init(void); 50 | void adafruit_light_set(bool new_state); 51 | bool adafruit_light_get(void); 52 | 53 | #ifdef __cplusplus 54 | } 55 | #endif 56 | 57 | #endif // ADAFRUIT_LIGHT_H 58 | -------------------------------------------------------------------------------- /dev_lab_adafruit_13x9_rgb_led_matrix/Common/adafruit_lock.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Lock display for Adafruit is31fl3741 RGB LED Matrix. 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2023 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * SPDX-License-Identifier: Zlib 10 | * 11 | * The licensor of this software is Silicon Laboratories Inc. 12 | * 13 | * This software is provided 'as-is', without any express or implied 14 | * warranty. In no event will the authors be held liable for any damages 15 | * arising from the use of this software. 16 | * 17 | * Permission is granted to anyone to use this software for any purpose, 18 | * including commercial applications, and to alter it and redistribute it 19 | * freely, subject to the following restrictions: 20 | * 21 | * 1. The origin of this software must not be misrepresented; you must not 22 | * claim that you wrote the original software. If you use this software 23 | * in a product, an acknowledgment in the product documentation would be 24 | * appreciated but is not required. 25 | * 2. Altered source versions must be plainly marked as such, and must not be 26 | * misrepresented as being the original software. 27 | * 3. This notice may not be removed or altered from any source distribution. 28 | * 29 | ******************************************************************************* 30 | * # Experimental Quality 31 | * This code has not been formally tested and is provided as-is. It is not 32 | * suitable for production environments. In addition, this code will not be 33 | * maintained and there may be no bug maintenance planned for these resources. 34 | * Silicon Labs may update projects from time to time. 35 | ******************************************************************************/ 36 | #ifndef ADAFRUIT_LOCK_H 37 | #define ADAFRUIT_LOCK_H 38 | 39 | // Includes 40 | #include "em_common.h" 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | /**************************************************************************//** 47 | * Function prototypes 48 | *****************************************************************************/ 49 | sl_status_t adafruit_lock_init(void); 50 | void adafruit_lock_set(bool new_state); 51 | bool adafruit_lock_get(void); 52 | 53 | #ifdef __cplusplus 54 | } 55 | #endif 56 | 57 | #endif // ADAFRUIT_LOCK_H 58 | -------------------------------------------------------------------------------- /dev_lab_adafruit_13x9_rgb_led_matrix/Images/SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_adafruit_13x9_rgb_led_matrix/Images/SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png -------------------------------------------------------------------------------- /dev_lab_adafruit_13x9_rgb_led_matrix/LICENSE: -------------------------------------------------------------------------------- 1 | SPDX-License-Identifier: Zlib 2 | 3 | The licensor of this software is Silicon Laboratories Inc. 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | -------------------------------------------------------------------------------- /dev_lab_adafruit_13x9_rgb_led_matrix/README.md: -------------------------------------------------------------------------------- 1 | # Dev Lab: Adafruit 13x9 RGB LED Matrix 2 | ![Silicon Labs - Dev Lab - Adafruit 13x9 RGB LED Matrix](Images/SiliconLabs-DevLab-Adafruit13x9RGBLEDMatrix.png) 3 | 4 | ## About 5 | 6 | The video for this Dev Lab is available on [YouTube](https://youtu.be/eNGRJq4ZlzU) where the video description includes links to further information. 7 | 8 | This Dev Lab integrates Adafruit's 13x9 RGB LED Matrix into Bluetooth and Matter over Thread wireless applications. 9 | 10 | You will learn: 11 | 12 | * How to add a driver for the LED matrix into existing applications 13 | * How to draw icons on the LED matrix 14 | * How to control the LED matrix when lighting commands are received in a Bluetooth and Matter over Thread application 15 | * How to enable development Matter over Thread devices in Google Home's ecosystem 16 | 17 | ## Files and Folders 18 | 19 | **Common Folder:** Contains code used in both the Bluetooth and Matter over Thread examples, including extra modules to draw padlocks on the matrix in addition to the light bulbs shown in the video 20 | 21 | **Bluetooth Folder:** Contains the final application code for the Bluetooth example 22 | 23 | **Matter Folder:** Contains the final application code for the Matter over Thread example 24 | -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | *.bak 34 | -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/LICENSE: -------------------------------------------------------------------------------- 1 | SPDX-License-Identifier: Zlib 2 | 3 | The licensor of this software is Silicon Laboratories Inc. 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8-Gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8-Gerbers.zip -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/fritzing/Nano-0v8.fzz -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/images/Wiring-Dev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-Dev.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/images/Wiring-Explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-Explorer.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/images/Wiring-Nano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-Nano.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/images/Wiring-SF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/Wiring-SF.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/images/thumb-640x360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/images/thumb-640x360.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/moody_3_noise/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/moody_3_noise/noise.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/moody_4_final/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/moody_4_final/noise.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_mood_light/moody_4_final/noise_subtle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_mood_light/moody_4_final/noise_subtle.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | *.bak 34 | -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/LICENSE: -------------------------------------------------------------------------------- 1 | SPDX-License-Identifier: Zlib 2 | 3 | The licensor of this software is Silicon Laboratories Inc. 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/README.md: -------------------------------------------------------------------------------- 1 | # Dev Lab: Arduino Matter over Thread Occupancy Sensor 2 | 3 | ![thumb-640x360](images/thumb-640x360.png) 4 | 5 | ## About 6 | 7 | The video for this Dev Lab is available on [YouTube](https://youtu.be/_t1sI5RlaV8), where the video description includes links to further information. 8 | 9 | This code was created for the **Works With 2024 - Hands-on with the Arduino Nano Matter** session. 10 | 11 | This project-based Dev Lab steps through the creation of a Matter over Thread Occupancy Sensor in the Arduino IDE using the Arduino Nano Matter board and an optional SR602 PIR sensor that can be connected on a breadboard. The final device reports its occupancy state to a Matter hub which can be configured to perform actions when the occupancy state changes. 12 | 13 | ## Usage 14 | 15 | Three different versions of the code are available, each in a separate folder. The input and output pins are set with #defines allowing the code to be adapted for other boards. 16 | 17 | ### Commissioning 18 | 19 | Commissioning into a Matter over Thread network follows the normal process of scanning a QR or entering a manual code in the app for your chosen Matter ecosystem. For Google Home you *may* need to enable test certificates in the Google Developer Console for your Google Home account, the [Quick Start - Matter in Google Home](https://youtu.be/R_kpSO7PtUo) YouTube video walks through this process. 20 | 21 | A URL to the QR Code and the manual code are both output by the application to the serial port during start up. 22 | 23 | The occupancy state is not monitored until the device is commissioned and connected to the Matter over Thread network. 24 | 25 | ### PIR Occupancy Sensor 26 | 27 | The code for this version is in the **pir_matter_occupancy_sensor** folder. 28 | 29 | This version reads the output from a SR602 PIR sensor connected to the D6 pin of the Arduino Nano Matter. When the input is high the state is set to occupied and when low set to unoccupied. The green channel of the RGB LED is lit when occupied. 30 | 31 | ![Wiring-Nano](images/Wiring-Nano-PIR.png) 32 | 33 | ### Button Occupancy Sensor 34 | 35 | The code for this version is in the **btn_matter_occupancy_sensor** folder. 36 | 37 | This version can be run on the Arduino Nano Matter board, without additional hardware, each press of the on-board button toggles between the occupied and unoccupied states. The red channel of the RGB LED is lit when occupied. 38 | 39 | ### PIR/Button Occupancy Sensor 40 | 41 | The code for this version is in the **pir_btn_matter_occupancy_sensor** folder. 42 | 43 | This combines the above versions and uses a second button, connected to D7 with a 1k pullup resistor, to swap between PIR and button modes. When in PIR mode the green channel of the RGB LED is lit. When occupied the red channel of the RGB LED is lit. 44 | 45 | ![Wiring-Nano](images/Wiring-Nano-PIR-BTN.png) 46 | 47 | ## Other Resources 48 | 49 | The **fritzing** folder contains a file with breadboard, schematics and PCB layouts for a small board that the Arduino Nano Matter and SR602 PIR sensor can be plugged into. The second button with its pullup resistor can also be added. There is also a ZIP file with gerbers for the PCB. 50 | 51 | The **ww24** folder contains a PDF of the presentation shown at Works With 2024 52 | -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/fritzing/Arduino Nano Matter.fzpz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/fritzing/Arduino Nano Matter.fzpz -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2-Gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2-Gerbers.zip -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/fritzing/Nano-Matter-Occupancy-0v2.fzz -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR-BTN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR-BTN.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/images/Wiring-Nano-PIR.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/images/thumb-640x360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/images/thumb-640x360.png -------------------------------------------------------------------------------- /dev_lab_arduino_matter_occupancy_sensor/ww24/MAT-201-GM-0v6-Arduino-Nano-Matter-Hands-On.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_arduino_matter_occupancy_sensor/ww24/MAT-201-GM-0v6-Arduino-Nano-Matter-Hands-On.pdf -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Images/1-2-Install-Manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/1-2-Install-Manager.png -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Images/10-Examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/10-Examples.png -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Images/3-4-SDKs-Gecko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/3-4-SDKs-Gecko.png -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Images/5-Finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/5-Finish.png -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Images/6-7-8-9-Preferred-SDK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/6-7-8-9-Preferred-SDK.png -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Images/SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Images/SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/LICENSE: -------------------------------------------------------------------------------- 1 | SPDX-License-Identifier: Zlib 2 | 3 | The licensor of this software is Silicon Laboratories Inc. 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/README.md: -------------------------------------------------------------------------------- 1 | # Dev Lab: Bluetooth AI/ML Magic Wand 2 | ![Silicon Labs - Dev Lab - Bluetooth AI/ML Magic Wand](Images/SiliconLabs-DevLab-BT-AI-ML-Magic-Wand.png) 3 | 4 | ## About 5 | 6 | The video for this Dev Lab is available on [YouTube](https://youtu.be/ONrmMEgFYMo) where the video description includes links to further information. 7 | 8 | This project-based Dev Lab steps through the creation of a Magic Wand that detects gestures drawn in the air, using AI/ML, to control a light over Bluetooth. 9 | 10 | In this Dev Lab you will learn: 11 | 12 | - About machine learning at the edge 13 | 14 | - How to flash the Bluetooth demo light application 15 | 16 | - About the xG24 Dev Kit 17 | 18 | - How to create a Bluetooth bootloader 19 | 20 | - About machine learning in embedded systems 21 | 22 | - How to create the Magic Wand project 23 | 24 | - How to add software components to a project 25 | 26 | - About AI/ML data models 27 | 28 | - About standard bluetooth application functions 29 | 30 | - About the magic wand source code 31 | 32 | - How to operate the magic wand 33 | 34 | ## Gecko SDK 35 | 36 | This application and the companion video makes use of Simplicity Studio's Gecko SDK with the release of the Simplicity SDK the Simplicity Studio IDE now installs the Simplicity SDK as the default option. To make use of this application follow the instructions below to install and use the Gecko SDK (instead of the Simplicity SDK). 37 | 38 | A porting guide for AI/ML applications from the Gecko SDK to the Simplicity SDK will be linked here when available. The final Bluetooth Magic Wand application will be updated for the Simplicity SDK and made available as an example application within Simplicity Studio. 39 | 40 | 1. In **Simplicity Studio**, click the Install button 41 | 2. In **Installation Manager**, click **Manage Installed Packages** 42 | ![1-2-Install-Manager](Images/1-2-Install-Manager.png) 43 | 3. Click the **SDKs** tab 44 | 4. In the **Gecko SDK** box, click the **Add** button 45 | ![3-4-SDKs-Gecko](Images/3-4-SDKs-Gecko.png) 46 | 5. In the **Add new Gecko SDK** window, click the **Finish** button to install 47 | ![5-Finish](Images/5-Finish.png) 48 | 6. Go to the **Launcher** perspective in **Simplicity Studio** 49 | 7. Connect and select your board in the **Debug Adapters** panel 50 | 8. Select the **Overview** tab 51 | 9. Ensure that the **Preferred SDK** down-down has **Gecko SDK Suite** selected 52 | ![6-7-8-9-Preferred-SDK](Images/6-7-8-9-Preferred-SDK.png) 53 | 10. In the **Example Projects and Demos** tab, you can now create examples using the Gecko SDK, including the **Bluetooth - SoC Blinky** and **Bluetooth - SoC Empty** used by this application. 54 | ![10-Examples](Images/10-Examples.png) 55 | 56 | ## Files and Folders 57 | 58 | **Binary Folder:** Contains the binary file for the completed application for the xG24 Dev Kit (BRD2601B) 59 | 60 | **Source Folder:** Contains the source code files and AI/ML data model for the application 61 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/accelerometer.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Functionality for reading accelerometer data from IMU 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 10 | * software is governed by the terms of Silicon Labs Master Software License 11 | * Agreement (MSLA) available at 12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 13 | * software is distributed to you in Source Code format and is governed by the 14 | * sections of the MSLA applicable to Source Code. 15 | * 16 | ******************************************************************************/ 17 | 18 | #ifndef ACCELEROMETER_H 19 | #define ACCELEROMETER_H 20 | 21 | #include "sl_status.h" 22 | 23 | // Accelerometer data structure used by the model 24 | typedef struct acc_data { 25 | float x; 26 | float y; 27 | float z; 28 | } acc_data_t; 29 | 30 | /***************************************************************************//** 31 | * @brief 32 | * Configure accelerometer to read data regularly to an internal buffer. 33 | * 34 | * @return 35 | * SL_STATUS_OK on success, other value on failure. 36 | ******************************************************************************/ 37 | sl_status_t accelerometer_setup(void); 38 | 39 | /***************************************************************************//** 40 | * @brief 41 | * Read data from accelerometer buffer into the machine model input buffer. 42 | * 43 | * @param dst 44 | * Machine learning model input buffer. 45 | * 46 | * @param n 47 | * Number of elements to read 48 | * 49 | * @return 50 | * SL_STATUS_OK on success, other value on failure. 51 | ******************************************************************************/ 52 | sl_status_t accelerometer_read(acc_data_t* dst, int n); 53 | 54 | #endif // ACCELEROMETER_H 55 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/app.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Application interface provided to main(). 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2020 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * SPDX-License-Identifier: Zlib 10 | * 11 | * The licensor of this software is Silicon Laboratories Inc. 12 | * 13 | * This software is provided 'as-is', without any express or implied 14 | * warranty. In no event will the authors be held liable for any damages 15 | * arising from the use of this software. 16 | * 17 | * Permission is granted to anyone to use this software for any purpose, 18 | * including commercial applications, and to alter it and redistribute it 19 | * freely, subject to the following restrictions: 20 | * 21 | * 1. The origin of this software must not be misrepresented; you must not 22 | * claim that you wrote the original software. If you use this software 23 | * in a product, an acknowledgment in the product documentation would be 24 | * appreciated but is not required. 25 | * 2. Altered source versions must be plainly marked as such, and must not be 26 | * misrepresented as being the original software. 27 | * 3. This notice may not be removed or altered from any source distribution. 28 | * 29 | ******************************************************************************/ 30 | #ifndef APP_H 31 | #define APP_H 32 | 33 | // Includes -------------------------------------------------------------------- 34 | #include "em_common.h" 35 | #include "sl_status.h" 36 | 37 | /**************************************************************************//** 38 | * Application Init. 39 | *****************************************************************************/ 40 | void app_init(void); 41 | 42 | /**************************************************************************//** 43 | * Application Process Action. 44 | *****************************************************************************/ 45 | void app_process_action(void); 46 | 47 | /**************************************************************************//** 48 | * Application Set State. 49 | *****************************************************************************/ 50 | sl_status_t app_set_state(uint8_t); 51 | 52 | /**************************************************************************//** 53 | * Application Get State. 54 | *****************************************************************************/ 55 | uint8_t app_get_state(void); 56 | 57 | #endif // APP_H 58 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/config/tflite/magic_wand_model.tflite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_bluetooth_ai_ml_magic_wand/Source/config/tflite/magic_wand_model.tflite -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/constants.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Constants for use in the sample application 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 10 | * software is governed by the terms of Silicon Labs Master Software License 11 | * Agreement (MSLA) available at 12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 13 | * software is distributed to you in Source Code format and is governed by the 14 | * sections of the MSLA applicable to Source Code. 15 | * 16 | ******************************************************************************/ 17 | 18 | #ifndef CONSTANTS_H 19 | #define CONSTANTS_H 20 | 21 | // Timer for LED flashes 22 | #define TICK_TIMER_MS 100 23 | 24 | // Bluetooth device name to connect to 25 | #define AD_NAME "Blinky Example" 26 | 27 | // Application states 28 | #define APP_STATE_NONE 0 29 | #define APP_STATE_SCAN 1 30 | #define APP_STATE_SERVICE 2 31 | #define APP_STATE_CHARACTERISTIC 3 32 | #define APP_STATE_CONNECTED 4 33 | #define APP_STATE_OFF 5 34 | #define APP_STATE_ON 6 35 | 36 | // The expected accelerometer data sample frequency 37 | #define ACCELEROMETER_FREQ 25 38 | #define ACCELEROMETER_CHANNELS 3 39 | 40 | // LEDs are active for this amount of time before they are turned off 41 | #define TOGGLE_DELAY_MS 2000 42 | 43 | // Inference it triggered by a periodic timer, this configuration is the time 44 | // between each trigger 45 | #define INFERENCE_PERIOD_MS 200 46 | 47 | // Length of the accelerator input sequence expected by the model 48 | #define SEQUENCE_LENGTH 90 49 | 50 | // What gestures are supported. 51 | #define GESTURE_COUNT 4 52 | #define WING_GESTURE 0 53 | #define RING_GESTURE 1 54 | #define SLOPE_GESTURE 2 55 | #define NO_GESTURE 3 56 | 57 | // These control the sensitivity of the detection algorithm. If you're seeing 58 | // too many false positives or not enough true positives, you can try tweaking 59 | // these thresholds. Often, increasing the size of the training set will give 60 | // more robust results though, so consider retraining if you are seeing poor 61 | // predictions. 62 | #define DETECTION_THRESHOLD 0.9f 63 | #define PREDICTION_HISTORY_LEN 5 64 | #define PREDICTION_SUPPRESSION 18 65 | 66 | #endif // CONSTANTS_H 67 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/magic_wand.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Initalization and main functionality for application 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 10 | * software is governed by the terms of Silicon Labs Master Software License 11 | * Agreement (MSLA) available at 12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 13 | * software is distributed to you in Source Code format and is governed by the 14 | * sections of the MSLA applicable to Source Code. 15 | * 16 | ******************************************************************************/ 17 | 18 | #ifndef MAGIC_WAND_H 19 | #define MAGIC_WAND_H 20 | 21 | #include "em_common.h" 22 | #include "sl_status.h" 23 | 24 | #ifdef __cplusplus 25 | extern "C" { 26 | #endif 27 | 28 | /***************************************************************************//** 29 | * @brief 30 | * Initialize the application. 31 | ******************************************************************************/ 32 | void magic_wand_init(void); 33 | 34 | /***************************************************************************//** 35 | * @brief 36 | * Runs the data gathering and inference loop. This should be called 37 | * repeatedly from the main function. 38 | ******************************************************************************/ 39 | void magic_wand_loop(void); 40 | 41 | // Implemented in app.c 42 | sl_status_t app_set_state(uint8_t); 43 | 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | 48 | #endif // MAGIC_WAND_H 49 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/predictor.cc: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Averaging and evaluation of model output for prediction of gesture 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 10 | * software is governed by the terms of Silicon Labs Master Software License 11 | * Agreement (MSLA) available at 12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 13 | * software is distributed to you in Source Code format and is governed by the 14 | * sections of the MSLA applicable to Source Code. 15 | * 16 | ******************************************************************************/ 17 | #include "predictor.h" 18 | #include "constants.h" 19 | #include 20 | 21 | // State for the averaging algorithm we're using. 22 | //static float prediction_history[GESTURE_COUNT][PREDICTION_HISTORY_LEN] = {}; 23 | static model_output_t history[PREDICTION_HISTORY_LEN] = {}; 24 | static int history_index = 0; 25 | static int suppression_count = 0; 26 | static int previous_prediction = NO_GESTURE; 27 | 28 | int predict_gesture(const model_output_t* output) 29 | { 30 | // Record the latest predictions in our rolling history buffer. 31 | history[history_index] = *output; 32 | 33 | ++history_index; 34 | if (history_index >= PREDICTION_HISTORY_LEN) { 35 | history_index = 0; 36 | } 37 | 38 | // Average the last n predictions for each gesture, and find which has the 39 | // highest score. 40 | int max_predict_index = -1; 41 | float max_predict_score = 0.0f; 42 | 43 | for (int i = 0; i < GESTURE_COUNT; i++) { 44 | float prediction_sum = 0.0f; 45 | for (int j = 0; j < PREDICTION_HISTORY_LEN; ++j) { 46 | prediction_sum += history[j].gesture[i]; 47 | } 48 | const float prediction_average = prediction_sum / PREDICTION_HISTORY_LEN; 49 | if ((max_predict_index == -1) || (prediction_average > max_predict_score)) { 50 | max_predict_index = i; 51 | max_predict_score = prediction_average; 52 | } 53 | } 54 | 55 | #if DEBUG_LOGGING 56 | printf("Latest prediction: %i with probability %f\n", max_predict_index, max_predict_score); 57 | #endif 58 | 59 | // If there's been a recent prediction, don't trigger a new one too soon. 60 | if (suppression_count > 0) { 61 | --suppression_count; 62 | } 63 | // If we're predicting no gesture, or the average score is too low, or there's 64 | // been a gesture recognised too recently, return no gesture. 65 | if ((max_predict_index == NO_GESTURE) 66 | || (max_predict_score < DETECTION_THRESHOLD) 67 | || ((max_predict_index == previous_prediction) && (suppression_count > 0))) { 68 | return NO_GESTURE; 69 | } else { 70 | // There was a new predicition 71 | // Reset the suppression counter so we don't come up with another prediction 72 | // too soon. 73 | suppression_count = PREDICTION_SUPPRESSION; 74 | previous_prediction = max_predict_index; 75 | return max_predict_index; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /dev_lab_bluetooth_ai_ml_magic_wand/Source/predictor.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file 3 | * @brief Averaging and evaluation of model output for prediction of gesture 4 | ******************************************************************************* 5 | * # License 6 | * Copyright 2022 Silicon Laboratories Inc. www.silabs.com 7 | ******************************************************************************* 8 | * 9 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 10 | * software is governed by the terms of Silicon Labs Master Software License 11 | * Agreement (MSLA) available at 12 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 13 | * software is distributed to you in Source Code format and is governed by the 14 | * sections of the MSLA applicable to Source Code. 15 | * 16 | ******************************************************************************/ 17 | #ifndef PREDICTOR_H 18 | #define PREDICTOR_H 19 | 20 | #include "constants.h" 21 | 22 | typedef struct model_output { 23 | float gesture[GESTURE_COUNT]; 24 | } model_output_t; 25 | 26 | /***************************************************************************//** 27 | * @brief 28 | * Perform a prediction based on the latest inference output. 29 | * 30 | * @details 31 | * Takes in the model output in a rolling history buffer and does averaging 32 | * over the last predictions. If the prediction proability is too low or the 33 | * predictions happens too soon, no prediction is triggered. 34 | * 35 | * @param output 36 | * Model output buffer containing the confidence of each of the classes. 37 | * 38 | * @return 39 | * Results of the last prediction in the form of a classification id. 40 | * 0: wing("W"), 1: ring("O"), 2: slope("angle"), 3: unknown 41 | ******************************************************************************/ 42 | int predict_gesture(const model_output_t* output); 43 | 44 | #endif // PREDICTOR_H 45 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/LICENSE.txt: -------------------------------------------------------------------------------- 1 | ***************************************************************************** 2 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 3 | ***************************************************************************** 4 | SPDX-License-Identifier: Zlib 5 | 6 | The licensor of this software is Silicon Laboratories Inc. 7 | 8 | This software is provided \'as-is\', without any express or implied 9 | warranty. In no event will the authors be held liable for any damages 10 | arising from the use of this software. 11 | 12 | Permission is granted to anyone to use this software for any purpose, 13 | including commercial applications, and to alter it and redistribute it 14 | freely, subject to the following restrictions: 15 | 16 | 1. The origin of this software must not be misrepresented; you must not 17 | claim that you wrote the original software. If you use this software 18 | in a product, an acknowledgment in the product documentation would be 19 | appreciated but is not required. 20 | 2. Altered source versions must be plainly marked as such, and must not be 21 | misrepresented as being the original software. 22 | 3. This notice may not be removed or altered from any source distribution. 23 | 24 | ***************************************************************************** 25 | # EXPERIMENTAL QUALITY 26 | This code has not been formally tested and is provided as-is. It is not 27 | suitable for production environments. In addition, this code will not be 28 | maintained and there may be no bug maintenance planned for these resources. 29 | Silicon Labs may update projects from time to time. 30 | ****************************************************************************** -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/Button.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Button class 38 | class Button(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.INPUT 48 | self.invert = invert 49 | self.on = False 50 | self.changed = False 51 | self.pressed = False 52 | self.released = False 53 | 54 | # Read function, call to update state 55 | def read(self): 56 | self.changed = False 57 | self.pressed = False 58 | self.released = False 59 | on = self.dio.value 60 | if self.invert: 61 | on = not on 62 | if self.on != on: 63 | self.on = on 64 | self.changed = True 65 | self.pressed = self.on 66 | self.released = not self.on 67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]') 68 | return self.changed 69 | 70 | # Button class (END) 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/Led.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Led class 38 | class Led(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.OUTPUT 48 | self.invert = invert 49 | self.on = False 50 | # Turn off 51 | self.write(False) 52 | 53 | # Write function 54 | def write(self, on): 55 | self.on = on 56 | if self.invert: 57 | on = not on 58 | self.dio.value = on 59 | if self.debug: print(f'Led.write({self.pin}, {self.on})') 60 | 61 | 62 | # Led class (END) 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/Piezo.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | import pwmio 36 | import atexit 37 | 38 | # Piezo class 39 | class Piezo(): 40 | 41 | # Initialisation 42 | def __init__(self, pin, debug): 43 | # Initialise 44 | self.debug = debug 45 | if self.debug: print(f'Piezo.init({pin}, {debug})') 46 | self.pin = pin 47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True) 48 | atexit.register(self.deinit) 49 | self.on = False 50 | self.frequency = 0 51 | 52 | # Write function 53 | def write(self, frequency): 54 | # Valid frequency C0 to B8 ? 55 | if frequency >= 16 and frequency <= 7902: 56 | self.on = True 57 | self.frequency = frequency 58 | else: 59 | self.on = False 60 | self.frequency = 0 61 | if self.on: 62 | self.pwmio.frequency = self.frequency 63 | self.pwmio.duty_cycle = 0x8000 64 | else: 65 | self.pwmio.duty_cycle = 0 66 | self.pwmio.frequency = 262 67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})') 68 | 69 | # Deinit function 70 | def deinit(self): 71 | self.pwmio.duty_cycle = 0 72 | self.pwmio.deinit() 73 | atexit.deregister(self.deinit) 74 | if self.debug: print(f'Piezo.deinit({self.pin})') 75 | 76 | # Piezo class (END) 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_1_hardware/code.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Application imports 34 | from App import App 35 | 36 | # Create app 37 | app = App(True) 38 | # Main loop 39 | while app.on: 40 | # Call app main function 41 | app.main() -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/Button.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Button class 38 | class Button(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.INPUT 48 | self.invert = invert 49 | self.on = False 50 | self.changed = False 51 | self.pressed = False 52 | self.released = False 53 | 54 | # Read function, call to update state 55 | def read(self): 56 | self.changed = False 57 | self.pressed = False 58 | self.released = False 59 | on = self.dio.value 60 | if self.invert: 61 | on = not on 62 | if self.on != on: 63 | self.on = on 64 | self.changed = True 65 | self.pressed = self.on 66 | self.released = not self.on 67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]') 68 | return self.changed 69 | 70 | # Button class (END) 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/ImmediateAlertService.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import library modules 34 | from adafruit_ble.services import Service 35 | from adafruit_ble.uuid import StandardUUID 36 | from adafruit_ble.attributes import Attribute 37 | from adafruit_ble.characteristics import Characteristic 38 | from adafruit_ble.characteristics.int import Uint8Characteristic 39 | 40 | class ImmediateAlertService(Service): 41 | uuid = StandardUUID(0x1802) 42 | 43 | alert_level = Uint8Characteristic( 44 | uuid = StandardUUID(0x2A06), 45 | properties = (Characteristic.READ | Characteristic.WRITE_NO_RESPONSE) 46 | ) 47 | 48 | def __init__(self, service=None): 49 | super().__init__(service=service) 50 | self.connectable = True -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/Led.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Led class 38 | class Led(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.OUTPUT 48 | self.invert = invert 49 | self.on = False 50 | # Turn off 51 | self.write(False) 52 | 53 | # Write function 54 | def write(self, on): 55 | self.on = on 56 | if self.invert: 57 | on = not on 58 | self.dio.value = on 59 | if self.debug: print(f'Led.write({self.pin}, {self.on})') 60 | 61 | 62 | # Led class (END) 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/Piezo.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | import pwmio 36 | import atexit 37 | 38 | # Piezo class 39 | class Piezo(): 40 | 41 | # Initialisation 42 | def __init__(self, pin, debug): 43 | # Initialise 44 | self.debug = debug 45 | if self.debug: print(f'Piezo.init({pin}, {debug})') 46 | self.pin = pin 47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True) 48 | atexit.register(self.deinit) 49 | self.on = False 50 | self.frequency = 0 51 | 52 | # Write function 53 | def write(self, frequency): 54 | # Valid frequency C0 to B8 ? 55 | if frequency >= 16 and frequency <= 7902: 56 | self.on = True 57 | self.frequency = frequency 58 | else: 59 | self.on = False 60 | self.frequency = 0 61 | if self.on: 62 | self.pwmio.frequency = self.frequency 63 | self.pwmio.duty_cycle = 0x8000 64 | else: 65 | self.pwmio.duty_cycle = 0 66 | self.pwmio.frequency = 262 67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})') 68 | 69 | # Deinit function 70 | def deinit(self): 71 | self.pwmio.duty_cycle = 0 72 | self.pwmio.deinit() 73 | atexit.deregister(self.deinit) 74 | if self.debug: print(f'Piezo.deinit({self.pin})') 75 | 76 | # Piezo class (END) 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/code.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Application imports 34 | from App import App 35 | 36 | # Create app 37 | app = App(True) 38 | # Main loop 39 | while app.on: 40 | # Call app main function 41 | app.main() -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/adafruit.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/adafruit.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/standard.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/advertising/standard.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/attributes/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/attributes/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/float.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/float.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/int.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/int.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/json.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/json.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/stream.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/stream.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/string.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/characteristics/string.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/circuitpython.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/circuitpython.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/microbit.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/microbit.py -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/nordic.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/nordic.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/sphero.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/sphero.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/device_info.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/device_info.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/hid.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/services/standard/hid.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/uuid/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_2_target/lib/adafruit_ble/uuid/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/Button.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Button class 38 | class Button(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.INPUT 48 | self.invert = invert 49 | self.on = False 50 | self.changed = False 51 | self.pressed = False 52 | self.released = False 53 | 54 | # Read function, call to update state 55 | def read(self): 56 | self.changed = False 57 | self.pressed = False 58 | self.released = False 59 | on = self.dio.value 60 | if self.invert: 61 | on = not on 62 | if self.on != on: 63 | self.on = on 64 | self.changed = True 65 | self.pressed = self.on 66 | self.released = not self.on 67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]') 68 | return self.changed 69 | 70 | # Button class (END) 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/ImmediateAlertService.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import library modules 34 | from adafruit_ble.services import Service 35 | from adafruit_ble.uuid import StandardUUID 36 | from adafruit_ble.attributes import Attribute 37 | from adafruit_ble.characteristics import Characteristic 38 | from adafruit_ble.characteristics.int import Uint8Characteristic 39 | 40 | class ImmediateAlertService(Service): 41 | uuid = StandardUUID(0x1802) 42 | 43 | alert_level = Uint8Characteristic( 44 | uuid = StandardUUID(0x2A06), 45 | properties = (Characteristic.READ | Characteristic.WRITE_NO_RESPONSE) 46 | ) 47 | 48 | def __init__(self, service=None): 49 | super().__init__(service=service) 50 | self.connectable = True -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/Led.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Led class 38 | class Led(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.OUTPUT 48 | self.invert = invert 49 | self.on = False 50 | # Turn off 51 | self.write(False) 52 | 53 | # Write function 54 | def write(self, on): 55 | self.on = on 56 | if self.invert: 57 | on = not on 58 | self.dio.value = on 59 | if self.debug: print(f'Led.write({self.pin}, {self.on})') 60 | 61 | 62 | # Led class (END) 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/Piezo.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | import pwmio 36 | import atexit 37 | 38 | # Piezo class 39 | class Piezo(): 40 | 41 | # Initialisation 42 | def __init__(self, pin, debug): 43 | # Initialise 44 | self.debug = debug 45 | if self.debug: print(f'Piezo.init({pin}, {debug})') 46 | self.pin = pin 47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True) 48 | atexit.register(self.deinit) 49 | self.on = False 50 | self.frequency = 0 51 | 52 | # Write function 53 | def write(self, frequency): 54 | # Valid frequency C0 to B8 ? 55 | if frequency >= 16 and frequency <= 7902: 56 | self.on = True 57 | self.frequency = frequency 58 | else: 59 | self.on = False 60 | self.frequency = 0 61 | if self.on: 62 | self.pwmio.frequency = self.frequency 63 | self.pwmio.duty_cycle = 0x8000 64 | else: 65 | self.pwmio.duty_cycle = 0 66 | self.pwmio.frequency = 262 67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})') 68 | 69 | # Deinit function 70 | def deinit(self): 71 | self.pwmio.duty_cycle = 0 72 | self.pwmio.deinit() 73 | atexit.deregister(self.deinit) 74 | if self.debug: print(f'Piezo.deinit({self.pin})') 75 | 76 | # Piezo class (END) 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/code.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Application imports 34 | from App import App 35 | 36 | # Create app 37 | app = App(True) 38 | # Main loop 39 | while app.on: 40 | # Call app main function 41 | app.main() -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/adafruit.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/adafruit.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/standard.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/advertising/standard.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/attributes/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/attributes/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/float.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/float.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/int.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/int.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/json.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/json.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/stream.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/stream.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/string.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/characteristics/string.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/circuitpython.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/circuitpython.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/microbit.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/microbit.py -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/nordic.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/nordic.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/sphero.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/sphero.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/device_info.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/device_info.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/hid.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/services/standard/hid.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/uuid/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_3_simple_locator/lib/adafruit_ble/uuid/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/Button.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Button class 38 | class Button(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Button.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.INPUT 48 | self.invert = invert 49 | self.on = False 50 | self.changed = False 51 | self.pressed = False 52 | self.released = False 53 | 54 | # Read function, call to update state 55 | def read(self): 56 | self.changed = False 57 | self.pressed = False 58 | self.released = False 59 | on = self.dio.value 60 | if self.invert: 61 | on = not on 62 | if self.on != on: 63 | self.on = on 64 | self.changed = True 65 | self.pressed = self.on 66 | self.released = not self.on 67 | if self.debug and self.changed: print(f'Button.read({self.pin}) = {self.changed} [r={self.released}, p={self.pressed}, o={self.on}]') 68 | return self.changed 69 | 70 | # Button class (END) 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/ImmediateAlertService.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import library modules 34 | from adafruit_ble.services import Service 35 | from adafruit_ble.uuid import StandardUUID 36 | from adafruit_ble.attributes import Attribute 37 | from adafruit_ble.characteristics import Characteristic 38 | from adafruit_ble.characteristics.int import Uint8Characteristic 39 | 40 | class ImmediateAlertService(Service): 41 | uuid = StandardUUID(0x1802) 42 | 43 | alert_level = Uint8Characteristic( 44 | uuid = StandardUUID(0x2A06), 45 | properties = (Characteristic.READ | Characteristic.WRITE_NO_RESPONSE) 46 | ) 47 | 48 | def __init__(self, service=None): 49 | super().__init__(service=service) 50 | self.connectable = True -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/Led.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | from digitalio import DigitalInOut, Direction 36 | 37 | # Led class 38 | class Led(): 39 | 40 | # Initialisation 41 | def __init__(self, pin, invert, debug): 42 | # Initialise 43 | self.debug = debug 44 | if self.debug: print(f'Led.init({pin}, {invert}, {debug})') 45 | self.pin = pin 46 | self.dio = DigitalInOut(pin) 47 | self.dio.direction = Direction.OUTPUT 48 | self.invert = invert 49 | self.on = False 50 | # Turn off 51 | self.write(False) 52 | 53 | # Write function 54 | def write(self, on): 55 | self.on = on 56 | if self.invert: 57 | on = not on 58 | self.dio.value = on 59 | if self.debug: print(f'Led.write({self.pin}, {self.on})') 60 | 61 | 62 | # Led class (END) 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/Piezo.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Import core modules 34 | import board 35 | import pwmio 36 | import atexit 37 | 38 | # Piezo class 39 | class Piezo(): 40 | 41 | # Initialisation 42 | def __init__(self, pin, debug): 43 | # Initialise 44 | self.debug = debug 45 | if self.debug: print(f'Piezo.init({pin}, {debug})') 46 | self.pin = pin 47 | self.pwmio = pwmio.PWMOut(pin, variable_frequency=True) 48 | atexit.register(self.deinit) 49 | self.on = False 50 | self.frequency = 0 51 | 52 | # Write function 53 | def write(self, frequency): 54 | # Valid frequency C0 to B8 ? 55 | if frequency >= 16 and frequency <= 7902: 56 | self.on = True 57 | self.frequency = frequency 58 | else: 59 | self.on = False 60 | self.frequency = 0 61 | if self.on: 62 | self.pwmio.frequency = self.frequency 63 | self.pwmio.duty_cycle = 0x8000 64 | else: 65 | self.pwmio.duty_cycle = 0 66 | self.pwmio.frequency = 262 67 | if self.debug: print(f'Piezo.write({self.pin}, {self.frequency})') 68 | 69 | # Deinit function 70 | def deinit(self): 71 | self.pwmio.duty_cycle = 0 72 | self.pwmio.deinit() 73 | atexit.deregister(self.deinit) 74 | if self.debug: print(f'Piezo.deinit({self.pin})') 75 | 76 | # Piezo class (END) 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/code.py: -------------------------------------------------------------------------------- 1 | """ 2 | ***************************************************************************** 3 | Copyright 2023 Silicon Laboratories Inc. www.silabs.com 4 | ***************************************************************************** 5 | SPDX-License-Identifier: Zlib 6 | 7 | The licensor of this software is Silicon Laboratories Inc. 8 | 9 | This software is provided \'as-is\', without any express or implied 10 | warranty. In no event will the authors be held liable for any damages 11 | arising from the use of this software. 12 | 13 | Permission is granted to anyone to use this software for any purpose, 14 | including commercial applications, and to alter it and redistribute it 15 | freely, subject to the following restrictions: 16 | 17 | 1. The origin of this software must not be misrepresented; you must not 18 | claim that you wrote the original software. If you use this software 19 | in a product, an acknowledgment in the product documentation would be 20 | appreciated but is not required. 21 | 2. Altered source versions must be plainly marked as such, and must not be 22 | misrepresented as being the original software. 23 | 3. This notice may not be removed or altered from any source distribution. 24 | 25 | ***************************************************************************** 26 | # EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | ****************************************************************************** 32 | """ 33 | # Application imports 34 | from App import App 35 | 36 | # Create app 37 | app = App(True) 38 | # Main loop 39 | while app.on: 40 | # Call app main function 41 | app.main() -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/adafruit.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/adafruit.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/standard.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/advertising/standard.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/attributes/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/attributes/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/float.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/float.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/int.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/int.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/json.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/json.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/stream.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/stream.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/string.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/characteristics/string.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/circuitpython.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/circuitpython.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/microbit.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/microbit.py -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/nordic.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/nordic.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/sphero.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/sphero.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/device_info.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/device_info.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/hid.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/services/standard/hid.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/uuid/__init__.mpy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/device_root_4_advanced_locator/lib/adafruit_ble/uuid/__init__.mpy -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/images/piezo-dev-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/piezo-dev-2.png -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/images/piezo-exp-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/piezo-exp-2.png -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/images/piezo-sparkfun-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/piezo-sparkfun-2.png -------------------------------------------------------------------------------- /dev_lab_circuitpython_bluetooth_find_me/images/thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_circuitpython_bluetooth_find_me/images/thumb.png -------------------------------------------------------------------------------- /dev_lab_wifi_http_server/LICENSE: -------------------------------------------------------------------------------- 1 | SPDX-License-Identifier: Zlib 2 | 3 | The licensor of this software is Silicon Laboratories Inc. 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | -------------------------------------------------------------------------------- /dev_lab_wifi_http_server/README.md: -------------------------------------------------------------------------------- 1 | # Dev Lab: SiWG917 Sleeping Wi-Fi HTTP Server 2 | 3 | ## About 4 | 5 | Two videos for this Dev Lab are available on YouTube: 6 | 7 | ### [SiWG917 Wi-Fi HTTP Server](https://get.silabs.com/gh963yt) 8 | 9 | ![thumbnail](images/dev_lab_wifi_http_server_360p.png) 10 | 11 | This project-based Dev Lab walks through the creation of a Wi-Fi HTTP Server using the Silicon Labs energy-efficient SiWG917 Wi-Fi 6 SoC. In the video you will how to: 12 | 13 | * Connect and setup SiWG917 boards in the Simplicity Studio v5 IDE 14 | * Create, build and run the Wi-Fi HTTP Server example application 15 | * Adapt the application to serve an auto-refreshing HTML page which includes the board button states 16 | * Make the joining and rejoining process robust 17 | * How to use software APIs to construct Wi-Fi applications for the SiWG917 18 | 19 | ### SiWG917 Sleeping Wi-Fi HTTP Server 20 | 21 | ![thumbnail](images/dev_lab_sleeping_wifi_http_server_360p.png) 22 | 23 | This video is coming soon and provides step-by-step instructions for adding sleep modes to the HTTP Server in order to save power. It covers: 24 | 25 | * How to measure power using Simplicity Studio's Energy Profiler 26 | * How to enable the Network Wireless Processor (NWP) sleep modes using code 27 | * How to enable the Application Processor (M4) sleep modes using code and Software Components 28 | 29 | ## Folders 30 | 31 | **presentation:** Contains a PDF presentation of the Dev Lab to help you follow along with the video 32 | 33 | **source_1_server:** Contains updated source code to serve the auto-refreshing HTML page 34 | 35 | **source_2_rejoin:** Contains updated source code to make joining and rejoining more robust 36 | 37 | **source_3_nwp_sleep:** Contains source code that allows the Network Wireless Processor to sleep 38 | 39 | **source_4_nwp_m4_sleep:** Contains source code that allows the Application Processor to sleep 40 | -------------------------------------------------------------------------------- /dev_lab_wifi_http_server/images/dev_lab_sleeping_wifi_http_server_360p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_wifi_http_server/images/dev_lab_sleeping_wifi_http_server_360p.png -------------------------------------------------------------------------------- /dev_lab_wifi_http_server/images/dev_lab_wifi_http_server_360p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_wifi_http_server/images/dev_lab_wifi_http_server_360p.png -------------------------------------------------------------------------------- /dev_lab_wifi_http_server/presentation/dev_lab_wifi_http_server_3v5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/dev_lab_wifi_http_server/presentation/dev_lab_wifi_http_server_3v5.pdf -------------------------------------------------------------------------------- /images/Arduino-Matter-Mood-Light-200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Arduino-Matter-Mood-Light-200p.png -------------------------------------------------------------------------------- /images/Arduino-Matter-Occupancy-Sensor-200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Arduino-Matter-Occupancy-Sensor-200p.png -------------------------------------------------------------------------------- /images/Arduino-Nano-Matter-200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Arduino-Nano-Matter-200p.png -------------------------------------------------------------------------------- /images/Find-Me-200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Find-Me-200p.png -------------------------------------------------------------------------------- /images/LED-Matrix-200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/LED-Matrix-200p.png -------------------------------------------------------------------------------- /images/Magic-Wand-200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/Magic-Wand-200p.png -------------------------------------------------------------------------------- /images/dev_lab_sleeping_wifi_http_server_200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/dev_lab_sleeping_wifi_http_server_200p.png -------------------------------------------------------------------------------- /images/dev_lab_wifi_http_server_200p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/images/dev_lab_wifi_http_server_200p.png -------------------------------------------------------------------------------- /mg24_tech_lab/doc/Edge Impulse_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/doc/Edge Impulse_account.png -------------------------------------------------------------------------------- /mg24_tech_lab/doc/mg24-tech-lab-mobile-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/doc/mg24-tech-lab-mobile-banner.png -------------------------------------------------------------------------------- /mg24_tech_lab/doc/sensiML_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/doc/sensiML_account.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/SimplicityStudio/mg24_tech_lab_session_1.sls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/SimplicityStudio/mg24_tech_lab_session_1.sls -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure10.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure11.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure12.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure13.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure14.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure15.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure16.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure17.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure18.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure19.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure20.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure21.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure22.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure23.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure24.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure25.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure26.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure27.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure28.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure3.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure4.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure5.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure6.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure7_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure7_1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure7_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure7_2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure8.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_1/doc/figure9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_1/doc/figure9.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_2/README.md: -------------------------------------------------------------------------------- 1 | # Accelerate AI/ML at the Edge with xG24 and SensiML # 2 |

3 | 4 |

5 | 6 | ## Summary ## 7 | - SensiML’ s Analytic Toolkit for developing inference models 8 | - Demonstrating acoustic event recognition for smart home and predictive maintenance applications 9 | - Hands-On: Deploying inference model to xG24 to recognize acoustic events 10 | 11 | ## [Lab Procedure: Guitar Note Audio Recognition](https://sensiml.com/documentation/application-tutorials/guitar-tuning-notes-audio-recognition.html#what-you-need-to-get-started) ## 12 | In this tutorial, we are going to build a model to classify guitar tuning notes that can run entirely on a microcontroller using the SensiML Analytics Toolkit. This tutorial will provide you with the knowledge to build an audio recognition model. You will learn how to: 13 | 14 | - Collect and annotate audio data 15 | 16 | - Applying signal preprocessing 17 | 18 | - Train a classification algorithm 19 | 20 | - Create firmware optimized for the resource budget of an edge device 21 | 22 | ## Hardware Requirements ## 23 | 24 | - [One EFR32xG24 Dev Kit](https://www.silabs.com/development-tools/wireless/efr32xg24-dev-kit) 25 | - Micro-USB to USB Type-A Cable 26 | - Mobile Phone 27 | ## Software Requirements ## 28 | 29 | - [Simplicity Studio v5](https://www.silabs.com/products/development-tools/software/simplicity-studio/simplicity-studio-5) 30 | - GSDK v4.0.2 31 | - Bluetooth SDK 3.3.2 32 | - [EFR Connect Mobile App](https://www.silabs.com/products/development-tools/software/bluetooth-low-energy/mobile-apps/efr-connect) 33 | - [Data Capture Lab Project File](lab_files/Guitar%20Note%20Recognition.zip) 34 | 35 | ## AI/ML Partner Tool ## 36 | This workshop will allow you to evaluate a Third Party Partner Tools for topics 2 of the series. For an ML Explorer, these tools cover the end-to-end workflow for creating a machine learning neural network model and accompanying embedded software to include in your application. To use the tool, you will need to create an account on SensiML’s website and intall their tools prior to working through topic 2. 37 | 38 | **Topic 2: Accelerate AI/ML at the Edge with xG24 and SensiML** 39 | 1. Sign-up for SensiML Community Edition (free forever tier of SensiML Analytics Toolkit). Go to the link below, enter your account information, and click ‘Create My Account’. 40 | 41 | [Community Edition Sign-up Link](https://sensiml.com/plans/community-edition/) 42 |

43 | 44 | - You will receive an email at the address you provided in the form to validate the account. 45 | 46 | - Open the account validation email and click the activation link to enable your account. 47 | 48 | 2. After the account is created, walk through the steps outlined under [“What you need to get started”](https://urldefense.com/v3/__https:/sensiml.com/documentation/application-tutorials/guitar-tuning-notes-audio-recognition.html*what-you-need-to-get-started__;Iw!!N30Cs7Jr!Th2X3-XVL4SHFRV9t8ROVmcaPryzq0HT88lOQQkO1OB3MiqWLAjE1uXhGm1yb3nMx5PESQznJq4EbE1FZwyyNf8PEg$) of the Guitar Note Audio Recognition demo prior to attending Topic 2. -------------------------------------------------------------------------------- /mg24_tech_lab/session_2/doc/SensiML Slide for SiLabs_FINAL.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/doc/SensiML Slide for SiLabs_FINAL.jpg -------------------------------------------------------------------------------- /mg24_tech_lab/session_2/doc/sensiML_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/doc/sensiML_account.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_2/lab_files/ExportedDate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/lab_files/ExportedDate.zip -------------------------------------------------------------------------------- /mg24_tech_lab/session_2/lab_files/Guitar Note Recognition.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/lab_files/Guitar Note Recognition.zip -------------------------------------------------------------------------------- /mg24_tech_lab/session_2/lab_files/SensiML_xG24_Microphone_Capture-main.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_2/lab_files/SensiML_xG24_Microphone_Capture-main.zip -------------------------------------------------------------------------------- /mg24_tech_lab/session_3/README.md: -------------------------------------------------------------------------------- 1 | # Accelerate AI/ML at the Edge with xG24 and Edge Impulse # 2 |

3 | 4 |

5 | 6 | ## Summary ## 7 | Build a keyword recognition application from scratch by collecting data from the embedded sensors, training and validating your machine learning pipeline using Edge Impulse Studio, and, deploying the custom model back to your device. 8 | 9 | 10 | ## [Lab Procedure: Edge Impulse Workshop using SiLabs xG24 Dev Kit](https://github.com/edgeimpulse/workshop-silabs-xg24-dev-kitd) ## 11 | - Introduction 12 | - Set up local environment 13 | - Build your machine learning pipeline 14 | - Run the inference on the xG24 Dev Kit 15 | 16 | ## Hardware Requirements ## 17 | 18 | - [One EFR32xG24 Dev Kit](https://www.silabs.com/development-tools/wireless/efr32xg24-dev-kit) 19 | - Micro-USB to USB Type-A Cable 20 | - Mobile Phone 21 | ## Software Requirements ## 22 | 23 | - [Simplicity Studio v5](https://www.silabs.com/products/development-tools/software/simplicity-studio/simplicity-studio-5) 24 | - GSDK v4.0.2 25 | - Bluetooth SDK 3.3.2 26 | - [EFR Connect Mobile App](https://www.silabs.com/products/development-tools/software/bluetooth-low-energy/mobile-apps/efr-connect) 27 | 28 | 29 | ## AI/ML Partner Tool ## 30 | This workshop will allow you to evaluate a Third Party Partner Tool for topics 3 of the series. For an ML Explorer, this tool covers the end-to-end workflow for creating a machine learning neural network model and accompanying embedded software to include in your application. To use the tool, you will need to create an account on Edge Impulse’s website and intall their CLI tool prior to working through topic 3. 31 | 32 | **Topic 3: Accelerate AI/ML at the Edge with xG24 and Edge Impulse** 33 | 34 | Edge Impulse is a development platform that can be used to create intelligent device solutions with machine learning on embedded devices. This section will go over getting set up with Edge Impulse. 35 | 36 | 1. Create an account on Edge Impulse’s website [HERE](https://studio.edgeimpulse.com/signup?next=%2Fstudio%2Fselect-project%3Fautoredirect%3D1). 37 | 38 |

39 | 40 | 2. Install Edge Impuse CLI using the procedures outlined [HERE](https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-installation). -------------------------------------------------------------------------------- /mg24_tech_lab/session_3/doc/Edge Impulse_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_3/doc/Edge Impulse_account.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_3/doc/Edge_Impulse_Graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_3/doc/Edge_Impulse_Graphic.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/SimplicityStudio/mg24_tech_lab_session_4.sls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/SimplicityStudio/mg24_tech_lab_session_4.sls -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/add-eusart-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-eusart-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/add-eusart-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-eusart-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/add-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-feature.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/add-legacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-legacy.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/add-log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-log.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/add-microphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/add-microphone.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/admin-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/admin-console.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/baudrate-set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/baudrate-set.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/baudrate-type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/baudrate-type.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/bootloader-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/bootloader-build.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/bootloader-flash-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/bootloader-flash-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/bootloader-flash-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/bootloader-flash-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/browse-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/browse-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/close-project-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/close-project-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/close-project-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/close-project-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/commander-kit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/commander-kit.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/commander-launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/commander-launch.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/commander-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/commander-select.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/delete.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/edit-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/edit-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/edit-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/edit-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/efr-connect-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/efr-connect-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/efr-connect-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-3.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/efr-connect-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-4.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/efr-connect-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/efr-connect-5.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/force-generation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/force-generation.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/fw-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/fw-error.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-3.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-4.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-5.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-6.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-7.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-8.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-9.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-A.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-config-saved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-config-saved.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/gatt-config-unsaved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/gatt-config-unsaved.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/import1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/import1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/import2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/import2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/launch-console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launch-console.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/launcher-soc-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher-soc-empty.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/launcher1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/launcher2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/launcher3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/launcher3.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/location-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/location-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/location-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/location-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/note.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/remove-feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/remove-feature.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/remove-ota-dfu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/remove-ota-dfu.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/reopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/reopen.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/save-gatt-build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/save-gatt-build.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/sensiml-slcc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/sensiml-slcc.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/toggle-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/toggle-mode.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/tune-bluetooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/tune-bluetooth.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/unzip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/unzip.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/vcom-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/vcom-1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/vcom-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/vcom-2.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/docs/wizard1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/docs/wizard1.png -------------------------------------------------------------------------------- /mg24_tech_lab/session_4/src/knowledgepack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/mg24_tech_lab/session_4/src/knowledgepack.zip -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | *.bak 34 | -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/LICENSE.txt: -------------------------------------------------------------------------------- 1 | ***************************************************************************** 2 | Copyright 2024 Silicon Laboratories Inc. www.silabs.com 3 | ***************************************************************************** 4 | SPDX-License-Identifier: Zlib 5 | 6 | The licensor of this software is Silicon Laboratories Inc. 7 | 8 | This software is provided \'as-is\', without any express or implied 9 | warranty. In no event will the authors be held liable for any damages 10 | arising from the use of this software. 11 | 12 | Permission is granted to anyone to use this software for any purpose, 13 | including commercial applications, and to alter it and redistribute it 14 | freely, subject to the following restrictions: 15 | 16 | 1. The origin of this software must not be misrepresented; you must not 17 | claim that you wrote the original software. If you use this software 18 | in a product, an acknowledgment in the product documentation would be 19 | appreciated but is not required. 20 | 2. Altered source versions must be plainly marked as such, and must not be 21 | misrepresented as being the original software. 22 | 3. This notice may not be removed or altered from any source distribution. 23 | 24 | ***************************************************************************** 25 | 26 | EXPERIMENTAL QUALITY 27 | This code has not been formally tested and is provided as-is. It is not 28 | suitable for production environments. In addition, this code will not be 29 | maintained and there may be no bug maintenance planned for these resources. 30 | Silicon Labs may update projects from time to time. 31 | 32 | ****************************************************************************** -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/README.md: -------------------------------------------------------------------------------- 1 | # Quick Start: Arduino Nano Matter 2 | 3 | ![thumb](images/thumb.png) 4 | 5 | ## About 6 | 7 | The video for this Dev Lab is available on [YouTube](https://youtu.be/7pXFT4D3ui4), where the video description includes links to further information. 8 | 9 | This quick start video introduces the Arduino Nano Matter board and shows how to get started developing Matter over Thread applications. In the video the Matter Dimmable Lightbulb example is adapted to drive and animate a WS2812 RGB LED strip to display the brightness of the light. This example makes the final source code available for download and use. 10 | 11 | ## Usage 12 | 13 | ### Commissioning 14 | 15 | Commissioning into a Matter over Thread network follows the normal process of scanning a QR or entering a manual code in the app for your chosen Matter ecosystem. For Google Home you may need to enable test certificates in the Google Developer Console for your Google Home account, the [Quick Start - Matter in Google Home](https://youtu.be/R_kpSO7PtUo) YouTube video walks through this process. 16 | 17 | A URL to the QR Code and the manual code are both output by the application to the serial port during start up. 18 | 19 | ### Control 20 | 21 | The light can be turned off and on and the brightness set using the chosen ecosystem's mobile application or smart assistant. 22 | 23 | ## Hardware 24 | 25 | The software is written to run on the Arduino Nano Matter board but is also compatible with other Silicon Labs EFR32MG24 development boards. Wiring diagrams for compatible boards are shown below. Some boards are able to provide 5V power for WS2812 LEDs however, they can draw a lot of current so an external power supply is advised. 26 | 27 | ### Arduino Nano Matter 28 | 29 | ![Wiring-Nano](images/Wiring-Nano.png) 30 | 31 | ### Silicon Labs xG24 Explorer Kit 32 | 33 | ![Wiring-Explorer](images/Wiring-Explorer.png) 34 | 35 | ### Silicon Labs xG24 Dev Kit 36 | 37 | ![Wiring-Dev](images/Wiring-Dev.png) 38 | 39 | ### SparkFun Thing Plus MGM240P Matter 40 | 41 | ![Wiring-SF](images/Wiring-SF.png) 42 | -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/images/Wiring-Dev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-Dev.png -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/images/Wiring-Explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-Explorer.png -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/images/Wiring-Nano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-Nano.png -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/images/Wiring-SF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/Wiring-SF.png -------------------------------------------------------------------------------- /quick_start_arduino_nano_matter/images/thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/quick_start_arduino_nano_matter/images/thumb.png -------------------------------------------------------------------------------- /zigbee_boot_camp/README.md: -------------------------------------------------------------------------------- 1 | ******** 2 | ![zigbee](images/zigbee.png) 3 | ******** 4 | ### The Zigbee_Light_ZC and Zigbee_Switch_ZR are the reference project of the Zigbee Boot Camp series training. Please access the [Zigbee Boot Camp WiKi](https://github.com/SiliconLabs/Zigbee-Boot-Camp/wiki/Zigbee-Boot-Camp) for the hands-on documentation. 5 | 6 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/.internal_hwconfig/ZigbeeMinimalSoc.hwconf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/.internal_hwconfig/hwconfig.properties: -------------------------------------------------------------------------------- 1 | # This horribly named file specifies the per-sample app .hwconf file 2 | # contribution. See meta-inf/hwConfig.properties for more information about the 3 | # order in which these .hwconf files are applied to the project. 4 | hwConfFile = ZigbeeMinimalSoc.hwconf 5 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/.settings/com.silabs.ss.framework.ide.project.sls.core.prefs: -------------------------------------------------------------------------------- 1 | copiedFilesOriginState={} 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.bin -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.gbl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/Zigbee_Light_ZC/GNU ARM v7.2.1 - Default/Zigbee_Light_ZC.gbl -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC-postbuild.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enableextensions enabledelayedexpansion 3 | SET allParams=%* 4 | SET params=%allParams:' '=","% 5 | SET params=%params:'="% 6 | set /a count=0 7 | for %%i in (%params%) do ( 8 | set /a count+=1 9 | set param[!count!]=%%i 10 | ) 11 | 12 | set "studioInstallationDir=%param[4]:"=%" 13 | set "projDir=%~dp0" 14 | set "projDir=%projDir:"=%" 15 | 16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Light_ZC-postbuild.py" %param[1]% %param[2]% "" "" %param[3]% -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC-prebuild.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enableextensions enabledelayedexpansion 3 | SET allParams=%* 4 | SET params=%allParams:' '=","% 5 | SET params=%params:'="% 6 | set /a count=0 7 | for %%i in (%params%) do ( 8 | set /a count+=1 9 | set param[!count!]=%%i 10 | ) 11 | 12 | set "studioInstallationDir=%param[4]:"=%" 13 | set "projDir=%~dp0" 14 | set "projDir=%projDir:"=%" 15 | 16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Light_ZC-prebuild.py" -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC-prebuild.py: -------------------------------------------------------------------------------- 1 | # This file was generated by Simplicity Studio from the following template: 2 | # app/esf_common/template/common/common-prebuild.py 3 | # Please do not edit it directly. 4 | 5 | # Pre Build processing. 6 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/Zigbee_Light_ZC_tokens.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // This file contains the tokens for attributes stored in flash 6 | 7 | 8 | // Identifier tags for tokens 9 | 10 | 11 | // Types for the tokens 12 | #ifdef DEFINETYPES 13 | #endif // DEFINETYPES 14 | 15 | 16 | // Actual token definitions 17 | #ifdef DEFINETOKENS 18 | #endif // DEFINETOKENS 19 | 20 | 21 | // Macro snippet that loads all the attributes from tokens 22 | #define GENERATED_TOKEN_LOADER(endpoint) do {\ 23 | } while(false) 24 | 25 | 26 | // Macro snippet that saves the attribute to token 27 | #define GENERATED_TOKEN_SAVER do {\ 28 | } while(false) 29 | 30 | 31 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/af-gen-event.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef __AF_GEN_EVENT__ 7 | #define __AF_GEN_EVENT__ 8 | 9 | 10 | // Code used to configure the cluster event mechanism 11 | #define EMBER_AF_GENERATED_EVENT_CODE \ 12 | extern EmberEventControl emberAfPluginConcentratorUpdateEventControl; \ 13 | extern EmberEventControl emberAfPluginNetworkCreatorSecurityOpenNetworkEventControl; \ 14 | extern EmberEventControl emberAfPluginScanDispatchScanEventControl; \ 15 | extern void emberAfPluginConcentratorUpdateEventHandler(void); \ 16 | extern void emberAfPluginNetworkCreatorSecurityOpenNetworkEventHandler(void); \ 17 | extern void emberAfPluginScanDispatchScanEventHandler(void); \ 18 | 19 | 20 | // EmberEventData structs used to populate the EmberEventData table 21 | #define EMBER_AF_GENERATED_EVENTS \ 22 | { &emberAfPluginConcentratorUpdateEventControl, emberAfPluginConcentratorUpdateEventHandler }, \ 23 | { &emberAfPluginNetworkCreatorSecurityOpenNetworkEventControl, emberAfPluginNetworkCreatorSecurityOpenNetworkEventHandler }, \ 24 | { &emberAfPluginScanDispatchScanEventControl, emberAfPluginScanDispatchScanEventHandler }, \ 25 | 26 | 27 | #define EMBER_AF_GENERATED_EVENT_STRINGS \ 28 | "Concentrator Support Plugin Update", \ 29 | "Network Creator Security Plugin OpenNetwork", \ 30 | "Scan Dispatch Plugin Scan", \ 31 | 32 | 33 | #endif // __AF_GEN_EVENT__ 34 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/att-storage.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_ATTRIBUTE_STORAGE_GEN 7 | #define SILABS_ATTRIBUTE_STORAGE_GEN 8 | 9 | 10 | 11 | // Attribute masks modify how attributes are used by the framework 12 | // Attribute that has this mask is NOT read-only 13 | #define ATTRIBUTE_MASK_WRITABLE (0x01) 14 | // Attribute that has this mask is saved to a token 15 | #define ATTRIBUTE_MASK_TOKENIZE (0x02) 16 | // Attribute that has this mask has a min/max values 17 | #define ATTRIBUTE_MASK_MIN_MAX (0x04) 18 | // Manufacturer specific attribute 19 | #define ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC (0x08) 20 | // Attribute deferred to external storage 21 | #define ATTRIBUTE_MASK_EXTERNAL_STORAGE (0x10) 22 | // Attribute is singleton 23 | #define ATTRIBUTE_MASK_SINGLETON (0x20) 24 | // Attribute is a client attribute 25 | #define ATTRIBUTE_MASK_CLIENT (0x40) 26 | 27 | 28 | // Cluster masks modify how clusters are used by the framework 29 | // Does this cluster have init function? 30 | #define CLUSTER_MASK_INIT_FUNCTION (0x01) 31 | // Does this cluster have attribute changed function? 32 | #define CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION (0x02) 33 | // Does this cluster have default response function? 34 | #define CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION (0x04) 35 | // Does this cluster have message sent function? 36 | #define CLUSTER_MASK_MESSAGE_SENT_FUNCTION (0x08) 37 | // Does this cluster have manufacturer specific attribute changed funciton? 38 | #define CLUSTER_MASK_MANUFACTURER_SPECIFIC_ATTRIBUTE_CHANGED_FUNCTION (0x10) 39 | // Does this cluster have pre-attribute changed function? 40 | #define CLUSTER_MASK_PRE_ATTRIBUTE_CHANGED_FUNCTION (0x20) 41 | // Cluster is a server 42 | #define CLUSTER_MASK_SERVER (0x40) 43 | // Cluster is a client 44 | #define CLUSTER_MASK_CLIENT (0x80) 45 | 46 | 47 | // Command masks modify meanings of commands 48 | // Is sending of this client command supported 49 | #define COMMAND_MASK_OUTGOING_CLIENT (0x01) 50 | // Is sending of this server command supported 51 | #define COMMAND_MASK_OUTGOING_SERVER (0x02) 52 | // Is receiving of this client command supported 53 | #define COMMAND_MASK_INCOMING_CLIENT (0x04) 54 | // Is receiving of this server command supported 55 | #define COMMAND_MASK_INCOMING_SERVER (0x08) 56 | // Is this command manufacturer specific? 57 | #define COMMAND_MASK_MANUFACTURER_SPECIFIC (0x10) 58 | #endif // SILABS_ATTRIBUTE_STORAGE_GEN 59 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/attribute-size.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_ATTRIBUTE_SIZE 7 | #define SILABS_ATTRIBUTE_SIZE 8 | 9 | 10 | // Used ZCL attribute type sizes 11 | ZCL_BITMAP16_ATTRIBUTE_TYPE, 2, 12 | ZCL_BITMAP24_ATTRIBUTE_TYPE, 3, 13 | ZCL_BITMAP32_ATTRIBUTE_TYPE, 4, 14 | ZCL_BITMAP48_ATTRIBUTE_TYPE, 6, 15 | ZCL_BITMAP64_ATTRIBUTE_TYPE, 8, 16 | ZCL_BITMAP8_ATTRIBUTE_TYPE, 1, 17 | ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, 18 | ZCL_DATA8_ATTRIBUTE_TYPE, 1, 19 | ZCL_ENUM16_ATTRIBUTE_TYPE, 2, 20 | ZCL_ENUM8_ATTRIBUTE_TYPE, 1, 21 | ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4, 22 | ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8, 23 | ZCL_INT16S_ATTRIBUTE_TYPE, 2, 24 | ZCL_INT16U_ATTRIBUTE_TYPE, 2, 25 | ZCL_INT24S_ATTRIBUTE_TYPE, 3, 26 | ZCL_INT24U_ATTRIBUTE_TYPE, 3, 27 | ZCL_INT32S_ATTRIBUTE_TYPE, 4, 28 | ZCL_INT32U_ATTRIBUTE_TYPE, 4, 29 | ZCL_INT48U_ATTRIBUTE_TYPE, 6, 30 | ZCL_INT56U_ATTRIBUTE_TYPE, 7, 31 | ZCL_INT8S_ATTRIBUTE_TYPE, 1, 32 | ZCL_INT8U_ATTRIBUTE_TYPE, 1, 33 | ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16, 34 | ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4, 35 | #endif // SILABS_ATTRIBUTE_SIZE 36 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/call-command-handler.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_EMBER_AF_COMMAND_PARSE_HEADER 7 | #define SILABS_EMBER_AF_COMMAND_PARSE_HEADER 8 | 9 | 10 | // This is a set of generated prototype for functions that parse the 11 | // the incomming message, and call appropriate command handler. 12 | 13 | // Cluster: On/off, server 14 | EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand *cmd); 15 | 16 | #endif // SILABS_EMBER_AF_COMMAND_PARSE_HEADER 17 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/mbedtls-config-generated.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file mbedtls-config-generated.h 3 | * @brief mbed TLS configuration file. This file is generated do not modify it directly. Please use the mbed TLS setup instead. 4 | * 5 | ******************************************************************************* 6 | * # License 7 | * Copyright 2018 Silicon Laboratories Inc. www.silabs.com 8 | ******************************************************************************* 9 | * 10 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 11 | * software is governed by the terms of Silicon Labs Master Software License 12 | * Agreement (MSLA) available at 13 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 14 | * software is distributed to you in Source Code format and is governed by the 15 | * sections of the MSLA applicable to Source Code. 16 | * 17 | ******************************************************************************/ 18 | 19 | #ifndef MBEDTLS_CONFIG_GENERATED_H 20 | #define MBEDTLS_CONFIG_GENERATED_H 21 | 22 | #if !defined(EMBER_TEST) 23 | #define MBEDTLS_NO_PLATFORM_ENTROPY 24 | 25 | #else 26 | // mbedtls/library/entropy_poll.c needs this, 27 | // implicit declaration of function 'syscall' otherwise 28 | #define _GNU_SOURCE 29 | #endif 30 | 31 | // Generated content that is coming from contributor plugins 32 | 33 | 34 | 35 | #define MBEDTLS_AES_C 36 | 37 | 38 | #if defined(MBEDTLS_ENTROPY_C) 39 | // Enable RAIL radio as entropy source by default 40 | // This is going to help on devices that does not have TRNG support by software 41 | // (FR32XG13 (SDID_89) and EFR32XG14 (SDID_95)) 42 | #define MBEDTLS_ENTROPY_RAIL_C 43 | #endif 44 | 45 | // Inclusion of the Silabs specific device acceleration configuration file. 46 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE) 47 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE 48 | #endif 49 | 50 | // Inclusion of the app specific device acceleration configuration file. 51 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE) 52 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE 53 | #endif 54 | 55 | // Inclusion of the mbed TLS config_check.h header file. 56 | #include "mbedtls/check_config.h" 57 | 58 | #endif /* MBEDTLS_CONFIG_GENERATED_H */ 59 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/stack-handler-stub.c: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // This c file provides stubs for all callbacks. These stubs 6 | // will be used in the case where user defined implementations 7 | // of the callbacks have not been provided. 8 | #include "app/framework/include/af.h" 9 | // Stubs required for implemented stack handlers. 10 | 11 | 12 | #ifdef EZSP_HOST 13 | #else // ! EZSP_HOST 14 | #endif // EZSP_HOST 15 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/znet-bookkeeping.c: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | #include PLATFORM_HEADER 6 | #include CONFIGURATION_HEADER 7 | #include "af.h" 8 | 9 | // Init function declarations. 10 | void emberAfMainInitCallback(void); // Global 11 | void emberAfInit(void); // Global 12 | void emberAfPluginNetworkCreatorSecurityInitCallback(void); // Plugin: network-creator-security 13 | 14 | void emAfInit(void) 15 | { 16 | emberAfMainInitCallback(); // Global 17 | emberAfInit(); // Global 18 | emberAfPluginNetworkCreatorSecurityInitCallback(); // Plugin: network-creator-security 19 | } 20 | 21 | // Tick function declarations. 22 | void emberAfMainTickCallback(void); // Global 23 | void emberAfTick(void); // Global 24 | 25 | void emAfTick(void) 26 | { 27 | emberAfMainTickCallback(); // Global 28 | emberAfTick(); // Global 29 | } 30 | 31 | void emAfResetAttributes(uint8_t endpointId) 32 | { 33 | } 34 | 35 | // PreCommandReceived function declarations. 36 | bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd); // Global 37 | 38 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd) 39 | { 40 | return emberAfPreCommandReceivedCallback(cmd); // Global 41 | } 42 | 43 | // PreZDOMessageReceived function declarations. 44 | bool emberAfPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length); // Global 45 | 46 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length) 47 | { 48 | return emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length); // Global 49 | } 50 | 51 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength) 52 | { 53 | return 0; // false 54 | } 55 | 56 | // ZigbeeKeyEstablishment function declarations. 57 | void emberAfZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Global 58 | void emberAfPluginNetworkCreatorSecurityZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Plugin: network-creator-security 59 | 60 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status) 61 | { 62 | emberAfZigbeeKeyEstablishmentCallback(partner, status); // Global 63 | emberAfPluginNetworkCreatorSecurityZigbeeKeyEstablishmentCallback(partner, status); // Plugin: network-creator-security 64 | } 65 | 66 | // ReadAttributesResponse function declarations. 67 | bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen); // Global 68 | 69 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen) 70 | { 71 | return emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen); // Global 72 | } 73 | 74 | // ReportAttributes function declarations. 75 | bool emberAfReportAttributesCallback(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen); // Global 76 | 77 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen) 78 | { 79 | return emberAfReportAttributesCallback(clusterId, buffer, bufLen); // Global 80 | } 81 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/znet-bookkeeping.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_ZNET_BOOKKEEPING_H 7 | #define SILABS_ZNET_BOOKKEEPING_H 8 | 9 | 10 | #include PLATFORM_HEADER 11 | #include CONFIGURATION_HEADER 12 | #include "af.h" 13 | 14 | void emAfInit(void); 15 | 16 | void emAfTick(void); 17 | 18 | void emAfResetAttributes(uint8_t endpointId); 19 | 20 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd); 21 | 22 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length); 23 | 24 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength); 25 | 26 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status); 27 | 28 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen); 29 | 30 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen); 31 | 32 | #endif // SILABS_ZNET_BOOKKEEPING_H 33 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/znet-mfg-token.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | #ifdef CONFIGURATION_HEADER 6 | #include CONFIGURATION_HEADER 7 | #endif 8 | 9 | // Token header for the token.properties. 10 | 11 | #ifdef CUSTOM_TOKEN_HEADER 12 | #include CUSTOM_TOKEN_HEADER 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Light_ZC/znet-token.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | #ifdef CONFIGURATION_HEADER 6 | #include CONFIGURATION_HEADER 7 | #endif 8 | 9 | // Token header for the token.properties. 10 | #include "../../../../../SiliconLabs/SimplicityStudio/v4_3/developer/sdks/gecko_sdk_suite/v2.6/protocol/zigbee/app/framework/util/tokens.h" 11 | 12 | #ifdef CUSTOM_TOKEN_HEADER 13 | #include CUSTOM_TOKEN_HEADER 14 | #endif 15 | 16 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/.internal_hwconfig/ZigbeeMinimalSoc.hwconf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/.internal_hwconfig/hwconfig.properties: -------------------------------------------------------------------------------- 1 | # This horribly named file specifies the per-sample app .hwconf file 2 | # contribution. See meta-inf/hwConfig.properties for more information about the 3 | # order in which these .hwconf files are applied to the project. 4 | hwConfFile = ZigbeeMinimalSoc.hwconf 5 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/.settings/com.silabs.ss.framework.ide.project.sls.core.prefs: -------------------------------------------------------------------------------- 1 | copiedFilesOriginState={} 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR-postbuild.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enableextensions enabledelayedexpansion 3 | SET allParams=%* 4 | SET params=%allParams:' '=","% 5 | SET params=%params:'="% 6 | set /a count=0 7 | for %%i in (%params%) do ( 8 | set /a count+=1 9 | set param[!count!]=%%i 10 | ) 11 | 12 | set "studioInstallationDir=%param[4]:"=%" 13 | set "projDir=%~dp0" 14 | set "projDir=%projDir:"=%" 15 | 16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Switch_ZR-postbuild.py" %param[1]% %param[2]% "" "" %param[3]% -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR-prebuild.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enableextensions enabledelayedexpansion 3 | SET allParams=%* 4 | SET params=%allParams:' '=","% 5 | SET params=%params:'="% 6 | set /a count=0 7 | for %%i in (%params%) do ( 8 | set /a count+=1 9 | set param[!count!]=%%i 10 | ) 11 | 12 | set "studioInstallationDir=%param[4]:"=%" 13 | set "projDir=%~dp0" 14 | set "projDir=%projDir:"=%" 15 | 16 | "%studioInstallationDir%/developer\adapter_packs\python\Scripts\python.exe" "%projDir%/Zigbee_Switch_ZR-prebuild.py" -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR-prebuild.py: -------------------------------------------------------------------------------- 1 | # This file was generated by Simplicity Studio from the following template: 2 | # app/esf_common/template/common/common-prebuild.py 3 | # Please do not edit it directly. 4 | 5 | # Pre Build processing. 6 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/Zigbee_Switch_ZR_tokens.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // This file contains the tokens for attributes stored in flash 6 | 7 | 8 | // Identifier tags for tokens 9 | 10 | 11 | // Types for the tokens 12 | #ifdef DEFINETYPES 13 | #endif // DEFINETYPES 14 | 15 | 16 | // Actual token definitions 17 | #ifdef DEFINETOKENS 18 | #endif // DEFINETOKENS 19 | 20 | 21 | // Macro snippet that loads all the attributes from tokens 22 | #define GENERATED_TOKEN_LOADER(endpoint) do {\ 23 | } while(false) 24 | 25 | 26 | // Macro snippet that saves the attribute to token 27 | #define GENERATED_TOKEN_SAVER do {\ 28 | } while(false) 29 | 30 | 31 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/af-gen-event.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef __AF_GEN_EVENT__ 7 | #define __AF_GEN_EVENT__ 8 | 9 | 10 | // Code used to configure the cluster event mechanism 11 | #define EMBER_AF_GENERATED_EVENT_CODE \ 12 | extern EmberEventControl emberAfPluginButtonInterfaceButton0PressedEventControl; \ 13 | extern EmberEventControl emberAfPluginButtonInterfaceButton0ReleasedEventControl; \ 14 | extern EmberEventControl emberAfPluginButtonInterfaceButton1PressedEventControl; \ 15 | extern EmberEventControl emberAfPluginButtonInterfaceButton1ReleasedEventControl; \ 16 | extern EmberEventControl emberAfPluginButtonInterfaceButtonTimeoutEventControl; \ 17 | extern EmberEventControl emberAfPluginNetworkSteeringFinishSteeringEventControl; \ 18 | extern EmberEventControl emberAfPluginScanDispatchScanEventControl; \ 19 | extern EmberEventControl emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl; \ 20 | extern EmberEventControl ledBlinkingEventControl; \ 21 | extern void emberAfPluginButtonInterfaceButton0PressedEventHandler(void); \ 22 | extern void emberAfPluginButtonInterfaceButton0ReleasedEventHandler(void); \ 23 | extern void emberAfPluginButtonInterfaceButton1PressedEventHandler(void); \ 24 | extern void emberAfPluginButtonInterfaceButton1ReleasedEventHandler(void); \ 25 | extern void emberAfPluginButtonInterfaceButtonTimeoutEventHandler(void); \ 26 | extern void emberAfPluginNetworkSteeringFinishSteeringEventHandler(void); \ 27 | extern void emberAfPluginScanDispatchScanEventHandler(void); \ 28 | extern void emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler(void); \ 29 | extern void ledBlinkingEventHandler(void); \ 30 | 31 | 32 | // EmberEventData structs used to populate the EmberEventData table 33 | #define EMBER_AF_GENERATED_EVENTS \ 34 | { &emberAfPluginButtonInterfaceButton0PressedEventControl, emberAfPluginButtonInterfaceButton0PressedEventHandler }, \ 35 | { &emberAfPluginButtonInterfaceButton0ReleasedEventControl, emberAfPluginButtonInterfaceButton0ReleasedEventHandler }, \ 36 | { &emberAfPluginButtonInterfaceButton1PressedEventControl, emberAfPluginButtonInterfaceButton1PressedEventHandler }, \ 37 | { &emberAfPluginButtonInterfaceButton1ReleasedEventControl, emberAfPluginButtonInterfaceButton1ReleasedEventHandler }, \ 38 | { &emberAfPluginButtonInterfaceButtonTimeoutEventControl, emberAfPluginButtonInterfaceButtonTimeoutEventHandler }, \ 39 | { &emberAfPluginNetworkSteeringFinishSteeringEventControl, emberAfPluginNetworkSteeringFinishSteeringEventHandler }, \ 40 | { &emberAfPluginScanDispatchScanEventControl, emberAfPluginScanDispatchScanEventHandler }, \ 41 | { &emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventControl, emberAfPluginUpdateTcLinkKeyBeginTcLinkKeyUpdateEventHandler }, \ 42 | { &ledBlinkingEventControl, ledBlinkingEventHandler }, \ 43 | 44 | 45 | #define EMBER_AF_GENERATED_EVENT_STRINGS \ 46 | "Button Interface Plugin Button0Pressed", \ 47 | "Button Interface Plugin Button0Released", \ 48 | "Button Interface Plugin Button1Pressed", \ 49 | "Button Interface Plugin Button1Released", \ 50 | "Button Interface Plugin ButtonTimeout", \ 51 | "Network Steering Plugin FinishSteering", \ 52 | "Scan Dispatch Plugin Scan", \ 53 | "Update TC Link Key Plugin BeginTcLinkKeyUpdate", \ 54 | "Led blinking event control", \ 55 | 56 | 57 | #endif // __AF_GEN_EVENT__ 58 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/att-storage.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_ATTRIBUTE_STORAGE_GEN 7 | #define SILABS_ATTRIBUTE_STORAGE_GEN 8 | 9 | 10 | 11 | // Attribute masks modify how attributes are used by the framework 12 | // Attribute that has this mask is NOT read-only 13 | #define ATTRIBUTE_MASK_WRITABLE (0x01) 14 | // Attribute that has this mask is saved to a token 15 | #define ATTRIBUTE_MASK_TOKENIZE (0x02) 16 | // Attribute that has this mask has a min/max values 17 | #define ATTRIBUTE_MASK_MIN_MAX (0x04) 18 | // Manufacturer specific attribute 19 | #define ATTRIBUTE_MASK_MANUFACTURER_SPECIFIC (0x08) 20 | // Attribute deferred to external storage 21 | #define ATTRIBUTE_MASK_EXTERNAL_STORAGE (0x10) 22 | // Attribute is singleton 23 | #define ATTRIBUTE_MASK_SINGLETON (0x20) 24 | // Attribute is a client attribute 25 | #define ATTRIBUTE_MASK_CLIENT (0x40) 26 | 27 | 28 | // Cluster masks modify how clusters are used by the framework 29 | // Does this cluster have init function? 30 | #define CLUSTER_MASK_INIT_FUNCTION (0x01) 31 | // Does this cluster have attribute changed function? 32 | #define CLUSTER_MASK_ATTRIBUTE_CHANGED_FUNCTION (0x02) 33 | // Does this cluster have default response function? 34 | #define CLUSTER_MASK_DEFAULT_RESPONSE_FUNCTION (0x04) 35 | // Does this cluster have message sent function? 36 | #define CLUSTER_MASK_MESSAGE_SENT_FUNCTION (0x08) 37 | // Does this cluster have manufacturer specific attribute changed funciton? 38 | #define CLUSTER_MASK_MANUFACTURER_SPECIFIC_ATTRIBUTE_CHANGED_FUNCTION (0x10) 39 | // Does this cluster have pre-attribute changed function? 40 | #define CLUSTER_MASK_PRE_ATTRIBUTE_CHANGED_FUNCTION (0x20) 41 | // Cluster is a server 42 | #define CLUSTER_MASK_SERVER (0x40) 43 | // Cluster is a client 44 | #define CLUSTER_MASK_CLIENT (0x80) 45 | 46 | 47 | // Command masks modify meanings of commands 48 | // Is sending of this client command supported 49 | #define COMMAND_MASK_OUTGOING_CLIENT (0x01) 50 | // Is sending of this server command supported 51 | #define COMMAND_MASK_OUTGOING_SERVER (0x02) 52 | // Is receiving of this client command supported 53 | #define COMMAND_MASK_INCOMING_CLIENT (0x04) 54 | // Is receiving of this server command supported 55 | #define COMMAND_MASK_INCOMING_SERVER (0x08) 56 | // Is this command manufacturer specific? 57 | #define COMMAND_MASK_MANUFACTURER_SPECIFIC (0x10) 58 | #endif // SILABS_ATTRIBUTE_STORAGE_GEN 59 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/attribute-size.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_ATTRIBUTE_SIZE 7 | #define SILABS_ATTRIBUTE_SIZE 8 | 9 | 10 | // Used ZCL attribute type sizes 11 | ZCL_BITMAP16_ATTRIBUTE_TYPE, 2, 12 | ZCL_BITMAP24_ATTRIBUTE_TYPE, 3, 13 | ZCL_BITMAP32_ATTRIBUTE_TYPE, 4, 14 | ZCL_BITMAP48_ATTRIBUTE_TYPE, 6, 15 | ZCL_BITMAP64_ATTRIBUTE_TYPE, 8, 16 | ZCL_BITMAP8_ATTRIBUTE_TYPE, 1, 17 | ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, 18 | ZCL_DATA8_ATTRIBUTE_TYPE, 1, 19 | ZCL_ENUM16_ATTRIBUTE_TYPE, 2, 20 | ZCL_ENUM8_ATTRIBUTE_TYPE, 1, 21 | ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4, 22 | ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8, 23 | ZCL_INT16S_ATTRIBUTE_TYPE, 2, 24 | ZCL_INT16U_ATTRIBUTE_TYPE, 2, 25 | ZCL_INT24S_ATTRIBUTE_TYPE, 3, 26 | ZCL_INT24U_ATTRIBUTE_TYPE, 3, 27 | ZCL_INT32S_ATTRIBUTE_TYPE, 4, 28 | ZCL_INT32U_ATTRIBUTE_TYPE, 4, 29 | ZCL_INT48U_ATTRIBUTE_TYPE, 6, 30 | ZCL_INT56U_ATTRIBUTE_TYPE, 7, 31 | ZCL_INT8S_ATTRIBUTE_TYPE, 1, 32 | ZCL_INT8U_ATTRIBUTE_TYPE, 1, 33 | ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16, 34 | ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4, 35 | #endif // SILABS_ATTRIBUTE_SIZE 36 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/call-command-handler.c: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // This is a set of generated functions that parse the 6 | // the incomming message, and call appropriate command handler. 7 | 8 | 9 | 10 | #include PLATFORM_HEADER 11 | #ifdef EZSP_HOST 12 | // Includes needed for ember related functions for the EZSP host 13 | #include "stack/include/error.h" 14 | #include "stack/include/ember-types.h" 15 | #include "app/util/ezsp/ezsp-protocol.h" 16 | #include "app/util/ezsp/ezsp.h" 17 | #include "app/util/ezsp/ezsp-utils.h" 18 | #include "app/util/ezsp/serial-interface.h" 19 | #else 20 | // Includes needed for ember related functions for the EM250 21 | #include "stack/include/ember.h" 22 | #endif // EZSP_HOST 23 | 24 | #include "app/framework/util/util.h" 25 | #include "af-structs.h" 26 | #include "call-command-handler.h" 27 | #include "command-id.h" 28 | #include "callback.h" 29 | 30 | static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific) 31 | { 32 | if (wasHandled) { 33 | return EMBER_ZCL_STATUS_SUCCESS; 34 | } else if (mfgSpecific) { 35 | return EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND; 36 | } else if (clusterExists) { 37 | return EMBER_ZCL_STATUS_UNSUP_CLUSTER_COMMAND; 38 | } else { 39 | return EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER; 40 | } 41 | } 42 | 43 | // Main command parsing controller. 44 | EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand *cmd) 45 | { 46 | EmberAfStatus result = status(false, false, cmd->mfgSpecific); 47 | if (cmd->direction == (uint8_t)ZCL_DIRECTION_SERVER_TO_CLIENT 48 | && emberAfContainsClientWithMfgCode(cmd->apsFrame->destinationEndpoint, 49 | cmd->apsFrame->clusterId, 50 | cmd->mfgCode)) { 51 | switch (cmd->apsFrame->clusterId) { 52 | case ZCL_IDENTIFY_CLUSTER_ID: 53 | result = status(false, true, cmd->mfgSpecific); 54 | break; 55 | case ZCL_ON_OFF_CLUSTER_ID: 56 | result = status(false, true, cmd->mfgSpecific); 57 | break; 58 | default: 59 | // Unrecognized cluster ID, error status will apply. 60 | break; 61 | } 62 | } else if (cmd->direction == (uint8_t)ZCL_DIRECTION_CLIENT_TO_SERVER 63 | && emberAfContainsServerWithMfgCode(cmd->apsFrame->destinationEndpoint, 64 | cmd->apsFrame->clusterId, 65 | cmd->mfgCode)) { 66 | switch (cmd->apsFrame->clusterId) { 67 | case ZCL_BASIC_CLUSTER_ID: 68 | result = status(false, true, cmd->mfgSpecific); 69 | break; 70 | case ZCL_IDENTIFY_CLUSTER_ID: 71 | result = status(false, true, cmd->mfgSpecific); 72 | break; 73 | default: 74 | // Unrecognized cluster ID, error status will apply. 75 | break; 76 | } 77 | } 78 | return result; 79 | } 80 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/call-command-handler.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_EMBER_AF_COMMAND_PARSE_HEADER 7 | #define SILABS_EMBER_AF_COMMAND_PARSE_HEADER 8 | 9 | 10 | // This is a set of generated prototype for functions that parse the 11 | // the incomming message, and call appropriate command handler. 12 | 13 | #endif // SILABS_EMBER_AF_COMMAND_PARSE_HEADER 14 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/custom-token.h: -------------------------------------------------------------------------------- 1 | // File: custom-token.h 2 | // 3 | // Description: Custom token definitions used by the application. 4 | // 5 | // Copyright 2019 by Silicon Labs Corporation. All rights reserved. 6 | 7 | /** 8 | * Custom Zigbee Application Tokens 9 | */ 10 | // Define token names here 11 | #define NVM3KEY_LED1_ON_OFF (NVM3KEY_DOMAIN_USER | 0x0001) 12 | 13 | #if defined(DEFINETYPES) 14 | // Include or define any typedef for tokens here 15 | typedef struct { 16 | uint8_t ledIndex; // LED index 17 | bool ledOnOff; // LED ON OFF status 18 | } ledOnOffStatus_t; 19 | #endif //DEFINETYPES 20 | 21 | #ifdef DEFINETOKENS 22 | // Define the actual token storage information here 23 | DEFINE_BASIC_TOKEN(LED1_ON_OFF, 24 | ledOnOffStatus_t, 25 | {1, false}) 26 | #endif 27 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/mbedtls-config-generated.h: -------------------------------------------------------------------------------- 1 | /***************************************************************************//** 2 | * @file mbedtls-config-generated.h 3 | * @brief mbed TLS configuration file. This file is generated do not modify it directly. Please use the mbed TLS setup instead. 4 | * 5 | ******************************************************************************* 6 | * # License 7 | * Copyright 2018 Silicon Laboratories Inc. www.silabs.com 8 | ******************************************************************************* 9 | * 10 | * The licensor of this software is Silicon Laboratories Inc. Your use of this 11 | * software is governed by the terms of Silicon Labs Master Software License 12 | * Agreement (MSLA) available at 13 | * www.silabs.com/about-us/legal/master-software-license-agreement. This 14 | * software is distributed to you in Source Code format and is governed by the 15 | * sections of the MSLA applicable to Source Code. 16 | * 17 | ******************************************************************************/ 18 | 19 | #ifndef MBEDTLS_CONFIG_GENERATED_H 20 | #define MBEDTLS_CONFIG_GENERATED_H 21 | 22 | #if !defined(EMBER_TEST) 23 | #define MBEDTLS_NO_PLATFORM_ENTROPY 24 | 25 | #else 26 | // mbedtls/library/entropy_poll.c needs this, 27 | // implicit declaration of function 'syscall' otherwise 28 | #define _GNU_SOURCE 29 | #endif 30 | 31 | // Generated content that is coming from contributor plugins 32 | 33 | 34 | 35 | #define MBEDTLS_AES_C 36 | 37 | 38 | #if defined(MBEDTLS_ENTROPY_C) 39 | // Enable RAIL radio as entropy source by default 40 | // This is going to help on devices that does not have TRNG support by software 41 | // (FR32XG13 (SDID_89) and EFR32XG14 (SDID_95)) 42 | #define MBEDTLS_ENTROPY_RAIL_C 43 | #endif 44 | 45 | // Inclusion of the Silabs specific device acceleration configuration file. 46 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE) 47 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_FILE 48 | #endif 49 | 50 | // Inclusion of the app specific device acceleration configuration file. 51 | #if defined(MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE) 52 | #include MBEDTLS_DEVICE_ACCELERATION_CONFIG_APP_FILE 53 | #endif 54 | 55 | // Inclusion of the mbed TLS config_check.h header file. 56 | #include "mbedtls/check_config.h" 57 | 58 | #endif /* MBEDTLS_CONFIG_GENERATED_H */ 59 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/stack-handler-stub.c: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // This c file provides stubs for all callbacks. These stubs 6 | // will be used in the case where user defined implementations 7 | // of the callbacks have not been provided. 8 | #include "app/framework/include/af.h" 9 | // Stubs required for implemented stack handlers. 10 | 11 | 12 | #ifdef EZSP_HOST 13 | #else // ! EZSP_HOST 14 | #endif // EZSP_HOST 15 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/znet-bookkeeping.c: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | #include PLATFORM_HEADER 6 | #include CONFIGURATION_HEADER 7 | #include "af.h" 8 | 9 | // Init function declarations. 10 | void emberAfMainInitCallback(void); // Global 11 | void emberAfInit(void); // Global 12 | 13 | void emAfInit(void) 14 | { 15 | emberAfMainInitCallback(); // Global 16 | emberAfInit(); // Global 17 | } 18 | 19 | // Tick function declarations. 20 | void emberAfMainTickCallback(void); // Global 21 | void emberAfTick(void); // Global 22 | 23 | void emAfTick(void) 24 | { 25 | emberAfMainTickCallback(); // Global 26 | emberAfTick(); // Global 27 | } 28 | 29 | void emAfResetAttributes(uint8_t endpointId) 30 | { 31 | } 32 | 33 | // PreCommandReceived function declarations. 34 | bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd); // Global 35 | 36 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd) 37 | { 38 | return emberAfPreCommandReceivedCallback(cmd); // Global 39 | } 40 | 41 | // PreZDOMessageReceived function declarations. 42 | bool emberAfPreZDOMessageReceivedCallback(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length); // Global 43 | 44 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length) 45 | { 46 | return emberAfPreZDOMessageReceivedCallback(emberNodeId, apsFrame, message, length); // Global 47 | } 48 | 49 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength) 50 | { 51 | return 0; // false 52 | } 53 | 54 | // ZigbeeKeyEstablishment function declarations. 55 | void emberAfZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Global 56 | void emberAfPluginUpdateTcLinkKeyZigbeeKeyEstablishmentCallback(EmberEUI64 partner, EmberKeyStatus status); // Plugin: update-tc-link-key 57 | 58 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status) 59 | { 60 | emberAfZigbeeKeyEstablishmentCallback(partner, status); // Global 61 | emberAfPluginUpdateTcLinkKeyZigbeeKeyEstablishmentCallback(partner, status); // Plugin: update-tc-link-key 62 | } 63 | 64 | // ReadAttributesResponse function declarations. 65 | bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen); // Global 66 | 67 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen) 68 | { 69 | return emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen); // Global 70 | } 71 | 72 | // ReportAttributes function declarations. 73 | bool emberAfReportAttributesCallback(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen); // Global 74 | 75 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen) 76 | { 77 | return emberAfReportAttributesCallback(clusterId, buffer, bufLen); // Global 78 | } 79 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/znet-bookkeeping.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | // Enclosing macro to prevent multiple inclusion 6 | #ifndef SILABS_ZNET_BOOKKEEPING_H 7 | #define SILABS_ZNET_BOOKKEEPING_H 8 | 9 | 10 | #include PLATFORM_HEADER 11 | #include CONFIGURATION_HEADER 12 | #include "af.h" 13 | 14 | void emAfInit(void); 15 | 16 | void emAfTick(void); 17 | 18 | void emAfResetAttributes(uint8_t endpointId); 19 | 20 | bool emAfPreCommandReceived(EmberAfClusterCommand* cmd); 21 | 22 | bool emAfPreZDOMessageReceived(EmberNodeId emberNodeId,EmberApsFrame* apsFrame,uint8_t* message,uint16_t length); 23 | 24 | bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength); 25 | 26 | void emAfZigbeeKeyEstablishment(EmberEUI64 partner, EmberKeyStatus status); 27 | 28 | bool emAfReadAttributesResponse(EmberAfClusterId clusterId,uint8_t* buffer,uint16_t bufLen); 29 | 30 | bool emAfReportAttributes(EmberAfClusterId clusterId,uint8_t * buffer,uint16_t bufLen); 31 | 32 | #endif // SILABS_ZNET_BOOKKEEPING_H 33 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/znet-mfg-token.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | #ifdef CONFIGURATION_HEADER 6 | #include CONFIGURATION_HEADER 7 | #endif 8 | 9 | // Token header for the token.properties. 10 | 11 | #ifdef CUSTOM_TOKEN_HEADER 12 | #include CUSTOM_TOKEN_HEADER 13 | #endif 14 | 15 | -------------------------------------------------------------------------------- /zigbee_boot_camp/Zigbee_Switch_ZR/znet-token.h: -------------------------------------------------------------------------------- 1 | // This file is generated by Simplicity Studio. Please do not edit manually. 2 | // 3 | // 4 | 5 | #ifdef CONFIGURATION_HEADER 6 | #include CONFIGURATION_HEADER 7 | #endif 8 | 9 | // Token header for the token.properties. 10 | #include "../../../../../SiliconLabs/SimplicityStudio/v4/developer/sdks/gecko_sdk_suite/v2.6/protocol/zigbee/app/framework/util/tokens.h" 11 | 12 | // Custom token header file 13 | #include "custom-token.h" 14 | 15 | #ifdef CUSTOM_TOKEN_HEADER 16 | #include CUSTOM_TOKEN_HEADER 17 | #endif 18 | 19 | -------------------------------------------------------------------------------- /zigbee_boot_camp/images/license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/images/license.png -------------------------------------------------------------------------------- /zigbee_boot_camp/images/zigbee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SiliconLabs/training_examples/e6d9cc405ffc4838384b8b4cca4a4c20f38b7bc0/zigbee_boot_camp/images/zigbee.png --------------------------------------------------------------------------------