Hồi tháng 11 năm ngoái, tôi có thử qua màn e-ink trên Orange Pi, lúc đó là đang định cài PWNAGOTCHI trên Orange Pi. Lúc đó chưa có hướng dẫn nào cài PWNAGOTCHI trên Orange Pi cả nên đành phải tự mày mò thôi. Mua luôn màn hình e-ink loại 2.7inch e-Paper HAT này để thử, nhưng đúng là cũng không dễ. Giờ tôi sẽ viết lại quá trình để các bạn có thể cài đặt được màn này trên Orange Pi.
Nhắc lại về cái bài demo này, lúc đó đã quay video chạy thử rồi nhưng chưa biên tập post được, sau đây sẽ biên tập gửi lại trên kênh Youtube Orange Pi (https://www.youtube.com/c/OrangePiVietnam) và Facebook Orange Pi để các bạn kiểm chứng.
Về code tôi đã đưa code lên github này để lưu trữ
https://github.com/thanhtantran/OPI-e-Paper
Sau đây là phần hướng dẫn chi tiết:
- Bạn cần bo mạch Orange Pi nào đó có chân 40 GPIO, ở đây tôi thử với Orange Pi Lite bản 1GB RAM và Orange Pi One bản 1GB RAM. Các phiên bản khác như Orange Pi PC Plus hay Orange Pi 3 sẽ tương tự
- Tiếp theo bạn cần màn hình e-Paper hay còn gọi là e-Ink. Đặc điẻm của màn này là tiêu thụ nhiên liệu ít, hiển thị đen trắng và độ phản hồi chậm. Bạn có thể tháy màn này ở máy đọc sách, hay các label price tag tại hệ thống hiển thị giá siêu thị tự động (hay còn gọi là hệ thống ESL – Electronic Shelf Label)
- Thẻ nhớ, nguồn cho Orange Pi, và một ít dây nối mạch điện tử (giống như hình minh họa bên phải)
Link mua màn hình: Màn hình e-ink e-paper 2.7inch cho raspeberry pi orange pi
Về kết nối, do cổng GPIO của Orange Pi ngược so với Raspberry nên nếu như bạn nối trực tiếp từ chân GPIO cái của màn vào GPIO của PI, bạn cần xoay ngược lại và như hình ảnh mô tả bên trên ở Facebook.
Còn nếu như bạn kết nối qua cable, đây là bảng wiring bạn cần tuân theo
Về phần Bo mạch PI, hãy cài hệ diều hành lên thẻ nhớ, tôi vẫn dùng 1 bản distro Ubuntu của Armbian như mọi khi, boot bình thường. Thay đổi mật khẩu root và bắt đầu quá trình cài đặt. Đầu tiên cần cho tham số SPI vào biến khởi động của Armbian.
echo overlays=spi-spidev>>/boot/armbianEnv.txt
echo param_spidev_spi_bus=0>>/boot/armbianEnv.txt
reboot now
Sau khi khởi động lại, thử lại bằng câu lệnh
ll /dev/spidev*
nếu mọi thứ ok, bạn sẽ có màn hình như sau
tiếp sau đó cài thư viện WiringOP
mkdir -m 777 /opt/WiringOP;
git clone https://github.com/zhaolei/WiringOP.git -b h3 /opt/WiringOP;
cd /opt/WiringOP;
chmod +x ./build;
sudo ./build;
sau khi build xong, chạy lệnh gpio readall
bạn sẽ phải có được bảng sau
Tiếp theo nữa, cài các thư viện của python, ở đây có thể là python2 hoặc python3 tùy theo bản cài os của bạn, hãy thay đổi câu lệnh cho phù hợp
apt-get update
apt-get install python-dev python-pip python-pil python-numpy
pip install setuptools
pip install wheel
pip install OrangePi.GPIO
pip install spidev
cuối cùng, clone code về và thử test
git clone https://github.com/thanhtantran/OPI-e-Paper /opt/e-Paper;
cd /opt/e-Paper/OrangePi
trong này sẽ có 2 mẫu code để test bằng C hoặc python, nếu sử dụng C, bạn cần compile C trước khi chạy. Tìm file main.c trong thư mục ./c/examples, sau đó bỏ dấu comment ở loại màn hình bạn đang dùng, ở đây sẽ là EPD_2in7_test(); sau đó compile code
make clean
make
sudo ./epd
màn hình sẽ có phản hồi để bạn biết quá trình test thành công.
Sau đó chạy thử các ví dụ lập trình hiển thị về chữ, hình ảnh v.v. trên python, bạn có thể xem code trong file py và tùy biến tùy thích
cd python/examples
python epd_2in7.py
Video chạy thử:
P/S: Tôi cũng đã thử thành công màn hình i2C Oled12864 tại đây https://github.com/thanhtantran/ssd1306-i2c-opi
Các bạn có thể thử và chạy song song cả màn e-Ink lẫn màn Oled12864