האקינג למאווררי RGB של Corsair

מודינג של מחשבים הוא תחום שמעולם לא משך אותי, אבל איזה מייקר יכול לעמוד בפיתוי ולא לנסות להתממשק עם מאווררים שכוללים לדים Addressable? הנה מיפוי הפינים והדברים האחרים שצריך לדעת כדי לעשות זאת, כולל בונוס – איך יוצרים ספקטרום "טבעי" בעזרת RGB.

חשיפה ארוכה ובתנועה של ספקטרום צבעים. את המאוורר קשה לראות כאן.
חשיפה ארוכה ובתנועה של ספקטרום צבעים. את המאוורר קשה לראות כאן.

מה לי ול-Case fans

לא מזמן הגיע אליי סט iCUE משומש (בקר Commander Core XT וארבעה מאווררי SP140 RGB Pro) של חברת Corsair, שמייצרת כל מיני מוצרי גיימינג*. שיהיה ברור, אני ממש לא מבין בדברים האלה – לקח לי מלא זמן רק למצוא את הקודים הנכונים של החלקים באינטרנט ולהבין מי ומה. בתור אדם שמשתמש רק במחשב נייד מאז 2007, גם אין לי חומרת מחשב לחבר אליה את העסק ולבדוק אותו בסביבתו ה"טבעית". אבל דבר אחד קלטתי מייד: מאווררים עם לדים זה מגניב ואני צריך לגלות איך לתפעל אותם בעצמי.

*זו לא פרסומת – אין לי מושג אם הגאדג'טים האלה נחשבים טובים בכלל. כתבתי את הפרטים רק כדי שמי שמחפש מידע באינטרנט ימצא… ואולי מישהו ירצה לקנות אותם ממני אחרי שאגמור לשחק איתם 🙂

מכל מאוורר יוצאים שני כבלים נפרדים אל הבקר: אחד לשליטה בסיבוב הפיזי, והשני לשליטה בתאורת הלדים. לכל סוג יש קונקטור אחר, אך בשניהם יש ארבעה פינים בריווח 2.54 מ"מ, מה שמקל מאוד על ניסויים בעזרת הציוד והחוטים שיש לכל מייקר במגירה. על המאווררים כתוב שהם 12VDC ו-0.3A; לגבי הלדים אין שום מידע. יצאתי למסע של חיפושים בגוגל ושל ניסויים בבית, והנה התוצאות:

שליטה בלדים

בכל מאוורר מהדגם הזה טמונים שמונה לדים מסוג WS2812B – כן, הסוג שעובד ב-5V ושיש לארדואינו אחלה ספריות בשבילו. ה-pinout של הקונקטור, מצד המאוורר, הוא זה:

מיפוי פינים של קונקטור RGB של מאוורר Corsair SP140 RGB Pro
מיפוי פינים של קונקטור RGB של מאוורר Corsair SP140 RGB Pro (לחצו לתמונה גדולה)

את הפין שסימנתי Data out לא חייבים לחבר למשהו – אם הבנתי נכון, זהו בעצם הפין Dout של הלד האחרון, והוא מיועד לשרשור אופציונלי של אורות מאווררים נוספים. אפשר לחבר את שלושת הפינים האחרים לארדואינו רגיל (זהירות – 5V צריך להגיע ממקום שיכול לספק די זרם) ולהריץ קוד רגיל של Neopixel:

שליטה בלדים של מאוורר Corsair באמצעות ארדואינו
שליטה בלדים של מאוורר Corsair באמצעות ארדואינו (לחצו לתמונה גדולה)

שליטה בסיבוב

כבל הסיבוב מעביר 12V ואדמה קבועים, ומקבל סיגנל PWM נפרד ב-5V לשליטה במהירות. הנה ה-Pinout שלו:

מיפוי פינים של קונקטור FAN של מאוורר Corsair SP140 RGB Pro
מיפוי פינים של קונקטור FAN של מאוורר Corsair SP140 RGB Pro (לחצו לתמונה גדולה)

היציאה שסימנתי כ-Speed מחוברת לחיישן מגנטי בתוך המאוורר, והיא מוציאה סיגנל שמאפשר למדוד את מהירות הסיבוב בפועל. שימו לב שזו יציאת Open drain: צריך נגד pull up חיצוני כדי לקבל אות ברור. אגב, גם עם נגד כזה האות די רועש וקופץ לערכים מסוכנים – לא הייתי מחבר אותו לפין קלט של ארדואינו בלי הגנות מתאימות. הנה מה שהסקופ ראה בעת סיבוב מהיר (קרוב למהירות המקסימלית), עם pull up של 10K ל-5V:

אות מחיישן הסיבוב של מאוורר Corsair SP140 RGB Pro
אות מחיישן הסיבוב של מאוורר Corsair SP140 RGB Pro (לחצו לתמונה גדולה)

אני לא יודע מה תדר ה-PWM המדויק שהמאוורר מצפה לו, אך נראה שהוא הסתדר מצוין עם תדר 980Hz לערך – ברירת המחדל בפין 6 של ארדואינו Nano Every שאיתו ביצעתי את הבדיקה. תדר הגל שהתקבל מהמאוורר, בתמונה למעלה, הוא כ-39Hz. לפי המפרטים ברשת, מהירות הסיבוב המרבית של מאווררים כאלה היא כ-1200RPM, מה שאומר שהחיישן הפנימי מפיק שני פולסים לכל סיבוב.

מספקטרום ל-RGB

כל אחד יכול להגריל ערכי אדום, ירוק וכחול באקראי ולקבל המוני צבעים שונים על הלדים. אבל איך מדמים משהו טבעי וסטנדרטי יותר, לצורך העניין את ספקטרום האור הנראה לעין? ה"תרומה" של כל אחד מהצבעים אדום, ירוק וכחול על פני הספקטרום היא לא לינארית ולא מובנת מאליה. למשל, חישבו על אורכי הגל הארוכים (אדום) והקצרים (סגול): בשני המקרים יש לנו רכיב אדום בצבע, ואילו בתדר ביניים ירוק אין שום רכיב אדום.

למזלנו, אנשים טובים וחרוצים פירקו את הספקטרום לגרפים נפרדים של רכיבי אדום, ירוק וכחול, ואף התאימו אותם למאפייני RGB של מסכים. הסתכלו, למשל, על התשובה המובילה (נכון לכתיבת שורות אלה) לשאלה ב-Stackoverflow, שכוללת הסברים, גרפים ואפילו קוד לחישוב הערכים.

את הקוד הזה עם כל המספרים העשרוניים ממש לא מומלץ להריץ בזמן אמת על ארדואינו, אבל אנחנו יכולים להריץ אותו במחשב ולשמור את התוצאות (מעוגלות לערכים שלמים בסקאלה נוחה) בטבלת חיפוש, שנעביר אחר כך לקוד שלנו בארדואינו. אם נצמצם את הסקאלה של אורכי הגל ל-256 ערכים, נקבל טבלה יפה עם 256 שורות, כשבכל אחת מהן 3 בייטים בלבד (אחד לכל צבע כמובן), סה"כ 768 בייטים – לא נורא בכלל.

על בסיס קוד הדגמה פשוט של Neopixel לארדואינו כתבתי לולאה שעוברת על טבלת הספקטרום שיצרתי וצובעת את כל הפיקסלים במאוורר כל פעם בצבע אחר, לפי הסדר. בעין קצת קשה ליהנות ממלוא האפקט, אז צילמתי אותו בחושך בחשיפה ארוכה תוך כדי הסטת הטלפון מצד לצד – זו התמונה שמופיעה בראש הפוסט.

מה אתם הייתם עושים עם מאווררים כאלה?

להרשמה
הודע לי על
0 תגובות
Inline Feedbacks
הראה את כל התגובות