Skip to content

Commit

Permalink
Merge branch 'feature/add_power_measure_component' into 'master'
Browse files Browse the repository at this point in the history
feat: add component for power metering chip

See merge request ae_group/esp-iot-solution!1111
  • Loading branch information
Yuan Ming Fu committed Dec 20, 2024
2 parents 5031c50 + 885a0ca commit facc5f0
Show file tree
Hide file tree
Showing 34 changed files with 1,857 additions and 0 deletions.
1 change: 1 addition & 0 deletions .github/workflows/upload_component.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ jobs:
components/motor/esp_simplefoc;
components/motor/servo;
components/openai;
components/sensors/power_measure;
components/sensors/gesture/apds9960;
components/sensors/humiture/aht20;
components/sensors/humiture/hdc2010;
Expand Down
19 changes: 19 additions & 0 deletions .gitlab/ci/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,14 @@ build_example_get_started_knob_power_save:
variables:
EXAMPLE_DIR: examples/get-started/knob_power_save

build_example_sensors_power_measure:
extends:
- .build_examples_template
- .rules:build:example_sensors_power_measure
- .build_idf_active_release_version
variables:
EXAMPLE_DIR: examples/sensors/power_measure

build_example_gprof_gprof_simple:
extends:
- .build_examples_template
Expand Down Expand Up @@ -1221,6 +1229,17 @@ build_components_openai_test_apps:
variables:
EXAMPLE_DIR: components/openai/test_apps

build_components_sensors_power_measure_test_apps:
extends:
- .build_examples_template
- .rules:build:components_sensors_power_measure_test_apps
parallel:
matrix:
- IMAGE: espressif/idf:release-v5.0
- IMAGE: espressif/idf:release-v4.4
variables:
EXAMPLE_DIR: components/sensors/power_measure/test_apps

build_components_sensors_gesture_apds9960_test_apps:
extends:
- .build_examples_template
Expand Down
27 changes: 27 additions & 0 deletions .gitlab/ci/rules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,10 @@
- "components/openai/**/*"
- "tools/cmake_utilities/package_manager.cmake"

.patterns-components_sensors_power_measure: &patterns-components_sensors_power_measure
- "components/sensors/power_measure/**/*"
- "components/tools/cmake_utilities/package_manager.cmake"

.patterns-components_sensors_gesture_apds9960: &patterns-components_sensors_gesture_apds9960
- "components/sensors/gesture/apds9960/**/*"
- "tools/cmake_utilities/package_manager.cmake"
Expand Down Expand Up @@ -517,6 +521,9 @@
.patterns-example_sensors_ntc_temperature_sensor: &patterns-example_sensors_ntc_temperature_sensor
- "examples/sensors/ntc_temperature_sensor/**/*"

.patterns-example_sensors_power_measure: &patterns-example_sensors_power_measure
- "examples/sensors/power_measure/**/*"

.patterns-example_usb_device_usb_uart_bridge: &patterns-example_usb_device_usb_uart_bridge
- "examples/usb/device/usb_uart_bridge/**/*"

Expand Down Expand Up @@ -957,6 +964,15 @@
- <<: *if-dev-push
changes: *patterns-example_get_started_knob_power_save

.rules:build:example_sensors_power_measure:
rules:
- <<: *if-protected
- <<: *if-label-build
- <<: *if-dev-push
changes: *patterns-components_sensors_power_measure
- <<: *if-dev-push
changes: *patterns-example_sensors_power_measure

.rules:build:example_gprof_gprof_simple:
rules:
- <<: *if-protected
Expand Down Expand Up @@ -1542,6 +1558,17 @@
- <<: *if-dev-push
changes: *patterns-components_button

.rules:build:components_sensors_power_measure_test_apps:
rules:
- <<: *if-protected
- <<: *if-label-build
- <<: *if-label-target_test
- <<: *if-trigger-job
- <<: *if-dev-push
changes: *patterns-build_system
- <<: *if-dev-push
changes: *patterns-components_sensors_power_measure

.rules:build:components_display_digital_tube_ch450_test:
rules:
- <<: *if-protected
Expand Down
23 changes: 23 additions & 0 deletions .gitlab/ci/target_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,29 @@ components_test_openai:
TEST_TARGET: esp32s3
TEST_FOLDER: components/openai

components_test_power_measure:
extends:
- .pytest_template
- .rules:build:components_sensors_power_measure_test_apps
needs:
- job: "build_components_sensors_power_measure_test_apps"
artifacts: true
optional: false
parallel:
matrix:
- IDF_TARGET: esp32c3
IDF_VERSION: "4.4"
- IDF_TARGET: esp32c3
IDF_VERSION: "5.0"
tags:
- esp32c3
- generic
image: $DOCKER_TARGET_TEST_v5_1_ENV_IMAGE
variables:
TEST_TARGET: esp32c3
TEST_FOLDER: components/sensors/power_measure
TEST_ENV: generic

components_test_esp_lcd_axs15231b:
extends:
- .pytest_template
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ The registered components in ESP-IoT-Solution are listed below:
| [mvh3004d](https://components.espressif.com/components/espressif/mvh3004d) | [![Component Registry](https://components.espressif.com/components/espressif/mvh3004d/badge.svg)](https://components.espressif.com/components/espressif/mvh3004d) |
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver) | [![Component Registry](https://components.espressif.com/components/espressif/ntc_driver/badge.svg)](https://components.espressif.com/components/espressif/ntc_driver) |
| [openai](https://components.espressif.com/components/espressif/openai) | [![Component Registry](https://components.espressif.com/components/espressif/openai/badge.svg)](https://components.espressif.com/components/espressif/openai) |
| [power_measure](https://components.espressif.com/components/espressif/power_measure) | [![Component Registry](https://components.espressif.com/components/espressif/power_measure/badge.svg)](https://components.espressif.com/components/espressif/power_measure) |
| [pwm_audio](https://components.espressif.com/components/espressif/pwm_audio) | [![Component Registry](https://components.espressif.com/components/espressif/pwm_audio/badge.svg)](https://components.espressif.com/components/espressif/pwm_audio) |
| [servo](https://components.espressif.com/components/espressif/servo) | [![Component Registry](https://components.espressif.com/components/espressif/servo/badge.svg)](https://components.espressif.com/components/espressif/servo) |
| [sht3x](https://components.espressif.com/components/espressif/sht3x) | [![Component Registry](https://components.espressif.com/components/espressif/sht3x/badge.svg)](https://components.espressif.com/components/espressif/sht3x) |
Expand Down
1 change: 1 addition & 0 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ ESP-IoT-Solution 中注册的组件如下:
| [mvh3004d](https://components.espressif.com/components/espressif/mvh3004d) | [![Component Registry](https://components.espressif.com/components/espressif/mvh3004d/badge.svg)](https://components.espressif.com/components/espressif/mvh3004d) |
| [ntc_driver](https://components.espressif.com/components/espressif/ntc_driver) | [![Component Registry](https://components.espressif.com/components/espressif/ntc_driver/badge.svg)](https://components.espressif.com/components/espressif/ntc_driver) |
| [openai](https://components.espressif.com/components/espressif/openai) | [![Component Registry](https://components.espressif.com/components/espressif/openai/badge.svg)](https://components.espressif.com/components/espressif/openai) |
| [power_measure](https://components.espressif.com/components/espressif/power_measure) | [![Component Registry](https://components.espressif.com/components/espressif/power_measure/badge.svg)](https://components.espressif.com/components/espressif/power_measure) |
| [pwm_audio](https://components.espressif.com/components/espressif/pwm_audio) | [![Component Registry](https://components.espressif.com/components/espressif/pwm_audio/badge.svg)](https://components.espressif.com/components/espressif/pwm_audio) |
| [servo](https://components.espressif.com/components/espressif/servo) | [![Component Registry](https://components.espressif.com/components/espressif/servo/badge.svg)](https://components.espressif.com/components/espressif/servo) |
| [sht3x](https://components.espressif.com/components/espressif/sht3x) | [![Component Registry](https://components.espressif.com/components/espressif/sht3x/badge.svg)](https://components.espressif.com/components/espressif/sht3x) |
Expand Down
4 changes: 4 additions & 0 deletions components/.build-rules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ components/knob/test_apps:
enable:
- if: INCLUDE_DEFAULT == 1

components/sensors/power_measure/test_apps:
enable:
- if: INCLUDE_DEFAULT == 1

components/led/led_indicator/test_apps:
enable:
- if: INCLUDE_DEFAULT == 1
Expand Down
14 changes: 14 additions & 0 deletions components/sensors/power_measure/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## v0.1.0 - 2024-11-5

### Enhancements:

* Initial version
* Support BL0937 chip to measure voltage, current, energy

## v0.1.1 - 2024-12-10

### Enhancements:

* Modified the formatting of the document
* Added more detailed documentation
* Optimised some code
8 changes: 8 additions & 0 deletions components/sensors/power_measure/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
idf_component_register(SRC_DIRS "."
INCLUDE_DIRS "include"
PRIV_INCLUDE_DIRS "priv_include"
REQUIRES esp_timer driver esp_event
)

include(package_manager)
cu_pkg_define_version(${CMAKE_CURRENT_LIST_DIR})
7 changes: 7 additions & 0 deletions components/sensors/power_measure/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
menu "power_measure"
config BL0937_IRAM_OPTIMIZED
bool "Enable IRAM optimization for BL0937"
default n
help
Enable IRAM optimization for BL0937
endmenu
34 changes: 34 additions & 0 deletions components/sensors/power_measure/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Component Power_Measure

## Overview

This example demonstrates how to use the **BL0937** power measurement chip to detect electrical parameters such as voltage, current, active power, and energy consumption. It is implemented for **ESP32** using FreeRTOS, and shows how to configure and interface with the BL0937 power measurement chip. The example initializes the power measurement system, fetches various parameters, and logs them at regular intervals.

This example supports the **BL0937** power measurement chip, which is capable of measuring:

1. **Voltage**
2. **Current**
3. **Active Power**
4. **Energy**

The primary goal is to demonstrate how to configure the hardware pins, initialize the power measurement system, and retrieve the data from the chip.

## Features

* Measures **voltage** , **current** , **active power** , and **energy** .
* Configures **BL0937** power measurement chip.
* Supports overcurrent, overvoltage, and undervoltage protection.
* Energy detection is enabled for accurate readings.
* Regularly fetches power readings every second and logs them.

## Hardware Requirements

The example uses the **BL0937** power measurement chip. To connect it, the following pins must be configured on the ESP32:

| Variable | GPIO Pin | Chip Pin |
| ------------------- | -------------- | -------- |
| `BL0937_CF_GPIO` | `GPIO_NUM_3` | CF Pin |
| `BL0937_SEL_GPIO` | `GPIO_NUM_4` | SEL Pin |
| `BL0937_CF1_GPIO` | `GPIO_NUM_7` | CF1 Pin |

Make sure that these GPIO pins are correctly connected to the respective pins on the **BL0937** chip in your hardware setup.
Loading

0 comments on commit facc5f0

Please sign in to comment.