이 블로그는 애드센스 수익으로 운영되고 있습니다.
광고차단앱을 해제해주시면 블로그 운영에 큰 도움이 됩니다.
Please disable Adblock?
본문 바로가기
정보, 기술/개발 모음

전자 잉크 디스플레이 제어하는 방법 | 라즈베리파이 활용

by 킨쨩 2021. 8. 3.
반응형

전자 잉크 디스플레이 제어하는 방법 | 라즈베리파이 활용

 이번 게시글에서는 waveshare사의 전자 잉크 디스플레이(전자 종이) 제품의 데모, 샘플 코드를 실행시키는 방법에 대해서 알아보도록 하겠다. 전자 잉크 디스플레이를 활용한 아이디어를 사내 벤쳐로 응모하는 김에 시제품을 만들어볼 생각으로 이번 일을 시작하게 되었다. 혹시 관심이 있는 사람들을 위해서, 샘플 코드를 구현하기 위한 구체적인 순서에 대해서 남겨 놓는다.

 

 기본적인 내용(영어)은 https://www.waveshare.com/wiki/Main_Page 에서 확인할 수 있지만, 일부 불친절하거나 오류가 남아있으니 주의하도록 하자.

 

Waveshare Wiki

 

www.waveshare.com


사용한 기기 정보

사용한 제품들

  • 라즈베리파이 B+ V1.2 (단종)
  • waveshare 2.66inch e-paper module(b) (Red/Black/White) 296 x 152 Pixels
  • 그외 빵판, 전선 등등(알리에서 세트로 4년 전에 구매)

 

전자 잉크 디스플레이

 이번에 사용하는 전자 잉크 디스플레이의 경우, 블랙과 화이트에 더해서 레드도 표현할 수 있는 제품이다. 처음에 좀 어렵다 싶으면 흑백 모델을 구매하는 것을 추천한다.

 각 단자의 정보는 아래와 같다.

제조사 공식 핀번호 안내. 라즈베리파이의 GPIO 번호 순대로 꽂으면 된다. 출처:https://www.waveshare.com/wiki/2.66inch_e-Paper_Module_(B)

내가 구매한 알리익스프레스의 정보에 의하면, 5볼트여도 작동하는 듯 하다.


물리적으로 연결하기 & 사전 준비

물리적으로 연결하기

 먼저 라즈베리파이의 핀 정보를 확인한다.

홈페이지(2021.08.02확인)의 정보를 활용하거나, 아래의 사진을 참고하거나, 아래의 명령어를 입력해보자.

 

GPIO - Raspberry Pi Documentation

documentation > usage > gpio GPIO A powerful feature of the Raspberry Pi is the row of GPIO (general-purpose input/output) pins along the top edge of the board. A 40-pin GPIO header is found on all current Raspberry Pi boards (unpopulated on Pi Zero and Pi

www.raspberrypi.org

홈페이지의 그림.

pinout

 이 명령어를 넣고 엔터를 누르면 된다. 이따금 GPIO zero 라이브러리가 없는 경우 설치가 되지 않는다. 이런 경우에는 먼저 설치해주면 된다.

홈페이지의 그림과 pinout 명령어의 실행 모습

실제로 연결해본 모습은 아래와 같다. 주의할 점으로는, 디스플레이의 단자의 설명이 적혀있는 부분이 안내와 반대라는 점이다. 이는 디스플레이의 뒷면에 적혀있기 때문에 반대로 적혀있는 것처럼 보이는 것뿐이니 신경쓰지말자.

실제로 내가 연결해본 모습. 라즈베리파이 부근과 보드 부근은 되도록 같은 색으로 맞춰보았다.

 

사전 준비

SSH로 연결하기

나의 경우, 맥을 사용하고 있으며, 터미널을 통해서 SSH로 접속한다. 또한, 아이피 고정이 불가능한 환경이기에 호스트명으로 접속을 한다.

 SSH로 연결이 가능한 상태로 해두는 것을 추천한다. 물론 그렇게 하지 않아도 가능은 하지만, 명령어를 입력하는 과정이 다소 귀찮아 지기 때문에, 복사 붙여넣기가 가능한 상태로 활용하기 위해서이다.

아래의 게시글의 6번 항목을 참고로 SSH에 연결할 수 있게 만들어 두자.

 

"라즈베리파이 + openmediavault(OMV)" NAS 만들기 (각종 에러 해결법 포함) | 라즈베리파이 활용(1)

라즈베리파이 + openmediavault 로 나스 만들기 (각종 에러 해결법 포함) | 라즈베리파이 활용(1)  이번 게시글은, 나스 한번 싸게 만들어보겠다고 한참동안 내가 잡고 있으면서 겪었던 수많은 문제들

kin-archive.tistory.com

 

 

SPI인터페이스 활성화하기

sudo raspi-config

 

 위의 명령어를 입력한 뒤, 아래의 옵션을 활성화 해준다.

 이후, 다음의 명령어로 한번 재부팅을 해준다.

sudo reboot

라이브러리 설치하기

 라이브러리를 설치하기 전에, 먼저 sudo 명령어를 아무거나 한번 넣어주는 것을 추천한다(apt-get update정도를 추천한다.). 이는, 중간에 sudo 비밀번호를 잘못 입력할 경우, 명령이 스킵되는 경우가 발생할 수 있기 때문이다.

 

 또, 라이브러리 설치가 생각보다 오래걸릴 수도 있으니 인내심을 가지도록 하자. 인터넷 속도(또는 라즈베리파이 모델)에 따라서 조금 차이가 있을 수 있다.

 

C언어를 위한 라이브러리

 먼저, BCM2835 라이브러리를 설치해주도록 한다.

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz 
cd bcm2835-1.60/
sudo ./configure
sudo make
sudo make check
sudo make install

 위를 복붙하면 된다.

실제로 내가 입력해본 모습

마지막 명령어는 엔터를 눌러줘야한다.(아니면 줄바꿈을 추가해서 붙여넣기 해주면 된다.) 위와 같은 화면이 나오면 성공이다.

 

WiringPi 라이브러리 인스톨하기

sudo apt-get install wiringpi
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v

위와 마찬가지로 복사& 붙여넣기로 설치해주면 된다. 마지막에 엔터 한번 눌러주는 것도 잊지 말자.

마지막 명령어는 버전 정보를 가져오는 명령어이기 때문에, 아래와 같은 내용이 출력 될 것이다.

알고보니 메이커가 소니였다;

파이썬을 위한 라이브러리

Python2 라이브러리 설치하기

sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-pil
sudo apt-get install python-numpy
sudo pip install RPi.GPIO
sudo pip install spidev

위와 마찬가지로 복사& 붙여넣기로 설치해주면 된다.

 

Python3 라이브러리 설치하기

sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev

위와 마찬가지로 복사& 붙여넣기로 설치해주면 된다. 마지막에 엔터 한번 눌러주는 것도 잊지 말자.

 

그외 파이썬 라이브러리 설치하기

 나의 경우, 파이썬이 제대로 실행되지 않았다. 아래의 라이브러리들을 다시 설치해주자 매우 잘 돌아갔기에 공유해둔다. 지금 생각해보면, 아마 서비스들이 재시작 되서 그런 것 같기 때문에 재부팅을 통해서도 같은 효과를 기대할 수 있을 것으로 예상된다

sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
sudo apt-get install python-smbus
sudo apt-get install python-imaging
#위의 명령어가 안되면 sudo apt-get install python-pil
sudo pip3 install spidev

샘플 코드 다운로드

먼저, 디렉토리를 이동해준다. 환경에 따라 처음 켰을 때 나오는 디렉토리의 위치가 다를 수 있기에, 아래와 같은 명령어를 활용하자.

cd ..

~ $ (즉 현재 계정의 홈 디렉터리)로 이동해준다. 잘 모르겠다면 아래의 사진을 참고하자. 그리고 이 자리에서 github에서 클론해오면 된다.

sudo git clone https://github.com/waveshare/e-Paper

 말 그대로 샘플 코드이기 때문에 별도로 우리가 프로그래밍을 할 필요는 없다. 다만, 결국 제대로 활용하려면 프로그래밍을 배워야 한다.


C언어를 활용한 샘플 코드

cd ~/e-Paper/RaspberryPi_JetsonNano
cd c

 제조사 위키페디이아에는 경로가 (~/e-Paper/RaspberryPi\&JetsonNano/) 로 되어있지만, 실제로는 위의 경로에 있으니 주의하도록 하자. 아마 언제 구매한 제품이느냐에 따라 달라질 듯하다.

sudo nano examples/main.c

원하는 제품명을 찾아서 주석 처리를 해제해준다. 나의 경우, 2.66인치(b)모델이므로 

EPD_2in66b_test(); 를 주석 처리 해제한 뒤 보존해주면 된다.

지원하는 기기 목록을 알 수 있다.

이후 간단히 컴파일을 진행한다.

sudo make clean
sudo make

 첫줄의 경우, 이미 있는 것을 정리해주는 코드이기 때문에, 처음에 입력했을 때는 에러가 표시될 수 있지만 걱정하지 말도록 하자. 컴파일에는 약간 시간이 걸리니 인내심을 가지자. 나의 경우 라즈베리파이의 구모델이기에 상당히(5분 정도) 시간이 걸렸다.

 

마지막으로 실제로 실행시켜서 제대로 동작하나 확인한다.

sudo ./epd

화면이 매순간 변화하면서 다양한 화면을 보여주면 성공이다.

실제 화면의 모습.


Python을 활용한 샘플 코드

cd ~/e-Paper/RaspberryPi_JetsonNano
cd python/examples

제조사 위키페디이아에는 경로가 (~/e-Paper/RaspberryPi\&JetsonNano/) 로 되어있지만, 실제로는 위의 경로에 있으니 주의하도록 하자.

ls -al

폴더 내에 이미 만들어진 py 파일들을 표시해준다.

실제로 표시된 모습

해당하는 버전의 파일명을 넣어서 아래의 코드로 실행하도록 한다. 잘 모르겠다면 파이썬 3을 고르면 된다.

 

파이썬 2

sudo python epd_xxx_test.py

나의 경우엔 epd_2in66b_test.py 를 넣어주게 된다.

sudo python epd_2in66b_test.py

파이썬 3

sudo python3 epd_xxx_test.py

나의 경우엔 epd_2in66b_test.py 를 넣어주게 된다.

sudo python3 epd_2in66b_test.py

화면이 매순간 변화하면서 다양한 화면을 보여주면 성공이다. 참고로 C 언어랑은 다른 화면들이 나온다.

실제 화면의 모습.


사용해보고 느낀 점, 후기

 전자종이를 라즈베리파이에 연결해본 것은 처음이지만, 사용하자마자 전자 종이의 장단점이 바로 확 와닿았다.

  • 색이 3가지(흰색, 검은색, 빨간색)이기 때문에 화면을 갱신하는데 꽤 오래(15초 가량) 걸린다.
  • 액정 화면이 아닌, 그냥 딱 종이를 보는 느낌이며, 시인성도 굉장히 좋다고 느껴졌다.
  • 전선을 뽑아도 화면이 그대로 유지가 된다.
  • 발열이 없다.

 그외에도, 아래와 같은 불만이 있었다.

  • 판매자의 설명(위키)에 오류가 있는데 수정되어 있지 않았다. 마음에 안든다.
  • 화면이 너무 작고 화소수가 너무 적다
  • 가성비가 나쁘다 (LCD 패널이 훨씬 저렴하다)

 

 앞으로는 더욱 큰 디스플레이를 구매해서, 구글 캘린더, 마이크로소프트 투두와 구글 캘린더, 날씨 등등을 연계해서 할 일을 표시해주는 장치를 만들어 볼까 하는 생각이 들었다. 물리적인 제약도 많지만, 전기를 적게 먹는 다는 특성과 종이 같은 느낌 덕분에 굉장히 재밌는 응용이 무궁무진할 것 같다.

 

 실제 화면 갱신의 경우, 약간 앞뒤를 편집했지만(원래 15초...) 다음과 같은 느낌이 된다.

생각보다 재밌다 ㅎㅎ

 현재로써는 아래와 같이, 이미지를 3색(흑,백,적)으로 변환한뒤 디스플레이에 표시해보는 데 성공했다. 이에 대한 내용은 언젠가 다른 포스팅에서 다루어보도록 하겠다.

생각보다 재밌다.


맺음말

 이번 게시글에서는 내가 직접 사서 사용해본 전자 잉크 디스플레이, 전자 종이에 대해서 알아보았다. 자료가 오래되어 갱신이 안되어 있는 등등의 문제로 생각처럼 되지는 않았지만, 간단한 시행착오를 거쳐서 사용할 수 있는 레벨까지 올려보았다. 전자 종이에 관심이 있는 사람들에게 도움이 되기를 바라며 이만 글을 마친다.

밑에 공감 버튼 한 번씩 클릭 부탁드립니다! 
내용에 관한 질문이나 의견이 있다면 댓글로 남겨주세요.

인스타: @kkingchangg

크라우드픽: @Gehdtlr2547

 

일본 유학 KIN쨩 작가 - 크라우드픽의 사진, 이미지, 일러스트, 캘리그라피

저작권 걱정 없는 상업용 이미지 서비스 크라우드픽에서 일본 유학 KIN쨩 작가의 이미지를 무료로 사용해보세요

www.crowdpic.net

Copyright 2021 KIN All rights reserved. 
KIN

 

반응형

댓글