מעבר לניווט

אלקטרוניקה למתחילים: מדריך לשימוש ב-Bumble-b ואיך להשתמש בו לשלוט של מטריצה של LEDs דרך USB אוקטובר 10, 2009

פוסט מאת guysoft בתוך : Crictor, המקור, כללי, תוכנה חופשית , היסטורייה
הבמבל-בי

הבמבל-בי

שלום לכולם,

בשבוע האחרון שיחקתי עם הצ'יפ החדש שלי בשם במבל-בי (Bumble-b). בפרוייקט שלי אני גרמתי לו לשלוט על מטריצה של לדים (LEDs), והפכתי אותו לרכיב USB תודות לספרייה פשוטה בשם LUFA. כעת אני יכול פשוט לכתוב echo > /dev/ttyACM0 כדי לשלוח משהו וה-LEDs יציגו. למעשה יש לי /dev/matrix!

בפוסט הזה אני מקווה להסביר איך להשתמש בבמבל-בי, צ'יפ בעל תמיכה ב-USB עם מתכנת מובנה ומחירו 90 ש"ח בלבד! אני מקווה גם סציפית לעניין את הקהילה שלנו בארץ לשחק קצת עם אלקטרוניקה, שכן זה באמת פרוייקט זול, ויחסית קל להתחיל איתו.

הנה ווידאו מבוא קצר (ואחריו פוסט מפורט):
[youtube]http://www.youtube.com/watch?v=yR8Lkkf5tDY[/youtube]

במבל-בימהו הבמבל-בי?

הבמבל-בי (Bumble-b) הוא צ'יפ USB מבוסס על AVR עם מתכנת מובנה לתוכו. תודות לכך שהוא AVR (צ'יפים של חברת Atmel) הוא צ'יפ דיי מבוסס ובשימוש נרחב (המודל הספציפי הוא at90usb162). בנוסף, מפני שהוא בעל חיבור USB שמולחם עליו ישירות, הוא מאפשר יצירה של רכיבי USB ממש בקלות (אבל לא רק).

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

בשביל מידע נוסף, בקרו באתר של dflecher (גם לקנייה), בתרשים הסכמתי של הבמבל-בי ובערוץ ה-IRC #bumbleb.

קימפול הקוד עם gcc-avr (כן! עכשיו 100% קוד פתוח)

למרות שאני מקשר בפוסט הזה לתסריטים לתיכנות הבמבל-בי בממשק גרפי, אני רוצה להדגיש כי בניגוד לפרוייקט הקודם שלי עם ה-PIC, כאן הקומפיילר שהיה בשימוש הוא gcc-avr שהוא כולו קוד פתוח. אני אכנס לפרטים בחלק על ה-IDE.

איך להכניס את הצ'יפ למצב תיכנות

אם ברשותכם במבל-בי וחברתם אותו לכניסת USB, הוא יזדהה לראשונה בתוך רכיב USB סיריילי, זהו לא ממשק התכנות, אלה זו תוכנה ראשנית ש-dflecher שולח את הבמבל-בי איתה. התוכנה הזו מאפשר שליטה על כל הפינים באמצעות שליחת פקודות ליציאה הסיירלית. למרות שזו תוכנה שימושית ככל הנראה תרצו לבנות ולהעלות תוכנות משלכם. בשביל לעשות זאת צריך להעביר את הבמבל-בי למצב תיכנות DFU שזה Device Firmware Update. התהליך מוזכר בתרשים הסכמה, אבל אני אחזור עליו כאן שוב:

  1. יש לחבר את פין 21 (HWB) לפין 12 (GND)
  2. יש לחבר כפתור בין פין 9 (RESET) לפין 12
הבמבל-בי במצב תיכנות

הבמבל-בי במצב תיכנות

כעת כדי לעבור למצב DFU יש ללחוץ על כפתור ה-RESET שהותקן. לאחר לחיצה כזו יתגבל בפלט של dmesg:
usb 3-2: new full speed USB device using uhci_hcd and address 13
usb 3-2: New USB device found, idVendor=03eb, idProduct=2ffa
usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-2: Product: AT90USB162 DFU
usb 3-2: Manufacturer: ATMEL
usb 3-2: SerialNumber: 1.0.5

לאחר מעבר למצב התיכנות, אפשר להעלות קבצי .hex לצ'יפ. התוכנה לפעולה זו נקראת dfu-progremmer. היא קיימת במאגר החבילות של דביין (קפלן, אין לך עכשיו תירוצים). הפקודה לבצע העלאה של קובץ .hex היא:
dfu-programmer at90usb162 erase
dfu-programmer at90usb162 flash program.hex

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

הגדרת ה-IDE בלינוקס

תיסכל אותי הוא שלא מצאתי כלי נוח כמו piklab לשימוש עם הבמבל-בי. בעיקר כי כל הכלים הקיימים לא תמכו מיידית ב-dfu-progremmer. אבל אל דאגה! מצאתי איך לארגן ממשק גרפי באמצעות סביבת פיתוח בשם Geany, תודות להדרכתו של אורי עידן. להלן הצעדים הדרושים:

  1. יש להוריד את חבילת התסריטים ולפתוח אותה בתקייה כלשהי.
  2. יש להוריד את Geany במנהל החבילות של הפצה הקרובה אליכם ולאחר מכן פתחו את Geany.
  3. יוצרים קובץ .c חדש וחשוב לשמור אותו (ניתן גם לפתוח את הקובץ "hello_world.c" מחבלית התסריטים.
  4. כעת יש לפתוח את התפריט "Build" ולבחור באפשרות "Set includes and arguments", לחיצה על האפשרות תפתח את החלון שבציור למטה.
  5. בחלון שנפתח, יש להגדיר את השדות כמו שתמונה להלן ("./ compile %f" בשדה compile. "./program %f" בשדה build ו- "./run" בשדה execute).
  6. הגדרות Geany

  7. זהו, הסביבה מוכנה לעבודה. כעט להעלות קוד לצ'יפ צריך ללחוץ "compile" ואז "build" (לא לשכוח ללחוץ על כפתור ה-RESET לפני ה-"build"!).
סביבת הפיתוח Geany

סביבת הפיתוח Geany

הספרייה LUFA – כמה קל לבנות רכיבי USB

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

LUFA (ראשי תיבות Lightweight USB Framework for AVRs) היא ספרייה המאפשרת לגרום לבמבל-בי לעבוד בתור רכיב USB. אפשר לתכנת את הבמבל-בי להתנהג כמו עכבר, מקלדת, ג'ויסטיק, דיסק-און-קי או למעשה כל דבר (ישנה רשימה מלאה באתר).

כדי לגרום למטריצה לעבוד היה עלי להעתיק את קוד ההדגמה שהיה בתקייה Demos/Device/ClassDriver/CDC. לקחתי גם קוד ש-dflecher שינה (הוא בנה איתו משגר טילים USB). אציין כי בכדי שהדוגמאות ב-LUFA יעבדו עם הבמבל-בי יש לשנות 3 שורות בקבצי ה-makefiles והם:

  1. BOARD=BUMBLEB
  2. MCU=at90usb162
  3. F_CPU = 16000000

יש מידע נוסף על מה הפינים של הבמבל-בי יעשו בתוך LUFA (כמו למשל כפתורי גו'סטיק) בקובץ ה-readme של LUFA אודות הבמבל-בי.

ניתן גם להוריד את הקוד שלי למטריצה וללמוד ממנו.

מידע נוסף

קוד שפורסם בפוסט

רק לוודא שלא פספתם את כל הקוד שפורסם בפוסט הזה

וזה הכול. למה אתם מחכים? תתחילו לשחק באלקטרוניקה!

תגובות»

1. שזיף - 10 באוקטובר 2009

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

[תגובה]

guysoft Reply:

אני יכול כבר עכשיו. רק צריך פקודה ב-bash שתדפיס את הטמפרטורה של המעבד.

אפשר גם להדפיס שני מספרים בייחד אם זה לרוחב.

[תגובה]

2. אילן - 11 באוקטובר 2009

מגניב!
האם קיים ממשק תכנותי בשפת גאווה לבמבל-בי?

[תגובה]

guysoft Reply:

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

בערוץ IRC אומרים שבעקרון אולי מפתח ג'אווה יוכל להשתמש בהמרה של דבר קיים בשם teensy לסביבה של הארדווינו, ולהתאים אותו לבמבל-בי. אבל אני לא יודע איך עושים זאת.

בנוגע לתכנות עם Java, אז אני לא ממש מוצא בחיפוש מהיר שזה נעשה בבמבל-בי. אבל יש כלים לזה, למשל NanoVm.

[תגובה]

אילן Reply:

תודה.

ומה לגבי NeBeans IDE האם אתה יודע על משהו?

[תגובה]

guysoft Reply:

כן, גוגל נותן מדריך פשוט

אורי עידן Reply:

בנוגע לתכנות בשפת Java התשובה היא לא. לא נראה לי שזה אפשרי.
אחרי הכל יש לזכור שמדובר בצ'יפ שיש לו בסך הכל 1K של RAM לא אני לא טועה זה רק 1024 ביית.
זכרון התוכנה שלו הוא משהו כמו 16K כן, רק 16K.
האם ג'אווה יכולה ליצור תכנית קטנה כזו?
גם ב ++C קשה לתכנת רכיבים כאלו.
השפה המקובלת לתכנות רכיבים כאלו היא C ודי ברור מדוע.

[תגובה]

guysoft Reply:

ישנו פתרון שבו הם יוכלו לכתוב בסיס ב-C. ואז לכתוב מטודות ולגשת לרכיב ב-JAVA.

[תגובה]

3. אילן - 11 באוקטובר 2009

תודה.
שלחתי לך מייל בנושא אחר – ממתין לתגובתך.

אילן

[תגובה]

4. error0327 - 17 בינואר 2010

אני מכניס את ה Bumbel b ל DFU אני רואה ב DMESG

[ 1552.900104] usb 2-2: new full speed USB device using uhci_hcd and address 2
[ 1553.079188] usb 2-2: New USB device found, idVendor=03eb, idProduct=2ffa
[ 1553.079205] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1553.079217] usb 2-2: Product: AT90USB162 DFU
[ 1553.079227] usb 2-2: Manufacturer: ATMEL
[ 1553.079235] usb 2-2: SerialNumber: 1.0.5
[ 1553.079559] usb 2-2: configuration #1 chosen from 1 choice

אבל אם אני עושה למשל dfu-programmer at90usb162 erase
אני מקבל
dfu-programmer: no device present.
יש לך מוסג ???

error0327

[תגובה]

guysoft Reply:

זה מוזר. אם זה הזדהה בתוך DFU זה צריך לעבוד.

אולי לא שחררת את הכפתור לאחר שלחצת עליו? או שה-HWB לא מחובר טוב?

ד"א ראיתי שאתה הערוץ IRC, אבל אתה יוצא אחרי כמה דקות ואני לא מספיק לענות.

גיא

[תגובה]

5. NIR - 11 בספטמבר 2010

איפה אפשר לכנות מוצר מהאתר הזה בארץ https://www.pjrc.com/teensy/index.html

[תגובה]

guysoft Reply:

Hey, I am in India so sorry for the English.
I am pretty sure of you talk the its maker they will ship to Israel.
I will be back by October 8th. So mail me then, I can try can talk to them for you :)

[תגובה]

6. Janis Workman - 23 בדצמבר 2010

‫תודה (על התגובה המהירה)… אני מחובר כבר כמה חודשים. הקליטה סבירה בדר"כ באיזור. ניסיתי את apex, לא עבד בכלל. יש לי avermedia שעובד מצויין. מה שכן – הmythtv לא מביא לי epg, אבל לא נורא. תודה‬

[תגובה]

guysoft Reply:

נראה לי הגבת במקום הלא נכון

[תגובה]

7. עידן - 12 במרץ 2012

איך אני מתחיל ללמוד ולעשות מעגלים הכי פשוט שיש כמו זה שבקישור?

[תגובה]

guysoft Reply:

אתה צריך ללמוד להלחים ולדעת מה לחבר למה. תיקרא את זה.

[תגובה]


  • אודות
  • Crictor
  • המקור
  • הסדנא לידע ציבורי
  • כללי
  • פוסטים מזולו
  • תוכנה חופשית
  • 2013
  • 2011
  • 2010
  • 2009
  • 2008
  • 2007
  • Thank you for using IGIT Tweet Button, a plugin by PHP Freelancer