เปลี่ยนเครื่องอ่าน E-Book ให้เป็นอุปกรณ์พิมพ์งานสุดเฟี้ยว
สวัสดีชาว Maker และสายแฮ็กทุกคนครับ! ถ้าพูดถึง Kindle ของ Amazon เราทุกคนคงรู้ว่ามันคืออุปกรณ์ที่สร้างมาเพื่อ "เสพ (Consume)" คอนเทนต์หรือใช้อ่านหนังสือโดยเฉพาะ แต่คุณ Roni Bandini กลับมองต่างมุม เขาคิดว่า "ทำไมเราไม่เอาหน้าจอ E-Ink ถนอมสายตานี้ มาสร้างเป็นเครื่องพิมพ์ดีดซะเลยล่ะ?"
แน่นอนว่าในแง่ของความโปรดักทีฟ (Productivity) มันอาจจะดูไม่ค่อยสมเหตุสมผลเท่าไหร่ แต่ในแง่ของความเท่และการเรียนรู้ นี่คือโปรเจกต์ระดับมาสเตอร์พีซ! เพราะคุณจะต้องทำการ Jailbreak เครื่อง Kindle, เขียนโปรแกรมบน Linux ย่อส่วน และใช้บอร์ดจิ๋วอย่าง Raspberry Pi ควบคุมเครื่องปริ้นท์ใบเสร็จ (Thermal Printer) มาดูกันครับว่าเขาทำได้ยังไง!
ฮาร์ดแวร์ที่ต้องใช้ (Hardware Components)
โปรเจกต์นี้เป็นการผสานร่างอุปกรณ์ 3 อย่างเข้าด้วยกันผ่านเครือข่าย Wi-Fi ให้ออกมาเป็นเครื่องพิมพ์ดีด 1 เครื่องครับ:
Kindle Paperwhite: เป็นหน้าจอสำหรับพิมพ์ข้อความ (จำเป็นต้องผ่านการ Jailbreak ก่อนถึงจะรันแอปพลิเคชันคัสตอมได้)
Raspberry Pi Zero 2 W : บอร์ดคอมพิวเตอร์จิ๋วที่ทำหน้าที่เป็น Web Server คอยรับข้อความจาก Kindle
Embedded Thermal Printer : เครื่องปริ้นท์ความร้อน (แบบเดียวกับเครื่องคิดเงิน) สำหรับพิมพ์กระดาษออกมา
Power Supply 5V 3A: สำหรับจ่ายไฟเลี้ยงระบบทั้งหมด
💡 Maker's Tip: โปรเจกต์นี้จะสมบูรณ์ไม่ได้เลยถ้าไม่มี เคส (Enclosure) ที่ออกแบบมาเพื่อยึดหน้าจอ Kindle และเสียบเครื่องปริ้นท์ความร้อนเข้าไว้ด้วยกันอย่างลงตัว ผู้สร้างได้ใช้โปรแกรม Fusion 360 ในการขึ้นรูปโมเดลและใช้เครื่องปริ้นท์ 3D (วัสดุ PLA พร้อมเปิด Support) ในการสร้างมันขึ้นมาครับ! หากเพื่อนๆ มีไอเดียอยากแฮ็กของใช้ในบ้าน แต่ไม่มีเครื่องปริ้นท์ 3D แวะมาใช้ บริการรับปริ้นท์ 3D Printing หรือสั่งซื้อบอร์ด Raspberry Pi Zero 2 W และอุปกรณ์อิเล็กทรอนิกส์ได้ที่ Globalbyte เลยครับ! ส่งไฟล์ 3D มาให้เราดูแล รับรองงานเนียนกริบ
ระบบทำงานยังไง? (How it works)
หลักการทำงานคือ ทั้ง Kindle และ Raspberry Pi จะต้องเชื่อมต่อ Wi-Fi วงเดียวกันครับ บน Kindle จะมีแอปพลิเคชัน (Custom app) สำหรับพิมพ์ข้อความ และเมื่อเรากดปุ่มขึ้นบรรทัดใหม่ 2 ครั้ง (Line breaks) ข้อความที่ถูกบัฟเฟอร์ไว้จะถูกส่งผ่านโปรโตคอล HTTP ไปยังบอร์ด Raspberry Pi
จากนั้น Raspberry Pi จะทำการคำนวณความยาวบรรทัดเพื่อไม่ให้คำขาดตอน (Avoid breaking words) และสั่งงานปริ้นเตอร์ความร้อนให้พิมพ์ข้อความนั้นออกมาลงบนกระดาษแบบสดๆ แถมยังบันทึกประวัติข้อความเก่าๆ เก็บไว้ได้ด้วย!
การต่อวงจรและเซ็ตอัปซอฟต์แวร์ (Circuit & Software)
การเชื่อมต่อนั้นเรียบง่ายมากครับ จ่ายไฟ 5V เข้า RPi Zero 2 W และต่อสายสื่อสารไปยังเครื่องปริ้นท์ดังนี้: GND → GND, Pin 8 (TX) → Printer RX, Pin 10 (RX) → Printer TX
ในฝั่งของซอฟต์แวร์ ฝั่ง Raspberry Pi จะรัน Python Script ที่ใช้ไลบรารี Flask ทำเป็นเซิร์ฟเวอร์ และฝั่ง Kindle จะต้องติดตั้งแพ็กเกจ KUAL และ kterm เพื่ออนุญาตให้รัน Bash Script ในการส่งข้อมูลครับ
คลิกดูผังวงจร, โมเดล 3D, โค้ดคำสั่ง และวิดีโอสาธิตการทำงาน (View more) ซ่อนข้อมูลทางเทคนิค (View less)
ผังวงจรและการออกแบบ 3D
วงจรการเชื่อมต่อระหว่าง Raspberry Pi Zero 2 W กับ Thermal Printer
การออกแบบเคส 3D ด้วย Fusion 360 สำหรับใส่ Kindle และปริ้นเตอร์
คำสั่งเซ็ตอัปบน Raspberry Pi (Raspbian)
อัปโหลดสคริปต์ Python ของผู้พัฒนาลงบอร์ด (เช่นผ่าน FTP) และติดตั้งไลบรารีที่จำเป็นดังนี้:
# ติดตั้ง Flask และไลบรารีสื่อสาร Serial
pip install pyserial flask --break-system-packages
pip install python-escpos --break-system-packages
# เปิดใช้งาน Serial port บนบอร์ด
raspi-config
# หากต้องการให้ Server รันอัตโนมัติเมื่อเปิดเครื่อง (Autostart)
crontab -e
@reboot sleep 10 && /usr/bin/python3 /home/roni/kindletypewriter.py >> /home/roni/kindletypewriter.log 2>&1
คำสั่งเซ็ตอัปบน Kindle (Bash Script)
หลังจากติดตั้ง KUAL และ kterm แล้ว ให้คัดลอกไฟล์ typewriter.sh เข้าไปที่ /mnt/us/extensions/kterm/ แล้วรันคำสั่งเพื่อให้ไฟล์ทำงานได้
# ทำให้ไฟล์รันได้
chmod +x typewriter.sh
# หากก๊อปไฟล์มาจาก Windows ให้ลบอักขระคืนค้างก่อน
sed -i 's/\r//' kindletypewriter.sh
# สั่งรันสคริปต์
bash typewriter.sh
วิดีโอสาธิตการทำงานจริง (Demo Video)
VIDEO
ทำไมถึงต้องสร้างของแบบนี้? (Why build this?)
บางคนอาจสงสัยว่า ทำไมต้องทำให้ยุ่งยาก? ในเมื่อแท็บเล็ตธรรมดาก็พิมพ์งานได้ ผู้สร้างได้ให้คำตอบที่น่าสนใจมากครับว่า "Kindle ถูกออกแบบมาเพื่อเสพข้อความ (Consume text) แต่ในโปรเจกต์นี้ มันกลายเป็นเครื่องมือที่ใช้ ผลิตข้อความ (Produce text) และแปลงมันให้ออกมาจับต้องได้ในโลกแห่งความเป็นจริงทันที"
โปรเจกต์นี้ไม่ได้ทำเพื่อเพิ่มความโปรดักทีฟ (Productivity) แต่อย่างใด แต่มันสอนให้เราตระหนักรู้ว่า ระบบต่างๆ เชื่อมต่อกันได้อย่างไร ข้อมูลเดินทางแบบไหน และซอฟต์แวร์สามารถสัมผัสกับโลกแห่งความเป็นจริง (Physical world) ได้อย่างไร บางครั้งคุณค่าของผลงาน ก็ไม่ได้อยู่ที่ว่ามันเอาไปใช้ทำอะไรได้ แต่อยู่ที่ว่าเราสามารถทะลุขีดจำกัดเดิมๆ ของอุปกรณ์ไปได้ไกลแค่ไหนต่างหากครับ
อยากแฮ็ก Kindle ของตัวเองแล้วใช่ไหม? 🤓
เนื่องจากขั้นตอนการ Jailbreak Kindle และการเขียน Python Script มีความซับซ้อน เราขอเชียร์ให้ผู้อ่านที่อยากลงมือทำจริง เข้าไปดาวน์โหลดไฟล์โมเดล 3D และดู Source Code ฉบับสมบูรณ์ได้จากคลังข้อมูลของผู้สร้างตามลิงก์ด้านล่างนี้เลยครับ!
ดาวน์โหลด Code จาก GitHub ดาวน์โหลดโมเดล 3D จาก Cults3D
*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงแนวคิดจากบทความโปรเจกต์ต้นฉบับภาษาอังกฤษ ข้อมูลการแฮ็ก (Jailbreak) อุปกรณ์อาจทำให้หมดการรับประกันหรือเกิดความเสียหายต่อระบบปฏิบัติการของเครื่องได้ ผู้สนใจควรศึกษาขั้นตอนการเชื่อมต่อ Terminal (เช่น PuTTY, kterm) และการใช้ระบบปฏิบัติการ
Raspbian อย่างละเอียดก่อนลงมือทำ