• Home
Name Date Size #Lines LOC

..--

include/12-May-2024-10274

src/12-May-2024-389221

BUILD.gnD12-May-2024889 2623

README.mdD12-May-20244.4 KiB13297

e53_sc2_example.cD12-May-20242.9 KiB9066

README.md

1# BearPi-HM_Nano开发板传感器驱动开发——E53_SC2读取三轴加速度
2本示例将演示如何在BearPi-HM_Nano开发板上使用E53_SC2读取三轴加速度,设备安装如下图所示。
3
4
5![](../../docs/figures/C4_e53_sc2_axis/E53_SC2_Install.png "E53_SC2安装")
6
7## E53_SC2 API分析
8本案例主要使用了以下API完成三轴加速度值的读取。
9
10### E53SC2Init()
11```C
12int E53SC2Init(void);
13```
14 **描述:**
15
16初始化E53_SC2。
17
18### E53SC2ReadData()
19```C
20int E53SC2ReadData(E53SC2Data *ReadData);
21```
22 **描述:**
23
24读取三轴加速度及温度。
25
26
27
28## 硬件设计
29本案例将用到 E53_SC2 智慧井盖扩展板与 BearPi-HM_Nano 开发板,其中E53_SC2扩展板原理图如下,三轴加速度传感器MPU6050是通过I2C来驱动。
30
31![](../../docs/figures/C4_e53_sc2_axis/E53_SC2_Interface.png "E53_SC2接口")
32
33![](../../docs/figures/C4_e53_sc2_axis/E53InterfaceCircuit.png "E53接口电路")
34
35E53_SC2 智慧井盖扩展板与 BearPi-HM_Nano 开发板安装如下图所示。
36
37![](../../docs/figures/C4_e53_sc2_axis/E53_SC2_Install.png "E53_SC2安装")
38## 软件设计
39
40**主要代码分析**
41
42
43首先调用 `E53SC2Init()` 函数初始化E53_SC2所接的引脚的功能,然后循环调用 `E53SC2ReadData()` 函数读取三轴加速度并通过串口打印出来,设置第一次读出的三轴加速度为水平状态,当倾斜开发板后会点亮扩展板上倾斜倾斜状态的灯。
44
45```C
46static void ExampleTask(void)
47{
48    uint8_t ret;
49    E53SC2Data data;
50    int X = 0, Y = 0, Z = 0;
51
52    ret = E53SC2Init();
53    if (ret != 0) {
54        printf("E53_SC2 Init failed!\r\n");
55        return;
56    }
57    while (1) {
58        printf("=======================================\r\n");
59        printf("*************E53_SC2_example***********\r\n");
60        printf("=======================================\r\n");
61        ret = E53SC2ReadData(&data);
62        if (ret != 0) {
63            printf("E53_SC2 Read Data!\r\n");
64            return;
65        }
66        printf("\r\n**************Temperature      is  %d\r\n", (int)data.Temperature);
67        printf("\r\n**************Accel[0]         is  %d\r\n", (int)data.Accel[ACCEL_X_AXIS]);
68        printf("\r\n**************Accel[1]         is  %d\r\n", (int)data.Accel[ACCEL_Y_AXIS]);
69        printf("\r\n**************Accel[2]         is  %d\r\n", (int)data.Accel[ACCEL_Z_AXIS]);
70        if (X == 0 && Y == 0 && Z == 0) {
71            X = (int)data.Accel[ACCEL_X_AXIS];
72            Y = (int)data.Accel[ACCEL_Y_AXIS];
73            Z = (int)data.Accel[ACCEL_Z_AXIS];
74        } else {
75            if (X + ACCEL_THRESHOLD < data.Accel[ACCEL_X_AXIS] || X - ACCEL_THRESHOLD > data.Accel[ACCEL_X_AXIS]
76                || Y + ACCEL_THRESHOLD < data.Accel[ACCEL_Y_AXIS] || Y - ACCEL_THRESHOLD > data.Accel[ACCEL_Y_AXIS]
77                || Z + ACCEL_THRESHOLD < data.Accel[ACCEL_Z_AXIS] || Z - ACCEL_THRESHOLD > data.Accel[ACCEL_Z_AXIS]) {
78                LedD1StatusSet(OFF);
79                LedD2StatusSet(ON);
80            } else {
81                LedD1StatusSet(ON);
82                LedD2StatusSet(OFF);
83            }
84        }
85        usleep(TASK_DELAY_1S);
86    }
87}
88```
89
90
91## 编译调试
92
93### 修改 BUILD.gn 文件
94修改`device\board\bearpi\bearpi_hm_nano\app`路径下 BUILD.gn 文件,指定 `e53_sc2_example` 参与编译。
95```r
96#"C1_e53_sf1_mq2:e53_sf1_example",
97#"C2_e53_ia1_temp_humi_pls:e53_ia1_example",
98#"C3_e53_sc1_pls:e53_sc1_example",
99"C4_e53_sc2_axis:e53_sc2_example",
100#"C5_e53_is1_infrared:e53_is1_example",
101```
102
103
104### 运行结果<a name="section18115713118"></a>
105
106示例代码编译烧录后,按下开发板的RESET按键,通过串口助手查看日志,会打印温度和三轴加速度信息。当倾斜开发板后会点亮扩展板上检测倾斜状态的灯。
107```c
108=======================================
109*************E53_SC2_example***********
110=======================================
111
112******************************Temperature      is  25
113
114******************************Accel[0]         is  45
115
116******************************Accel[1]         is  3
117
118******************************Accel[2]         is  2089
119=======================================
120*************E53_SC2_example***********
121=======================================
122
123******************************Temperature      is  25
124
125******************************Accel[0]         is  49
126
127******************************Accel[1]         is  5
128
129******************************Accel[2]         is  2087
130```
131
132