יום שבת, 21 ביולי 2012

Arduino Shift Register Guide



ל Arduino יש סה"כ 14 כניסות \ יציאות דיגיטליות שעלולות להיגמר לנו מהר מאוד, מסכים ו Leds עלולים "לשתות" לנו את כל הכניסות\ היציאות ובעצם להגביל אותנו לכמות הרכיבים שנוכל לחבר, כאן ה Shift Registers נכנסים לתמונה ומאפשרים לנו להרחיב את כמות הכניסות \ יציאות ולנהל אותם בעזרת ה Arduino.

דרישות:

  • Arduino Uno
  • Arduino Prototype Shield
  • 74HC595N Shift Register 
  • Wires



74HC595N - Shifit Register

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


מדובר ב"ג'וק" עם 16 רגליים שמאפשר לנו להגדיל את כמות I\Os  הדיגיטלים עבור ה Arduino, בעזרתו ניתן להוסיף עוד 8 רגליים ולשלם על 3 רגליים בלבד ב Arduino, ניתן לשרשר קבוצה של Shift Registers ביחד.




מפת רגליים:



QA - QH
שמונה רגליים חדשות לשליטה, QH היא רגל מיוחדת, ודרכה משרשרים Shift Register נוסף.

SER
מכיל את המידע עבור התא הבא שהולך להיכנס.

SRCLK
כשנעביר HIGH הוא יכניס את התא למערך.

RCLK
כשנעביר High נפעיל \ נכבה את הרגליים (QA-QH) ע"פ המערך.

SRCLR
מאפס את ה Shifit Register

OE
מאפשר להתחבר לרגליים (QA-QH) מופעל כאשר עובר בו GND.


מבנה סופי




קוד:

int SER_Pin = 10;
int RCLK_Pin = 9;
int SRCLK_Pin = 8;

#define number_of_74hc595s 1 
#define numOfRegisterPins number_of_74hc595s * 8

boolean registers[numOfRegisterPins];

void setup(){
  pinMode(SER_Pin, OUTPUT);
  pinMode(RCLK_Pin, OUTPUT);
  pinMode(SRCLK_Pin, OUTPUT);
  
  clearRegisters();
  writeRegisters();
}               

//write the register array items to low
void clearRegisters(){
  for(int i = numOfRegisterPins - 1; i >=  0; i--){
     registers[i] = LOW;
  }

//write values of the registers
void writeRegisters(){
  
  digitalWrite(RCLK_Pin, LOW);

  for(int i = numOfRegisterPins - 1; i >=  0; i--){
    digitalWrite(SRCLK_Pin, LOW);
    
    //get the register value from the Register Array
    int val = registers[i];

    //write the pin value to the SER Register
    digitalWrite(SER_Pin, val);
    
    //shift the register
    digitalWrite(SRCLK_Pin, HIGH);

  }
  //set the pins by the shifted registers
  digitalWrite(RCLK_Pin, HIGH);

}

//set value of the pin by index value
void setRegisterPin(int index, int value){
  registers[index] = value;
}

void loop(){

  setRegisterPin(1, HIGH);
  setRegisterPin(2, HIGH);
  setRegisterPin(3, HIGH);
  setRegisterPin(4, HIGH);
  setRegisterPin(5, HIGH);
  setRegisterPin(6, HIGH);
  setRegisterPin(7, HIGH);

  writeRegisters();
  delay(1000);
  
  setRegisterPin(1, LOW);
  setRegisterPin(2, LOW);
  setRegisterPin(3, LOW);
  setRegisterPin(4, LOW);
  setRegisterPin(5, LOW);
  setRegisterPin(6, LOW);
  setRegisterPin(7, LOW);
 writeRegisters();
   delay(1000);
}

סיכום:
עכשיו שום דבר לא יכול להגביל אותנו ובעזרת Arduino בודד ניתן להתממשק למספר גדול של כניסות \ יציאות דיגיטליות ולהפוך את הפרויקטים שלנו ליותר מורכבים.

תרחיב אותו!


יום ראשון, 1 ביולי 2012

Mini-Itx Guide



מחשבי Mini Itx הם הדרך המהירה ליצירת מחשבים יעודיים בארכטיקטורה X86, אם אתם לא רוצים להסתבך עם מערכות Embedded מבוססות Arm ואתם רוצים לעבוד עם מעבד סטנדרטי ומערכות הפעלה סטנדרטיות ה Mini Itx הוא הפתרון בשבילכם, הרבה חברות משקיעות בתחום, חברת Intel מייצרת סדרת לוחות על בסיס מעבדי Atom שלה, חברת Zotac לקחה את העסק הכי רחוק שאפשר ומציעה לוחות עבור מעבדי ה CoreI של אינטל עם כרטיסי מסך Geforce מובנים, אבל הם לא לכל כיס.

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


דרישות:

  • לוח Intel - במקרה שלי מבוסס על מעבד Atom דגם: D2500HN
  • זכרונות 1066Mhz DDR3 - במקרה שלי של חברת  G.Skiil 2 X 2 GB
  • כונן קשיח SSD 60 GB- במקרה שלי של חברת Kingston
  • מארז Mini Itx - במקרה  שלי של חברת Antec

לוח אם:


קיים מגוון רחב של לוחות בצורות שונות ומשונות, ניתן לרכוש לוחות Mini Itx עם Socket LGA 1155 עבור מעבדי CoreI של אינטל, עם חיבורי Pci Express , HDMI ועוד , אבל רציתי משהו יחסית זול שמגיע עם מעבד מובנה וכמובן שלא עושה רעש לכן בחרתי ב D2500HN של Intel שמגיע עם מעבד Atom  במהירות  1.86Ghz עם 2 ליבות וכמובן צלעות קירור פסיביות (סוף סוף קצת שקט), 2 חריצי זיכרון מסוג SoDimm בתמיכה במהירות Mhz  800 \ 1066 , חיבורי Sata 2 , כרטיס רשת 10\100\1000, כרטיס קול מובנה באיכות HD ,יציאת RGB  וחיבור PCI סטנדרטי שלא יהיה בשימוש בגלל גובה המארז , יש מספר חסרונות בלוח הראשון שהוא לא מגיע עם Wifi מובנה, והשני שאין יציאת HDMI אבל עבור לוח עם מעבד במחיר של 400 ש"ח זה נראה שווה אז קניתי כרטיס Wifi חיצוני.

זיכרון:


הזיכרון הוא מסוג Sodimm  ונמצא בשימוש במחשבים ניידים, החלטתי לרכוש זיכרונות מסוג G.Skill במהירות של 1066 Mhz (מהירות התמיכה המקסימלית של הלוח) במחיר של 70 ש"ח עבור 2 GB , צריך להשים לב לכמות הזיכרון שניתן להוסיף ללוח, במקרה שלי הלוח תומך רק עד 4GB.

כונן קשיח:


בכונן הקשיח החלטתי ללכת על הגבוה ולרכוש כונן SSD של חברת Kingston שיוריד את רמת הרעש ויעלה את הביצועים , מחירי ה SSD עדיין יקרים והנפחים קטנים יחסית , אבל אם כבר הולכים על קטן, שקט ומהיר הם בהחלט אופציה, המחיר ל 60 GB נע בין ה 400 ל 500 ש"ח אבל אני מאמין שאפשר למצוא בפחות, הדגם הספציפי של Kingston מגיע עם מארז Usb שמאפשר להפוך את הכונן לכונן חיצוני.

מארז:


קיימים מארזים רבים ומעוצבים עבור לוחות Mini Itx , החברות משקיעות זמן באיך לצמצם את המארז למקסימום לכן חשוב להשים לב למידות ולראות שאתם לא חורגים מגובה המארז בהרכבת הלוח, במקרה של לוחות עבור Socket 1155 צריך להשים לב שגוף הקירור לא גבוה מידי וגם אם יש לנו יציאות Pci בלוח לא בטוח שנוכל להשתמש בהם מרבית המארזים לא מייחסים ליציאות PCI חשיבות ולכן לא ניתן להשתמש בהם.

הכוננים הקשיחים חייבים להיות של מחשבים ניידים (2.5") , חשוב להשים לב שהמארז מגיע עם ספק כוח , במקרה שלי המארז מגיע עם ספק כוח של  90wat שדומה לספקי כוח של מחשבים ניידים , מחירי המארז משתנים מיצרן ליצרן ונעים בין 250 ל 1000 ש"ח.

הרכבה:

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

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


כל העסק מאוד צפוף וצריך להשים לב שהחוטים לא לוחצים על רכיבים בלוח, לנסות להצמיד את החוטים לדפנות המארז על מנת לאפשר גישה של אויר , מארז Antec מגיע עם מאורר 80 מ"מ שהולך להיות המאורר היחידי במארז, לא לשכוח שכל זה נכנס למארז ברוחב 25X7 ס"מ תלוי איך מנחים אותו.



חשוב להשים לב שבמארז אין CD\DVD לכן יש להצטייד בכונן חיצוני או בכרטיס Flash על מנת להתקין את מערכת ההפעלה.

סיכום:

אז אם אתם שוקלים לקנות Streamer או לתכנן כל מערכת אחרת אל תשללו את מערכות ה Mini Itx למרות שהם לא מצליחים להתחרות בלוחות ובמעבדים החדשים בעולם ה SOC - System On Chip מבחינת צריכת החשמל והגודל, הם עדיין יכולים לשמש למשימות רבות כמו מדיה סנטר, תחנות עבודה במשרדים, מערכות ייעודיות ולחסוך לנו מקום, כסף וחשמל.



לא לשכוח ברגים ומברג...
בהצלחה.