מרצה: גיא ברשפ

Download Report

Transcript מרצה: גיא ברשפ

‫סדנאת ארדואינו‬
‫(לאנשי תוכנה ‪) ‬‬
‫מרצה‪ :‬גיא ברשפ‬
‫רגע לפני‪-‬מי שעוד שלא מכיר‪...‬‬
‫‪ ‬בימי חמישי‪ -‬הרצאות‪/‬סדנאות העשרה בתחומים כלליים וטכנולוגיים‪ ,‬כולכם‬
‫מוזמנים לגראג' לשמוע וליזום שת"פים‪.‬‬
‫‪ ‬מהרצאות העבר‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫שרשראות מרקוב ושימושים בסיסמאות פרו‪-‬אקטיביות‬
‫‪–NEO 4J‬דטהבייס גראפי ( ‪)NOSQL‬‬
‫‪Bitcoin‬‬
‫‪Synthetic terrain‬‬
‫‪Phone OS‬‬
‫למידה חישובית ו‪SVM -‬‬
‫‪VLSI Design‬‬
‫ועוד'‬
‫‪ ‬מהרצאות העתיד‪ECC,Natural language proccessing, :‬‬
‫‪ ‬ובפעם הראשונה ‪:‬‬
‫‪ ‬סדנאת ‪!Hands ON‬‬
‫עקרונות הסדנא‪-‬מתחילים!‬
‫‪ ‬מטרות הסדנא הינן‪ :‬שיתוף פעולה ‪ ,‬תרגול עקרונות פשוטים‪ ,‬כדי לקבל‬
‫תחושה מספיק טובה כדי לעבוד עם הארדואינו בהמשך‪.‬‬
‫‪ ‬האופן שבו תבוצע ההדרכה (באידאל)‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הסבר תיאורטי קצר (אני)‪ 5-‬דקות‬
‫הדגמה פשוטה(אני)‪ 5 -‬דקות‬
‫תרגול של דברים מתקדמים (אתם)‪ 10-15-‬דקות‬
‫כלל הרכיבים הנם רכוש פרטי‪,‬נא להקפיד לשמור עליהם‪.‬‬
‫לאחר ביצוע המשימות הניתנות‪,‬מוזמנים בזמן שנותר לנסות דברים חדשים‪.‬‬
‫המלצה לעבודה‪ :‬חלוקת אחריות לחומרה‪/‬תוכנה עבור משימה‪ ,‬ושיתוף‬
‫פעולה‪.‬‬
‫התלהבות ועזרה הדדית בסיום המשימות‪.‬‬
‫מה נדבר ומה נתרגל?‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ארדואינו סקירה (סוגי החומרות‪,‬מבנה‪,‬שימושים‪,‬היכרות עם הציוד)‬
‫סביבה ‪,‬שפה‪ ,‬ועקרונות בסיסיים‬
‫המעגל האלקטרוני הראשון שלנו ‪‬‬
‫היכרות בסיסית עם מושגי "חומרה"(אנלוגי‪/‬דיגטלי)‬
‫קריאה מסנסור ראשון (והכנת בקר למשאיות ברברס‪)..‬‬
‫הנעת מנוע צד (‪)...‬‬
‫התחברות לממשק סריאלי (‪/RPI‬מחשב‪/‬מע' שו‪ )...‬ופיצוח סיסמאות‬
‫נסיון לבניית פרוייקט עם הרכיבים שהבאתם‬
‫הדגמת "רואה יורה" ‪.open-source‬‬
‫קצת רקע על עולם המיקרו‪-‬בקרים‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מיקרו‪-‬בקר הוא רכיב מתוכנת‪ ,‬שהוא למעשה מערכת מחשבפונקציונלית‬
‫שלמה‪ ,‬המוכללת ברכיב אלקטרוני בודד‪ .‬כך ניתן למצוא בתוך הרכיב את כל‬
‫המרכיבים המקובלים של מערכת מחשב‪ ,‬כמויחידת עיבוד וזיכרון‪.‬‬
‫כפי ששמו מרמז‪ ,‬מטרתו של המיקרו‪-‬בקר היא לבקר על תהליכים‪ ,‬ולצורך‬
‫כך‪ ,‬נמצא במיקרו‪-‬בקרים גם רכיבי כניסות ויציאות ( ‪I/O),‬המשמשים‬
‫לבקרה ולתקשורת עם העולם החיצוני‪.‬‬
‫מיקרו‪-‬בקרים מצויים כמעט בכל מוצר המכיל אלמנט אלקטרוני‪/‬חשמלי‬
‫כלשהו‪ ,‬כגון כלי‪-‬רכב‪ ,‬מכונות ביתיות ומשרדיות וצעצועים‪.‬‬
‫השימוש במיקרו‪-‬בקר כמעגל משולב בודד‪ ,‬במקום מספר רכיבים נפרדים‬
‫(מיקרו‪-‬מעבד‪ ,‬זכרונות ובקרי ‪I/O),‬מאפשר להקטין בגודל ועלות היצור‬
‫של מוצרים‪.‬‬
‫קיימים מיקרו בקרים שניתן לתכנת אליהם ב‪ python , .NET‬ועוד'‪..‬‬
‫סקירה‪-‬ארדואינו‬
‫ַארדּואִ ינֹו (מאיטלקית )‪Arduino‬הוא מיקרו‪-‬בקר בעל מעגל‬
‫‪ְ ‬‬
‫מודפס יחיד ( ‪Single Board MicroController),‬עם סביבת‬
‫פיתוח משולבת ( )‪IDE‬ברישיון קוד פתוח‪ ,‬אשר מטרתה ליצור סביבה‬
‫נוחה וזולה לפיתוח פרויקטים המשלבים תוכנה עם רכיבי אלקטרוניקה‪.‬‬
‫דוגמאות לפרוייקטים‬
‫(או‪ :‬למי יש ‪ $40‬לבזבז?)‬
‫!‪Soon….YOUR ‘S HACKS‬‬
‫סוגי ארדואינו‬
mega2560 uno /Duemilanove mini
‫ליליפאד‬
.‫מס' יציאות‬,‫אפשרויות משחק עם גודל‬
:‫יש מלא סוגים נוספים‬,open hardware – ‫מאחר שהארדואינו‬
Freeduino, RBBB (Really Bare Bones Board), DFRuino,
Seeeduino, Roboduino (for robotics), Gator
‫תכלס‪ ,‬מה נדרש כדי להתחיל עם ארדואינו?‬
‫(או‪ :‬בוא נפתח את קופסאת ההפתעות‪)....‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מחשב‪)$35-300( ...‬‬
‫לוח ארדאינו ( ‪)$30-$12‬‬
‫‪-Breadboard‬אופציונלי ( ‪)$5‬‬
‫סנסורים‪ (..‬סדר גודל ‪ $5-10‬לאחד)‬
‫‪( Shields‬סדר גודל של ‪)$40‬‬
‫לדים‪,‬נגדים‪,‬טרנזיסטורים‪ (...‬סדר גודל של ‪)$15‬‬
‫‪ ‬ערכת בסיסית טובה ניתן למצוא ב‪ ,$60‬אחרי חיפוש יסודי בגוגל‬
‫ארדואינו אונו‬-‫היכרות ציוד‬
Background Specs
Flash Memory32 KB
(ATmega328) of which 0.5 KB
used by bootloader
SRAM2 KB (ATmega328)
EEPROM1 KB (ATmega328)
Clock Speed16 MHz
‫היכרות ציוד‪BreadBoard-‬‬
‫איור‪ :‬איך חוטי החשמל מחוברים בלוח מאחורה‪.‬‬
‫היכרות ציוד‪LED -‬‬
‫יש לבדוק ‪ V‬באמצעות מולטימטר‬
‫נגדים ( ‪)resistors‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נמדדים באוהם‪)Ω(.‬‬
‫אין חשיבות לכיוון‪.‬‬
‫ככל שערכם גדול יותר‪,‬כך מאבדים יותר מתח‪.‬‬
‫ניתן לחשב את עוצמת ההתנגדות ע"פ טבלת צבעים‪( .‬או להיעזר‬
‫במולטימטר ‪)‬‬
‫‪Sensor-Ultrasonic‬‬
‫‪ ‬מודד מרחק ע"י שליחת פולס‬
‫‪ ‬בהמשך נחקור את ה‪ data-sheet‬שלו‬
‫ציוד נוסף שיהיה זמין בסדנא‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫באזר(משמיע קול)‬
‫כפתור‪-‬מפסק‬
‫מנוע צד‬
‫רגש אור‬
‫רגיסטר‬
‫‪ ‬ועוד כ‪ 40-‬סנסורים בסוף הסדנא‬
‫(גלאי אש‪ ,IR ,‬ג'ויסטיק ועוד'‪)...‬‬
‫שפה וסביבה‪-‬מתחילים לתכנת‪...‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫סביבת ארדואינו דומה ל‪ -C‬נקראת ‪( Wiring‬ה‪ IDE‬בנוי ב‪)JAVA -‬‬
‫עוטפת פקודות מכונה של ארדואינו לעבודה בצורה כמעט מיידית‪.‬‬
‫ניתן להוריד אותה בצורה חופשית מ‪arduino.cc :‬‬
‫תוכנית נקראת ‪ sketch‬נכתבת בסינטקס של ‪C‬‬
‫ניתן לצרף ‪ Headers‬ומס' קבצים‪,‬אך אין לעבור תוכנית מקומפלת‬
‫גדולה מגודל ה ‪ –FLASH‬במקרה של ‪K32 – UNO‬‬
‫יש להגדיר את סוג ה‪, board‬קצב ה‪ baud‬וה‪COM-‬‬
‫תרגול‪ -‬הארדואינו מחובר למחשב(אם יש צורך‪,‬נא להתקין‬
‫‪ driver‬מהתיקייה של ארדואינו)‬
‫היכרות סביבת עבודה‬
Basics programming
Setup,loop -‫שני מתודות הכרחיות‬
‫ נגדיר את כל הפינים שהולכים להשתמש בהם‬Setup‫ב‬
. ‫ נשתמש בהם‬Loop ‫ב‬
:‫פקודות בסיסיות להתחלה‬
PinMode( pinNumber, type:Output/input)
digitalWrite)pinNumber,HIGH/LOW)
digitalRead(pinNumber, HIGH/LOW)
Delay(msec)
13 ‫ הדלקת פין‬:‫תרגול ראשון לחימום‬





‫…‪Now for the real thing‬‬
‫‪ ‬אחרי ששיחקנו עם לד קבוע‪...‬‬
‫‪ ‬הגיע הזמן ל‪....‬‬
‫‪ ‬הרכבת מעגל ראשון!!!!!!!‬
...‫לפני שמתחילים מעגל ראשון‬
‫דרכים בטוחות להרוס את הארדואינו‬1o 
Method #1: Shorting I/O Pins to Ground
Method #2: Shorting I/O Pins to Each Other
Method #3: Apply Overvoltage to I/O Pins
Method #4: Apply External Vin Power Backwards
Method #5: Apply >5V to the 5V Connector Pin
Method #6: Apply >3.3V to the 3.3V Connector Pin
Method #7: Short Vin to GND
Method #8: Apply 5V External Power with Vin Load
Method #9: Apply >13V to Reset Pin
Method #10: Exceed Total Microcontroller Current
....‫הוראות אלו נכתבו בעשן וריח של שרוף‬
‫מעגל חשמלי ראשון(קלט‪/‬פלט)‬
‫‪ ‬ממה מורכב?‬
‫‪‬‬
‫‪‬‬
‫זרם ממתח גבוה למתח נמוך‬
‫הארקה‬
‫‪ ‬רכיבים לטובת מעגלים שניצור‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫לד (החלק הקצר יותר מיועד ל‪)GND‬‬
‫נגד(בכיר‪)..‬‬
‫‪BreadBoard‬‬
‫‪ ‬איך נראית הסכימה? (‪ UML‬של עולם החומרה‪)..‬‬
‫‪ ‬הדגמה פשוטה‪ :‬הדלקת לד בדיליי‬
‫קצת על חומרה ‪,‬חוק אום וחוק קירכהוף‬
‫‪ ‬חוק אום‪-V ,V=IR:‬מתח‪-I ,‬זרם חשמלי‪-R ,‬התגנדות‬
‫‪ ‬לכן אם נתונה לנו נורת לד שתומכת בעלת מתח ‪ 1.7‬וזרם‪mA20 :‬‬
‫‪‬‬
‫ע"י חישוב פשוט נקבל כי נצטרך ‪ X = )5-1.7 (: 0.020 :‬אוהם‬
‫‪ ‬חוקי קירכהוף(מה לעשות כשיש מספר רכיבים)‪:‬‬
‫‪‬‬
‫‪‬‬
‫בחיבור חשמלי בטור של שניים או יותר רכיבים חשמליים‪ ,‬הזרם שעובר בכל‬
‫אחד מהרכיבים ‪ -‬זהה‪ ,‬והמתח הכולל עליהם שווה לסכום המתחים על כל אחד‬
‫מהם בנפרד‪.‬ואילו ההנגדות הינה‪Req = R1 + R2 + .... Rn :‬‬
‫בחיבור חשמלי במקביל של שניים או יותר רכיבים חשמליים‪ ,‬המתח על כל‬
‫אחד מהם ‪ -‬זהה‪ ,‬והזרם הכולל שעובר בהם שווה לסכום הזרמים שעובר בכל‬
‫אחד מהם בנפרד‪Req = 1/{(1/R1)+(1/R2)+(1/R3)..+(1/Rn)} .‬‬
‫‪ ‬הדגמה‪:‬מעגל עם נורה‪ .‬תרגול‪ :‬הפעלת דימר‬
‫‪ ‬תרגול בונוס‪ :‬עבודה עם רגיסטר‬
‫‪Digital vs analog‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫רציף מול בדיד‬
‫אנלוגי‪ -‬אותות רציפים‪,‬חלקים‪,‬הרבה רעשים‪,‬צריך עיבוד‪.‬‬
‫החלפת אנלוגי לדיגטלי מבצע קוואנטיזציה‬
‫כדי לבצע המרה הפוכה משתמשים ב ‪ ,)~( PWM‬וכותבים בצורה‬
‫אנלוגית‬
‫בשיטה זו בעזרת ארדואינו‪,‬ניתן להמיר אות דיגטלי למספר בכ‪( 1024-‬‬
‫‪) 210‬‬
‫(תמונה שווה יותר מ‪ 100‬מילים)‪PWM‬‬
‫‪ ‬אות דיגטלי יודע להוציא מתח של ‪ V5‬או ‪)duty cycle ( V0‬‬
‫‪ ‬כדי לשלוט על עוצמת אור‪/‬מנוע חשמלי נדרשים יותר מצבים‪.‬‬
‫‪ ‬איך ניתן למשל להעביר ‪? V2.5‬‬
‫‪‬‬
‫נעביר חצי מהזמן ‪ V5‬חצי מהזמן ‪)duty cycle 50% ( V0‬‬
‫‪ ‬בעזרת הטריק הזה בעצם מבצעים "אינטגרציה" כדי לקבל טווח גדול‬
‫יותר של ערכים‪,‬כאשר זה מתבצע בתדירות גבוהה יחסית‬
‫פונקציות שימושיות‬
‫‪map(val, 300, 700, 0, 1024); ‬‬
‫‪analogRead() –from A0-A6 pins ‬‬
‫‪‬‬
‫שימו לב כי ‪sensorValue * (5.0 / 1023.0)= Sensor Votls‬‬
‫‪analogWrite() -via PWM ‬‬
‫‪ ‬תרגול‪ :‬קריאת אות אנלוגי מפוטומטר‪ ,‬והדלקת הנורה בעוצמת‬
‫האור ההפוכה‬
‫סנסור ‪Ultra Sonic‬‬
‫‪ ‬דרכי הפעולה בהתממשקות לסנסור‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫חיפוש וקנייה ב…‪DX/seed studio/‬‬
‫עיון ב‪Data sheet-‬‬
‫מחקר עצמאי ( לעשות לו‪)Reversing.. :‬‬
‫מציאת קוד שמישהו כבר מימש‪...‬‬
‫‪ ‬משימה‪ :‬כתיבת מערכת למשאיות‬
‫(ככל שמתקרב יותר‪,‬ככה משמיע צלצול בתדירות גבוהה יותר)‬
‫מנוע סרבו‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ניעזר בספרייה ‪Servo.h‬‬
‫סרבו הינו סוג של מנוע מיני רבים( סטפר‪,‬וכד')‬
‫מנוע מוגבל ל‪ 180‬מעלות(וניתן לקבוע לו את הערך (‪)POS‬‬
‫יש לשים לב לחבר אותו ליציאה ‪.PWM‬‬
‫יש לשים לב לא להחליף את ה ‪( - , +‬אדום זה ‪ ,+‬חום זה ‪,-‬‬
‫כתום=דאטה)‬
‫אל תקטינו את הדיליי יותר מדיי! זה יתקע אותו‪.‬‬
‫תרגול‪ Clapper :‬עם כפתור‬
‫ממשק סריאלי עם המחשב‬
‫‪ ‬תקשורת סדרתית (‪)byte by byte‬‬
‫‪ ‬הקצב נמדד ב ‪( baud- bits per second‬נכוון ל‪)9600-‬‬
‫‪ ‬ניעזר בספרייה ‪Serial‬‬
‫;)‪Serial.begin(baud‬‬
‫)‪if (Serial. available () > 0‬‬
‫{‬
‫;)(‪value = Serial.read‬‬
‫‪///‬‬
‫;)‪Serial.write(value‬‬
‫;)‪delay(200‬‬
‫}‬
‫‪ ‬משימה‪ :‬לכתוב הזדהות רק ליוזר בשם שלכם להפעיל לד )נתונה תוכנית‬
‫בפייתון)‬
‫הדגמה ממשק סריאלי‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מערכת רואה יורה‬
‫שימוש ב‪, Raspberry Pi‬לקבלת ‪ Input‬ממצלמה וביצוע "ראייה‬
‫ממוחשבת" לצורך זיהוי בן אדם‪.‬‬
‫שימוש ב ‪SimpleCV‬‬
‫ביצוע ‪ reversing‬לאקדח בועות‪,‬והתחברות למנוע שמפגעיל‬
‫לא "מבצעי" עקב זרם נמוך מהפינים של ארדואינו‬
‫ארדואינו בפעם הבאה‪Sheilds ..‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫סנסורים זה כיף ומגניב‪...‬‬
‫אבל מה עם תקשורת ‪?zigbee/BT/ethernet‬‬
‫שמירה על זכרון קבוע (‪?)SD‬‬
‫התממשקות זה למיקום ‪?GPS‬‬
‫קבלת מידע מתגי ‪?RFID‬‬
‫תקשורת בין רכיבים ( ‪,)SPI‬מגוון מנועים‬
‫כל אלו ועוד נעשו ע"י ‪ Shields‬ייעודיים‪,‬ופונקציות מוכנות לשליפה‪,‬‬
‫בכ‪ $40 -‬לאחד‬
‫מקורות‬
http://www.ladyada.net/learn/arduino/
BLOG Jermey blum
)‫ (המדריך של טובי‬Hwzone.co.il
Arduino.cc
:‫כמוכן את המצגת תוכלו למצוא ב‬
Barshapp.roadmap.co.il




