본문 바로가기

728x90
반응형

Android/통신

(10)
안드로이드 RxBle 사용하기, 예제 안드로이드에서의 ble 예제를 올렸었는데요. [Android/통신] - [안드로이드 Kotlin] BLE(Bluetooth Low Energy) 통신 예제 [Android/Architecutre] - [안드로이드 Service] MVVM구조에서 BluetoothLE Service 사용하기 이번 포스트에서는 Rx를 사용하는 편리한 RxBle 라이브러리를 소개합니다. RxAndroidBle Polidea/RxAndroidBle An Android Bluetooth Low Energy (BLE) Library with RxJava2 interface - Polidea/RxAndroidBle github.com 위의 라이브리러리를 사용해 반응형으로 Ble를 구현한것으로, RxJava에 생소하다면 어려울 수 있습..
[안드로이드-아두이노] bluetooth classic 자동 페어링&연결 / 데이터 송,수신 이 예제는, 특정 이름을 가진 블루투스를 검색 후 자동 페어링, 연결 후 데이터 송/수신을 하는 예제입니다. 아두이노 우노와 데이터 송/수신 하였고, HC-06을 사용 하였으며, SPP통신입니다. 이전에 안드로이드와 아두이노 블루투스 코드를 포스팅 했었습니다. (Java) [Android/통신] - [안드로이드] 아두이노와 안드로이드 Bluetooth 통신하기 위의 포스팅과 비교하여 추가된 점과 달라진 점은 아래와 같습니다. 페어링된 기기뿐 아니라 페어링 되지 않은 기기의 페어링 진행 특정 디바이스를 필터하여 페어링&연결 블루투스 connect 상태 체크 안드로이드, 아두이노 송/수신 전부 구현 Kotlin 데이터 바인딩과 라이브데이터를 사용한 MVVM 구조로 짜여진 코드를 리뷰하는 것이므로, 메서드 구..
[안드로이드 Kotlin] BLE(Bluetooth Low Energy) 통신 예제 전체적으로 BLE 기능 구현을 심플하게 작성하였습니다. UI 업데이트 부분은, 데이터 바인딩을 사용하였습니다. BLE 기능구현 위주로 봐주세요. Permission BLE사용을 위해 위 세개의 퍼미션을 AndroidManifest에 추가해줍니다. Ble 지원 확인 override fun onResume() { super.onResume() // finish app if the BLE is not supported if (!packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { finish() } } ble를 지원하지 않으면 어플이 종료되도록 합니다. Constants.kt class Constants{ companion object..
[안드로이드 java] byte 배열 타입별로 변환하기 ― 수신 프로토콜 처리하기 TCP/IP통신 또는 Bluetooth 소켓 통신을 통해 약속한 형식에 맞는 프로토콜을 수신 받는데요. 보통 byte형 배열로 수신 받습니다. 수신받은 데이터를 형식에 맞게 형변환하여 사용하여야 하는데요. 정리해 보겠습니다. byte[] 저장 코드 ByteBuffer tmpbuf = ByteBuffer.wrap(BytesArray); tmpbuf.rewind(); byte b1 = tmpbuf.get(); byte b2 = tmpbuf.get(); 받은 byte array를 ByteBuffer를 사용하여 저장후, position을 rewind();를 통해 옮깁니다. 그 후 get() 메서드를 사용하면 byte별로 하나하나 저장할 수 있습니다. 처음 헤더 2byte를 저장해주었습니다. 다음으로는 float..
[안드로이드] Wifi List (와이파이 목록) 띄우기 ― Popup Window에서 Recycler View 사용하기 기기의 주변 wifi를 scan하여, 리스트로 띄워보았습니다. 소스는 프래그먼트에서 구현되었습니다. 구현된 소스는, 버튼을 누르면 팝업창을 띄우고 wifi scan을 시작한다. Popup Window 사용 wifi의 ssid 리스트를 띄운다. Recycler view를 사용 리스트중 ssid 하나를 선택하면, 비밀번호를 입력하는 dialog가 나온다. Custom Dialog 구현 입력된 ssid와 password를 본래 메인 프래그먼트로 전달하여 저장한다. EventBus 사용 Gradle 추가 implementation 'org.greenrobot:eventbus:3.0.0' //event bus implementation 'com.github.pedroSG94:AutoPermissions:1.0.3..
[안드로이드] 아두이노와 안드로이드 Bluetooth 통신하기 안드로이드 기기와 아두이노 보드간 블루투스 통신 코드를 소개하겠습니다. 아두이노는 블루투스 통신을 위해 HC-06을 사용하였습니다. 먼저 bluetooth 통신을 위해 connect 버튼을 누르면 버튼이벤트를 시작으로 블루투스 연결을 시도하였습니다. 코드를 차근차근 따라해보면 이해가 쉬울 것입니다. 구현한 소스는 안드로이드 기기에서 데이터를 아두이노 보드에 송신하고, 아두이노에서 데이터를 수신하는 코드입니다. 특정기기에 자동으로 페어링, 연결 하는 최신 코드를 전부 합하여 포스팅 하였습니다. [Android/통신] - [안드로이드-아두이노] bluetooth classic 자동 페어링&연결 / 데이터 송,수신 안드로이드 Bluetooth 연결 Manifest 추가 먼저, 권한을 위해 AndroidMani..
[안드로이드 Java] Bandpass Filter(BPF) 구현하기 ― BPF IIR library, FIR 코드 Band-pass Filter(BPF) Band-pass 필터는 특정 주파수 사이의 신호만 통과시키는 필터입니다. Low-pass 필터와 High-pass 필터의 조합으로도 만들어 질 수 있습니다. 밴드 패스 필터가 통과시키는 주파수 사이 범위를 통과대역(passband)이라고 합니다. 특정 주파수 사이에서 신호를 통과 시키고 그 외의 주파수 대역에서는 신호를 차단해야 하지만, 완벽하게 차단하는 이상적인 밴드 패스 필터는 없습니다. 이러한 형상을 롤오프(roll-off)라 하고, 롤오프를 최대한 줄여가는 쪽으로 필터를 설계합니다. 중심 주파수(center frequency), 공진주파수(resonant frequency)f0는 필터의 전달함수가 순수히 실수일때 주파수 입니다. 차단주파수(cutoff fr..
[안드로이드 Java] 디지털 신호 FFT(Fast Fourier Transform)하기― 다양한 FFT class와 JTransform library 사용, 비교 Fast Fourier transform(고속 퓨리에 변환) 고속 퓨리에 변환FFT는 이산 퓨리에 변환DFT와 그 역변환을 빠르게 수행하는 효율적인 알고리즘 입니다. 이 복소수complex 일 때, DFT는 다음과 같습니다. 위 식에 따르면 O(n^2)의 연산이 필요하지만, FFT를 이용하면 O(n log n)의 연산만으로 가능합니다. 가장 일반적으로 사용되는 FFT 알고리즘은 쿨리-튜키 알고리즘입니다. 참고로, DFT(Discrete Fourier Transform)는 이산화된 시간 영역의 데이터를 이산화된 주파수 영역으로 변환해주는 알고리즘입니다. 일반적인 디지털 신호를 디지털 주파수로 바꾸어줍니다. 왼쪽으로 보면 시간축을 기준으로 하는 주기함수들의 합이 붉은 선의 모양으로 나타나게 됩니다. 하지만 ..

728x90
반응형