Skip to content

bbingju/smart-peg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart PEG

Overview

이 소스는 Neofect Smart Pegboard 와 유사한 보드(가칭 Smart PEG)를 위한 펌웨어이다.

Smart PEG는 치매 노인들의 인지력 및 기억력 향상을 돕기 위해 고안되었다고 한다(발주한 곳과 직접 연결되어 있지 않기 때문에 자세한 사정은 나도 잘 모른다).

시스템 구성은 대략 아래 그림과 같으며, 이 소스는 그림에서 보드에 해당한다.

doc/pic/smart-peg-system.png

아래 그림은 실제 PCB 사진이다. 10x10 LED를 가지고 있으며 각 LED가 박힌 반대편에는 자석센서가 붙어 있다.

./doc/pic/smart-peg-pcb.jpeg

MCU가 ESP32 이기 때문에 esp-idf를 사용하여 작성하였다.

Hardware

MCU

ESP32를 사용한다.

LED

SK6812를 100개 사용한다. 각 유닛은 직렬로 연결되어 있다.

Magnetic Sensor

Interface

Smart PEG 보드의 인터페이스는 Classic BT 중 SPP profile을 이용하고, 간단한 문법의 명령을 이용하여 동작시킬 수 있다.

Commands

Syntax

  • 각 명령은 ’(’ 로 시작하고, ’)’ 로 끝난다.
  • 괄호 안에 문법은 <command>, <arguments> 이다.
  • <arguments> 는 십진수 혹은 16진수(0x 으로 시작)이며, 0개 이상 이어질 수 있고, 구분자는 콤마(~,~) 이다.
  • 대소문자는 구분되며, 공백문자는 무시된다.

led_set_pixel

지정한 LED의 색상을 변경한다.

명령어 형식

(led_set_pixel, <x>, <y>, <color>)
x
X 좌표. 0 ~ 9 사이의 값을 가짐.
y
Y 좌표. 0 ~ 9 사이의 값을 가짐.
color
각 8비트의 RGB 값. 예를 들어 0xFF0000 이면 가장 밝은 붉은 색을 뜻함.

led_fill_rect

지정한 사각형 영역의 LED 색상을 지정한 색으로 변경한다.

명령어 형식

(led_fill_rect, <x1>, <y2>, <x2>, <x2>, <color>)
x1
X1 좌표. 0 ~ 9 사이의 값을 가짐.
y1
Y1 좌표. 0 ~ 9 사이의 값을 가짐.
x2
X2 좌표. 0 ~ 9 사이의 값을 가짐.
y2
Y2 좌표. 0 ~ 9 사이의 값을 가짐.
color
각 8비트의 RGB 값. 예를 들어 0xFF0000 이면 가장 밝은 붉은 색을 뜻함.

led_clear

전체 LED의 색상을 지운다.

명령어 형식

(led_clear)

led_draw

LED 메모리 버퍼에 있는 값을 실제 LED에 적용하는 명령이다. (led_set_direct_draw, 0) 명령으로 LED 색상을 변경하는 모든 명령이 명령 수행후 바로 draw 하지 않게 설정했을 때, 이 명령이 유용할 것이다.

명령어 형식

(led_draw)

led_set_direct_draw

LED 색상을 변경하는 명령이 수행될 때, 명령 하나가 수행될 때마다 LED에 바로 그릴지 말지를 결정하는 시스템 플래그를 변경한다.

명령어 형식

(led_set_direct_draw, <flag>)
flag
플래그는 0 또는 1을 가지며 0이면 drawing flag가 false 상태로 변경되고, 1이면 =true=로 변경된다.

mag_status

자석 센서들의 on/off 상태를 요청한다.

명령어 형식

(mag_status)

반환 형식

(mag_status, <0th row's status>, ..., <9th row's status>, <etc status>)

See Also

Packages

No packages published

Languages