This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

*/

BLE

BLE란 ?

  • Bluetooth Low Energy. 
  • 저전력 무선 통신을 위해 특별히 설계된 Classic Bluetooth의 최신 버전
  • Bluetooth 4.0 specification의 주요 기능
  • Classic Bluetooth는 근거리 무선통신으로 유선통신을 대체하도록 데이터 속도를 염두에 두고 설계되었으며 응용 프로그램에는 대용량 파일 전송, 무선 오디오 등이 포함
  • BLE는 높은 데이터 속도 대신 저전력 소비에 최적화되어 IoT 및 배터리 작동 어플리케이션을 대상으로 설계
  • 항상 연결되는 Classic Bluetooth와 달리 BLE는 일반적으로 대기(유휴) 모드에 있으며 필요한 경우에만 깨어나도록 설계

BLE Layer 구조

  • Controller
  • Host
  • Application


Controller Layer

    • PHY – The Physical Layer
    • LL – The Link Layer
    • HCI – Controller side Host-Controller Interface

Host Layer

    • HCI – Host side Host-Controller Interface
    • L2CAP – Logical Link Control and Application Protocol
    • SM – Security Manager
    • ATT – Attribute Protocol
    • GAP – Generic Access Profile
    • GATT – Generic Attribute Profile

Application Layer

    • User interface
    • Data processing
    • Logical 

용어정리

  • GATT : Generic Attribute Profile. Service와 Characteristics를 사용하여 BLE 장치 간 데이터 전송을 위한 사양을 정의.
  • Characteristic : 특성(Charateristic)은 속성(Attribute)라 부르는 정보의 그룹이며 속성은 디바이스간 전송되는 정보의 그룹이다. 속성으로는 아래와 같은 value, declaration, ..
  • Value : Data value of the characteristic
  • Declaration : Properties of the characteristic (location, type like read, write, notify, indicate etc.)
  • Description : ASCII String describing the characteristic.
  • Service : A collection of characteristics is called a Service. Each Service has a unique 16-bit or 128-bit ID called UUID.
  • UUID : Universally Unique Identifier is a 128-bit ID given to each service and characteristic in a profile. Use the website UUIDGenerator to generate unique IDs. Each service and characteristic has a unique 16-bit or 128-bit ID called UUID.



Bluetooth Device Address

블루투스 장치 주소 (Bluetooth Device Address) 

  • 블루투스 디바이스는 적어도 1개 이상의 디바이스 주소를 갖게 됨
  • 48 비트 주소 (피코넷 내 장치 구분) : IEEE MAC 주소 준용
    • 각 장치는 1개 이상의 주소를 갖을 수 있음

블루투스 장치 주소 유형

  • 직렬 비트 처리 동작에 시드(Seed) 역할을 하고,  접속 코드(Access Code) 유도에도 활용됨
    • 접속 코드 유형

        . DAC (Device Access Code)

        . CAC (Channel Access Code)

        . IAC (Inquiry Access Code)

  • Public Device Address 유형
    • 고정 주소 (공장 출하시 하드웨어적으로 기록) 
    • LAP(Lower Address Part)

        . 장치 조회 주소 : 0x 9E8B00 ~ 9E8B3F (64개 주소)

        . 범용 조회 주소 : 0x 9E8B33 (1개 주소)

        . 특수 목적 주소 : 기타 63개 주소

    • UAP(Upper Address Part)
    • NAP(Non-significant Address Part)


  • Random Device Address 유형
    • 동적 주소 (재 지정될 수 있음, 피코넷 내에서 만 유일하면 됨)

        . 피코넷 내에서 보안을 위해 빈번히 변할  수도 있음

     

Bluetooth 통신

Bluetooth 모듈 구분은 Classic Bluetooth와 BLE(Bluetooth Low Energy) 두 가지 유형으로 한다.

BLE (Bluetooth Low Energy)

  • 기존 블루투스 무선 기술에 비해 저전력, 저비용, 단순성, 저속도, 소형 지향
  • Bluetooth 4.0 (2010) 규격에 포함 발표

BLE 주요 특징

  • 연결 중 긴 수면 시간(sleep time)
  • 작은 크기의 데이터 전송 단위
  • 매우 낮은 Duty Cycle
  • 단순한 Topology :  주로 스타형 토폴로지만 지원

BLE 기술적 특징

  • 주파수대역 : 기존 블루투스와 동일 (2.4 GHz) 
  • 사용 채널  : 2 MHz 폭씩 40개 채널
    • 2 MHz 간격 : 2402 + k * 2 MHz (k = 0,1,...,39)
  • 다중 접속  : FDMA, TDMA 방식 모두 사용
  • 전력 소모  : 15 mA 이내
  • 전송 속도  : 1 Mbps 
  • 최대 전송 전력 : 10 mW
  • 통신 방향  : 양방향 모두 지원 가능하지만, 대개 단방향성 만 지원
    • 기기 간에 비 대칭적인 구조로 동작
  • 통신 역할  : 기존 블루투스와 달리, 연결 동안 마스터/슬레이브 역할 교환이 없게 됨
  • 프로토콜 스택 : 기존 블루투스 보다 단순한 구조 채택

프로필(Profile)

SPP, GATT, A2DP, AVRCP, HFP, ... 등 다수의 프로필 존재

블루투스를 사용하기 위해서는 장치(디바이스)는 특정 블루투스 프로파일(Bluetooth Profile)을 해석할 수 있어야 하며, 프로파일은 가능한 응용 프로그램을 정의하고 블루투스 장치가 다른 블루투스 장치와 통신하는데 사용하는 일반적인 특성을 규정한다.


SPP Profile : Serial Port Profile 1.2 spec

SPP는 Serial Port Profile의 약자로 직렬 포트 프로필이라 하며, Classic Bluetooth의 Profile이다. SPP는 두 피어 장치 간에 RFCOMM을 사용하여 에뮬레이트 된 직렬 케이블 연결을 설정하는 데 필요한 Bluetooth 장치에 대한 요구 사항을 정의한다. 요구 사항은 응용 프로그램에 제공되는 서비스와 Bluetooth 장치 간의 상호 운용에 필요한 기능과 절차를 정의하여 표현한다.

GATT Profile : Incorporated GATT Specification Supplement

GATT는 General ATTribute 의 약자로 일반 속성 프로필이라 하며, BLE 프로필이다. 두 개의 BLE 장치가 서비스 및 특성 이라는 개념을 사용하여 데이터를 앞뒤로 전송하는 방식을 정의하며,  이는 테이블의 각 항목에 대해 16 비트 ID를 사용하여 서비스, 특성 및 관련 데이터를 간단한 조회 테이블에 저장하는 데 사용되는 ATT (속성 프로토콜)라는 일반 데이터 프로토콜을 사용한다. GATT 통신의 두 당사자는 클라이언트/서버 관계(주변 장치는 GATT 서버, Central은 GATT 클라이언트)이다. GATT 및 연결에서 염두에 두어야 할 가장 중요한 것은 연결이 배타적이라는 것으로, BLE 주변 장치는 한 번에 하나의 중앙 장치 (휴대폰 등)에만 연결할 수 있다.

Connected Network Topology

아래 그림은 BLE 장치가 연결되는 환경을 나타내고 있다. 주변 장치는 단지 하나의 중앙 장치(모바일 폰과 같은)에 연결될 수 있으나 중앙장치는 동시에 다수의 주변장치와 연결 할 수 있다.


GATT Transactions

GATT에서 이해해야 할 중요한 개념은 서버/클라이언트 관계다.

주변장치는 ATT 룩업 데이터, 서비스, 특성 정의(Characteristic definitions)를 가지고 있는 GATT 서버로  볼 수 있으며, 폰 혹은 타블릿은 서버에 요구를 전달하는 GATT 클라이언트로 볼 수 있다.

모든 트랜잭션은 보조 장치인 GATT 서버로부터 응답을 받는 주 장치인 GATT클라이언트에 의해 시작된다. 

다음 그림은 주 장치가 모든 트랜잭션을 시작하는 주변 장치 (GATT 서버)와 중앙 장치 (GATT 클라이언트) 간의 데이터 교환 프로세스를 보여준다.





참고 

  • https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt

애플망고 싹틔우기 2

애플 망고 싹틔우기 1

애플 망고 씨에서 뿌리가 어느 정도 나오고 나서 화분에 옮겨 심고 잎이 나올 때 까지

21.04.13 왼쪽에 보이는 씨에 뿌리가 보인다.

21.04.23 뿌리가 많이 자란 것을 볼 수 있다.
21.05.01 뿌리가 어느 정도 자란 것 같아 화분에 옮겨 심기 위해 화분 작업을 했다.
망을 화분 아래 크기에 맞춰 잘라 주고, 배양토를 넣었다.



21.05.01 화분에 씨를 옮겨 심었다.

그리고, 기다림..

기다림..

기다..

..

.

.

별 다른 변화가 없다.

5월이 다 갔는데...

.

21.06.02 새로운 애플 망고 씨를 이번에는 깨끗하게 씻어 준비한다. 이전 것은 씨가 조금 이상했어... 




21.06.06 일요일 아침... 허걱.. 싹이 났다..

3.29에 씨를 불리기 시작해서 69일 만에 싹이 올라 왔다. 새로운 씨를 준비하고 있었는데 거기에 자극을 받은 것인지....

Windows 10에 ESP32 IDF 개발 환경 설정

필수 구성요소 설치

ESP-IDF(Iot Development Framework)에는 Pytho, Git, Crosscompiler, Cmake, Ninja 빌드 도구가 필요하다.

https://dl.espressif.com/dl/esp-idf-tools-setup-2.2.exe을 다운받아 실행한다.

I Accept Agreement를 선택하고 다음
Python 3.7을 선택하고 다음
git은 기존 설치된 것으로(버전이 같으니..) 선택 후 다음
Download ESP-IDF 선택 후 다음
다운 받을 버전은 가장 최신 버전으로, 설치 디렉토리는 본인이 원하는 곳으로 변경 후 다음
ESP-IDF Tools이 설치될 디렉토리도 본인이 원하는 곳으로 변경 후 다음
모두 선택 후 다음
설치될 디렉토리 확인 후 "Install" 클릭하면
설치에 필요한 파일들 다운로드, 압축해제, 설치 등의 작업을 거친다.



일련의 작업이 끝나면 Finish

설치가 완료되면
윈도우즈 메뉴 창에 ESP-IDF Command Prompt바로 가기가 설정된다.
기존 명령 프롬프트 창에서 ESP-IDF를 사용하려는 경우 다음을 수행하면 된다.
설치한디렉토리\esp-idf\export,bat 
이거나 설치 디렉토리를 변경하지 않은 경우는
%userprofile%\esp\esp-idf\export.bat




참조 

  • https://docs.espressif.com/projects/espressif-esp-idf/en/latest/


Visual Studio Code에 ESP32 IDF 개발환경 세팅하기

ESP-IDF VS Code Extension

Visual Studio Code에 Espressif IoT Development Framework을 개발, 빌드, 롬라이팅, 모니터링, 디버그 등을 지원

목차


전제조건

Extention을 설치하기 전에 사용하고자 하는 환경에 따라 아래의 프로그램들을 설치해야 한다.

LinuxMacOSWindows
Python 3.5+Python 3.5+Python 3.5+
PIPPIPPIP
GitGitGit
CMakeCMakeC++ Build Tool
Ninja-buildNinja-buildRust

Windows에서 C++ Build Tools 설치

위의 링크에서 다운받은 설치파일을 실행 시키고 첫번째 항목("C++ build tools")을 선택하고 Install 버튼을 누른다.

설치가 완료되고 나서 설치가 잘되었는지 아래와 같이 확인한다.

윈도우 시작메뉴 에서 Development Command Prompt for VS를 실행시킨다.


Command prompt에서 cl.exe 명령어를 실행했을 때 아래와 같이 실행되는지 확인



ESP-IDF Extension설치 하기

VS Code에서 Extension 메뉴를 누르거나 <Ctrl> + <Shift> + <x> 키를 눌러 EXTENSIONS: MARKETPLACE 검색창에 "esp32" 를 입력하여 Espressif IDF를 찾아 install 한다.


install이 끝나면 메뉴에서 View -> Command Palette 에서 "configure esp-idf extension"를 입력하여 "ESP-IDF:Configure ESP-IDF extension"을 선택한다.

EXPRESS를 선택

ESP-IDF 컨테이너를 설치할 디렉토리를 변경하고자하면 변경하고 아니면 그래도 install버튼 클릭


설정이 끝나면 해당 윈도우를 닫는다.




Ubuntu에서 버전 확인

 lsb_release 

$ lsb_release -a


cat /etc/os-release