분류 전체보기 329

Speaker 만들기 3편 (회로도작성, SD카드에있는 WAV파일 버튼으로 재생)

안녕하세요. 오늘은 회로도를 작성해보고 SD카드에있는 WAV파일을 버튼으로 재생해보겠습니다.2편에서 사용했던 회로에서 버튼2개만 추가하였습니다.회로도에는 SD카드소켓기준으로 작성하였는데, 실제로는 SD카드 모듈을 이용했습니다. 핀 연결 구성에는 차이가 없습니다.원래는 브레드보드에 연결하여 테스트를 진행하려고 했으나, 스피커 출력에서 잡음이 많이 발생하여 만능기판으로 변경하였습니다.GPT 의견에 따르면, 브레드보드는 접촉 구조와 배선 특성으로 인해 노이즈에 취약합니다.버튼위의 남은공간은 OLED를 추가해서 SD카드에있는 WAV파일을 보여주고 버튼을 이용해서 클릭한 WAV파일을 재생하는 형식으로 할 예정입니다. 현재 글 에서는 버튼1개당 wav파일 1개가 매칭되어있어서 버튼을 클릭하면 정해둔 wav파일이 재..

PROJECT/Speaker 2026.01.04

BLE ESP32 Bluedroid_Beacon 코드 분석하기 2편-코드흐름

안녕하세요. 오늘은 1편에 이어서 ESP32 Bluedroid_Beacon 예제코드를 분석해보겠습니다.1편에서는 프로젝트에서 사용한 전역변수 3개에대해 알아봤습니다.2편에서는 프로젝트 main문의 흐름에대해 알아보겠습니다.Bluetooth stack에는 Host랑 controller가 있습니다.(1) Controller는 하드웨어+저수준 펌웨어가 동작하는 영역입니다. 실제 전파를 주고받는 부분이고 Physical Layer(실제 BLE radio 신호), Link Layer(광고, 연결관리, timing, encryption)가 여기에 속합니다.(2) Host는 소프트웨어 스택입니다. GAP(연결/페어링/역할관리) , GATT(서비스, characteristic 읽기/쓰기) , ATT(실제 읽기/쓰기 요..

지식/BLE 2025.11.25

BLE ESP32 Bluedroid_Beacon 코드 분석하기 1편-전역변수

안녕하세요. 오늘은 ESP32 Bluedroid_Beacon 예제코드를 분석해보겠습니다.사용하는 소스코드는 아래의 링크입니다.https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/ble_get_started/bluedroid/Bluedroid_Beacon1편에서는 프로젝트에서 사용한 전역변수 3개를 알아보겠습니다.* adv_params 구조체 - 광고를 어떻게 보낼지 설정하는 구조체입니다.static esp_ble_adv_params_t adv_params = { .adv_int_min = 0x20, .adv_int_max = 0x20, .adv_type = ADV_TYPE_SCAN_IND, .own_addr_typ..

지식/BLE 2025.11.22

BLE GATT를 Ble Sniffer로 측정하기

안녕하세요. 오늘은 이전에 알아봤던 BLE GATT를 BLE Sniffer로 측정해보겠습니다.측정하는 방식과 알아보는 방식은 이전에 BLE GAP을 BLE Sniffer로 측정했던 방식과 동일합니다.스마트폰 앱에서 CONNECT 버튼을 확인할 수 있습니다. (1) ADV_IND- CONNECT를 하기전에는 ESP32가 advertising 하고있습니다. (2) CONNECT_IND- 스마트폰에서 CONNECT를하면 연결시도를 합니다. CONNECT_IND 패킷 안에 설정정보를 만듭니다. 이중에 Access Address가 있는데, 데이터 채널에서 사용되는 32bit 주소입니다. 이 주소로 LL/ATT/GATT 패킷이 전송됩니다. CONNECT_IND 이후부터는 데이터채널로 전환됩니다.(3) Contr..

지식/BLE 2025.11.16

BLE GATT 예시를 통해서 알아보기

안녕하세요. 오늘은 BLE GATT에 대해 알아보겠습니다.GATT(Generic Attribute Profile)는 BLE에서 장치 간 데이터를 교환하기 위해 '서비스'와 '특성'구조로 정의된 통신프로토콜입니다.GATT가 실제로 어떻게 사용하는지 ESP32와 스마트폰앱(nRF Connect)를 이용해서 알아보겠습니다.ESP32에 넣은 예제는 "Bluedroid_GATT_Server" 입니다. https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/ble_get_started/bluedroid/Bluedroid_GATT_Server스마트폰 앱으로 연결해서 GATT 서비스를 확인한 사진입니다. 각 서비스는 UUID(Universally Un..

지식/BLE 2025.11.10

BLE GAP을 BLE Sniffer로 측정하기

안녕하세요. 오늘은 이전에 알아봤던 BLE GAP를 BLE Sniffer로 측정해보겠습니다.측정 할 장비는 이전글에서 사용했었던 ESP32 beacon 프로젝트입니다.(https://wowon.tistory.com/373)측정장비는 NRF52832 USB이고 wireshark를 사용합니다.(A) 스마트폰 nRF 앱으로 측정한 데이터입니다.(B) sniffer장비로 측정한 데이터입니다.로그에서 찍히는 데이터는 크게 두 부분으로 나뉩니다.- nRF Sniffer for Bluetooth LESniffer 장비가 BLE 기기가 보낸 무선 신호(RF) 를 수신하고, 그 신호로부터 신호 세기(RSSI), 채널 번호, 타임스탬프 등의 물리 계층(PHY) 정보를 계산하여 Wireshark로 전달한 데이터 - Bl..

지식/BLE 2025.11.08

BLE GAP 예시를 통해서 알아보기

안녕하세요. 오늘은 BLE GAP에 대해 알아보겠습니다.GAP(Generic Access Profile)은 기기가 서로 어떻게 찾고 연결하는지 관리를 합니다.GAP는 프로파일 계층에서 최상위에 존재합니다.GAP가 실제로 어떻게 사용하는지 ESP32와 스마트폰앱(nRF Connect)를 이용해서 알아보겠습니다.ESP32에 넣은 예제는 "Bluedroid_Beacon" 입니다. 비콘으로 동작하는 펌웨어입니다.FW : https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/ble_get_started/bluedroid/Bluedroid_Beacon스마트폰앱으로 보면 위의 그림처럼 나와있습니다.- Device type : esp_bt_contro..

지식/BLE 2025.11.02

ESP32 Command Line 개발환경

안녕하세요. ESP32 커맨드라인 컴파일을 해보겠습니다.1. 아래의 사이트에 들어가서 컴파일에 필요한 파일을 다운로드받습니다.https://dl.espressif.com/dl/esp-idf/?idf=4.42. 설치된 커맨드 프로그램을 킵니다.3. SDK에 들어가서 example을 다른곳으로 옮깁니다. (다운받은경로\frameworks\esp-idf-v5.2.6\examples\get-started\hello_world)4. 프로젝트의 경로에가서 아래의 커맨드를 하나씩 입력합니다.1. 타겟보드 설정 : idf.py set-target "target""target"에 자신의 ESP32정보를 넣습니다. esp32, esp32s2, esp32c3, esp3..

ESP32/ESP32_RTOS 2025.10.26

ESP32 vscode개발환경 만들기(ESP-IDF)

안녕하세요. 오늘은 ESP32 vscode로 개발환경을 만들어보겠습니다.1. vscode를 설치합니다.https://code.visualstudio.com/download2. EXTENSIONS에서 ESP-IDF를 설치합니다.3.좌측에 ESP-IDF 아이콘을 클릭 후 Configure ESP-IDF Extension을 클릭하고 ADVANCE를 클릭합니다.4. ESP-IDF container directory는 SDK이고 ESP-IDF Tools directory는 개발도구입니다. 경로를 정하고 Configure Tools를 클릭합니다.5. 그 다음 또 툴을 설치하는게 나오는데 Donwload Tools를 클릭합니다. 6.설치가 완료되면 이제 예제를 불러와봅니다. ESP-IDF:Show Example Pr..

ESP32/ESP32_RTOS 2025.10.26

Speaker 만들기 2편 (SD카드에 있는 wav파일 재생)

안녕하세요. 오늘은 SD카드에있는 wav 파일을 재생시켜보겠습니다.1편에서와 같이 ESP32와 MAX98357A를 이용합니다.*선 연결SD카드1. CS → GPIO5 (SD_CS) 2. MOSI → GPIO23 (DI) 3. MISO → GPIO19 (DO) 4. SCK → GPIO18 (CLK)MAX98357A1. BCLK → GPIO26 (I2S Bit Clock) 2. LRC → GPIO25 (I2S Left/Right Clock, WS) 3. DIN → GPIO22 (I2S Data Out, SD)* 코드의 흐름1. SD카드 초기화2. SD카드에있는 특정 wav파일 정보 읽기3. wav파일 정보를가지고 I2S 초기화4. wav 파일 재생5. wav 파일 재생이 끝나면 ..

PROJECT/Speaker 2025.10.12