สร้าง Bitcoin BlockClock

ผมเริ่มคิดจะทำ project นี้จากการที่ไปเห็น Blockclock ของ Coinkite เป็นเหมือนนาฬิกาที่สามารถตั้งค่าให้แสดงผลราคา bitcoin หรือ block ของ bitcoin ก็ได้ ซึ่งมันเจ๋งมากกกก แต่พอกดเข้าไปดูราคาเท่านั้นแหละ ในหัวเกิดคำถามมันแพงอะไรนะ พอกดเข้าไปดู
ตัวอุปกรณ์ลึกๆ แล้วก็เจอว่า เขาใช้ FreeRTOS รันบน chip ESP32 ส่วน Program ก็ใช้
MicroPython แสดงผลด้วย จอ E-Paper ทั้งหมด 7 ตัว เอาหละได้ข้อมูลคร่าวๆ ที่พอจะ
วางแผนสร้างมันขึ้นมาเองด้วยราคารวมที่ประหยัดกว่า แต่ฟังชั่นอาจจะไม่ได้ครบเท่าก็เถอะ

หาความเป็นไปได้ของ Project นี้ก่อน

ปัญหาแรก : ผมไม่ค่อยรู้เลยคือเรื่องของจอ E-paper ไม่รู้ว่าจะต่อกับ controller ได้ยังไงบ้าง ผมก็ลองค้นหาดูพักใหญ่ก็เจอว่า โอเค E-paper มันมี interface SPI ให้ใช้เชื่อมต่อได้ซึ่งจะต่อกับ Micro Controller หลายๆ ตัวได้

ปัญหาที่สอง : แล้วจะทำยังไงให้จอทั้ง 7 ตัวทำงานได้พร้อมกัน ผมก็เลยต้องค้นหาต่อในเรื่องของ SPI1 protocol เพื่อให้เข้าใจมากขึ้นอีกหน่อยว่ามันทำงานยังไง ซึ่งเท่าที่ผมเข้าใจคือ SPI เป็น protocol ที่การสื่อสารแบบอนุกรมที่ใช้สัญญาณนาฬิกามาเป็นตัวกำหนดจังหวะการรับส่งข้อมูลระหว่างอุปกรณ์ฝั่ง Master กับ Slave โดยฝั่ง Slave มีอุปกรณ์ได้
มากกว่า 1 ตัว นั่นก็หมายความว่ามีความเป็นไปได้ที่ผมจะเขียน script ให้มันใช่ SPI protocol ในการควบคุมให้จอ E-paper ทำงานได้หลายตัวพร้อมกัน

ปัญหาที่สาม : จะใช้ Micro Controller ตัวไหนดีหละ ในตัวอย่างเขาใช้ ESP32 ซึ่งตอนที่หาข้อมูลอยู่ก็ไปเจอว่า raspberry pi ก็มีตัวที่คล้ายๆ กัน คือรุ่น Raspberry pi pico w
มันก็ได้

เอาหละตอบคำถามตัวเองได้แล้วก็หาอุปกรณ์มาลองทำดูเลย

  1. Raspberry pi pico W x 1 = 200 บาท
  2. E-paper 2.9″ Black and White x 7 = 2870 บาท
  3. PCB แบบไข่ปลา 10×22 ซม. x 1 = 45 บาท
  4. Socket 8 pin ตัวเมีย x 7 = 112 บาท
  5. เสารองบอร์ดและน๊อตตัวเมียแบบไนลอน = 300 บาท
  6. แผ่นอะคริลิค หนา 3 มม. สีดำ ขนาด 30×40 ซม. x 1 = 67 บาท
  7. แผ่นอะคริลิค หนา 3 มม. สีใส ขนาด 30×40 ซม. x 1 = 67 บาท
  8. คัตเตอร์ตัดอะคริลิค x 1 = 220 บาท
  9. สายไฟสำหรับเชื่อมจอ E-paper

เริ่มประกอบร่างเลย

ผมเริ่มจากร่างวงจรเชื่อมต่อระหว่าง Pi Pico W กับจอ E-paper ทั้ง 7 ตัว โดยดูจากตารางที่ทำไว้จะได้ไม่หลงต่อผิด

ตาราง pin ที่ใช้เชื่อมต่อกับจอ e-paper
ภาพ wiring สายไฟจาก raspberry pi pico w กับ จอ

ผมตัดบอร์ดไข่ปลาตามขนาดที่ต้องการและค่อยๆ บัดกรีสายไฟเชื่อมต่อ pin ระหว่าง pi pico กับจอ e-paper ตามในตารางที่ทำไว้

ภาพด้านหลังบอร์ด

หลังจากที่ประกอบทุกอย่างเสร็จแล้วก็จะได้หน้าตาประมาณนี้ ส่วนของแผ่นอะคริลิคผมไม่ได้ถ่ายรูปตอนทำไว้ เพราะตอนที่ทำเจอปัญหาเนื่องจากผมไม่มีเครื่องตัดที่ดี ใช้แค่คัตเตอร์ตัดแผ่นอะคริลิคก็เลยทำให้การตัดนั้นยาก แต่ก็พยายามทำให้ได้ออกมาใกล้เคียงกับ
ภาพในหัว

ภาพตอนประกอบทุกอย่างเข้าด้วยกันแล้ว

มาเขียนโค๊ดกันต่อ

ผมเริ่มด้วยการดูจากเว็บ www.instructables.com ซึ่งมีวิธีการต่อ PI pico w
กับ E-paper display ได้ ในเว็บได้แนะนำวิธีการตั้งแต่การติดตั้ง Program Thonny ใน Windows เพื่อใช้เขียนโปรแกรมและ upload ไปที่ pi pico ได้เลย ซึ่งผมก็ลองดาวน์โหลด Example script มาแล้วลอง upload เข้าไปที่ pi pico ดูก่อนเพื่อจะเช็คว่าสายไฟที่เชื่อมต่อถูกต้องรึเปล่า ซึ่งก็มีผิดพลาดในบางจอที่สัญญาณไม่เข้าเพราะผมต่อผิด pin เลยต้องกลับไปนั่งบัดกรีแก้ไขมันอีกนิดหน่อย

Source code : https://github.com/oamizo/oamiclk

  1. https://en.wikipedia.org/wiki/Serial_Peripheral_Interface ↩︎