이 영역을 누르면 첫 페이지로 이동
CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

페이지 맨 위로 올라가기

CodeJUN

심심해서 하는 블로그

Android Blufi 연결(Connect)하기 (1)

  • 2018.10.15 09:49
  • Android

친구들과 '간편 통합 대기질 측정 장치'를 제작하면서 Blufi를 사용할 일이 생겼다. (이름이 나만 이상하게 보이나...)

이 프로젝트는 조만간 프로젝트 카테고리에도 글을 자세히 올리도록 하겠다.


이번 글에서는 대락적인 요약 정도로만 하고, 그 다음에서 실제 연결하는 방법에 대해 글을 쓰도록 하겠다.


대략적인 구조

ESP32인가 뭔가... 를 사용한다. 임베디드에 관심이 많다며 평소 소리치고 다녔는데, 이에 관련해서는 아는 것이 별로 없다. 분발해야 겠다.
아무튼, BLE GATT를 이용하고 특성(Characteristic)을 이용하여 빠르게 연결을 수립한다. 그리고 근처 Wifi를 검색하고 해당 SSID에 연결하여 서버와 통신하는 구조이다.
처음에는 GATT나 Characteristic 등과 같은 것에 대한 이해가 부족하여 많은 자료를 찾아봤었는데 도움이 되었던 자료들을 아래 첨부한다.
  • BLE 이해하기
  • 블루투스 이해하기

정리하자면,

BLE연결 - Wifi SSID, PW 전송 - 서버 통신
블루투스는 Wifi데이터를 보내기 위해 연결하는 것이고, 서버와 센서 디바이스가 항상 데이터를 주고 받기 때문에 앱에서는 서버 데이터를 불러온다.

Blufi가 무엇인가?

이에 대한 설명을 아직 안 했단 것을 망각하고 있었다.(...) 필자도 알게된지 얼마 안 되었기 때문에 누락된 정보나 잘못된 정보는 댓글로 정보를 알려주시면 고맙겠(습니)다.
눈치가 빠른 사람들은 이름에서 약간 냄새가 나는 것을 눈치챘을 것이다. Bluetooth to WiFi Gateway 라고 하는데, Bluetooth를 이용해 Wifi와 Connect(연결)을 시켜주는 것이다.

필자가 사용하는 ESP32라는 저전력의 굉장히 작은 칩이 들어가있는 흔히 아는 아두이노와 비슷한 물건이 있다. 이를 사용할건데, espressif라는 회사에서 Blufi for ESP32 라는 라이브러리를 통해 쉽게 연결할 수 있도록 문서와 함께 제공하고 있다. 다음 편에서는 이를 활용해 직접 연결을 시도해 볼 것이다.

BluFi 플로우차트
보시는 바와 같이, ESP32와 모바일 기기 사이에서 GATT 커넥션이 이루어 진다. 그 다음 기기들 사이에 보안연결을 구성한다.(그러는 것 같다...) 구성이 끝나면, 연결할 Wifi의 SSID와 PW를 전송하고, ESP32에서 연결을 시도하게 된다.
그럼 끝이다!

본인의 프로젝트에서는, Wifi에 연결을 하게 되면 대기질 데이터를 서버와 주고 받게 되는 것이다.

이번 편은 여기까지

아무튼, 다음 편에서 직접 연결과정을 보면 위의 플로우차트나 다른 것들도 이해가 잘 될 것이다.
또 새롭게 알게된 정보나 잘못된 정보가 있다면 바로 수정을 하도록 하겠다.



아직 한국어로 된 정보들이 별로 없어서 처음 알게 되었을 때 문서나 Github에서 예제를 제공중인 앱의 소스를 보면서 만들었다. 처음에는 힘들었는데 알고보니 생각보다 간단했다. 이 글이나 다음 글을 통해 ESP32로 BluFi를 구현하는 사람들이 시간을 절약했으면 좋겠다.



저작자표시 비영리 동일조건 (새창열림)

'Android' 카테고리의 다른 글

레이아웃 디자인에 도움이 되는 사이트  (0) 2018.12.22
Android Vector Drawable(Asset) 사용하기  (0) 2018.11.26
Android Permission Dispatcher로 권한 얻기  (1) 2018.10.08
AndroidX 사용하기  (0) 2018.10.05
'Android resource compilation failed' 에러 해결  (4) 2018.09.30

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 레이아웃 디자인에 도움이 되는 사이트

    레이아웃 디자인에 도움이 되는 사이트

    2018.12.22
  • Android Vector Drawable(Asset) 사용하기

    Android Vector Drawable(Asset) 사용하기

    2018.11.26
  • Android Permission Dispatcher로 권한 얻기

    Android Permission Dispatcher로 권한 얻기

    2018.10.08
  • AndroidX 사용하기

    AndroidX 사용하기

    2018.10.05
다른 글 더 둘러보기

정보

CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

  • CodeJUN의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 방명록

카테고리

  • 분류 전체보기 (54)
    • Android (38)
    • BlockChain (4)
    • React Native (4)
    • 아두이노 (2)
    • 프로젝트 (6)

공지사항

  • 공지 - 블로그를 시작하며

태그

  • c++
  • C
  • Android
  • arduino
  • Firebase
  • 아두이노
  • 안드로이드
  • 강좌

나의 외부 링크

  • Github

정보

CODE_JUN의 CodeJUN

CodeJUN

CODE_JUN

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © CODE_JUN. Designed by Fraccino.

티스토리툴바