분류 전체보기124 [안드로이드]BLE SPP와 Bonding 블루투스 관련 제품을 개발하기는 하지만 아직도 블루투스 스택에 대해 많은 공부가 필요한 것 같다. GATT라던가 A2DP라던가 사용하면서도 누군가에게 설명해 줄 그런 지식이 없어 가끔 한심하기도 한다. 최근 개발하는 장비는 BLE 통신을 사용하며 SPP(Serial Port Profile)를 지원하지 않기에 이를 GATT로 구현한 SPP 에뮬레이터(?)를 사용한다. Nordic CPU가 이쪽으로는 선점을 하고 있으며, 최근에는 Ambiq Apollo 시리즈와 Silicon Labs의 EFR32 시리즈도 사용되는 추세이다. SPP를 검색해 보다가 Bluetooth 구 버전의 SPP와 BLE로 구현한 SPP의 차이에 대한 글을 발견했다. https://devzone.nordicsemi.com/f/nor.. 2022. 10. 14. [ESP32] 블루투스 스피커와 버퍼링 ESP32로 블루투스 오디오 스피커 프로젝트를 개발하게 되었다. ESP32는 아두이노와 IDF, ADF 등 개발하기 편한 여러 가지 플랫폼을 제공하고 있고 많은 예제가 있어 예제만 응용해도 제품화할 아이템들이 다양하다. 게다가 내부램,플래쉬도 괜찮은 용량인데 외부램과 플래쉬용량이 메가 단위로 선택이 가능하다. 또 와이파이/블루투스도 되면서 저렴한 가격이 장점이나.. 하지만 싼 게 비지떡이란 단점도.. 블루투스 A2DP를 이용해서 스마트폰의 음원을 재생하는 블루투스 스피커를 개발했는데 의외로 잘 동작해서 Microchip 제품으로 개발할 때보다는 개발이 수월했다. 다만… 간헐적으로 음원 재생 중 음원이 끊이는 (몇 ms?) 동작이 발생했다. 해당 음원 위치로 이동해도 증상은 구현되지 않고, 발생하는.. 2022. 10. 14. 펌웨어로 2개의 wav 오디오 믹싱하기 wav파일은 header구조이 있는 원본 음원 파일이다. header가 없으면 pcm 데이터이다. 오디오 음원 데이터는 여러 가지 타입이 있다. 단순 채널인 모노채널과 좌우 음원으로 구성된 2 채널이 있고 더 나아가서는 5.1 채널 등 여러 가지 타입이 있다. Bit per Sample은 샘플링한 데이터의 데이터 비트 수 인데 보통 16비트를 사용한다. (MP3 압축 데이터를 디코딩하면 16비트 PCM데이터로 나온다). 그리고 16비트 샘플 데이터는 -32,768 ~ 32,767 사이의 음원의 아날로그 값에 대한 디지털 값이다. 이 값을 단순히 키우면 볼륨이 커지고 낮추면 볼륨이 낮아진다. 그리고 2개의 오디오를 합쳐서,믹싱해서 출력을 하려면 각 샘플데이터를 더한 다음 wav로 저장하거나, I2S로 출력.. 2022. 3. 21. Silicon Labs EFR32 BLE SPP 안드로이드 송수신 앱 개발 오랜만에 EFR32로 개발할 일이 생겼다. 그때는 무선 RF 통신만 했었는데, 이번엔 BLE SPP 통신을 기반으로 하는 개발 건 이었다. CPU 파트는 조금 다르지만 해봤던 제품이었고 BLE도 Apollo 칩으로 해 본 적이 있으니 어렵지 않을꺼라 했는데, 조금 헷갈렸던 부분이 있어서 정리할 겸 글을 쓴다. 1. 특성별 UUID 는 다 달라야 한가? BLE로 송수신을 하려면 UUID가 필요하다. 서비스 UUID와 characteristic UUID가 있으면 서비스 등록 및 통신이 가능한다. 보통 Write, Notification 2가지로 송수신을 하는데, 보통 다들 다들 다른 UUID를 사용한다. Nordic도 그랬고 Apollo도 그랬다. 당연히 EFR32도 그렇겠지 했는데... 요 2가.. 2022. 3. 13. PIC32 MPLAB X 개발 후기 PIC32 로 신규 프로젝트를 진행하고 있었다. 펌웨어는 CPU 제조사에서 제공하는 컴파일러나 IDE를 쓰곤 하는데, PIC32를 개발하려면 마이크로칩사에서 추천하는 MPLAB IDE 프로그램을 써야 한다. 제조사가 직접 만든 컴파일러/IDE 이기에 개발자들에게 편의를 제공해야 하지만... 이 프로그램이 얼마나 엉망인지 알아 보려면 구글에서 “mplab very slow” 만 검색해도 불편함을 호소하는 개발자가 한 둘이 아니다. 게다가 IDE가 램도 많이 쓰기에 2기가는 금방 차지한다. 크롬도 아닌데 가끔씩 껏다 켜야 한다. 이클립스를 커스텀한것 같은데. 어떻게 만든건지.. 게다가 가장 큰 문제 중 하나는 디버깅 할때마다 5분이 넘게 걸린다. 그나마 PICKit를 사용하면 빨라지긴 하나 2분이 넘는건.... 2022. 3. 13. MP3 현재 재생시간 계산하기 (플레이타임) MP3를 재생하다 보면 현재 재생시간을 표시해줘야 한다. 이를 계산하는 방법이 간단하게는.. 재생이 되면 타이머를 써서, 멈출때까지 타이머로 보여주는 방법이 있는데 문제는 지정한 시간으로 재생하고자 할때는 이 방법은 사용할수가 없다. 그래서 조금 귀찮더라도 계산을 통해 얻어야 해야 한다. 우선 MP3 파일을 재생하기 전에 얻을 수 있는 정보는 다음과 같다. 총 재생시간 파일 크기 그외 음원 정보 그리고 재생중에는 현재 파일의 오프셋 (seek) 을 알 수가 있다. 현재 오프셋이 파일의 절반되는 위치에 있으면 4분짜리 음원일 때 2분을 나타내며, 1/4의 위치에 있으면 1분을 나타낸다. 그래서 비율을 계산하면 다음과 같다. 재생 시간 비율 = 현재 파일 오프셋 / 전체 파일 크기 이제 비율을 전체 재생 시.. 2022. 1. 24. 이전 1 2 3 4 5 6 7 8 ··· 21 다음