- ดัดแปลง Kindle Touch รุ่นที่ 4 รุ่นเก่าให้กลายเป็นแดชบอร์ดจอ e-ink สำหรับแสดง เวลารถบัส NJ Transit มาถึง ที่อัปเดตทุก 1 นาที
- สร้างสภาพแวดล้อมสำหรับรันแอปแบบกำหนดเองผ่าน Jailbreak, KUAL, MRPI และการตั้งค่า SSH แล้วใช้ เซิร์ฟเวอร์ที่ใช้ Node สร้างภาพเพื่อแสดงบน Kindle
- เซิร์ฟเวอร์ดึงข้อมูลรถบัสผ่าน GraphQL API จัดรูปแบบเป็น HTML แล้วสร้าง PNG ด้วย wkhtmltoimage เพื่อให้ Kindle ดึงไปแสดงเป็นระยะ
- สร้าง แอป KUAL ขึ้นมาเองเพื่อให้สามารถออกจากแดชบอร์ดได้ด้วยปุ่มเมนู และใช้ bash trap กับ rtcwake เพื่อจัดการพลังงานและควบคุมการรีเฟรชอัตโนมัติ
- แบตเตอรี่อยู่ได้ราว 5 วัน และยังมีพื้นที่ให้ปรับปรุงปัญหาเงาภาพบนหน้าจอ พร้อมแสดงให้เห็นถึง ศักยภาพของการใช้จอ e-ink กับข้อมูลเรียลไทม์
เปลี่ยน Kindle ให้เป็นจอแสดงข้อมูลเวลารถบัสมาถึง
- ดัดแปลง Kindle Touch รุ่นที่ 4 ให้เป็น ป้ายข้อมูลเวลารถบัสมาถึงแบบเรียลไทม์
- รีเฟรชหน้าจอทุก 1 นาที และสามารถออกจากโหมดแดชบอร์ดได้ด้วยปุ่มเมนู
- ทำฟังก์ชันคล้ายผลิตภัณฑ์เชิงพาณิชย์อย่าง TRMNL ได้ฟรี
1. Kindle Jailbreak
- ตรวจสอบ เวอร์ชันเฟิร์มแวร์ ของ Kindle แล้วดาวน์โหลด ไฟล์ tar ที่ตรงกับเวอร์ชันนั้นเพื่อทำ ขั้นตอน Jailbreak
- เมื่อสำเร็จแล้วจึงไปต่อที่ขั้นตอนติดตั้ง KUAL และ MRPI
2. ติดตั้ง KUAL และ MRPI
- ใช้ KUAL เป็นตัวเปิดแอปแบบกำหนดเอง และ MRPI เป็นเครื่องมือติดตั้งแอป
- ก่อนติดตั้งต้องทำ การตั้งค่า Hotfix ให้เรียบร้อยก่อน
- หลังติดตั้งแล้วให้ ปิดใช้งาน OTA update เพื่อบล็อกการอัปเดตอัตโนมัติ
3. ตั้งค่า SSH
- สามารถเชื่อมต่อ SSH เข้า Kindle ได้ผ่าน ส่วนขยาย USBNetwork
- อ้างอิงคู่มือจากบล็อกภายนอกเพื่อตั้งค่า การเชื่อมต่อ SSH ผ่าน USB
- เมื่อเชื่อมต่อสำเร็จ Kindle จะปรากฏเป็นอุปกรณ์ใหม่ในแท็บเครือข่ายของคอมพิวเตอร์
4. สร้างเซิร์ฟเวอร์และสร้างภาพ
- ใช้ NJ Transit GraphQL API เพื่อดึงข้อมูลเวลารถบัสมาถึง
- เก็บข้อมูลเส้นทาง เวลามาถึง ความหนาแน่นผู้โดยสาร ฯลฯ ด้วยคิวรี
getBusArrivalsByStopID
- ใช้ wkhtmltoimage แทน puppeteer เพื่อแปลง HTML เป็น PNG
- เซิร์ฟเวอร์จะสร้างภาพใหม่ทุก 3 นาที และ Kindle จะร้องขอภาพดังกล่าว
- โค้ดที่เกี่ยวข้องเปิดเผยไว้ใน GitHub repository
kindle-hax/server
- ปรับการหมุนและการจัดวางภาพให้ตรงกับความละเอียดหน้าจอ Kindle (เช่น 600x800)
- ใช้
transform: rotate(90deg) translateX(-100px) translateY(-100px); เพื่อแสดงผลในแนวตั้ง
5. สร้างแอป KUAL
- สร้างส่วนขยาย KUAL แบบกำหนดเองเพื่อ ควบคุมการเริ่ม/หยุดแดชบอร์ด
- วางโฟลเดอร์ไว้ที่
/mnt/us/extensions/ แล้วจะแสดงเมนู ‘Start dashboard’ ใน KUAL
- สคริปต์ start.sh ใช้การเพิกเฉยต่อสัญญาณ (
trap '' HUP, trap '' TERM) เพื่อให้รันได้อย่างเสถียร
- ฟังก์ชัน
refresh_screen() จะดาวน์โหลดภาพจากเซิร์ฟเวอร์แล้วแสดงด้วยคำสั่ง eips
- แสดงวันที่ สถานะ Wi‑Fi และระดับแบตเตอรี่ไว้ด้านบน
- ใช้ evtest เพื่อตรวจจับอินพุตปุ่มเมนู (
code 102 (Home), value 1) แล้วรัน stop.sh
- ทำการปิดแดชบอร์ดและรีสตาร์ต Kindle UI
6. ผลลัพธ์การใช้งานและจุดที่ควรปรับปรุง
- แบตเตอรี่อยู่ได้ประมาณ 5 วัน และถ้าปิดเครื่องตอนกลางคืนอาจยืดเพิ่มได้อีก 2 วัน
- ปัญหา เงาภาพบนหน้าจอ (color bleeding) อาจปรับปรุงได้ด้วยการแฟลชขาวดำแบบเต็มหน้าจอ
- ใช้งานอยู่ทุกวัน และยืนยันได้ว่าสามารถขยายไปแสดง ปฏิทิน สภาพอากาศ งานที่ต้องทำ และข้อมูลอื่น ๆ ได้อีก
2 ความคิดเห็น
ผมก็เพิ่งทำอะไรคล้าย ๆ กันเมื่อไม่นานนี้เหมือนกัน ถ้าไม่ได้รำคาญที่ต้องเห็นแถบ URL ด้านบน ก็สามารถโหลดหน้าเว็บตรง ๆ ได้เลย
Kindle โดยพื้นฐานแล้วสามารถเข้า URL ผ่านเว็บเบราว์เซอร์ได้อยู่แล้ว ดังนั้นก็แค่เปิดแดชบอร์ดจากตรงนั้น
ที่บริษัทผมใช้ Kindle ส่วนที่บ้านใช้ Paperwhite รุ่นเก่า โหลดหน้าเดียวกันอยู่ ก็ถือว่าเป็นแบบครอสแพลตฟอร์มเหมือนกันครับ 555
แน่นอนว่า ถ้าจะให้ Kindle อยู่ในโหมดเปิดค้างตลอด ก็ต้องรูตหรือทำอะไรทำนองนั้น
แต่ Paperwhite ไม่ถึงกับต้องรูต แค่เปิดให้เชื่อมต่อ
adbได้ แล้วสั่งปิดสกรีนเซฟเวอร์จากตรงนั้นก็พอครับความคิดเห็นบน Hacker News
ในฐานะคนที่เคยทำงานเกี่ยวกับ การใช้พลังงานของ Kindle มาก่อน แหล่งที่กินไฟมากที่สุดคือการเชื่อมต่อ WiFi
เพราะ WiFi ต้องตอบสนองกับ AP เป็นระยะเพื่อไม่ให้การเชื่อมต่อหลุด
เท่าที่จำได้ ตอนปิด WiFi จะกินไฟราว 700uA และตอนเปิดจะอยู่ที่ประมาณ 1.5mA
ตอนเปลี่ยนหน้า การใช้ไฟจะพุ่งขึ้นชั่วขณะถึงระดับหลายร้อย mA และจะมีการรีเฟรชทั้งหน้าจอเป็นระยะเพื่อลด อาการ ghosting
ต้องใช้แหล่งจ่ายไฟที่จ่ายกระแสชั่วขณะได้ราว 1.5A และเมื่อเอา USB hub แบบมีไฟเลี้ยง รุ่นเก่ามาต่อกับ Raspberry Pi แล้วควบคุมผ่าน SSH ก็ทำงานได้เสถียรหลายเดือนโดยไม่ต้องใช้ WiFi
แม้จะใช้งานน้อยกว่า 30 ครั้งต่อเดือน แต่พอปิด WiFi แล้วประสิทธิภาพแบตเตอรี่ก็น่าทึ่งมาก
ยังไม่ได้ดัดแปลง Paperwhite Kindle แต่ตั้งใจว่าจะเอา โฆษณาหน้าจอล็อก ออกอย่างน้อย
ตอนนี้ถึงเข้าใจอย่างชัดเจนแล้วว่าทำไม โหมดเครื่องบินถึงทำให้แบตเตอรี่อึดขึ้น
ฉันใช้วิธีที่ง่ายกว่านั้นอีก
หลัง Jailbreak ก็เข้า SSH แล้วสร้างสคริปต์สองตัวให้รันทุก 1 นาทีและทุก 30 นาที
ทั้งสองสคริปต์แสดงภาพเดียวกัน แต่ตัวที่รันทุก 30 นาทีจะเพิ่มการรีเฟรชเต็มหน้าจอ
ฝั่ง Raspberry Pi ใช้ rsync ส่งภาพมา และสคริปต์ Python จะดึง ข้อมูลคุณภาพอากาศ จาก MySQL มาประกอบเป็นภาพ
Kindle มีหน้าที่แค่แสดงภาพ จึงทำงานได้เสถียรมาก
ขอแค่รองรับการเชื่อมต่อที่ปลอดภัยอย่าง TLS ก็พอ
การแฮ็ก Kindle เป็นงานที่สนุกมากจริง ๆ
ใน eBay หา Kindle รุ่นเก่าได้ในราคา 15~20 ยูโร และฉันก็สนุกกับการทดลองแบบเดียวกันนี้เมื่อปีที่แล้ว
รายละเอียดขั้นตอนเขียนไว้ในบล็อกโพสต์ของฉัน
ถึงจะเล็ก แต่ถ้าลงเฟิร์มแวร์ Crosspoint ก็ใช้เป็นเครื่องอ่าน e-ink แบบพกพาได้
วิดีโอ YouTube, Crosspoint GitHub
ราคาอาจแพงกว่านิดหน่อย แต่ก็อาจเป็นผลิตภัณฑ์ที่รีไซเคิลหน้าจอ Kindle มาใช้
อ่านโพสต์นี้แล้วทำให้อยากลองแพลตฟอร์มอย่าง Cloudflare Workers เพิ่มอีก
ฉันเปลี่ยน Kindle เก่าให้เป็น กรอบภาพที่สร้างด้วย AI
ทุก ๆ ไม่กี่ชั่วโมงจะมีการสร้างภาพใหม่ และในพรอมป์ต์สามารถใส่สภาพอากาศ สัตว์ ประเทศ หรือพาดหัวข่าวได้
ทุกอย่างประมวลผลแบบโลคัลบนเซิร์ฟเวอร์ที่บ้านด้วย ollama + stable-diffusion-webui
แต่ภาพที่อิงจากข่าวจะหม่นเกินไป เลยสั่ง AI ให้ปรับเป็น โทนเชิงบวก
วันฝนตกในภาพก็จะมีฝนตกด้วย หน้าหนาวก็มีหิมะตกประมาณนั้น
แบตเตอรี่อยู่ได้หลายสัปดาห์ และฉันยังแก้ Online Screensaver extension ให้สลับเข้าโหมดเครื่องบินอัตโนมัติด้วย
เวอร์ชัน Kindle dashboard ที่ฉันทำ เปิดโค้ดไว้บน GitHub
มันแสดงข้อมูลอากาศท้องถิ่นและข้อมูลเพลงจาก media server
ปัญหา ghosting ของหน้าจอแก้ได้ด้วยการสั่งรีเฟรชทั้งหน้าจอเป็นระยะผ่านคำสั่ง
eips -fเป็นครั้งแรกที่ทำให้ฉัน อยากเรียน Rust ขึ้นมาจริง ๆ
ที่รัฐควีนส์แลนด์ ออสเตรเลีย มีการใช้งาน ป้ายแนะนำป้ายรถเมล์ e-paper พลังงานแสงอาทิตย์ อยู่
มันใหญ่กว่า Kindle มาก แต่หลักการคล้ายกัน
แนะนำโครงการ, วิดีโอสาธิต
โปรเจกต์นี้ทำให้นึกถึง โปรเจกต์ SystemSix
ช่วงนี้ดูเหมือนทุกคนจะทำ โปรเจกต์ดัดแปลง Kindle กันแบบนี้
ฉันเองก็โม K4NT ให้เป็นเซิร์ฟเวอร์แสดงตารางนัดหมายของครอบครัว
ได้ AI ช่วยนิดหน่อย และใส่ อินเสิร์ตพิมพ์ 3D ลงในกรอบรูป Ikea พร้อมติด MagSafe power bank
แค่กดปุ่มเปิดเครื่องทุก 5 วันก็พอ และตั้งใจจะเปลี่ยนแบตเตอรี่ภายในภายหลัง
การต่อสายใช้งานจริงในสภาพแวดล้อมของฉันทำไม่ได้
ถ้า ปิดเครือข่ายไว้ระหว่างรอบรีเฟรช อายุแบตเตอรี่จะเพิ่มขึ้นชัดเจน
ฉันบล็อกไม่ให้อัปเดตตั้งแต่ 4 ทุ่มถึง 6 โมงเช้า
บน GitHub มีสคริปต์ประหยัดแบตเยอะมาก
ก่อนหน้านี้ฉันก็เคยทำตัวแสดงข้อมูลขนส่งสาธารณะจาก GTFS ด้วย Raspberry Pi Zero + e-ink 2 นิ้ว
บทความ Kindle dashboard, โปรเจกต์ Transit Pi
การ ทำภาพข้อมูลของเครื่องใช้ไฟฟ้าอัจฉริยะแบบนี้ มีเสน่ห์จริง ๆ
ฉันชอบใช้ Kindle เป็นจอแสดงผลเฉพาะทาง
ที่จริงฉันกลับชอบ Kindle Fire แบบ LCD มากกว่า eInk
ถ้าเปิดโหมดนักพัฒนา ก็สามารถเปิดเว็บเพจทิ้งไว้ตลอดและใช้งานแบบไม่มีโฆษณาได้
Kindle Fire HD10 หาได้ในราคาราว 40 ดอลลาร์
LCD ที่ไม่มี ghosting และอ่านได้ในที่มืด ถือเป็นอัปเกรดที่ยอดเยี่ยมสำหรับทำ dashboard