brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Aug 28. 2022

ESP32 보드를 활용한 한글 처리(1)

ESP32 사용을 위한 기초 지식 - 1

ESP32의 장점


아두이노 보드를 이용하여 5개 내외의 컴포넌트를 이용한 작품들을 만드는 것에는 아무런 불편함이 없다.

그러나 좀 더 빠른 처리 속도가 요구될 경우도 있고, 큰 사이즈의 디지털 데이터를 활용하려면 메모리가 부족하거나, Wifi 또는 블루투스 등의 작업을 위해서도 별도의 컴포넌트를 연결하는 과정이 번거롭고 어려웠다고 생각하면, ESP32는 좋은 대안이 될 것이다.


ESP32 칩 기반의 호환 보드를 제작하여 판매하는 업체도 다양하고, 그 비용도 부담스러운 수준이 아니어서 이미 아두이노의 사용법을 어느 정도 배운 중급 개발자 정도라면 새로운 애플리케이션을 ESP32를 이용하여 제작하고 있다.


ESP32의 주요한 특장점을 간단히 요약하면 다음과 같다.

(제조사에 따라 약간의 다른 스펙을 가지고 있을 수 있으므로 구매하고자 하는 보드가 있다면 해당 업체에서 제공하는 스펙을 참조하는 것이 좋다.)

-      32bit / 듀얼코어 프로세서
-      와이파이 / 블루투스 내장
-      240 MHz 속도에 512kb Ram
-      홀 이펙트 센서 / 온도 센서 내장



한글 LCD용 라이브러리의 구현


위와 같은 특징 이외에 데이터로 사용할 대용량(?) 파일의 저장이 가능하다. 

그래서 이러한 기능을 활용하여 한글 폰트 파일을 저장하고, 이를 이용하여 LCD 패널에 한글을 구현하는 방법을 설명해 보려고 한다.

코드 상에 비트맵을 지정하고 필요한 몇 글자를 디스플레이하는 것은 이미 이전에 다룬 내용이다.

48. 8X8 도트 매트릭스로 움직이는 전광판 만들기를 참조하면 된다.

8x8의 LED 도트 매트릭스에 한글을 표시한 모습 (이전 기사)

몇 글자 정도만 디스플레이하는 경우라면 위의 예처럼 글자 비트를 프로그램에 포함시켜서 출력하면 되겠지만, 타이핑한 어떠한 내용이라도 디스플레이하려면 폰트 파일이 필요하다.


LCD 패널에 사용하는 한글은 비트맵 폰트의 형태이고, 만일 유니코드 구조의 한글(11,172자)을 완성자로 구현하려고 하면, 16x16 사이즈의 한글만 가지고 있어도 357KB가 넘는 용량을 가지고 있어야 한다.


그래서 한글은 조합형 한글을 사용할 것이다.

조합의 구조 및 방법은 DOS 시절부터 가장 널리 사용되고 있는 비트맵 폰트 파일의 구조 인 초성 8벌, 중성 4벌, 종성 4벌인 비트맵 폰트 파일 360자를 이용하여 만들어 보았다.

360자는 12KB가 안 되는 작은 사이즈로 ESP32의 메모리에 탑재하여 사용하기에 충분히 콤팩트한 사이즈이다. 영문의 경우 1.5KB 정도이므로 특수기호를 별도로 탑재하지 않을 경우 영문 한글 전체가 14KB의 메모리 영역을 필요로 하게 된다.


그런데 오늘 첫 시간에 이야기하려고 하는 부분은 한글 폰트의 조합 훨씬 이전에 해결해야 할 다양한 문제 즉 어떻게 ESP32 파일 시스템과, 한글 조합형 폰트 파일을 이해해서 어떻게 ESP32의 메모리에 탑재하고 디스플레이하는가 하는 전반적인 문제를 확인하는 것이다.


새로운 보드에 한글을 출력하기 위하여 우리가 풀어나가야 할 문제를 순서대로 나열해 보면

1. ESP32 개발을 위한 기본 준비 
2. LCD 패널 프로그램 방법
3. LCD 패널에 그래픽 이미지 출력
4. ESP32의 파일 시스템 이해 및 폰트 파일 탑재
5. 글자의 디스플레이 방법 및 한글 조합
6. 한글 폰트 파일에서 원하는 글자 가져오기
7. 해당 글자를 LCD 패널에 디스플레이 하기
8. LCD에 원하는 글자 출력하기

위와 같은 문제를 해결해야 한다.

ESP32라고 하는 새로운 마이크로컨트롤러를 배우면서 비트맵 한글을 구현 방법 전반을 함께 배워보자.

내가 만든 강좌용 샘플은 아래의 동영상과 같이 구현된다.


매거진의 이전글 55. 열다섯 번째 작품:디지털 타이머

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari