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.

*/
레이블이 embedded인 게시물을 표시합니다. 모든 게시물 표시
레이블이 embedded인 게시물을 표시합니다. 모든 게시물 표시

VisualStudio Code에서 esptool.py 사용하기

ESP32 개발시 FW를 한개의 파일로 만들기 위해 esptool.py를 사용하기 위해 해당 component를 설치해야 사용할 수 있다.

설치방법은 cmd를 실행하고 esp idf가 설치된 디렉토리에서 components\esptool_py\esptool 로 이동하여 아래와 같이 설치한다.


c:\esp\esp-idf\components\esptool_py\esptool> python setup.py install
 



수행하면 이후 VSCode상에서도 esptool.py를 사용할 수 있다. 


관련문서 


밀리 초, 마이크로 초

시간 단위

ms, msec : milli-second, 10−3, 1/1,000 초
μs : micro-second, 10−6, 1/1,000,000 초 
ns : nano-second, 10−9, 1/1,000,000,000 초 


Linux 버전 확인

리눅스에서 버전 확인 하기

커널 확인

user@system:~$ uname -a
 

user@system:~$ cat /proc/version
 

배포판 정보 확인
user@system:~$ cat /etc/*release*
 

Python - Bytes, bytearray vs c struct variable

Python에서 bytes, bytearray 를 다룰 때 참고

Format string - Byte order, size, alignment

기본적으로 C 유형은 시스템의 기본 형식 및 바이트 순서로 표시
첫 번째 문자가 이들 중 하나가 아니면 '@'으로 가정
네이티브 바이트 순서는 호스트 시스템에 따라 big-endian 또는 little-endian으로 구분. 예를 들어 Intel x86 및 AMD64 (x86-64)는 little-endian.  Motorola 68000과 PowerPC G5는 big-endian



Format character



Example

>>> from struct import *
>>> pack('hhl', 1, 2, 3)
b'\x01\x00\x02\x00\x03\x00\x00\x00'
>>> unpack('hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03')
(256, 512, 50331648)

>>> pack('<hhl', 1, 2, 3)
b'\x01\x00\x02\x00\x03\x00\x00\x00'
>>> pack('>hhl', 1, 2, 3)
b'\x00\x01\x00\x02\x00\x00\x00\x03'

>>> unpack('<hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03')
(256, 512, 50331648)
>>> unpack('>hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)

Windows PC에서 endian을 지정하지 않고 했을 경우 => 네이티브로 판단하여 intel계열의 little-endian 으로 출력

>>> pack('hhl', 1, 2, 3) # Native'@'를 지정한 것으로 처리
b'\x01\x00\x02\x00\x03\x00\x00\x00'
>>> unpack('hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03')
(256, 512, 50331648)


Little-endian vs Big-endian

>>> pack('<hhl', 1, 2, 3)           # little-endian
b'\x01\x00\x02\x00\x03\x00\x00\x00'
>>> pack('>hhl', 1, 2, 3)           # big-endian
b'\x00\x01\x00\x02\x00\x00\x00\x03'

>>> unpack('<hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03')     # little-endian
(256, 512, 50331648)
>>> unpack('>hhl', b'\x00\x01\x00\x02\x00\x00\x00\x03')     # big-endian
(1, 2, 3)



ROBOT ARM 만들기

6축 로봇팔

  로봇팔에 대한 자료를 보고 한번 만들면서 공부해 보자는 생각에 자료를 정리한다. open source로 진행된 로봇 팔에 대한 아래와 같은 여러 자료들이 있다.
위에서 나온 대부분의 모델들은 3D 프린터를 이용하여 부품들을 인쇄하여 제작하도록 구성되어 있다.


사전 준비 사항

  • 3D 프린터 :  22x22 cm 이상 인쇄할 수 있는 프린터. 현재 보유하고 있는 델타 프린터로는 크기가 큰 부품들을 인쇄할 수 없어 새로운 Cartesian 타입(직교 타입)의 프린터를 만들었다.

G-Code

Specific codes

 3D 프린터에서 사용되는 G-코드는 RepRap 펌웨어 기준으로 문자 G로 시작하는 CNC프로그램에서 사용하는 것과 유사하다. 일반적으로 아래와 같은 작업 유형에 사용.

  • 빠른 이동
  • 직선 또는 호의 제어된 이송
  • 오프셋 등의 공구 정보 설정
  • 좌표계 전환

문자 코드

 A부터 Z까지 밀링이나 선반에서 사용되는 기능들이 정의 되어 있으나 아래에서는 3D프린터에서 주로 사용되는 코드들만 정리

문자설   명추가 정보
F움직임 비율(feed rate)
G준비 명령을 위한 코드G 명령은 원하는 동작의 종류(예: 빠른 위치 지정, 선형 피드, 원형 피드, 고정 주기) 또는 사용할 오프셋 값을 제어 장치에 알려주는 경우가 많다.
M기타 기능동작코드, 보조 명령 등
N프로그램의 라인 번호
XX축의 기준으로 한 절대 위치 혹은 증가된 위치 값
YY축의 기준으로 한 절대 위치 혹은 증가된 위치 값
ZZ축의 기준으로 한 절대 위치 혹은 증가된 위치 값


G-Code

Xnnn : X축으로 nnn만큼 위치 이동
Ynnn  : Y축으로 nnn만큼 위치 이동
Znnn  : Z축으로 nnn만큼 위치 이동
Ennn : 시작점과 끝점 사이에 nnn만큼 사출
Fnnn : 시작점과 끝점 사이의 분당 움직임 비율 (feedrate per minute)
Hnnn (RepRapFirmware) Flag to check if an endstop was hit (H1 to check, H0 to ignore, other Hnnn see note, default is H0)1
Rnnn (RepRapFirmware) Restore point number 4
Snnn Laser cutter/engraver power. In RepRapFirmware, when not in laser mode S in interpreted the same as H.

Code설명결과 정보
G00Rapid Move

Usage 

G0 Xnnn Ynnn Znnn Ennn Fnnn Snnn
G1 Xnnn Ynnn Znnn Ennn Fnnn Snnn

Parameters

Not all parameters need to be used, but at least one has to be used

Examples

G0 X12  ; move to 12mm on the X axis
G0 F1500  ; Set the feedrate to 1500mm/minute
G1 X90.6 Y13.8 E22.4 ; Move to 90.6mm on the X axis and 13.8mm on the Y axis while extruding 22.4mm of material

G01Linear Move
G02Controlled Arc Move, 시계 방향

Usage 

G2 Xnnn Ynnn Znnn Ennn Fnnn Snnn
G3 Xnnn Ynnn Znnn Ennn Fnnn Snnn

G03Controlled Arc Move, 시계 반대 방향
G04살다드웰 기간에 대한 주소를 사용합니다( X , U 또는 P 일 수 있음 ). 드웰 기간은 일반적으로 밀리초로 설정되는 제어 매개변수로 지정됩니다 . 일부 기계는 X1.0( s ) 또는 P1000( ms )을 허용할 수 있으며 , 이는 동등합니다.드웰 지속 시간 선택 : 종종 드웰은 한 번 또는 두 번의 전체 스핀들 회전만 지속하면 됩니다. 이는 일반적으로 1초 미만입니다. 긴 드웰은 사이클 시간의 낭비라는 지속 시간 값을 선택할 때 주의하십시오. 어떤 상황에서는 중요하지 않지만 대량 반복 생산(수천 사이클 이상)의 경우100ms만 필요하고 안전하기 위해 200이라고 부를 수 있지만 1000은 그냥 낭비(너무 길다).
G05 P10000고정밀 윤곽 제어(HPCC)윤곽 밀링 중에 더 나은 축 이동 가속 및 감속을 제공하기 위해 심층 예측 버퍼 및 시뮬레이션 처리를 사용합니다.
G05.1 Q1.AI 고급 미리보기 제어윤곽 밀링 중에 더 나은 축 이동 가속 및 감속을 제공하기 위해 심층 예측 버퍼 및 시뮬레이션 처리를 사용합니다.
G06.1NURBS( Non-Uniform Rational B-Spline ) 가공복잡한 곡선 및 파형 가공을 위해 Non-Uniform Rational B Spline 활성화(이 코드는 Mazatrol 640M ISO 프로그래밍에서 확인됨)
G07허수축 지정
G09정확한 정지 확인, 넌모달모달 버전은 G61 
G10프로그래밍 가능한 데이터 입력작업 좌표 및 도구 오프셋 값 수정
G11데이터 쓰기 취소
G17XY 평면 선택
G18ZX 평면 선택
G19YZ 평면 선택
G20인치로 프로그래밍미국과 캐나다 및 영국을 제외하고 다소 드문 경우입니다. 그러나 글로벌 시장에서 G20과 G21 모두에 대한 역량은 언제든지 필요할 가능성이 있습니다. G20의 일반적인 최소 증분은 1/10,0001인치(0.0001")이며, 이는 G21의 일반적인 최소 증분(1/1000밀리미터, .001mm, 즉, 1 마이크로미터 ) 보다 더 큰 거리 입니다. 물리적 차이는 때때로 G21 프로그래밍을 선호합니다.
G21밀리미터 (mm) 단위 프로그래밍전 세계적으로 널리 퍼져 있습니다. 그러나 글로벌 시장에서 G20과 G21 모두에 대한 역량은 언제든지 필요할 가능성이 있습니다.
G28원점 복귀(기계 제로, 기계 기준점이라고도 함)공구 팁이 기계 0으로 돌아가는 도중 통과할 중간 지점을 정의하는 XYZ 주소를 사용합니다. 기계 제로가 아니라 부품 제로(프로그램 제로라고도 함)와 관련이 있다.
G302차 원점 복귀(기계 제로, 기계 기준점이라고도 함)은 P 어드레스 지정 얻어 기계 원점 사용하는 경우, 시스템이 여러 보조 점 (P1 내지 P4)을 가진다. 도구 설명이 기계 0으로 돌아가는 길에 통과하는 중간 지점을 정의하는 XYZ 주소를 사용. 이는 기계 제로가 아닌 부품 제로(프로그램 제로라고도 함)로 표현.
G31건너뛸 때까지 피드 기능 프로브 및 도구 길이 측정 시스템에 사용됩니다.
G32단일 포인트 스레딩, 긴 손 스타일(싸이클을 사용하지 않는 경우, 예: G76 )단일 포인트 스레딩을 위한 자동 스핀들 동기화를 제외하고 G01 선형 보간과 유사.
G33일정한 피치 스레딩
G33단일 포인트 스레딩, 긴 손 스타일(싸이클을 사용하지 않는 경우, 예: G76 )일부 선반 컨트롤은 이 모드를 G32가 아닌 G33에 할당.
G34가변 피치 스레딩
G40공구 반경 보정 꺼짐커터 반경 보정(CRC)을 끈다 . G41 또는 G42를 취소.
G41공구 반경 보정 왼쪽
G42공구 반경 보정 오른쪽
G43도구 높이 오프셋 보정 네거티브공구 길이 오프셋 레지스터 값을 호출하기 위해 주소(일반적으로 H)를 사용. 게이지 라인 위치에 추가 되기 때문에 값은 음수 다. G43은 일반적으로 사용되는 버전(대 G44).
G44공구 높이 오프셋 보정 포지티브공구 길이 오프셋 레지스터 값을 호출하기 위해 주소(일반적으로 H)를 사용. 게이지 라인 위치에서 빼기 때문에 값은 양수 다. G44는 거의 사용되지 않는 버전이다(G43 대비).
G45축 오프셋 단일 증가
G46축 오프셋 단일 감소
G47축 오프셋 두 배 증가
G48축 오프셋 이중 감소
G49공구 길이 오프셋 보정 취소G43 또는 G44를 취소 .
G50최대 스핀들 속도 정의
G50스케일링 기능 취소
G50위치 레지스터(부품 0에서 툴팁까지 벡터 프로그래밍)
G52로컬 좌표계(LCS)
G53기계 좌표계프로그램 제로가 아닌 기계 제로를 기준으로 절대 좌표(X,Y,Z,A,B,C)를 취한다. 도구 변경에 도움이 될 수 있다. 비모달 및 절대 전용. 후속 블록은 명시적으로 프로그래밍되지 않은 경우에도 " G54로 돌아가기"로 해석.
G54 ~ G59작업 좌표계(WCS)축 오프셋의 각 튜플은 프로그램 제로를 기계 제로에 직접 연결한다. 표준은 6개 튜플(G54 ~ G59)이며 선택적으로 G54.1 P1 ~ P48을 통해 48개 튜플을 추가로 확장할 수 있다.
G54.1 P1 ~ P48확장된 작업 좌표계G54 ~ G59에서 표준으로 제공되는 6개 외에 최대 48개의 추가 WCS. G 코드 데이터 유형(이전의 모든 정수)의 부동 소수점 확장에 유의. 
G61정확한 정지 확인, 모달G64 로 취소할 수 있다 . 논모달 버전은 G09 이다.
G62자동 코너 오버라이드
G64기본 절단 모드(정확한 정지 확인 모드 취소)G61을 취소.
G68좌표계 회전
G69좌표계 회전 끄기G68을 취소 .
G90절대 프로그래밍부품 0을 기준으로 정의된 위치 지정.
밀링: 항상 위와 같다.
터닝: 때때로 위와 같이(Fanuc 그룹 유형 B 및 유사 설계), 대부분의 선반(Fanuc 그룹 유형 A 및 유사 설계)에서 G90/G91은 절대/증분 모드에 사용되지 않는다. 대신 U 와 W 는 증분 주소이고 X 와 Z 는 절대 주소입니다. 이러한 선반에서 G90은 황삭을 위한 고정 사이클 주소다.
G90고정 싸이클, 단순 싸이클, 황삭용(Z축 강조)절대 프로그래밍을 제공하지 않는 경우(위)
G90.1절대 아크 프로그래밍I, J, K 포지셔닝은 부품 0을 참조하여 정의.
G91증분 프로그래밍이전 위치를 참조하여 정의된 위치 지정.
밀링: 항상 위와 같다.
터닝: 때때로 위와 같이(Fanuc 그룹 유형 B 및 유사 설계), 대부분의 선반(Fanuc 그룹 유형 A 및 유사 설계)에서 G90/G91은 절대/증분 모드에 사용되지 않는다. 대신 U 와 W 는 증분 주소이고 X 와 Z 는 절대 주소다.
G91.1증분 아크 프로그래밍I, J, K 위치는 이전 위치를 참조하여 정의.
G92위치 레지스터(부품 0에서 툴팁까지 벡터 프로그래밍)G50 위치 레지스터 에서와 동일한 결과 정보.
밀링: 항상 위와 같다.
터닝: 가끔 위와 같이(Fanuc 그룹 유형 B 및 유사 설계), 그러나 대부분의 선반(Fanuc 그룹 유형 A 및 유사 설계)에서 위치 레지스터는 G50 .
G92스레딩 사이클, 단순 사이클
G94분당 이송 속도그룹 유형 A 선반에서 분당 이송 속도는 G98 .
G94고정 주기, 단순 주기, 황삭용( X 축 강조)분당 이송 속도를 제공하지 않을 때(위)
G95회전당 이송 속도그룹 유형 A 선반에서 회전당 이송 속도는 G99 입니다.
G96일정한 표면 속도(CSS)일정한 표면 속도를 얻기 위해 스핀들 속도를 자동으로 변경합니다. 속도 및 피드를 참조 . G20 모드 에서는 sfm 으로 , G21 모드 에서는 m/min으로 해석되는 S 주소 정수를 취 한다.
G97일정한 스핀들 속도rev/min(rpm)으로 해석되는 S 주소 정수를 사용한다. 모드가 프로그래밍되지 않은 경우 시스템 매개변수당 기본 속도 모드다.
G98고정 사이클에서 초기 Z 레벨로 복귀
G98분당 이송 속도(그룹 유형 A)분당 이송 속도는 그룹 유형 B에서 G94 .
G99고정 사이클에서 R 레벨 로 복귀
G99회전당 이송 속도(그룹 유형 A)회전당 이송 속도는 그룹 유형 B에서 G95 .
G100공구 길이 측정

M-Code



참조

3D 프린터

3D프린터에 관련된 사항들 정리

용어

  • G Code : 가장 널리 사용되는 CNC 프로그래밍 언어. 주로 자동화된 공작 기계를 제어 하는 데 사용되며 다양한 변형이 있다. G 코드 명령은 모터가 어디로 이동해야 하는지, 얼마나 빨리 이동해야 하는지, 어떤 경로를 따라야 하는지 알려주는 기계 컨트롤러(산업용 컴퓨터)에 사용 된다. 
  • Modeling : 가상공간의 2차원, 3차원 모델을 통해 실세계의 물체를 묘사하거나 혹은 물리적 환경을 모델링하여 가상환경 속에서 물체의 모습을 만들어낼 수도 있다. 3차원 모델링은 컴퓨터가 이해할 수 있는 형태의 데이터로 저장된다.
  • Slice : 모델링된 데이터를 일정한 두께로 나누는 작업. 두께가 얇을수록 모델이 정밀하게 표현되나, 모델이 프린팅되는 시간이 증가한다.

3D 프린터 종류

  • FDM (Fused Deposition Modeling) : 필라멘트 압출 방식
  • SLA (Stereo Lithography Apparatus) :
  • SLS (Selective Laser Sintering) :
  • DLP (Digital Light Processing) :

3D프린팅하기

  • 모델링 
  • 슬라이싱
    • 슬라이서는 솔리드 3D 모델을 얇은 슬라이스(레이어)로 나누어 준비한다. 이 과정에서 모델을 제작하는 방법을 프린터에 자세히 알려주는 G코드를 생성한다 .

  • 프린팅


관련글 보기

ESP32 IDF Application OTA

OTA(Over The Air Updates)

OTA 프로세스 개요

  OTA 업데이트 메커니즘을 사용하면 일반 펌웨어가 실행되는 동안(예: Wi-Fi 또는 Bluetooth를 통해) 수신된 데이터를 기반으로 장치를 업데이트할 수 있다.

  OTA는 최소 2개의 "OTA App slot" 파티션(즉, ota_0 및 ota_1 )과 "OTA Data 파티션"으로 장치의 파티션 테이블을 구성해야 한다.

  OTA 작동 기능은 현재 부팅을 위해 선택되지 않은 OTA 앱 슬롯에 새 앱 펌웨어 이미지를 쓰고, 이미지가 확인되면 OTA 데이터 파티션을 업데이트하여 이 이미지를 다음 부팅에 사용하도록 지정한다.

OTA 데이터 파티션

  OTA 데이터 파티션(type "data", subtype "ota")은 OTA 기능을 사용하는 모든 프로젝트의 파티션 테이블에 포함되어야 한다. 

# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x4000,
otadata,  data, ota,     0xd000,  0x2000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000,  1M,
ota_0,    app,  ota_0,   0x110000, 1M,
ota_1,    app,  ota_1,   0x210000, 1M,
Copy to clipboard

  공장 부팅 설정의 경우 OTA 데이터 파티션에는 데이터가 없어야 한다(모든 바이트는 0xFF로 지워짐). 이 경우 esp-idf 소프트웨어 부트로더는 파티션 테이블에 있는 경우 factory app을 부팅한다. 파티션 테이블에 factory app이 포함되어 있지 않으면 사용 가능한 첫 번째 OTA 슬롯(일반적으로 ota_0)이 부팅된다.

  첫 번째 OTA 업데이트 후 OTA data 파티션이 업데이트되어 다음에 부팅해야 하는 OTA 앱 슬롯 파티션을 지정합니다.

  OTA data 파티션은 2개의 플래시 섹터(0x2000바이트) 크기로 기록 중 정전이 발생할 경우 문제를 방지한다. 섹터는 독립적으로 삭제되고 일치하는 데이터로 기록되며, 일치하지 않는 경우 카운터 필드를 사용하여 가장 최근에 기록된 섹터를 결정한다.



참고

관련문서 

BLE Attribute Protocol

속성(Attribute)

 Attribute(ATT, 속성) 프로토콜은 BLE 프로토콜 스택 중의 하나다. BLE 서버 데이터베이스에서 데이터를 표현하는 방법과 해당 데이터를 읽거나 쓸 수 있는 방법을 정의한다.

속성은 4개의 구성으로 정의한다.

  • attribute type : UUID - 128 bit 숫자(혹은 16 이나 32bit를 사용하기도 함)
  • attribute handle : 특정 속성을 참조하기 위한 0이 아닌 숫자
  • attribute permissions : read and/or write 정의
  • attribute value
상기 속성은 ATT에서 정의한 방법을 사용하여 읽거나 쓸 수 있다. 예를 들어 클라이언트가 서버로 요청을 보내면 서버는 클라이언트로 응답을 보내고, 서버에서 클라이언트로 보내는 알림(notification)은 클라이언트에서 응답하지 않는다.


속성 메소드(Attribute method)

 ATT 프로토콜은 속성을 읽거나 쓸 수 있는 방법도 정의한다. 지원되는 방법은 6가지이며 결과적으로 6개의 PDU(프로토콜 데이터 단위)를 정의한다. 6가지 방법과 해당 PDU 유형은 다음과 같다.

  • Commands: 클라이언트에서 서버로 전달. response 호출하지 않음
  • Requests: 클라이언트에서 서버로 전달. response 호출
  • Responses: 서버가 request 를 받았을때 클라이언트로 전달
  • Notifications: 서버에서 클라이언트로 전달. 클라이언트의 요청과 무관하게 전송.
  • Indications: 서버에서 클라이언트로 전달하고 클라이언트는 response 호출. 클라이언트의 요청과 무관하게 전송.
  • Confirmations: 클라이언트에서 indication에 대한 response로 서버로 acknowledgment를 전달 .

BLE State

 BLE는 아래 5개의 State를 가진다.

  • Standby
  • Advertising
  • Scanning
  • Initiating
  • Connected


BT core 4.1 이후 Synchronization state 가 추가되었다.



ESP32 Pinmap

ESP32-WROOM-32 Pinmap


ESP32-DevKitC Pinmap



Reference 

  • https://docs.espressif.com/

관련문서 

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 유형
    • 동적 주소 (재 지정될 수 있음, 피코넷 내에서 만 유일하면 됨)

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

     

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버튼 클릭


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