Pi Pico – מבוא

כך כותבים קוד למיקרובקרים עם... ג׳אווהסקריפט!

רספברי פיי הוא מאוד מאוד אינטואיטיבי כהגעה והצצה ראשונה אל עולם ה-IoT. הוא מחשב לכל דבר ועניין שעושה הכל בלי קשר בכלל ל-IoT ופה יש לא מעט מאמרים המתארים פרויקטים שלא מתייחסים בכלל לקשר שלו ל-IoT וכוללים פרויקטי תוכנה טהורים. זו הסיבה שלפרחחי ווב (כמוני!) מאוד קל יחסית עם רספברי פיי. שגם יש לו את כל הדברים ההיקפיים שצריך – מבלוטות' ועד ווי פיי וחיבור רשת.

אבל יש כמה בעיות עם רספברי פיי. הוא יקר והוא צורך המון חשמל. אם אני צריך איזה מחשב קטנטן שעושה כמה דברים ב-IoT – למשל מדליק אורות או סוגר מעגל חשמלי כאשר חיישן כלשהו עובד – לעשות את זה ברספברי זה קצת אוברקיל. בשביל זה בדיוק באים מיקרו בקרים. מחשבים קטנים בלי כל ההיקפים, חסכוניים בחשמל וגם זולים. גם לרספברי יש את גרסת המיקרו בקר שלה – פיי פיקו. הפיקו הוא מיקרובקר חזק, עם מעבד כפול ליבה, 264 ק"ב זיכרון פנימי וגם bus והכל. המעבד שלו חזק, אבל חלש מכדי להריץ לינוקס והוא לא מכיל חיבורים רבים. אבל מהצד השני הוא חסכוני בחשמל וזול. כמה זול? קניתי עכשיו ב-8 דולר באמזון. שזה באיזור השלושים ומשהו שקל.

עצה שלי: כדאי להשקיע כמה דולרים נוספים ולרכוש pre soldered, זה יעלה לכם עוד כמה דולרים אבל יחסוך הלחמות (😱) בהמשך.

במאמר הזה אני אסביר על Pi Pico כאשר ההסבר מיועד למתכנתי אינטרנט/ ג'אווהסקריפט. הרי אני פרחח ווב במקור וכל הדברים האלו נראו לי כמו סינית מדוברת עד לא מזמן.

אז אחרי שקנינו וקיבלנו את הרספברי פיי יש לנו בידיים לוח קטנטן עם חיבור של מיקרו USB. זה הזמן לקחת כבל של USB to micro USB ולחבר אותו אל מחשב חלונות שיש לנו או לינוקס. מהניסיון שלי – אפשר לחבר למק ויש סיכוי שהוא יעבוד כמעט מההתחלה אבל יש גם סיכוי גבוה לאכול קש רציני ביותר עם ה-SMB. לשיקולכם. אני בחרתי בחלונות במקרה הזה כי זה אחד הלפטופים הפנויים. כמובן שחלונות עם GitHub CLI וטרמינל נורמלי שדומה ללינוקס.

או קיי, ועכשיו מה? בניגוד לרספברי, שבו כתבנו קוד ישירות. פה צריך לכתוב את הקוד קודם ואז לטעון אותו 😱 ממש כמו בימי הביניים. או כמו שירותי ענן כמו heroku שקודם כותבים ואז עושים דיפלוי. השאלה היא… במה כותבים? אפשר בפייתון, אפשר ב-C. אבל אפשר גם בג'אווהסקריפט. I SHIT YOU NOT! יאפ. ממש כמו ב-Node.js. יש פריימוורק שמאפשר לכתוב למיקרובקרים בג'אווהסקריפט! זה נעשה עם KalumaJS. יש ממש את בדוקומנטציה את ה-Hello World אבל אני אחזור עליו פה.

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

מיקרו בקר מחובר למחשב
מיקרו בקר מחובר למחשב – שימו לב לכפתור הלבן: Bootsel

השלב הבא הוא להעתיק לשם את קובץ ה-uf2 של Kaluma כדי לצרוב את המיקרובקר עם המערכת שיודעת לקבל את הקוד שלנו. לצרוב זו מילה חזקה – אבל כמובן שלא מעורב פה ריתוך או פעולה בלתי הפיכה.

אחרי ההעתקה המיקרו בקר יעלם לנו מה-USB ויאתחל את עצמו. אחרי כמה שניות אפשר להתחיל לעבוד. אנו ניצור פרויקט עם npm init ונתקין גלובלית את המודול של kaluma עם:

npm install -g @kaluma/cli

עכשיו יהיה לנו את Kaluma בטרמינל. נכתוב תוכנה פשוטה בג'אווהסקריפט שמפעילה את ה-LED הקטן של רספברי. התוכנה, שמאוד פשוטה עבור מי שמכיר ג'אווהסקריפט, נראית כך:

const led = 25;
pinMode(led, OUTPUT);
setInterval(() => {
  digitalToggle(led);
}, 1000);

אחרי שכתבנו את התוכנה, זה הזמן לבדוק אותה. אנו נשמור את הקובץ ב-index.js ומהטרמינל נטען את הקובץ אל הבקר כך:

kaluma flash index.js --bundle 

תראו שנורת ה-LED הקטנה מהבהבת! איזה כיף! מה טוב? אם תנתקו את הבקר ותחברו אותו למקור חשמל עצמאי או בטריות (אפשר לקנות מתאם בטריות למיקרו-USB גם בכמה דולרים), תראו שהנורה תמשיך להבהב. התוכנה שכתבנו, בג׳אווהסקריפט, מתחילה לעבוד מייד כשמחברים מקור מתח למיקרו בקר.

איך מבצעים דיבאגינג לזה? kaluma מאפשרת לנו לעשות console.log וכאשר אנו מריצים את השורה שמבצעת צריבה של התוכנה של המיקרובקר ומוסיפים על ה-shell– כאשר הוא מחובר למחשב – אנו נראה את הפלט. למשל:

// index.js
const led = 25;
pinMode(led, OUTPUT);
setInterval(() => {
  console.log('beep!');
  digitalToggle(led);
}, 1000);

נצרוב את התוכנה למיקרובקר אבל בפקודת הצריבה נוסיף shell– – כך:

kaluma flash ./index.js --bundle --shell

אנו נראה את כל שלבי הפריסה ואז גם את הקונסולה. הנה צילום מסך שמראה איך אני רואה את ה"beep" בכל שניה.

Done
>
> .load
beep!
beep!
beep!

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

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

להריץ ממשק של open-webui על הרספברי פיי

להפעיל ממשק של צ׳אט ג׳יפיטי שאפשר לגשת אליו מכל מחשב ברשת הביתית על רספברי פיי עם מודל בשם tinydolphin שרץ על רספברי פיי.

גלילה לראש העמוד