[STM32] 12. LIS3MDL, Magnetometer 센서 제어하기(B-L475E-IOT01A1 개발보드 활용하기)

728x90
반응형

음 지난 포스팅 이후 정신없는 시간을 보내면서 포스팅을 이어나가지 못했다. 이제 조금(?) 여유가 생겨 포스팅을 이어 나가보려고 한다.

 

지난 포스팅은 대기압 센서 제어.

https://vuzwa.tistory.com/entry/STM32-11-LPS22HH-%EB%8C%80%EA%B8%B0%EC%95%95-%EC%84%BC%EC%84%9C-%EC%A0%9C%EC%96%B4%ED%95%98%EA%B8%B0B-L475E-IOT01A1-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0

 

[STM32] 11. LPS22HB, 대기압 센서 제어하기(B-L475E-IOT01A1 개발보드 활용하기)

2022.04.12 - [Hardware&Firmware/STmicroelectronic(STM)] - [STM32] 10. HTS221, 온습도 센서 제어하기(B-L475E-IOT01A1 개발보드 활용하기) [STM32] 10. HTS221, 온습도 센서 제어하기(B-L475E-IOT01A1 개발보드 활용하기) https://vuzw

vuzwa.tistory.com

 

 

이번 포스팅에서 다룰 센서는 LIS3MDL, 자기 계(Magnetometer) 센서다. 센서 주변의 자기장이나 자기 모먼트를 측정하는 센서다. 센서의 정확한 정의는 아래 위키백과 링크 참고하기 바란다. https://ko.wikipedia.org/wiki/%EC%9E%90%EA%B8%B0%EA%B3%84

 

자기계 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. -->

ko.wikipedia.org

 

가장 대표적으로 사용되는 곳이 스마트폰이다. 스마트폰에서 나침반 기능이 가장 대표적이고, 금속물체를 탐지하는 기계에 사용된다. 센서에 대해 설명을 다루는 포스팅이 아니기 때문에 센서에 대한 내용은 이 정도로 마무리하고 센서를 제어하는 방법을 확인해 보도록 하겠다

 

 

 

우선 개발보드에서 제공하는 드라이버를 가져와야한다. 아래링크 참고 

https://vuzwa.tistory.com/entry/STM32-9-B-L475E-IOT01A1-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-%ED%99%9C%EC%9A%A9%EB%B0%A9%EB%B2%95B-L475E-IOT01A1-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0

 

[STM32] 9. B-L475E-IOT01A1 개발보드 드라이버 활용방법(B-L475E-IOT01A1 개발보드 활용하기)

2022.04.08 - [Hardware&Firmware/STmicroelectronic(STM)] - [STM32] 8. UART(B-L475E-IOT01A1 개발보드 활용하기), HAL 드라이버, LL 드라이버 [STM32] 8. UART(B-L475E-IOT01A1 개발보드 활용하기), HAL 드라이버, LL 드라이버 https://vu

vuzwa.tistory.com

 

 

이 드라이버는 B-L475E-IOT01A1에서만 사용할 수 있는건 아니다. I2C 부분만 수정해주면 어느 MCU에서든 사용 가능하다. 

 

코드는 아래와 같다.

#include "main.h"
#include "stm32l475e_iot01_hsensor.h"
#include "stm32l475e_iot01_magneto.h"


#define HTS221_DEVICE_ID		0x5F<<1
float temp;
float humi;
int16_t magneto[3];
void application(void)
{
	while(HSENSOR_OK != BSP_HSENSOR_Init());
	while(MAGNETO_OK != BSP_MAGNETO_Init());
	while(1)
	{
		temp = HTS221_T_ReadTemp((uint16_t)HTS221_DEVICE_ID);
		humi = HTS221_H_ReadHumidity((uint16_t)HTS221_DEVICE_ID);
		
		LIS3MDL_MagReadXYZ(magneto);		
	}
}

이전에 제어했던 온습도 센서 부분도 일부수정을 했다. LIS3MDL_MagReasXYZ 함수를 이용해 센서의 값을 가져온다.

 

- 끝 -

728x90
반응형