ADC까지, 신호 확인 필요(반사 신호 약함 or 뒤쪽을 찍고 있음)

This commit is contained in:
2026-05-08 18:09:04 +09:00
parent 17a78d4418
commit d7c5b34da3
23 changed files with 1992 additions and 83 deletions
+118
View File
@@ -0,0 +1,118 @@
# TODO
현재 프로젝트에서 다음에 이어서 작업할 항목들을 정리한다.
## 현재 상태
- BLE 보안은 아직 개발 모드 기준이다.
- `CONFIG_BT_SMP=n`: [prj.conf](/C:/jhChun/blinky/prj.conf:42)
- `BLE_DEV_MODE = 1`: [src/ble/ble_service.h](/C:/jhChun/blinky/src/ble/ble_service.h:18)
- `Dev mode: no security / Production mode: bonding + passkey (TODO)`: [src/ble/ble_service.c](/C:/jhChun/blinky/src/ble/ble_service.c:10)
- 플래시 저장소는 아직 미구현이다.
- `Phase 3: FDS/NVS (TODO)`: [src/main.c](/C:/jhChun/blinky/src/main.c:328)
- DFU는 아직 미구현이다.
- `CONFIG_BOOTLOADER_MCUBOOT` 미설정: [build/blinky/zephyr/.config](/C:/jhChun/blinky/build/blinky/zephyr/.config:94)
- 파티션도 앱 단일 영역만 사용 중: [build/partitions.yml](/C:/jhChun/blinky/build/partitions.yml:1)
- `mcf?`는 현재 고정값 반환만 구현되어 있다.
- `freq=1`, `cycles=7`, `avg=10`, `delay=10`, `samples=100`: [src/parser.c](/C:/jhChun/blinky/src/parser.c:38)
- 실제 측정도 현재 위 고정값을 사용한다.
- `avg=10`: [src/parser.c](/C:/jhChun/blinky/src/parser.c:28)
- `cycles=7`, `delay=10us`: [src/drivers/piezo/piezo.h](/C:/jhChun/blinky/src/drivers/piezo/piezo.h:12)
- `samples=100`: [src/drivers/echo_adc/echo_adc.h](/C:/jhChun/blinky/src/drivers/echo_adc/echo_adc.h:11)
## 1. BLE 보안
목표:
- LESC
- MITM
- Fixed Passkey
- Bonding
해야 할 일:
- `CONFIG_BT_SMP=y`
- `CONFIG_BT_FIXED_PASSKEY=y`
- `CONFIG_BT_BONDABLE=y`
- `CONFIG_BT_SMP_ENFORCE_MITM=y`
- 필요 시 `CONFIG_BT_SMP_SC_ONLY=y` 또는 `CONFIG_BT_SMP_SC_PAIR_ONLY=y`
- `bt_conn_auth_cb` 등록
- 고정 패스키를 `m_static_passkey`와 연결
- 기본값 선언: [src/main.h](/C:/jhChun/blinky/src/main.h:21)
- RAM 보관: [src/main.c](/C:/jhChun/blinky/src/main.c:56)
- 본딩 키 복원을 위해 `BT_SETTINGS + SETTINGS + NVS` 연동
주의:
- Bonding은 저장소 없이 켜도 부팅 후 유지되지 않는다.
- 보안 설정을 올리면 앱 테스트 절차도 함께 바뀐다.
## 2. 플래시 저장소 (NVS)
목표:
- 예전 FDS 역할을 Zephyr/NCS 방식으로 대체
- 측정 파라미터, passkey, 필요 시 serial/HW info 저장
권장 방향:
- FDS를 다시 붙이기보다 `NVS` 사용
- Bluetooth bonding 키는 `BT_SETTINGS`가 저장하고
- 앱 파라미터는 별도 `NVS` 또는 `settings/NVS backend`로 저장
우선 저장할 후보:
- piezo config
- `freq`
- `cycles`
- `avg`
- `delay_us`
- `samples`
- passkey
- 필요 시 `SERIAL_NO`, `HW_NO`
해야 할 일:
- `piezo_config` 구조체 추가
- 부팅 시 기본값 로드 후 NVS 값이 있으면 덮어쓰기
- `mcf?`는 구조체 읽기
- `mcs?`는 구조체 갱신 + 저장
- 유효 범위 체크 추가
현재 메모:
- `mcf?`는 아직 고정 응답만 구현됨: [src/parser.c](/C:/jhChun/blinky/src/parser.c:442)
- `mcs?`는 아직 없음: [src/parser.c](/C:/jhChun/blinky/src/parser.c:503)
## 3. DFU
목표:
- BLE 기반 펌웨어 업데이트 지원
권장 방향:
- `MCUboot + MCUmgr SMP over BLE`
해야 할 일:
- `CONFIG_BOOTLOADER_MCUBOOT=y`
- `CONFIG_MCUMGR=y`
- `CONFIG_MCUMGR_TRANSPORT_BT=y`
- `CONFIG_IMG_MANAGER=y`
- 필요 시 `CONFIG_MCUMGR_GRP_IMG=y`
- 파티션 구성 추가
- `slot0`
- `slot1`
- 필요 시 `scratch` 또는 overwrite-only 전략
- 광고/서비스에 SMP transport가 정상 노출되는지 확인
주의:
- 지금 프로젝트는 NUS만 사용 중이라 일반적인 OTA DFU는 바로 안 된다.
- DFU를 넣으면 파티션 구조와 빌드 방식이 함께 바뀐다.
## 4. 권장 작업 순서
1. `piezo_config` 구조체 도입
2. `mcf?`를 고정값이 아닌 실제 구조체 반환으로 변경
3. `mcs?` 구현
4. `NVS` 저장/복원 구현
5. BLE 보안 적용
6. Bonding 저장 확인
7. 마지막에 DFU 적용
## 5. 체크 포인트
- `mcf?` 값과 실제 측정값이 항상 같아야 함
- `mcs?`로 바꾼 값이 재부팅 후에도 유지되어야 함
- 보안 적용 후 앱에서 pairing/passkey 흐름 확인
- DFU 적용 후 기존 NUS 기능과 충돌 없는지 확인
+2 -2
View File
@@ -20,8 +20,8 @@
| 1 | 1 | 0 | 1 | 0 |
| 2 | 1 | 0 | 0 | 1 |
| 3 | 1 | 0 | 1 | 1 |
| 4 | 0 | 1 | 1 | 1 |
| 5 | 0 | 1 | 0 | 1 |
| 4 | 0 | 1 | 0 | 0 |
| 5 | 0 | 1 | 1 | 0 |
---
+1 -1
View File
@@ -405,7 +405,7 @@ rbb: ... [temp_L][temp_H] ... ← °C × 100 단위 (25.50°C = 2550)
## 9. 다음 구현 순서
```
Step 1 ✅ 온도 센서 (tmp235.c) — 완료, 테스트 필요
Step 1 ✅ 온도 센서 (tmp235.c) — 완료
Step 2 피에조 드라이버 (piezo.c)
└─ GPIO 초기화, MUX, SW burst (NOP 기반, nrf HAL 직접 사용)