Fluid Simulation Pendant
(mitxela.com)- गहने के आकार में real-time FLIP fluid simulation और गोल LED display समेटने वाला एक handmade hardware project, जिसका लक्ष्य wearable simulation object बनाना है
- STM32L432KC को 100MHz पर overclock कर accelerometer, charging circuit और voltage monitoring chip को 4-layer 0.8mm PCB पर integrate किया गया, ताकि छोटे pendant के अंदर ही computation और display दोनों संभल सकें
- diagonal charlieplexing और DMA circular drive की वजह से via count और display overhead घटे, लेकिन LED placement और soldering bridges जैसी manufacturing pitfalls भी सामने आईं
- FLIP implementation Ten Minute Physics tutorial के आधार पर दोबारा implement किया गया, और particle collisions व hashgrid ने छोटे 8x8 scale पर भी stability और speed पर बड़ा असर डाला
- कुल 10 pendants पूरे हुए, लेकिन glass/gasket orientation, charging connector protection और metal case machining जैसे सुधार बाकी हैं, इसलिए mass production आसान नहीं दिखता
पहनने योग्य fluid simulation device
- Fluid Simulation Pendant real-time FLIP fluid simulation चलाने वाला handmade गहना है
- इसमें gold-plated case और watch glass protective window इस्तेमाल होती है, और अंदर का circular LED display fluid movement दिखाता है
- पहला pendant मार्च 2024 में बनाया गया था, और उसके बाद अगले कुछ महीनों में कई और बनाए गए
- अभी थोड़ी मात्रा में pendants मौजूद हैं, और stock रहने तक कुछ बिक्री पर हैं
- design motivation और शुरुआती process YouTube video में भी देखी जा सकती है
Simsim से pendant तक पहुंचा design
- पहले के volumetric display animation के बाद, आखिरकार 3D virtual snowglobe बना सकने वाली real-time fluid simulation implement करने की दिशा से इसकी शुरुआत हुई
- उसी प्रक्रिया में निकला Simsim concept इस pendant का आधार बना
- नतीजतन, fluid simulation के साथ-साथ diagonal charlieplexed display के अनपेक्षित फायदे भी सामने आए
Hardware configuration
- मुख्य components ये हैं
- STM32L432KC: ARM Cortex-M4, FPU सहित, 100MHz पर overclocked
- ADXL362: ultra-low-power accelerometer
- MCP73832: LiR2450 battery charging controller
- TPS7A02: ultra-low-power regulator
- TPS3839: power voltage monitoring chip
- circuit 4-layer 0.8mm PCB पर बनाया गया है
- LiR2450 coin cell battery इस्तेमाल होती है, और final design में charging controller और low-voltage protection शामिल हैं
- full charge पर करीब 10 घंटे उपयोग का लक्ष्य है
Diagonal charlieplexing और display driving
- Diagonal charlieplexing पारंपरिक matrix की तुलना में via count को आधा कर सकता है
- छोटे pitch वाले LED display में via count अक्सर limiting factor बन जाता है, इसलिए इसका असर बड़ा है
- same net के LED end-to-end रखे जाते हैं, इसलिए ज्यादातर solder bridges performance को प्रभावित नहीं करते
- DMA circular mode से display matrix बिना overhead के drive होता है
- दो DMA streams संभालने पर charlieplexed matrix भी इसी तरह drive किया जा सकता है
- LED और pixel को जोड़ने के लिए lookup table की जरूरत होती है
- mapping बदलने पर कोई extra cost नहीं आती
- matrix signals को microcontroller port के किसी भी pin से जोड़ा जा सकता है, जिससे routing आसान होती है
- GPIO से बड़ा display सीधे drive करने पर output FET की on-resistance के कारण brightness issue आ सकता है
- charlieplexing में एक बार में सिर्फ एक pixel जलता है, इसलिए on-resistance का असर सभी pixels पर समान रूप से पड़ता है
- microchip voltage बदलकर display brightness control भी की जा सकती है
FLIP fluid simulator implementation
- FLIP simulation Matthias Müller के Ten Minute Physics काम, खासकर “How to write a FLIP Water Simulator” tutorial पर आधारित है
- code direct port नहीं है, बल्कि tutorial को follow करके reimplement किया गया है
- Eulerian fluid simulation में fluid movement को advection से handle किया जाता है, लेकिन FLIP में particles की movement fluid को carry करती है, इसलिए अलग advection step इस्तेमाल नहीं होता
- Particle collision step छोड़ा नहीं जा सका
- collision step हटाने पर पूरा fluid overlapping lump में collapse हो जाता है
- particles distance के inverse के अनुपात में impulse से एक-दूसरे को धकेलते हैं
- final code में simple collision और hashgrid collision के बीच switch था
- hashgrid में computation और समझने दोनों का overhead है, लेकिन 8x8 जैसे छोटे size में भी बड़ा speed improvement दिखाता है
- Ten Minute Physics example में left boundary condition की एक छोटी गलती थी, जिससे fluid रुकता नहीं था; इसे भी खोजा गया
Simulation experiments और memory estimate
- development के दौरान कई तरह के असामान्य fluid simulation results बने, और particles render करने पर अक्सर frog eggs जैसी shapes दिखीं
- density plot हर grid cell में overlap करने वाले particles की संख्या दिखाता था, और दीवार से टकराने पर shock wave जैसा visual effect दिखता था
- Simsim concept公開 होने के करीब 2 हफ्तों में Simsimsim demo बनाया गया
- यह देखने के लिए internal test tool था कि LED density कितनी कम करने पर भी यह fluid जैसा दिखता है
- bare-metal porting के लिए जरूरी RAM का मोटा estimate लगाने में भी इसका इस्तेमाल हुआ
- STM32L432KC में 64KB RAM है, और diameter 16 display के लिए करीब 26KB चाहिए
- demo और pendant source code अभी公開 नहीं हुए हैं, लेकिन बाद में公開 करने की योजना है
पहला pendant बनाना
- PCB fabrication से पहले, charlieplexed display pattern सच में काम करता है या नहीं देखने के लिए hand-wired prototype बनाया गया
- laser-cut card से LEDs को fix किया गया, और 8x9 matrix को STM32L432 development board से जोड़ा गया
- enamel wire soldering बहुत झंझट भरी थी, इसलिए PCB जल्दी design करना पड़ा
- FLIP simulation पहले L432 पर छोटे 8x8 square में चला, और बाद में virtual pendant के upper-left area जैसा expand किया गया
- पारंपरिक charlieplexed matrix में हर LED के लिए कम-से-कम एक via चाहिए, लेकिन diagonal arrangement इसे काफी घटाता है
- 16 GPIO से संभव 240 LEDs में से actual display को सिर्फ 216 LEDs चाहिए थे
- display circular होना था, लेकिन diameter 16 पर placement method के अनुसार यह octagon जैसा बन गया
PCB और mechanical design
- पहला PCB design उम्मीद से आसान था, और कम via count ने बहुत मदद की
- PCB internal layers को KiCad track-rounding plugin से गोल किया गया
- panel को pick-and-place equipment में board पकड़ने के लिए manually configure किया गया
- battery contacts के लिए PCB-mounted gold-plated spring terminal RFI shield finger इस्तेमाल किया गया
- magnetic charging connector के लिए 4mm low-profile product ढूंढने में समय लगा, और इस्तेमाल किया गया part number WNRE का cx-4mm-jz है
- 4mm charging connectors में polarity और magnet polarity same होने पर भी cables एक-दूसरे से match न करें, ऐसा हो सकता है
Metal machining और case
- case brass को machine करके बनाया गया, और बाद में gold-plating की गई
- पहला structure snap-back type था, और O-ring जोड़कर ढीलापन हटाया गया तथा waterproof seal भी मिली
- O-ring की वजह से required tolerance काफी relax हो गया
- दूसरे pendant से display के ऊपर watch glass लगाया गया
- 27.5mm glass चुना गया, और 0.45mm gasket जोड़कर कुल diameter 28.4mm हुआ
- glass सही force से अच्छी तरह press-fit हो गया, लेकिन dedicated tool के बिना दबाने पर कुछ cases में टूट भी गया
Assembly के दौरान सामने आई electrical problems
- पहले PCB में microcontroller reset pin को बाहर न निकालना समस्या बना
- display पूरा Port A इस्तेमाल करता है और SWDIO/SWCLK भी Port A पर हैं, इसलिए development के दौरान नया firmware upload करना मुश्किल था
- chip को programming से ठीक पहले reset करने के लिए temporary wire चाहिए था
- accelerometer interrupt line का bus keeper display glitch के कारणों में से एक था
- पहले resistor जोड़ा गया, और अंततः diode लगाकर पूरी तरह solve किया गया
- software-based battery low-voltage detection ने circuit को simpler बनाया, लेकिन instability का risk बचा रहा
- अगले PCB revision में hardware monitoring chip जोड़ी गई
- charging connector connection detect करके reset pin खींचने वाला circuit भी बनाया गया
- charging cable को जोड़ते समय थोड़ी देर short करने पर polyfuse गर्म हो सकता है और voltage धीरे-धीरे बढ़कर reset pulse नहीं बन सकता
- जरूरत पड़ने पर पहले magnet side connect करके USB बाद में plug करना ठीक माना गया
Power saving और wake-up
- pendant में कोई button नहीं है, input सिर्फ accelerometer data है
- शुरुआत में chain के end पर pendant घुमाकर deep sleep activate करने का तरीका सोचा गया था
- अंत में accelerometer motion-detection interrupt की threshold को 6g तक बढ़ाने का तरीका इस्तेमाल हुआ
- accidental wake-up कम हुए, और हिलाने पर आसानी से फिर on हो जाता है
- यह normal sleep से ज्यादा power इस्तेमाल नहीं करता
दूसरा PCB और voltage monitoring
- दूसरे pendant से पहले reset circuit, wake-up line diode और hardware supervisor को PCB में शामिल किया गया
- TPS3839 power voltage monitoring chip की supply current 150nA है, और TPS7A02 regulator के 25nA के साथ यह coin cell के हिसाब से बहुत कम है
- LiR2450 coin cell capacity 120mAh है, और सिर्फ 1000nA से discharge करने में 13 साल से ज्यादा लगेंगे
- low-voltage cutoff threshold 3.08V चुना गया
- battery इस level तक गिरने पर भी shelf पर कई साल तक chemical stress न हो, इसलिए conservative setting रखी गई
- सामान्य lithium protection circuits 2.5V के आसपास इसलिए cut off करते हैं क्योंकि load के दौरान terminal voltage open-circuit voltage से कम होता है
- TPS7A02 में active discharge वाली P version और बिना active discharge वाली version होती है
- non-P version में regulator disabled होने पर भी microcontroller और power capacitors धीरे-धीरे discharge होते हैं
- P version पर बदलने के बाद supervisor threshold के आसपास होने वाली soft-lock problem खत्म हो गई
तीसरा pendant और sealed structure
- तीसरे pendant में snap-back हटाकर cup-shaped case के रूप में design फिर किया गया
- watch glass removable है, लेकिन practical access glass face निकालकर या सबसे खराब स्थिति में उसे तोड़कर ही है
- replacement glass करीब 50p में सस्ता है, और charging circuit व low-voltage protection होने से coin cell बदलने की जरूरत नहीं मानी गई
- cup shape में metal machining काफी simple है और कुल thickness भी करीब 1mm कम हो गई
- magnetic connector पहले install होना जरूरी है, इसलिए 36AWG stranded wire से flexible wiring इस्तेमाल हुई
- case और PCB ground के बीच resistance multimeter पर 0.00Ω मापा गया
- inner depth कम होने से glass दबाने पर circuit दब सकता था, इसलिए हाथ से करीब 0.3mm scrape करके adjust किया गया
चौथे के बाद production improvements
- चौथे के बाद अंदर को थोड़ा और deep machine किया गया ताकि circuit आराम से fit हो
- back side को lapping से flat बनाया गया
- sandpaper को flat surface पर चिपकाकर brass को रगड़ा गया और धीरे-धीरे finer abrasives की ओर बढ़े
- Hardinge lathe के 5C collet holder से parts को सही center में पकड़ा गया और outer surface damage भी कम हुआ
- hollowed-out case की back surface 1mm से पतली हो गई, और एक बार ज्यादा cutting करने पर उसमें छेद हो गया
- jump ring attachment के लिए soft wire से बांधकर fix करना और फिर solder करना बेहतर रहा
- gold plating tin solder पर अच्छी तरह नहीं चिपकी, इसलिए अंत में contrast को visual element के रूप में स्वीकार किया गया
Charging connector और usage issues
- magnetic charging connector के आसपास epoxy से seal करना होता है, लेकिन solder contacts को cover नहीं करना चाहिए, इसलिए काम झंझट भरा है
- charging connector को careless तरीके से लगाते समय 5V पर भी spark हो सकता है
- repeat होने पर दोनों contacts तेजी से घिस सकते हैं
- पहले magnet side लगाकर USB बाद में plug करने से spark से बचा जा सकता है
- अजीब angle से push करने पर polarity उलटने की संभावना भी थी
- diode जोड़ा होता तो आसानी से protection मिल जाता, लेकिन यह देर से पता चला
- red charging indicator LED epoxy के through cable पर छोटा लाल circle दिखाते हुए ठीक काम करता है
Completed quantity और storage case
- portable case के लिए Nikon F3 focusing screen plastic container लगभग fit था, और बाद में similar size के plastic box में antistatic foam liner लगाया गया
- कुल 10 pendants पूरे किए गए
- कुछ में scratches या surface defects हैं
- तैयार circuit boards सभी इस्तेमाल हो जाने पर production रोका गया
- और बनाए जाएं तो glass और gasket को ज्यादा stable तरीके से बैठाने के लिए design बदलना होगा
- PCB थोड़ा छोटा किया जा सकता है
- alignment notch या cutout जोड़ा जा सकता है
- PCB रखने के लिए shoulder और connector wire के लिए cutout डाला जा सकता है
- बाद में पता चला कि glass और gasket दोनों में orientation होती है
- glass bezel size ऊपर-नीचे अलग है
- gasket भी microscope से देखने पर symmetric नहीं है
- pendants में glass दबाने की force अलग-अलग होने पर इसका असर पड़ा होगा
Material selection और mass production की संभावना
- पूरा gold से बनाने की संभावना भी सोची गई, लेकिन solid gold block को machine करना sensible नहीं है
- silver को ज्यादा economical तरीके से handle किया जा सकता है, और cup shape हो तो silver strip और plate को solder करके body बनाकर lathe पर थोड़ा machine करना भी संभव है
- PCB mass-produce करना आसान है, लेकिन case में अलग challenges हैं
- gold plating छोड़ी जा सकती है और stainless steel से बनाया जा सकता है
- cup shape CNC machining को simpler बनाता है
- jump ring के लिए TIG welding जैसी अलग process चाहिए हो सकती है
- बहुत सस्ता version PCB और 3D printed case से भी बनाया जा सकता है
- mass production try करने की संभावना कम होने का सबसे बड़ा कारण दूसरे projects में व्यस्त होना है
Wrap-up और बाकी अफसोस
- यह project successful माना जा सकता है, और पिछले amulet की तुलना में build quality बेहतर हुई
- फिर भी 10 बनाने के बाद भी यह पूरी तरह संतोषजनक नहीं है
- back side पर date या serial number न engraving करना अफसोस की बात है
- बेहतर jewellery making और metal machining के लिए equipment investment और learning की जरूरत है
- wearing photos लेना मुश्किल था
- screen tearing से बचने के लिए slow shutter speed चाहिए
- display moving होने पर ज्यादा interesting दिखता है, इसलिए photo में capture करना मुश्किल है
1 टिप्पणियां
Hacker News की राय
वीडियो इतना दिलचस्प था कि बिना किसी योजना के मैं इसे लगभग आखिर तक देखता रहा, और पूरी तरह इसमें खो गया
इस तरह के software को देखकर यह समझना और मुश्किल हो जाता है कि सिर्फ इसलिए कि LLM code evaluation पास कर लेता है, लोग कैसे कह देते हैं कि वह “सबसे अच्छे मानव developer से बेहतर” है
जब मैंने Claude और ChatGPT के कई models से विशेष समस्याओं में मदद लेने की कोशिश की, तो नतीजा बहुत खराब था; CRUD या आम algorithms में वे शानदार हैं, लेकिन नए या अजीब कामों में बहुत कमजोर थे
इस project की “FLIP simulation” जैसी चीज़ को देखकर लगता है कि अभी public न हुआ ChatGPT o3 भी शायद इस pendant को चलाने वाला software लिखने में कठिनाई महसूस करे
इसलिए मुझे नहीं लगता कि वह आकलन सही है। LLM खाली slate से, जहाँ API boundaries साफ़ हों, शुरुआत से implement करने में मजबूत होते हैं—चाहे CRUD app हो या physics simulation
बल्कि उनकी कमजोरी बड़े legacy codebase में, जहाँ कई modules के बीच आना-जाना हो और बहुत से उलझाने वाले संकेत हों, ऐसे कामों में ज़्यादा दिखती है
बड़ी समस्या generated simulator की accuracy है। LLM अच्छे tests नहीं बना सकता, और यहाँ गणित के लिए verification तथा physics के लिए validation—दोनों तरह के tests चाहिए, लेकिन अभी LLM दोनों में ठीक नहीं है
verification की एक standard technique manufactured solutions method (MMS) है, जिसे computer algebra software से काफी हद तक automate किया जा सकता है, लेकिन फिर भी यह उबाऊ काम है, और मेरे अनुभव में यह भरोसा करना मुश्किल है कि LLM यहाँ ज़रूरी algebraic manipulation अच्छी तरह संभालेगा
इससे भी बुरा यह है कि validation के लिए ज़रूरी वास्तविक experimental data LLM बना नहीं सकता। आपको literature में experiments ढूँढने होंगे या खुद experiment करना होगा; भविष्य में शायद वह उपयुक्त experimental papers तक मार्गदर्शन कर सके, लेकिन अभी ऐसा नहीं लगता
हाँ, जब simulation experimental data से मेल नहीं खाता, तब सलाह देने में यह उपयोगी हो सकता है, और turbulence modeling के बारे में भी इसे कुछ जानकारी लगती है, लेकिन नवीनतम प्रगति तक इसकी समझ है या नहीं, इस पर संदेह है
अगर fluid simulation game या computer graphics के लिए है, तो physical accuracy सर्वोच्च प्राथमिकता नहीं होती, लेकिन फिर भी यह जाँचने के लिए कि गणितीय implementation सही है या नहीं, MMS का उपयोग करना बेहतर है। MMS एक दिलचस्प technique है जिसका सामान्य software testing में सीधा समकक्ष नहीं है; विचार यह है कि software में न्यूनतम बदलाव करके एक oracle बनाया जाए, और यदि संशोधित software test पास कर ले, तो मूल software को भी पास माना जा सके
कई university courses में students से ऐसे algorithms assignment के रूप में लिखवाए जाते हैं, और लेखक द्वारा बताए गए YouTube videos की तरह संबंधित ज्ञान internet पर भी मुफ्त में बहुत उपलब्ध है, इसलिए LLM इसे सीख सकता है
बेशक, इस लेख का project अपने-आप में फिर भी बहुत प्रभावशाली है
“lathe access is a basic human right” वाली बात याद आती है
पहले एक शिक्षक ने मुझे अपने राज्य के आखिरी school machine shop के बारे में बताया था, जो द्वितीय विश्व युद्ध के तुरंत बाद कई स्कूलों में बनी सुविधाओं में से एक था और किसी तरह अपवाद की तरह अब तक बचा रहा
उनका कहना था कि आज उस राज्य में नया ऐसा setup बनाया ही नहीं जा सकता, कुछ और राज्यों में तो उसका अस्तित्व ही संभव नहीं होगा, और अगर एक भी गंभीर accident हो गया तो वह पूरी तरह खत्म हो जाएगा और एक भी नहीं बचेगा
मुझे सबसे पसंद यह है that इसका आधा हिस्सा बहुत modern है और आधा लगभग न टूटने जैसा World War II surplus equipment—यह मिश्रण सचमुच शानदार लगता है
सिर्फ accidents की वजह से स्कूलों से lathes हटाने का विचार मेरे लिए कल्पना करना भी कठिन है, और यह एक आत्म-नुकसानदेह सांस्कृतिक रवैया लगता है
enclosed CNC होने पर safety concerns का 99% से अधिक हिस्सा कम हो जाता है, और उपयोगिता कहीं ज़्यादा बढ़ जाती है। CNC में अक्सर work area के अंदर तब जाया जाता है जब spindle नहीं बल्कि सिर्फ servo चालू होते हैं, इसलिए सबसे गंभीर चोट भी शायद fracture तक सीमित रहे, जबकि manual equipment में spindle या chuck किसी इंसान को पकड़कर मार सकते हैं या टुकड़े उड़ा सकते हैं
अच्छा open source pick-and-place equipment भी होना चाहिए। आजकल PCB सस्ते हैं, लेकिन ऐसे equipment अब भी 0201 components या high-density BGA को अच्छी तरह handle नहीं कर पाते
“Machine Technology 1” में सामान्य hand tools, engine lathe, shaper, drill press, milling machine, और grinder के उपयोग का ज्ञान व कौशल सिखाया जाता है, और precision manufacturing industry में इस्तेमाल होने वाले बुनियादी mechanical principles और fundamentals का अभ्यास कराया जाता है
“Welding 1” में safety, equipment setup, metal transfer, gas shielding, और कई तरह की धातुओं की welding सिखाई जाती है, जिसमें oxyacetylene और gas tungsten arc welding पर फोकस होता है
“Construction Trades 1” में woodworking, metal, electrical, और plumbing skills के साथ हर trade के लिए hand tools और power tools का सुरक्षित उपयोग सिखाया जाता है
ऐसा लगता है कि 1990s से 2000s के आसपास public schools में vocational technical education लगभग गायब हो गया था, लेकिन खुशी की बात है कि अब वह वापस आता दिख रहा है
Charlieplexing: https://en.m.wikipedia.org/wiki/Charlieplexing
यह वाकई शानदार प्रोजेक्ट है, और खासकर simulation वाला हिस्सा बहुत पसंद आया।
मैं भी इसी तरह बहुत सारे LED वाला एक साइकिल POV display बना रहा हूँ, और Wi-Fi के जरिए लगभग real-time के करीब वीडियो भेजने में सफल हुआ हूँ: https://youtu.be/hxAHBvuyqpY?si=8XraFuG_Fi54Bs7T
mitxela के project ideas और build process वाले वीडियो वाकई बहुत अच्छे हैं। दूसरे projects भी ज़रूर देखें।
यह project कलात्मकता और engineering का शानदार मेल है।
fluid simulation और hardware design, दोनों तरफ detail की quality कमाल की है, और खासकर LED placement को optimize करने के लिए Charlieplexing का चतुर इस्तेमाल बहुत प्रभावशाली है।
यकीन करना मुश्किल है कि यह कितना प्रभावशाली है। ऐसे projects और उन्हें करने वाले लोगों को देखकर बहुत प्रेरणा मिलती है, लेकिन साथ ही थोड़ा हौसला भी टूटता है।
इसमें लगने वाले work ethic और बहुआयामी क्षमता को समझ सकता हूँ, लेकिन खुद इसे दोहरा पाना शायद संभव नहीं होगा। लगता है पीछे से सिर्फ प्रशंसा ही करनी पड़ेगी।
अगर इसी स्तर की finish और रुचियों वाला कोई और creator हो, तो उसके बारे में जानना चाहूँगा।
micro magnetic fields, motors और flappers जैसी चीज़ों का इस्तेमाल करने वाले बहुत दिलचस्प projects हैं।
अगर housing fabrication वाला हिस्सा अच्छा लगा हो, तो Clickspring भी ज़रूर देखें। visual quality, storytelling और असली तकनीकी कौशल—इन सबको मिलाकर देखें तो उन्हें आज YouTube पर सक्रिय सबसे बेहतरीन machinist कहना अतिशयोक्ति नहीं होगी: https://youtube.com/@clickspring
यहाँ देखा जा सकता है: https://mitxela.com/rants
दुर्भाग्य से सीधे link नहीं किया जा सकता, इसलिए थोड़ा नीचे scroll करना होगा। मुझे व्यक्तिगत रूप से यह अपने तरीके से प्रेरित करता है, इसलिए कभी-कभी फिर से पढ़ता हूँ।
अजीब तरह से, LED जलाने के लिए असली तरल पारा इस्तेमाल करने वाले पुराने idea की ओर मैं ज़्यादा आकर्षित हूँ।
उसे KiCad में place करना कहीं आसान होता, और शायद 4-layer board की भी ज़रूरत नहीं पड़ती।
यह सच में बहुत सुंदर है। कीमत देखकर हैरानी हुई, मैं अभी की कीमत से लगभग 10 गुना ज़्यादा की उम्मीद कर रहा था।
लेखक ने जैसा कहा, मैं शायद इसे “prototype” नहीं कहूँगा।