จี้จำลองของไหล
(mitxela.com)- โปรเจกต์ฮาร์ดแวร์ทำมือที่ใส่ การจำลองของไหลแบบ FLIP แบบเรียลไทม์ และจอ LED ทรงกลมไว้ในเครื่องประดับขนาดเล็ก โดยมีเป้าหมายเป็นวัตถุจำลองที่สวมใส่ได้
- โอเวอร์คล็อก STM32L432KC เป็น 100MHz และรวม accelerometer, วงจรชาร์จ และชิปตรวจสอบแรงดันไว้บน PCB 4 ชั้นหนา 0.8mm ทำให้จัดการทั้งการคำนวณและการแสดงผลได้ภายในจี้ขนาดเล็ก
- ด้วย diagonal charlieplexing และการขับแบบวนด้วย DMA จึงลดจำนวน via และ overhead ของการแสดงผลได้ แต่ก็เผยให้เห็นกับดักด้านการผลิต เช่น การจัดวาง LED และ solder bridge
- การทำ FLIP อ้างอิงจากบทเรียนของ Ten Minute Physics และนำมา reimplement โดย particle collision และ hashgrid ส่งผลอย่างมากต่อเสถียรภาพและความเร็ว แม้ในขนาดเล็ก 8x8
- ทำจี้เสร็จทั้งหมด 10 ชิ้น แต่ยังมีจุดที่ต้องปรับปรุง เช่น ทิศทางของกระจก/ gasket, การป้องกันคอนเน็กเตอร์ชาร์จ และการกลึงเคสโลหะ ทำให้ดูไม่ง่ายที่จะผลิตจำนวนมาก
อุปกรณ์จำลองของไหลที่สวมใส่ได้
- จี้จำลองของไหล เป็นเครื่องประดับทำมือที่รันการจำลองของไหลแบบ FLIP แบบเรียลไทม์
- ใช้เคสชุบทองและกระจกนาฬิกาเป็นหน้าต่างป้องกัน โดยจอ LED ทรงกลมด้านในแสดงการเคลื่อนไหวของของไหล
- จี้ชิ้นแรกทำขึ้นในเดือนมีนาคม 2024 และหลังจากนั้นในช่วงหลายเดือนก็มีการทำเพิ่มอีกหลายชิ้น
- ตอนนี้มีจี้จำนวนเล็กน้อย และบางชิ้น วางขายอยู่ จนกว่าสินค้าจะหมด
- แรงจูงใจในการออกแบบและกระบวนการช่วงแรกดูได้ใน วิดีโอ YouTube ด้วย
การออกแบบที่ต่อยอดจาก Simsim สู่จี้
- หลังจากแอนิเมชัน volumetric display ก่อนหน้านี้ โปรเจกต์นี้เริ่มจากแนวทางที่จะทำ การจำลองของไหลแบบเรียลไทม์ เพื่อสร้าง snow globe เสมือนแบบ 3D ในท้ายที่สุด
- แนวคิด Simsim ที่เกิดขึ้นระหว่างทางกลายเป็นพื้นฐานของจี้นี้
- ผลลัพธ์คือไม่เพียงได้การจำลองของไหล แต่ยังพบข้อดีที่คาดไม่ถึงของ จอแบบ diagonal charlieplexed ด้วย
องค์ประกอบฮาร์ดแวร์
- ชิ้นส่วนหลักมีดังนี้
- STM32L432KC: ARM Cortex-M4 พร้อม FPU, โอเวอร์คล็อกเป็น 100MHz
- ADXL362: accelerometer พลังงานต่ำมาก
- MCP73832: คอนโทรลเลอร์ชาร์จแบตเตอรี่ LiR2450
- TPS7A02: regulator พลังงานต่ำมาก
- TPS3839: ชิปตรวจสอบแรงดันไฟเลี้ยง
- วงจรถูกสร้างบน PCB 4 ชั้นหนา 0.8mm
- ใช้แบตเตอรี่ coin cell LiR2450 และแบบสุดท้ายรวมคอนโทรลเลอร์ชาร์จกับระบบป้องกันแรงดันต่ำไว้ด้วย
- ตั้งเป้าให้ใช้งานได้ประมาณ 10 ชั่วโมง เมื่อชาร์จเต็ม
Diagonal charlieplexing และการขับจอแสดงผล
- Diagonal charlieplexing ลดจำนวน via ได้ครึ่งหนึ่งเมื่อเทียบกับเมทริกซ์แบบเดิม
- ในจอ LED pitch เล็ก จำนวน via มักเป็นข้อจำกัด จึงให้ผลมาก
- LED ที่อยู่ใน net เดียวกันถูกวางไว้คนละปลาย ทำให้ solder bridge ส่วนใหญ่ไม่กระทบประสิทธิภาพ
- ขับเมทริกซ์จอด้วย โหมดวนของ DMA โดยไม่มี overhead
- หากจัดการ DMA สอง stream ก็สามารถขับเมทริกซ์ charlieplexed ด้วยวิธีเดียวกันได้
- ต้องมี lookup table เพื่อเชื่อม LED กับ pixel
- แม้เปลี่ยน mapping ก็ไม่มีต้นทุนเพิ่ม
- สัญญาณเมทริกซ์สามารถต่อเข้ากับ pin ใดของพอร์ตไมโครคอนโทรลเลอร์ก็ได้ ทำให้ routing ง่ายขึ้น
- หากขับจอขนาดใหญ่จาก GPIO โดยตรง อาจเกิดปัญหาความสว่างจาก on-resistance ของ output FET
- charlieplexing เปิดทีละ pixel เท่านั้น ผลของ on-resistance จึงสะท้อนกับทุก pixel อย่างเท่า ๆ กัน
- ยังควบคุมความสว่างของจอได้ด้วยการเปลี่ยนแรงดันของไมโครชิป
การทำ FLIP fluid simulator
- การจำลอง FLIP อ้างอิงจากงาน Ten Minute Physics ของ Matthias Müller โดยเฉพาะบทเรียน “How to write a FLIP Water Simulator”
- โค้ดไม่ได้ port โดยตรง แต่เป็นการ reimplement ตามบทเรียน
- ในการจำลองของไหลแบบ Eulerian จะจัดการการเคลื่อนที่ของของไหลด้วย advection แต่ใน FLIP การเคลื่อนที่ของอนุภาคเป็นตัวพาของไหล จึงไม่ใช้ขั้นตอน advection แยกต่างหาก
- ไม่สามารถละขั้นตอน particle collision ได้
- หากตัดขั้นตอน collision ออก ของไหลทั้งหมดจะพังทลายกลายเป็นก้อนที่ซ้อนทับกัน
- อนุภาคจะผลักกันด้วย impulse ที่แปรผกผันกับระยะทาง
- โค้ดสุดท้ายมีสวิตช์สำหรับสลับระหว่าง collision แบบง่ายกับ hashgrid collision
- hashgrid มี overhead ทั้งด้านการคำนวณและการทำความเข้าใจ แต่แม้ในขนาดเล็กอย่าง 8x8 ก็ช่วยเพิ่มความเร็วได้มาก
- พบว่าในตัวอย่างของ Ten Minute Physics มีข้อผิดพลาดเล็กน้อยในเงื่อนไขขอบด้านซ้าย ทำให้ของไหลไม่หยุดนิ่ง
การทดลองจำลองและการประเมินหน่วยความจำ
- ระหว่างพัฒนา เกิดผลลัพธ์การจำลองของไหลที่ผิดปกติหลากหลายแบบ และเมื่อ render อนุภาค มักดูคล้ายไข่กบ
- density plot แสดงจำนวนอนุภาคที่ซ้อนทับในแต่ละ grid cell และเมื่อชนกำแพงก็เกิดเอฟเฟกต์ภาพคล้าย shock wave
- หลังเปิดเผยแนวคิด Simsim ประมาณ 2 สัปดาห์ ก็สร้างเดโม Simsimsim ขึ้นมา
- เป็นเครื่องมือทดสอบภายในเพื่อตรวจว่าแม้ลดความหนาแน่นของ LED ลงแค่ไหนยังดูเหมือนของไหลอยู่
- ยังใช้ประเมิน RAM ที่ต้องใช้สำหรับการ port ไปยัง bare metal แบบคร่าว ๆ
- STM32L432KC มี RAM 64KB และจอเส้นผ่านศูนย์กลาง 16 ต้องใช้ประมาณ 26KB
- โค้ดต้นฉบับของเดโมและจี้ยังไม่ได้เผยแพร่ แต่มีแผนจะเผยแพร่ในภายหลัง
การทำจี้ชิ้นแรก
- ก่อนผลิต PCB ได้ทำ prototype เดินสายมือเพื่อตรวจว่า pattern จอแบบ charlieplexed ใช้งานได้จริงหรือไม่
- ยึด LED ด้วยการ์ดที่ตัดด้วยเลเซอร์ และเชื่อม เมทริกซ์ 8x9 เข้ากับบอร์ดพัฒนา STM32L432
- การบัดกรีลวดเคลือบอีนาเมลยุ่งยากมาก จึงรีบออกแบบ PCB
- การจำลอง FLIP ถูกรันบน L432 ก่อนในรูป สี่เหลี่ยม 8x8 ขนาดเล็ก แล้วจึงขยายเป็นเหมือนพื้นที่มุมซ้ายบนของจี้เสมือน
- เมทริกซ์ charlieplexed แบบเดิมต้องมี via อย่างน้อยหนึ่งตัวต่อ LED แต่การจัดเรียงแนวทแยงลดสิ่งนี้ได้มาก
- จาก LED 240 ดวงที่ทำได้ด้วย GPIO 16 ขา จอจริงต้องใช้เพียง LED 216 ดวง
- ตั้งใจให้จอเป็นวงกลม แต่ที่เส้นผ่านศูนย์กลาง 16 วิธีจัดวางทำให้ดูคล้าย แปดเหลี่ยม
การออกแบบ PCB และโครงสร้างกลไก
- การออกแบบ PCB แรกง่ายกว่าที่คาด และจำนวน via ที่ลดลงช่วยได้มาก
- เลเยอร์ด้านในของ PCB ทำให้โค้งมนด้วย KiCad track-rounding plugin
- panel ถูกจัดด้วยมือเพื่อให้เครื่อง pick-and-place จับบอร์ดได้
- จุดสัมผัสแบตเตอรี่ใช้ขั้ว spring ชุบทองสำหรับติดบน PCB แบบ RFI shield finger
- คอนเน็กเตอร์ชาร์จแม่เหล็กใช้เวลาหาของ low-profile ขนาด 4mm และชิ้นส่วนที่ใช้คือ cx-4mm-jz ของ WNRE
- คอนเน็กเตอร์ชาร์จ 4mm แม้มี polarity และขั้วแม่เหล็กเหมือนกัน แต่สายอาจใช้ร่วมกันไม่ได้
การกลึงโลหะและเคส
- เคสทำจากทองเหลืองกลึง แล้วนำไป ชุบทอง
- โครงสร้างแรกเป็นแบบ snap-back และเพิ่ม O-ring เพื่อไม่ให้หลวม พร้อมได้ซีลกันน้ำด้วย
- O-ring ช่วยผ่อนคลาย tolerance ที่ต้องการลงมาก
- ตั้งแต่จี้ชิ้นที่สอง ใช้กระจกนาฬิกาหรือ watch glass เหนือจอ
- เลือกกระจก 27.5mm และเพิ่ม gasket 0.45mm ทำให้เส้นผ่านศูนย์กลางรวมเป็น 28.4mm
- กระจกกดเข้าที่ได้ดีด้วยแรงที่เหมาะสม แต่ก็มีกรณีแตกเมื่อลองกดโดยไม่มีเครื่องมือเฉพาะ
ปัญหาทางไฟฟ้าที่พบระหว่างประกอบ
- ใน PCB แรก ปัญหาคือไม่ได้แยก reset pin ของไมโครคอนโทรลเลอร์ออกมา
- จอใช้ Port A ทั้งหมด และ SWDIO/SWCLK ก็อยู่ที่ Port A ทำให้การอัปโหลด firmware ใหม่ระหว่างพัฒนาทำได้ยาก
- ต้องใช้สายชั่วคราวเพื่อ reset ชิปทันทีก่อน programming
- bus keeper ของเส้น interrupt จาก accelerometer เป็นหนึ่งในสาเหตุของ glitch บนจอ
- ตอนแรกเพิ่ม resistor และสุดท้ายใส่ diode จึงแก้ได้หมด
- การตรวจจับแรงดันแบตเตอรี่ต่ำด้วยซอฟต์แวร์ทำให้วงจรง่ายขึ้น แต่ยังมีความไม่แน่นอน
- ใน revision PCB ถัดไปจึงเพิ่มชิปตรวจสอบแบบฮาร์ดแวร์
- ยังทำวงจรตรวจจับการเสียบคอนเน็กเตอร์ชาร์จเพื่อดึง reset pin ด้วย
- หากเสียบสายชาร์จในสภาพที่ลัดวงจรอยู่ช่วงสั้น ๆ polyfuse จะร้อนและแรงดันจะค่อย ๆ เพิ่ม ทำให้อาจไม่เกิด reset pulse
- ประเมินว่าหากจำเป็นให้ต่อฝั่งแม่เหล็กก่อน แล้วค่อยเสียบ USB ทีหลัง
การประหยัดพลังงานและการปลุก
- จี้ไม่มีปุ่ม และ input มีเพียง ข้อมูลจาก accelerometer
- ตอนแรกคิดจะเปิด deep sleep ด้วยการหมุนจี้ที่ปลายสายสร้อย
- สุดท้ายใช้วิธีเพิ่ม threshold ของ interrupt ตรวจจับการเคลื่อนไหวของ accelerometer เป็น 6g
- ลด wake-up โดยไม่ตั้งใจ และเมื่อเขย่าก็เปิดขึ้นใหม่ได้ง่าย
- เป็นวิธีที่ไม่ใช้พลังงานมากกว่า sleep ปกติ
PCB ชิ้นที่สองและการตรวจสอบแรงดัน
- ก่อนจี้ชิ้นที่สอง ได้ใส่วงจร reset, diode ของสาย wake-up และ hardware supervisor ลงใน PCB
- ชิปตรวจสอบแรงดันไฟเลี้ยง TPS3839 มีกระแสจ่าย 150nA และเมื่อรวมกับ regulator TPS7A02 ที่ 25nA ก็ถือว่าต่ำมากสำหรับ coin cell
- ความจุของ LiR2450 coin cell คือ 120mAh และหากคายประจุด้วยเพียง 1000nA จะใช้เวลานานกว่า 13 ปี
- เลือก threshold ตัดแรงดันต่ำที่ 3.08V
- ตั้งไว้แบบอนุรักษนิยม เพื่อให้แม้แบตเตอรี่ลดลงถึงระดับนี้ก็ไม่เกิดภาระทางเคมีมากนักแม้วางบนชั้นนานหลายปี
- เหตุผลที่วงจรป้องกันลิเธียมทั่วไปตัดแถว 2.5V คือแรงดันขั้วระหว่างมีโหลดต่ำกว่าแรงดันวงจรเปิด
- TPS7A02 มี เวอร์ชัน P ที่มี active discharge และเวอร์ชันที่ไม่มี
- เวอร์ชัน non-P จะทำให้ไมโครคอนโทรลเลอร์และ capacitor ไฟเลี้ยงค่อย ๆ discharge แม้อยู่ในสถานะ regulator disabled
- หลังเปลี่ยนเป็นเวอร์ชัน P ปัญหา soft-lock ที่เกิดใกล้ threshold ของ supervisor ก็หายไป
จี้ชิ้นที่สามและโครงสร้างปิดผนึก
- ในจี้ชิ้นที่สาม ตัด snap-back ออกและออกแบบใหม่เป็น เคสรูปถ้วย
- กระจกนาฬิกาถอดออกได้ แต่การเข้าถึงจริงคือถอดด้านกระจกออก หรือกรณีเลวร้ายที่สุดคือทุบให้แตก
- กระจกทดแทนราคาถูกประมาณ 50p และเพราะมีวงจรชาร์จกับระบบป้องกันแรงดันต่ำ จึงมองว่าไม่จำเป็นต้องเปลี่ยน coin cell
- รูปถ้วยทำให้การกลึงโลหะง่ายขึ้นมาก และลดความหนารวมลงประมาณ 1mm
- เนื่องจากต้องติดตั้งคอนเน็กเตอร์แม่เหล็กก่อน จึงใช้ลวดฝอย 36AWG สำหรับเดินสายแบบยืดหยุ่น
- วัดความต้านทานระหว่างเคสกับ PCB ground ด้วย multimeter ได้ 0.00Ω
- ความลึกด้านในไม่พอ ทำให้เมื่อกดกระจกวงจรอาจถูกกด จึงปรับโดยขูดออกด้วยมือประมาณ 0.3mm
การปรับปรุงการผลิตตั้งแต่ชิ้นที่สี่เป็นต้นไป
- ตั้งแต่ชิ้นที่สี่เป็นต้นไป กลึงด้านในให้ลึกขึ้นเล็กน้อยเพื่อให้วงจรใส่ได้สบายขึ้น
- ด้านหลังทำให้เรียบด้วยการ lapping
- ติดกระดาษทรายบนพื้นผิวเรียบ แล้วถูทองเหลืองโดยค่อย ๆ เปลี่ยนไปใช้วัสดุขัดที่ละเอียดขึ้น
- ใช้ 5C collet holder ของเครื่องกลึง Hardinge เพื่อจับชิ้นงานให้อยู่ตรงศูนย์อย่างแม่นยำ และลดความเสียหายต่อผิวภายนอก
- ผิวด้านหลังของเคสที่ hollowed-out บางกว่า 1mm และครั้งหนึ่งเคยกลึงลึกเกินจนทะลุ
- การติด jump ring ทำได้ดีกว่าโดยใช้ลวดอ่อนมัดยึดไว้ก่อนแล้วจึงบัดกรี
- การชุบทองไม่เกาะดีบนตะกั่วบัดกรีผสมดีบุก สุดท้ายจึงยอมรับความแตกต่างนี้เป็นองค์ประกอบด้านภาพ
คอนเน็กเตอร์ชาร์จและปัญหาการใช้งาน
- ต้องซีลรอบคอนเน็กเตอร์ชาร์จแม่เหล็กด้วย epoxy แต่ต้องไม่คลุมจุดบัดกรี ทำให้งานยุ่งยาก
- หากติดคอนเน็กเตอร์ชาร์จอย่างไม่ระวัง อาจเกิดประกายไฟได้แม้ที่ 5V
- หากเกิดซ้ำ จุดสัมผัสทั้งสองจะสึกเร็ว
- สามารถหลีกเลี่ยงประกายไฟได้ด้วยการติดฝั่งแม่เหล็กก่อนแล้วค่อยเสียบ USB ทีหลัง
- ในบางกรณี หากดันในมุมที่แปลก polarity อาจกลับด้านได้
- หากเพิ่ม diode ไว้ก็คงป้องกันได้ง่าย แต่พบเรื่องนี้ช้าไป
- LED แสดงสถานะชาร์จสีแดงทำงานได้ดี โดยส่องเป็นวงกลมสีแดงเล็ก ๆ บนสายผ่าน epoxy
จำนวนที่ทำเสร็จและกล่องเก็บ
- กล่องพลาสติกของ Nikon F3 focusing screen พอดีเกือบสมบูรณ์สำหรับใช้เป็นเคสพกพา ต่อมาจึงใช้กล่องพลาสติกขนาดใกล้เคียงพร้อม liner โฟม antistatic
- ทำจี้เสร็จทั้งหมด 10 ชิ้น
- บางชิ้นมีรอยขีดข่วนหรือข้อบกพร่องบนผิว
- หยุดผลิตเมื่อใช้บอร์ดวงจรที่เตรียมไว้หมดแล้ว
- หากจะทำเพิ่ม จำเป็นต้องปรับดีไซน์ให้กระจกและ gasket เข้าที่ได้เสถียรกว่าเดิม
- สามารถลดขนาด PCB ลงเล็กน้อยได้
- สามารถเพิ่ม notch หรือ cutout สำหรับจัดตำแหน่งได้
- สามารถเพิ่ม shoulder สำหรับวาง PCB และ cutout สำหรับสายคอนเน็กเตอร์ได้
- ภายหลังจึงพบว่าทั้งกระจกและ gasket ล้วนมี ทิศทาง
- ขนาด bezel ของกระจกต่างกันระหว่างด้านบนและด้านล่าง
- gasket ก็ไม่สมมาตรเมื่อดูด้วยกล้องจุลทรรศน์
- สิ่งนี้อาจส่งผลต่อแรงที่ต้องใช้กดกระจกในแต่ละจี้
การเลือกวัสดุและความเป็นไปได้ในการผลิตจำนวนมาก
- เคยพิจารณาความเป็นไปได้ในการทำทั้งหมดจากทอง แต่การกลึงจากก้อนทองคำบริสุทธิ์ไม่สมเหตุสมผล
- เงินจัดการได้คุ้มค่ากว่า และหากเป็นรูปถ้วย ก็อาจทำตัวเรือนด้วยการบัดกรีแถบเงินกับแผ่นเงิน แล้วกลึงแต่งเล็กน้อยบนเครื่องกลึง
- PCB ผลิตจำนวนมากได้ง่าย แต่เคสมีความยากแยกต่างหาก
- อาจข้ามการชุบทองและทำจากสแตนเลสได้
- รูปถ้วยทำให้การกลึง CNC ง่ายขึ้น
- jump ring อาจต้องมีกระบวนการแยก เช่น การเชื่อม TIG
- เวอร์ชันที่ถูกมากอาจทำจาก PCB กับเคสพิมพ์ 3D ได้
- เหตุผลหลักที่มีโอกาสน้อยที่จะพยายามผลิตจำนวนมากคือยุ่งอยู่กับโปรเจกต์อื่น
สรุปและสิ่งที่ยังเสียดาย
- โปรเจกต์นี้ถือว่าสำเร็จได้ และคุณภาพการผลิตดีขึ้นกว่า amulet ก่อนหน้า
- ถึงอย่างนั้น หลังทำไป 10 ชิ้นก็ยังไม่พึงพอใจอย่างสมบูรณ์
- สิ่งที่เสียดายคือไม่ได้สลักวันที่หรือหมายเลขซีเรียลไว้ด้านหลัง
- ต้องลงทุนอุปกรณ์และเรียนรู้เพิ่มเติมเพื่อการทำเครื่องประดับและงานโลหะที่ดีขึ้น
- ภาพขณะสวมใส่ถ่ายยาก
- ต้องใช้ shutter speed ช้าเพื่อหลีกเลี่ยง screen tearing
- จอน่าสนใจกว่าเมื่อเคลื่อนไหว จึงบันทึกเป็นภาพนิ่งได้ยาก
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เป็นวิดีโอที่น่าสนใจมาก จนดูไปเกือบจนจบทั้งที่ไม่ได้ตั้งใจ และถูกดึงเข้าไปเต็ม ๆ
พอเห็นซอฟต์แวร์แบบนี้ ก็ยิ่งเข้าใจยากขึ้นว่าทำไมถึงมีแนวโน้มพูดกันว่า LLM ผ่านการประเมินโค้ดแล้วจึง “เก่งกว่านักพัฒนามนุษย์ระดับสูงสุด”
ตอนให้โมเดลหลายตัวของ Claude และ ChatGPT ช่วยกับ ปัญหาเฉพาะทาง ผลออกมาแย่มาก มันยอดเยี่ยมกับ CRUD หรืออัลกอริทึมทั่วไป แต่แย่มากกับงานใหม่ ๆ หรือแปลกเฉพาะทาง
พอเห็นอะไรอย่าง “FLIP simulation” ของโปรเจกต์นี้ ก็อดคิดไม่ได้ว่าแม้แต่ ChatGPT o3 ที่ยังไม่เปิดให้ใช้ทั่วไป ก็น่าจะยังยากที่จะเขียนซอฟต์แวร์ที่ขับเคลื่อนจี้นี้ได้
ดังนั้นผมคิดว่าการตัดสินแบบนั้นไม่ถูก LLM เก่งเวลาต้องเริ่มทำบางอย่างจากศูนย์โดยมีขอบเขต API ที่ชัดเจน ไม่ว่าจะเป็นแอป CRUD หรือ physics simulation
ส่วนที่มันอ่อนจริง ๆ น่าจะเป็นงานใน codebase เก่าขนาดใหญ่ที่ต้องข้ามหลายโมดูลและมีเบาะแสชวนสับสนจำนวนมากมากกว่า
ปัญหาที่ใหญ่กว่าคือความถูกต้องของ simulator ที่สร้างออกมา LLM สร้างการทดสอบที่ดีไม่ได้ และต้องมีทั้ง verification ซึ่งเป็นการทดสอบด้านคณิตศาสตร์ และ validation ซึ่งเป็นการทดสอบด้านฟิสิกส์ แต่ตอนนี้ LLM ยังทำทั้งสองอย่างได้ไม่ดี
วิธี manufactured solutions (MMS) ซึ่งเป็นเทคนิคมาตรฐานของ verification สามารถทำให้เป็นอัตโนมัติได้มากพอสมควรด้วยซอฟต์แวร์ computer algebra แต่ก็ยังน่าเบื่ออยู่ดี และจากประสบการณ์ก็เชื่อยากว่า LLM จะจัดการการแปลงพีชคณิตที่จำเป็นตรงนี้ได้ดี
ที่แย่กว่านั้นคือ LLM ไม่สามารถสร้างข้อมูลการทดลองจริงที่จำเป็นต่อ validation ได้ ต้องไปหาการทดลองจากวรรณกรรมหรือทำการทดลองเอง และในอนาคตอาจช่วยชี้ไปยัง paper การทดลองที่เหมาะสมได้ แต่ตอนนี้ยังดูไม่เป็นอย่างนั้น
อย่างไรก็ตาม มันอาจมีประโยชน์ในการให้คำแนะนำเมื่อ simulation ไม่ตรงกับข้อมูลการทดลอง และดูเหมือนจะรู้เรื่อง turbulence modeling อยู่บ้าง แต่ก็ยังสงสัยว่ารู้ความคืบหน้าล่าสุดดีแค่ไหน
ถ้าเป็น fluid simulation สำหรับเกมหรือ computer graphics ความถูกต้องทางฟิสิกส์อาจไม่ใช่เรื่องสำคัญที่สุด แต่ถึงอย่างนั้น หากต้องการตรวจว่าการ implement คณิตศาสตร์ถูกต้องหรือไม่ ก็ควรใช้ MMS อยู่ดี MMS เป็นเทคนิคที่น่าสนใจซึ่งไม่มีสิ่งที่เทียบตรง ๆ ในการทดสอบซอฟต์แวร์ทั่วไป แนวคิดคือแก้ซอฟต์แวร์ให้น้อยที่สุดเพื่อสร้าง oracle และถ้าซอฟต์แวร์ที่แก้แล้วผ่านการทดสอบ ก็ถือได้ว่าซอฟต์แวร์เดิมก็จะผ่านด้วย
หลายวิชาในมหาวิทยาลัยให้นักศึกษาเขียนอัลกอริทึมแบบนี้เป็นการบ้าน และความรู้ที่เกี่ยวข้องก็เปิดเผยฟรีบนอินเทอร์เน็ตจำนวนมาก อย่างวิดีโอ YouTube ที่ผู้เขียนกล่าวถึง ทำให้ LLM สามารถเรียนรู้ได้
แน่นอนว่าโปรเจกต์ในบทความนี้เองก็ยังน่าประทับใจมากอยู่ดี
นึกถึงคำพูดที่ว่า “สิทธิในการเข้าถึงเครื่องกลึงเป็นสิทธิมนุษยชนขั้นพื้นฐาน”
เมื่อก่อนมีครูคนหนึ่งเล่าเรื่อง ห้องเครื่องกลึงของโรงเรียน แห่งสุดท้ายในรัฐของเขาให้ฟัง บอกว่าเป็นสถานที่ที่เกิดขึ้นในหลายโรงเรียนหลังสงครามโลกครั้งที่สองไม่นาน แล้วคงอยู่ต่อมาเป็นข้อยกเว้นเรื่อย ๆ
ทุกวันนี้ในรัฐนั้นสร้างใหม่ไม่ได้แล้ว และในบางรัฐอาจเป็นไปไม่ได้แม้แต่จะมีอยู่ด้วยซ้ำ เขาบอกว่าถ้าเกิดอุบัติเหตุร้ายแรงสักครั้ง มันคงหายไปหมดจนไม่เหลือเลย
สิ่งที่ผมชอบที่สุดคือครึ่งหนึ่งทันสมัยมาก ส่วนอีกครึ่งเป็น อุปกรณ์ส่วนเกินจากสงครามโลกครั้งที่สอง ที่ดูเหมือนไม่มีวันพัง การผสมกันแบบนั้นเท่มากจริง ๆ
จินตนาการยากว่าโรงเรียนจะเอาเครื่องกลึงออกเพราะอุบัติเหตุ และผมมองว่านั่นเป็นทัศนคติทางวัฒนธรรมที่ทำร้ายตัวเอง
ถ้าเป็น CNC แบบปิดล้อม ปัญหาความปลอดภัยมากกว่า 99% ก็ถูกบรรเทา และประโยชน์ใช้สอยยิ่งสูงกว่ามาก ใน CNC มักมีกรณีที่เข้าไปในพื้นที่ทำงานตอนเปิดแค่ servo ไม่ใช่ spindle ดังนั้นการบาดเจ็บร้ายแรงที่สุดก็อาจเป็นแค่กระดูกหัก แต่เครื่องแบบ manual นั้น spindle หรือ chuck อาจจับคนจนเสียชีวิตหรือเหวี่ยงเศษชิ้นส่วนออกมาได้
ถ้ามีเครื่อง pick-and-place แบบโอเพนซอร์สที่ดีจริง ๆ ก็คงดี ทุกวันนี้ PCB ราคาถูก แต่เครื่องพวกนั้นยังจัดการชิ้นส่วน 0201 หรือ BGA ความหนาแน่นสูงได้ไม่ดีนัก
“Machine Technology 1” ระบุว่าเรียนรู้ความรู้และทักษะในการใช้เครื่องมือช่างทั่วไป เครื่องกลึง engine lathe, shaper, drill press, milling machine, grinder และฝึกหลักการกับพื้นฐานเครื่องจักรเบื้องต้นที่ใช้ในอุตสาหกรรมการผลิตความแม่นยำสูง
“Welding 1” บอกว่าเรียนเรื่องความปลอดภัย การตั้งค่าอุปกรณ์ การถ่ายโอนโลหะ การป้องกันด้วยก๊าซ และการเชื่อมโลหะหลายชนิด โดยเน้นการเชื่อม oxyacetylene และ gas tungsten arc welding
“Construction Trades 1” ระบุว่าเรียนทักษะงานไม้ โลหะ ไฟฟ้า และประปา รวมถึงการใช้เครื่องมือช่างและเครื่องมือไฟฟ้าอย่างปลอดภัยให้เหมาะกับแต่ละทักษะ
ดูเหมือนมีช่วงหนึ่งราวยุค 90 ถึง 2000 ที่ การศึกษาสายอาชีพและเทคนิค แทบหายไปจากโรงเรียนรัฐ แต่โชคดีที่ดูเหมือนกำลังกลับมา
Charlieplexing: https://en.m.wikipedia.org/wiki/Charlieplexing
เป็นโปรเจกต์ที่เจ๋งจริง ๆ และชอบส่วน simulation เป็นพิเศษ
ผมกำลังทำจอ POV สำหรับจักรยานที่ติด LED จำนวนมากในลักษณะคล้าย ๆ กัน และส่งวิดีโอผ่าน Wi‑Fi ได้เกือบเรียลไทม์แล้ว: https://youtu.be/hxAHBvuyqpY?si=8XraFuG_Fi54Bs7T
ชอบไอเดียโปรเจกต์และวิดีโอขั้นตอนการสร้างของ mitxela มาก แนะนำให้ลองดู โปรเจกต์อื่น ๆ ด้วย
โปรเจกต์นี้เป็นการผสาน ศิลปะกับวิศวกรรม ที่น่าทึ่ง
รายละเอียดความสมบูรณ์ทั้งด้าน fluid simulation และการออกแบบฮาร์ดแวร์นั้นสุดยอดมาก โดยเฉพาะการใช้ Charlieplexing อย่างชาญฉลาดเพื่อปรับตำแหน่ง LED ให้เหมาะที่สุด ซึ่งน่าประทับใจมาก
น่าประทับใจจนแทบไม่น่าเชื่อ เวลาเห็นโปรเจกต์แบบนี้และคนที่ทำมันขึ้นมาได้ ก็รู้สึกได้แรงบันดาลใจมาก แต่ในขณะเดียวกันก็รู้สึกท้อเหมือนกัน
พอจะมองออกว่าต้องใช้ work ethic และ ทักษะรอบด้าน ขนาดไหน แต่คงทำซ้ำเองไม่ไหว น่าจะได้แต่นั่งชื่นชมอยู่ข้างหลัง
ถ้ามีครีเอเตอร์แนวคล้าย ๆ กันที่มีระดับความประณีตและความสนใจประมาณนี้อีก ก็อยากรู้จัก
มีโปรเจกต์ที่น่าสนใจมากมายซึ่งใช้สิ่งอย่างสนามแม่เหล็กระดับไมโคร, มอเตอร์ และ flapper
ถ้าชอบส่วนการทำ housing แนะนำให้ดู Clickspring ด้วย ผมคิดว่าไม่เกินเลยนักถ้าจะบอกว่าเขาเป็นหนึ่งในช่างกลที่ดีที่สุดบน YouTube ตอนนี้ ด้วยการผสานภาพวิดีโอ การเล่าเรื่อง และทักษะจริงเข้าด้วยกัน: https://youtube.com/@clickspring
ดูได้ที่นี่: https://mitxela.com/rants
น่าเสียดายที่ลิงก์ตรงไม่ได้ ต้องเลื่อนลงไปนิดหน่อย ส่วนตัวผมกลับไปอ่านเป็นครั้งคราว เพราะมันให้แรงบันดาลใจในแบบของมัน
แปลกดีที่ผมกลับสนใจไอเดียก่อนหน้านี้ที่ใช้ ปรอท ซึ่งเป็นของเหลวจริง ๆ เพื่อเปิด LED มากกว่า
เพราะการวางเลย์เอาต์ใน KiCad จะง่ายกว่ามาก และคงไม่ต้องใช้บอร์ด 4 ชั้นด้วย
สวยมากจริง ๆ เห็นราคาแล้วตกใจ เพราะคาดไว้ว่าน่าจะประมาณ 10 เท่า ของราคาที่เก็บอยู่ตอนนี้
ผมคงไม่เรียกสิ่งนี้ว่า “prototype” ตามที่ผู้เขียนพูด