ESP8266-Arduino编程实例-LIS3MDL磁场传感器驱动

LIS3MDL磁场传感器驱动

1、LIS3MDL介绍

LIS3MDL 具有±4/±8/±12/±16 高斯的用户可选满量程。自检功能允许用户在最终应用中检查传感器的功能。该设备可以被配置为生成用于磁场检测的中断信号。

LIS3MDL 包括一个支持标准和快速模式(100 kHz 和 400 kHz)的 I2C 串行总线接口和 SPI 串行标准接口。

LIS3MDL 采用小型薄塑料焊盘网格阵列封装 (LGA),保证在 -40 °C 至 +85 °C 的扩展温度范围内工作。

在这里插入图片描述

LIS3MDL具有如下特性:

  • 宽电源电压,1.9 V 至 3.6 V
  • 独立 IO 电源 (1.8 V)
  • ±4/±8/±12/±16 高斯可选磁性满量程
  • 连续和单次转换模式
  • 16位数据输出
  • 中断发生器
  • 自我测试
  • I2C/SPI数字输出接口
  • 掉电模式/低功耗模式

2、硬件准备

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

硬件接线如下:

传感器引脚 ESP8266开发板引脚
Vin 5v
Gnd Gnd
SCL D1
SDA D2

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

本次使用的驱动库如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <Wire.h>
#include <LIS3MDL.h>

LIS3MDL mag;

char report[80];

void setup()
{
Serial.begin(9600);
Wire.begin();

if (!mag.init())
{
Serial.println("Failed to detect and initialize magnetometer!");
while (1);
}

mag.enableDefault();
}

void loop()
{
mag.read();

snprintf(report, sizeof(report), "M: %6d %6d %6d",
mag.m.x, mag.m.y, mag.m.z);
Serial.println(report);

delay(100);
}

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