18. STM32 I2C 통신 - AM1008W-K-P 동작 구현
·
🧊 STM32
이 전 글에서 AM1008W-K-P 데이터시트와 I2C HAL 함수들을 소개했다. 이번 글은 위 정보들을 이용하여 아두이노와 똑같이 재현하도록 하겠다. 우선 프로젝트를 생성한다. 프로젝트 생성에 대한 내용은 생략하겠다.1. I2C 설정I2C 동작을 구현하기 위해 레지스터를 설정해주어야 하는데, CUBE IDE에서는 간단하게 GUI를 통해 생성할 수 있다. I2C1와 USART1을 각각 활성화시킨다. (생략, 이 전글들 참고 바람)USART1는 기본 115200을 사용할 것이므로 별도의 설정을 할 필요는 없지만 I2C1은 속도를 설정해주어야 한다.AM1008W-K-P 센서는 30kbps 이하에서 동작하는 것이 스펙이다. I2C1은 default 설정으로 standard 모드로 100kbps이다.  100k..
[STM32] 17. I2C 통신 함수 종류
·
🧊 STM32
📌 1. 주요 I2C HAL 함수STM32Cube HAL 기능을 기반으로 차단 모드, 인터럽트 모드 또는 DMA 모드의 3가지 모드로 I2C 데이터 전송을 수행할 수 있다.⚙️ 1. Blocking Mode통신은 폴링 모드로 수행되며, 모든 데이터 처리 상태는 전송 완료 후 동일한 기능으로 반환된다.HAL_I2C_Master_Transmit()HAL_I2C_Master_Receive()HAL_I2C_Slave_Transmit()HAL_I2C_Slave_Receive()HAL_I2C_Mem_Write()HAL_I2C_Mem_Read()⚙️ 2. Non-Blocking Mode통신은 Interrupts 또는 DMA를 사용하여 수행되며, 이러한 함수는 전송 시작 상태를 반환한다. 인터럽트 모드를 사용할 때는..
[STM32] 16. I2C 센서 소개 (미세먼지/이산화탄소 복합 공기질 센서 CUBIC - AM1008W-K-P)
·
🧊 STM32
STM32 I2C 통신을 이용해 테스트를 해볼 센서는 복합 공기질 센서 AM1008W-K-P 모델이다.해당 센서는 주위 미세먼지와 이산화탄소 농도를 알려주는 복합 공기질 센서이며, 미세먼지 (PM), VOC, 이산화탄소, 온습도 측정이 가능하다.➡️ 1. Features미세먼지(GRIMM 방식), 이산화탄소, VOC, 온습도공급 전압 : 5V노이즈 방지를 위한 금속 차폐통신 방식 : I2C, UART크기 : 80(W) x 50(H) x 13.6(D) [mm]➡️ 2. Application Ideas Air PurifierAir Quality MonitorAir ConditionerVentilation SystemConsumer electronic productsEnvironmental monitoring..
[STM32] 15. I2C 통신 개요
·
🧊 STM32
📌 1. I2C(Inter-Integrated Circuit)란 무엇인가?I2C는 원래 1982년 필립스 반도체가 만든 집적 회로 사이에 사용되는 2선 직렬 통신 시스템이다.I2C는 다중 마스터, 다중 슬레이브, 동기식, 양방향, 반이중 직렬 통신 버스이다. SDA(Serial Data)는 마스터와 슬레이브가 정보(비트 시퀀스)를 전송하거나 수신하는 라인이다.SCL(Serial Clock)은 데이터 흐름 동기화를 위한 클럭 전용 라인이다.SDA 및 SCL 라인은 저항으로 끌어올려야 한다. 이 저항의 값은 버스 길이(버스 커패시턴스)와 전송 속도에 따라 달라진다. 보통 4.7K옴에서 10K옴 사이를 사용한다.위 I2C 통신 회로도를  보면, VDD(전원) 측에 Rp(저항)이 풀업으로 달려있는 것을 확인할..
[STM32] 14. 콜백 함수 호출 과정
·
🧊 STM32
이 전 포스팅에서 HAL 라이브러리가 제공하는 인터페이스(HAL_UART_RxCpltCallback)를 사용하여 UART Interrupt를 간단한 기능을 구현하였다. HAL_UART_RxCpltCallback 함수는 STM32 HAL 라이브러리에서 UART 데이터를 수신할 때 사용되는 콜백 함수이다. 이 함수는 UART 인터럽트를 사용하여 데이터를 비동기적으로 수신할 때 호출된다. 임베디드 시스템 관점에서 이 콜백 함수가 호출되는 과정을 간단히 설명하겠다.1. HAL_UART_RxCpltCallback 함수 호출 과정1. UART 인터럽트 활성화: 먼저, UART 인터럽트를 활성화한다. 이는 HAL_UART_Receive_IT 함수를 호출하여 UART 모듈이 데이터를 수신할 때 인터럽트를 발생시킬 수 ..
[STM32] 13. UART Interrupt 구현
·
🧊 STM32
UART 통신에서 Polling 방식은 간단하지만 효율성이 떨어질 수 있다. 이를 해결하기 위해 Interrupt 방식과 DMA 방식을 사용할 수 있다. 이 번 포스팅은 Interrupt 방식을 통해 이 전 포스팅인 Polling 방식 기능을 그대로 구현하는 방식으로 진행한다.이전 포스팅 : https://blog.naver.com/younjung1996/223477638132 12. STM32 시리얼 모니터를 위한 UART 통신 구현 (2)기본적인 UART 통신은 폴링(Polling) 방식으로 수행할 수 있다. 폴링 방식에서는 MCU가 계속해서 ...blog.naver.com사용된 보드는 STM32F103이며, UART 1번을 사용한다. (PA10 - UART1_RX, PA9 - UART1_TX) 📌..
[BLE 실내 측위 프로젝트] 7. NRF51822 비콘 테스트 및 초기 설정
·
💡Project/✅ BLE Indoor Positioning
드디어 알리에서 구매한 NRF51822 BLE4.2 비콘이 도착했다. 개당 6000원에 배터리 4개 정도 해서 3만 원 정도에 구매했다. 다음 글로 삼변측량에 대해 포스팅할 예정이지만, 비콘으로 실내 측위를 위해선 최소 3개의 비콘이 필요하다.조립은 간단하다 배터리 장착 후 나사 3개만 조여주면 된다.beacon 구매 후 beacon을 초기 설정할 필요가 있다. 설정 방법은 제작사에서 제공하는 Holyiot-beacon을 설치하면 된다.우선, 하나의 비콘만 동작 중이며 다운로드한 앱을 실행할 경우 아래와 같이 화면에 표시된다.비콘의 연결을 위해선 최초의 비밀번호를 요구한다. 내가 구매한 비콘의 경우 초기 비밀번호는 aa14061112 이다.비콘을 연결하고 나면, password, major, minor,..
[BLE 실내 측위 프로젝트] 6. RSSI 변동을 해결하기 위한 이동 평균 필터
·
💡Project/✅ BLE Indoor Positioning
BLE RSSI의 문제점은 위 그림과 같다.4.5m 이상에서는 제대로 된 거리를 계산할 수 없음. (나중에는 통신 거리가 더 길어진 BLE5.0에 대해 알아볼 예정)실제 환경에서는 많은 외부 요인으로 인해 RSSI 변동이 발생해 거리의 오차가 발생함.📌 1. 이동 평균 필터RSSI 변동을 해결하기 위한 방법은 여러 가지가 있는데 그 중 가장 간단한 이동평균 필터이다.원리는 간단하다. 하나의 윈도우 사이즈만큼 그룹을 묶는다.그룹의 평균 값을 대푯값으로 잡는다.한 칸씩 이동한다. (Convolution 1D와 같은 원리)이 간단한 방법으로 스무딩 효과를 낼 수 있다. RSSI 값이 확 튀었을 때 이를 완화시켜주는 효과를 낸다. 당연히 단점도 존재한다.  delay가 발생한다. 윈도우 사이즈만큼 평균 내기 ..
[BLE 실내 측위 프로젝트] 5. BLE Beacon의 RSSI 값에서 거리를 계산하는 방법 (feat.log distance path los
·
💡Project/✅ BLE Indoor Positioning
📈 1. Log distance path loss modelRSSI는 수신 신호 강도 표시기를 나타낸다. 스마트폰과 같은 수신 장치에서 볼 수 있는 비콘의 신호 강도이다. 신호 강도는 거리와 전송 세기에 따라 다르다. RSSI를 이용하여 거리를 구하는 식은 아래와 같다.d : distance(거리)n : 보정 상수 (2~4: 보통 2를 사용)α : 1m에서 측정된 RSSIRSSI : 측정된 현재 RSSI🔗 2. Codeimport "dart:math";void main() { int n = 2; // constant N int alpha = -63; // rssi at 1m int rssi = -80; // measured rssi num m = pow(10.0,((alph..
[BLE 실내 측위 프로젝트] 4. BLE advertising packet 기본 구성
·
💡Project/✅ BLE Indoor Positioning
📌 1. BLE Packet BLE의 패킷 타입은 두 가지가 있다. Advertising channl PDUs : 기기 감지 및 브로드캐스팅Data channel PDUs : 데이터 전송용​실내 측위에서는 데이터 전송이 따로 필요 없으므로 Advertising channel PDUs에 대해서만 언급한다.​ Packet types은 아래 테이블과 같다. 보통 비콘의 타입은 ADV_IND가 일반적이다. 특정 중앙 장치를 특정하지 않고 모든 주변 기기와 연결할 수 있다.Payload는 최대 37바이트 중에서 6바이트는 Advertisement Address, 나머지 0 ~ 31바이트는 Advertisement Data이다.BLE 비콘에는 각 제조사에 따라 다양한 패킷 포맷을 가진다. 그중 가장 유명한 것이 ..
18진수
'분류 전체보기' 카테고리의 글 목록