- โปรเจ็กต์สร้าง จอขนาดเล็กสำหรับแสดงข้อมูลเวลารถไฟ BART มาถึงแบบเรียลไทม์ เพื่อจำลองบรรยากาศของป้ายบนชานชาลาจริง
- ใช้ Seeed Studio XIAO ESP32C6 และ จออักขระ OLED สีแดง 20x4 เป็นฮาร์ดแวร์หลัก
- ไม่ประมวลผลข้อมูลจาก GTFS Realtime API โดยตรง แต่สร้าง เซิร์ฟเวอร์ตัวกลาง (middleware) เพื่อแปลงเป็น API แบบง่ายแล้วให้ ESP32 เรียกใช้
- เพิ่ม รายละเอียดอย่างฉลากและสกรู ลงบนเคสที่พิมพ์ด้วย 3D เพื่อให้มีรูปลักษณ์คล้ายป้าย BART จริง
- ชิ้นงานที่เสร็จแล้วติดตั้งไว้ใต้ชั้นวางเหนือจอมอนิเตอร์ และแสดง เวลามาถึง, ข้อความด้านความปลอดภัย และนาฬิกา เพื่อจำลองความรู้สึกของชานชาลาในพื้นที่ภายในอาคาร
ฮาร์ดแวร์
- โปรเจ็กต์นี้ประกอบด้วย Seeed Studio XIAO ESP32C6, SPI Red 20x4 Character OLED Display, และ SparkFun Logic Level Converter
- ESP32C6 ทำหน้าที่ขับจอแสดงผลและดึงข้อมูลเวลารถไฟ BART มาถึง
- ใช้ตัวแปลงลอจิกเลเวลเพื่อให้แรงดันไฟฟ้าเข้ากันได้
- เลือกใช้โมดูล OLED สีแดงจาก BuyDisplay เพื่อถ่ายทอดความรู้สึกของป้ายบนชานชาลา BART จริง
- แม้ PCB จะใหญ่กว่าตัวจอเล็กน้อยและส่งผลต่อขนาดสุดท้าย แต่ก็ยอมรับได้เพื่อความพึงพอใจด้านภาพลักษณ์
- อุปกรณ์ทั้งหมดบัดกรีลงบน perfboard และเชื่อมต่อด้วย header pin ทำให้สามารถ ติดตั้งเข้ากับจอได้โดยตรงในลักษณะคล้ายคาร์ทริดจ์
โครงสร้างเฟิร์มแวร์
- BART Official API ใช้รูปแบบ GTFS Realtime ที่พัฒนาร่วมกับ Google
- เนื่องจากยากต่อการพาร์สโดยตรงบน ESP32 จึงสร้าง เซิร์ฟเวอร์ตัวกลาง (middleware) ขึ้นมา
- เซิร์ฟเวอร์จะดึงข้อมูล GTFS แล้วแยกเฉพาะข้อมูลที่ต้องใช้
- จากนั้นแปลงเป็น API แบบง่าย ที่ ESP32 เรียกใช้ได้
- โค้ดที่เกี่ยวข้องเผยแพร่ไว้ใน GitHub repository (filbot/bart-proxy)
เดโมและการประกอบ
- ประกอบอุปกรณ์ทั้งหมดเข้าด้วยกันและทดสอบ เคสพิมพ์ 3D เวอร์ชันแรก
- ในวิดีโอสาธิต ชิ้นงานที่ประกอบเสร็จในขั้นตอนก่อนทำสีทำงานในสถานะ รับข้อมูลแบบเรียลไทม์
- มีขั้นตอนการประกอบเพื่อใช้ตรวจสอบขนาดจริงและสัดส่วน
งานเก็บรายละเอียดและรูปลักษณ์ภายนอก
- เก็บผิวชิ้นส่วนที่พิมพ์ 3D ด้วย การขัด, ลงไพรเมอร์ และพ่นสี
- พิมพ์โลโก้ผู้ผลิตป้าย BART จริงและหมายเลขชานชาลาด้วย เครื่องพิมพ์ฉลาก Brother แล้วนำไปติดตั้ง
- ไฟล์โมเดล 3D ที่เสร็จสมบูรณ์สามารถดาวน์โหลดได้จาก Makerworld
ผลลัพธ์สุดท้าย
- ชิ้นงานที่เสร็จแล้วติดตั้งด้วยเทปสองหน้าไว้ ใต้ชั้นวางโลหะเหนือจอมอนิเตอร์
- บนจอจะแสดง เวลารถไฟมาถึง, เวลาปัจจุบัน และข้อความความปลอดภัยของ BART
- แม้จะตรวจสอบข้อมูลเรียลไทม์ผ่านเว็บได้เช่นกัน แต่ จอแสดงผลในรูปแบบโมเดลย่อส่วนของชานชาลาจริง มอบประสบการณ์การใช้งานที่สนุกกว่ามาก
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เป็นโปรเจ็กต์ที่เจ๋งมาก เมื่อก่อนฉันก็เคยออกจากบ้านตามตารางเวลาสถานีเหมือนกัน แต่ไม่นานก็ ตระหนักว่ามันไม่ได้มีประโยชน์อะไร
แค่ออกไปตอนที่สะดวก ความเครียดจากการต้องวางแผนก็หายไป และถึงเวลาเฉลี่ยที่ต้องรอจะเพิ่มขึ้นนิดหน่อยก็ยังสบายใจกว่ามาก
วันที่อุณหภูมิประมาณลบ 20 องศา การรอ 1 นาทีกับ 7 นาทีต่างกันมากจริงๆ
ดูเพิ่มเติมได้ในบทความ Medium
ช่วงเวลานั้นฉันสามารถทำ SSR flashcards หรืออ่านหนังสือเพื่อปรับอารมณ์ให้สงบได้
โดยเฉพาะสถานี South San Francisco ที่เพดานสูงมาก และยังได้ยินเสียงนกพิราบอีก เลยให้บรรยากาศเหมือนโบสถ์เลย
ฉันก็ทำอะไรคล้ายๆ กันไว้เหมือนกัน เป็น โปรเจ็กต์จอสี ที่ใช้ข้อมูลขนส่งของสวิตเซอร์แลนด์ และทำออกมาเป็นสินค้าแล้วด้วย
ดูบทความโปรเจ็กต์และเว็บไซต์สินค้า
ใช้ข้อมูลสาธารณะที่รัฐบาลให้มาบน ESP32-S3
งานออกมาดีมาก การเลือกจอก็ยอดเยี่ยม
ถ้าอยากลด middleware, ลองใช้ LLM รุ่นใหม่แปลงภาษาโค้ดดูก็เป็นวิธีหนึ่ง
ESP แรงพอที่จะจัดการงาน API เองได้อยู่แล้ว ดังนั้นถ้าให้ LLM ช่วยแปลงก็จะได้ ผลด้านการเรียนรู้ สูงด้วย
โปรเจ็กต์แบบนี้สร้างแรงบันดาลใจได้มากจริงๆ
รายละเอียดเล็กๆ น้อยๆ ทำให้มันดูเหมือน ป้ายขนาดย่อส่วน ของสถานีจริง งานเนี้ยบมาก
ทุกครั้งที่เห็นจอนี้ ก็เหมือนมี เสียงประกาศของ BART ดังขึ้นมาในหัวโดยอัตโนมัติ
บทความที่เกี่ยวข้อง: บทความเกี่ยวกับเสียงประกาศ BART
เป็นงานประกอบที่เท่มาก น่าจะช่วยเปลี่ยนบรรยากาศในห้องไปได้เยอะเลย
มีข้อเสนอด้านฟังก์ชันอย่างหนึ่ง — อยากให้เพิ่ม เสียงหุ่นยนต์
อ้างอิง: บทความเกี่ยวกับเสียงประกาศ BART
แต่คนอื่นบอกว่ามันเสียงดังเกินไป เลยต้องปิดอย่างรวดเร็ว
สมัยก่อนถ้าชานชาลาเปลี่ยน ก็ต้องคอยเช็กเองทั้งหมด
พอเห็นบทความนั้นก็คิดขึ้นมาว่า “ต้องหาเสียงนี้ให้เจอ” แล้วก็เหมือนเจอสิ่งนั้นพอดี
ฉันได้แรงบันดาลใจจาก การออกแบบ real-time API ที่เรียบง่ายและสะอาดมาก
ทำให้รู้สึกว่าน่าจะเข้าถึงได้ง่ายกว่าตอนที่เคยจัดการข้อมูล GTFS มาก
โดยรวมแล้วทั้งความเนี้ยบและรายละเอียดทำออกมาได้ยอดเยี่ยมมาก บรรยากาศและความดื่มด่ำ ดีจริงๆ
ฉันเองก็เคยอยากทำอะไรคล้ายๆ กันที่แสดงข้อมูลรถไฟหน้าบ้าน
แต่ยังหา API ที่เชื่อถือได้ ไม่เจอ