กรอบรูป E-Paper



ตั้งแต่ผมได้รู้จักเทคโนโลยี E-paper ผมก็หลงใหลในมันมาโดยตลอด ผมสงสัยเสมอว่ามีอะไรที่ผมสามารถสร้างได้โดยใช้มัน เมื่อไม่กี่เดือนที่ผ่านมา ผมซื้อเครื่องอ่าน Kindle e-reader และพบว่าถึงแม้จะมีหน้าจอขาวดำ แต่ภาพที่แสดงก็ดูน่าทึ่งมาก เกือบจะเหมือนกับว่าภาพเหล่านั้นมีฟิลเตอร์ Instagram ดังนั้นผมจึงตัดสินใจสร้างกรอบรูปดิจิทัลโดยใช้จอแสดงผล E-ink
ข้อดีเยี่ยมของจอแสดงผลเหล่านี้คือไม่จำเป็นต้องใช้พลังงานในการคงภาพไว้ คุณเพียงแค่ต้องจ่ายไฟให้มันเพื่อเปลี่ยนภาพบนหน้าจอเท่านั้น แม้ว่าคุณจะถอดปลั๊กจอแสดงผลเหล่านี้ออกทั้งหมด ภาพสุดท้ายก็จะยังคงอยู่ตลอดไป นี่คือเหตุผลที่การนำมาใช้เป็นกรอบรูปนั้นเป็นไปได้จริง
คนส่วนใหญ่ไม่สามารถบอกได้เลยว่ากำลังมองจอแสดงผลอยู่ เพราะมันดูเหมือนภาพถ่ายที่พิมพ์ออกมาจริงๆ ภาพจะถูกอัปเดตทุก 24 ชั่วโมง ไม่เหมือนกรอบรูปทั่วไปที่คุณจะหยุดสังเกตเห็นมันหลังจากผ่านไปสองสามวัน กรอบรูปนี้จะดึงดูดความสนใจของคุณอยู่เสมอ
มันทำงานด้วยแบตเตอรี่แบบ button cell 3 ก้อน ซึ่งควรจะใช้งานได้ประมาณ 9-12 เดือน การใช้แบตเตอรี่ AAA จะช่วยยืดอายุการใช้งานออกไปได้หลายปี ข้อดีคือหากแบตเตอรี่หมด ภาพสุดท้ายก็จะยังคงแสดงอยู่บนหน้าจอ ภาพจะถูกบันทึกไว้ในการ์ด microSD และซอฟต์แวร์จะวนแสดงภาพเหล่านั้น นอกจากนี้ยังมีปุ่มสำหรับข้ามภาพปัจจุบันด้วย
ขั้นตอนที่ 1: เครื่องมือและวัสดุ

เครื่องมือ:
- หัวแร้งบัดกรี
- เครื่องพิมพ์ 3D (ไม่บังคับ)
- เลื่อยมือ
- ปืนกาวร้อน
วัสดุ:
- ที่ใส่แบตเตอรี่แบบ button cell / ที่ใส่แบตเตอรี่ AAA 3 ก้อน
- arduino mini pro + USB to serial converter
- BC548 transistor
- Momentary push button
- 1k resistor
- 100k resistor
- Pref board
- กรอบรูปขนาด 9x13 ซม. (หรือขนาดใกล้เคียง)
ขั้นตอนที่ 2: การเดินสายไฟ





ก่อนอื่น เป็นความคิดที่ดีที่จะทดสอบว่าส่วนประกอบของคุณทำงานหรือไม่ โชคดีที่ทำได้ค่อนข้างง่าย เพียงแค่เชื่อมต่อหน้าจอเข้ากับ Arduino ของคุณในลักษณะเดียวกับใน schematic ของผม ยกเว้น transistor และ button ที่คุณไม่จำเป็นต้องใช้ เพียงแค่เชื่อมต่อขา power เข้ากับ 5V โดยตรง คุณสามารถใช้ตัวอย่าง sketch จากไลบรารี epd.h ได้
schematic ค่อนข้างเรียบง่ายเนื่องจากมีส่วนประกอบเพียงไม่กี่ชิ้น อย่างไรก็ตาม resistors, transistor และ button ไม่สามารถลอยอยู่กลางอากาศได้ วิธีที่ง่ายที่สุดคือบัดกรีพวกมันลงบน pref-board ขนาดเล็ก เมื่อเตรียมบอร์ดนี้เสร็จแล้ว ก็สามารถวางและเดินสายไฟถาวรได้
แน่นอนว่าในการจัดวางชิ้นส่วน คุณต้องเตรียมกรอบรูปให้พร้อม ผมเลือกกรอบรูปขนาด 9x13 ซม. ซึ่งสามารถติดตั้งจอแสดงผลและอุปกรณ์อิเล็กทรอนิกส์อื่นๆ ได้อย่างพอดี กรอบรูปขนาดใกล้เคียงกันก็สามารถใช้งานได้ มันเป็นเพียงเรื่องของการทำช่องว่างสำหรับหน้าจอ หากคุณมีกรอบขนาดเท่ากัน คุณสามารถ 3D print ด้านหลังได้เหมือนที่ผมทำ เพราะผมไม่สามารถตัดรูบนกระดาษแข็งที่แข็งได้...
คุณอาจสังเกตเห็นว่าผมใช้ Arduino Nano แต่ผมแนะนำให้ใช้ Arduino mini pro คุณสามารถใช้ได้ทั้งสองแบบ แต่คุณต้องถอด power regulator และ LEDs ออก หากคุณใช้ Nano คุณจะต้องถอด USB to serial chip และส่วนประกอบอื่นๆ ที่ไม่จำเป็นออกด้วย สิ่งนี้จำเป็น มิฉะนั้นแบตเตอรี่ของคุณจะหมดภายในไม่กี่วัน Arduino mini pro มีส่วนประกอบที่ไม่จำเป็นน้อยกว่า
เมื่อคุณเดินสายไฟทั้งหมดเข้าด้วยกัน ให้ใช้เทปยึดสายไฟลงเพื่อรักษาให้มันมีขนาดบาง ผมยังได้วางกระดาษที่ตัดแต่งไว้ระหว่างกระจกกับด้านหลังของกรอบรูปเพื่อซ่อนทุกอย่างยกเว้นหน้าจอ
ขั้นตอนที่ 3: ซอฟต์แวร์
ซอฟต์แวร์ถูกเขียนขึ้นใน Arduino 1.8.5 มันต้องการไลบรารีสองตัวคือ epd, และ Arduino low power ทั้งสองไลบรารีนี้ควรจะอยู่ใน library manager เมื่อติดตั้งไลบรารีทั้งสองนี้แล้ว คุณควรจะสามารถ compile และ upload โค้ดไปยัง Arduino ของคุณได้ หากคุณต้องการกำหนดค่า มีเพียงตัวแปรเดียวคือ refreshRate นี่คือระยะเวลาที่ใช้ระหว่างการโหลดรูปภาพ โดยค่าเริ่มต้น กำหนดไว้ที่ 10800 ซึ่งเท่ากับ 24 ชั่วโมง นั่นหมายความว่าหนึ่งหน่วยเท่ากับ 8 วินาที ดังนั้นการตั้งค่าเป็นหนึ่ง ภาพจะอัปเดตทุก 8 วินาที การตั้งค่าเป็น 2 จะเป็น 16 วินาที และการตั้งค่าเป็น 10800 จะเป็น 24 ชั่วโมง
<p>#include <lowpower.h><br>#include <epd.h></epd.h></lowpower.h></p><p>const int wake_up = 6;
const int reset = 5;
const int lcd_on = 4;
const int button = 3;</p><p>int refreshRate = 10800; //time between loading images. number you enter * 8 = seconds between refresh (10800 = 24h)
int counter = 1;
int refreshCounter = 0;
int ByteReceived;
bool errorFlag = false;
bool picSend = false;
bool picLoaded = false;</p><p>void(* resetFunc) (void) = 0;</p><p>void setup(void)
{
pinMode(lcd_on,OUTPUT);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
//LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}</p><p>void loop(void){
DrawPic(counter);
counter++;
}</p><p>void wakeUp(){
refreshCounter++;
if(refreshCounter < refreshRate) enterSleep();
}</p><p>void DrawPic(int index){
pinMode(lcd_on,OUTPUT);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
//delay(2000);
digitalWrite(lcd_on,HIGH);
delay(300);
epd_init(wake_up, reset);
epd_wakeup(wake_up);
ข้อมูล Frontmatter ดั้งเดิม
title: "E-Paper Picture Frame"
description: "A picture that updates every day."
author: "Gyro1"
category: "Screens & Displays"
tags:
- "e-paper"
- "e-ink"
views: 18238
likes: 8
price: 2450
difficulty: "Easy"
components:
- "1x Arduino Mini 05"
- "1x Waveshare 4.3 inch e-ink display"
- "1x Soldering iron (generic)"
tools: []
apps:
- "1x Arduino IDE"
downloadableFiles:
- "https://github.com/rocketscream/Low-Power"
- "https://projects.arduinocontent.cc/37ce1a79-9ba3-49ab-9030-e53713d02590.ino"
- "https://github.com/rocketscream/Low-Power"
- "https://github.com/sabas1080/LibraryEPD"
- "https://projects.arduinocontent.cc/37ce1a79-9ba3-49ab-9030-e53713d02590.ino"
- "https://github.com/rocketscream/Low-Power"
documentationLinks: []
passwordHash: "49b59e5c6a416ef37b01ac9a847df9cb58cc3de5963a3a9fbd8e2ded9ccc63bb"
encryptedPayload: "U2FsdGVkX1/+oS/vhrF/5d/C+dnjx7uDeQfJaghNgXabCZFJzWkcY9J5HjfVZpCK8J8nF6z/Bt/E2wmwt4sXxVQHTIV9nT9jPI71mcRjzW0="
seoDescription: "Create a daily-updating E-Paper Picture Frame using Arduino. A perfect low-power digital art project for your home or office."
videoLinks:
- "https://www.youtube.com/embed/tc0hM_71ziU"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/e-paper-picture-frame-a2cbd7_cover.jpg"
lang: "th"