ESP8266-Arduino编程实例-LSM303 3D加速度计/磁力计驱动

LSM303 3D加速度计/磁力计驱动

1、LSM303介绍

LSM303DLHC 是一个系统级封装,具有一个 3D 数字线性加速度传感器和一个 3D 数字磁传感器。 LSM303DLHC 的线性加速度满量程为 ±2g/±4g/±8g/±16g,磁场满量程为 ±1.3/±1.9/±2.5/±4.0/±4.7/±5.6/±8.1 高斯。

LSM303DLHC 包括一个 I2C 串行总线接口,支持标准和快速模式 100 kHz 和 400 kHz。 系统可以配置为通过惯性唤醒/自由落体事件以及设备本身的位置生成中断信号。 中断发生器的阈值和时序可由最终用户编程。 磁性和加速度计模块可以单独启用或进入断电模式。
LSM303DLHC 采用塑料焊盘网格阵列封装 (LGA),保证在 -40 °C 至 +85 °C 的扩展温度范围内工作。

LSM303D具有如下特性:

  • 3个磁场通道和3个加速通道
  • 从 ±1.3 到 ±8.1 高斯磁场满量程
  • ±2g/±4g/±8g/±16g线性加速度满量程
  • 16位数据输出
  • I2C 串行接口
  • 模拟电源电压 2.16 V 至 3.6 V
  • 掉电模式/低功耗模式
  • 2 个独立的可编程中断发生器,用于自由落体和运动检测
  • 嵌入式温度传感器
  • 嵌入式先进先出
  • 6D/4D 方向检测

在这里插入图片描述

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • LSM303传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用LSM303驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
7
#include <Wire.h>
#include <Adafruit\_Sensor.h>
#include <Adafruit\_LSM303.h>

// 创建LSM303设备对象
Adafruit_LSM303 lsm;

2)设备初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void setup() 
{
#ifndef ESP8266
while (!Serial);
#endif
Serial.begin(9600);

// 初始化LSM303
if (!lsm.begin())
{
Serial.println("Oops ... unable to initialize the LSM303. Check your wiring!");
while (1);
}
}


3)传感数据数据采集

1
2
3
4
5
6
7
8
9
10
11
12
void loop() 
{
lsm.read();
Serial.print("Accel X: "); Serial.print((int)lsm.accelData.x); Serial.print(" ");
Serial.print("Y: "); Serial.print((int)lsm.accelData.y); Serial.print(" ");
Serial.print("Z: "); Serial.println((int)lsm.accelData.z); Serial.print(" ");
Serial.print("Mag X: "); Serial.print((int)lsm.magData.x); Serial.print(" ");
Serial.print("Y: "); Serial.print((int)lsm.magData.y); Serial.print(" ");
Serial.print("Z: "); Serial.println((int)lsm.magData.z); Serial.print(" ");
delay(1000);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126305469