ארכיון חודשי: אפריל 2022

לימוד ארדואינו – צלילים

לימוד ארדואינו : שיעור 16 – מוסיקה ארדואינו ,שימוש ב ()while – קורס c506

שימוש בפונקציה tone מאפשר לנו ליצור צליל בתדר משתנה ,ובכך ליצור מנגנה במיקרובקר ארדואינו  .

על מנת להפסיק את הצליי נשמתש בפקודה noTone

tone()

Description

Generates a square wave of the specified frequency (and 50% duty cycle) on a pin. A duration can be specified, otherwise the wave continues until a call to noTone(). The pin can be connected to a piezo buzzer or other speaker to play tones.

Only one tone can be generated at a time. If a tone is already playing on a different pin, the call to tone() will have no effect. If the tone is playing on the same pin, the call will set its frequency.

Use of the tone() function will interfere with PWM output on pins 3 and 11 (on boards other than the Mega).

It is not possible to generate tones lower than 31Hz. For technical details, see Brett Hagman’s notes.

Syntax

tone(pin, frequency)
tone(pin, frequency, duration)

דוגמא 1 : הפקת צליל

//  www.robotronix.co.il
// רובוטרוניקס קורס C506
// שיעור 16 - צללים טונים 


#define   speaker  5
const int Led3  =  2;


void setup() {
  pinMode(speaker, OUTPUT);


   tone(speaker, 261,1000); // DO
   delay(300);
   noTone(speaker); // Stop sound
  
  
  
   delay(100);
   tone(speaker, 293); // RE
   delay(300);
   noTone(speaker); // Stop sound

   delay(100);
   tone(speaker, 329,1000); // ME
   delay(300);
   noTone(speaker); // Stop sound
   
   delay(100);
   tone(speaker, 349,1000); // FA
   delay(300);
   noTone(speaker); // Stop sound
   
   delay(100);
   tone(speaker, 392,1000); // SOL
   delay(300);
   noTone(speaker); // Stop sound

   delay(100);
   tone(speaker, 440,1000); // LA
   delay(300);
   noTone(speaker); // Stop sound

   delay(100);
   tone(speaker, 493,1000); // SI
   delay(300);
   noTone(speaker); // Stop sound

}

void loop() {
}

 

 

דוגמא 2 : ניגון יונתן הקטן ולימוד While

לימוד ארדואינו : הפקת תליל מוסיקה ארדואינו

לימוד ארדואינו : הפקת תליל מוסיקה ארדואינו

 

//  www.robotronix.co.il
// רובוטרוניקס קורס C506
// שיעור 16 - צללים טונים 


#define   speaker  5
const int Led3  =  2;
#define EndOfMusic=-1;

#define DO  261
#define RE  293 
#define ME  329
#define FA  349
#define SOL 392
#define LA  440
#define SI  493

int Song1[2][100];
int StackIndex=0;

void play(int frequency, int duration)
{
   digitalWrite(3, HIGH);
    tone(speaker, frequency); // RE
    delay(duration);
    noTone(speaker); // Stop sound
   digitalWrite(3, LOW);
    delay(250); 

}

void push(int frequency, int duration)
{
 Song1[0][StackIndex] =frequency;
 Song1[1][StackIndex] =duration;
StackIndex++;
}

void setup() {
int i=0;
  pinMode(speaker, OUTPUT);
  pinMode(3, OUTPUT);
  // load melody to array 
 Song1[0][0] =SOL;
 Song1[1][0]=500;

 Song1[0][1] =ME;
 Song1[1][1]=500;

 Song1[0][2] =ME;
 Song1[1][2]= 1000;

Song1[0][3] =FA;
 Song1[1][3]=500;

 Song1[0][4] =RE;
 Song1[1][4]=500;

 Song1[0][5] =RE;
 Song1[1][5]= 1000;


 Song1[0][6] =DO;
 Song1[1][6]= 500;
 

  Song1[0][7] =RE;
 Song1[1][7]= 500;


  Song1[0][8] =ME;
  Song1[1][8]= 500;

  Song1[0][9] =FA;
  Song1[1][9]= 500;

  Song1[0][10] =SOL;
  Song1[1][10]= 500;

  Song1[0][11] =SOL;
  Song1[1][11]= 500;

  Song1[0][12] =SOL;
  Song1[1][12]= 500;




 Song1[0][13] =-1;


while (Song1[0][i]!=-1)
{
 play( Song1[0][i] ,Song1[1][i]);
 i++; // i=i+1 
}
 
 


   


}

void loop() {
}

 

דוגמא 3 : שימוש ב PUSH – מה זה STACK לניגון שיר

 

 

 

//  www.robotronix.co.il
// רובוטרוניקס קורס C506// שיעור 16 - צללים טונים 


#define   speaker  5
const int Led1  =  3;#define EndOfMusic=-1;

#define DO  261
#define RE  293 
#define ME  329
#define FA  349
#define SOL 392
#define LA  440
#define SI  493

int Song1[2][100];
int StackIndex=0;

void play(int frequency, int duration)
{
   digitalWrite(Led1, HIGH);
    tone(speaker, frequency); // RE
    delay(duration);
    noTone(speaker); // Stop sound
   digitalWrite(Led1, LOW);
    delay(250); 

}

void push(int frequency, int duration)
{
 Song1[0][StackIndex] =frequency;
 Song1[1][StackIndex] =duration;
StackIndex++;
}

void setup() {
int i=0;
  pinMode(speaker, OUTPUT);
  pinMode(Led1, OUTPUT);
  // load melody to array 

 push(SOL,500);
 push(ME,500);
 push(ME,1000);
 push(FA,500);
 push(RE,500);
 push(RE,1000);
 push(DO,500);
 push(RE,500);
 push(ME,500);
 push(FA,500);
 push(SOL,500);
 push(SOL,500);
 push(SOL,1000);

 push(EndOfMusic,0); // EndOfMusic = -1




while (Song1[0][i]!=EndOfMusic) // EndOfMusic =-1
{
 play( Song1[0][i] ,Song1[1][i]);
 i++; // i=i+1 
}
 
 


   


}

void loop() {
}

סקובץ הסכמה האלקטורני diagram.json

{
  "version": 1,
  "author": "Arvind Patil",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 122.67, "left": -36.67, "attrs": {} },
    {
      "type": "wokwi-buzzer",
      "id": "bz1",
      "top": -5.86,
      "left": 127.94,
      "attrs": { "volume": "0.1" }
    },
    {
      "type": "wokwi-led",
      "id": "led1",
      "top": -3.88,
      "left": 241.95,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r1",
      "top": 70.92,
      "left": 246.17,
      "rotate": 90,
      "attrs": { "value": "370" }
    }
  ],
  "connections": [
    [ "uno:5", "bz1:2", "green", [ "v0" ] ],
    [ "uno:GND.1", "bz1:1", "black", [ "v-39.07", "h77.58" ] ],
    [ "led1:A", "r1:1", "green", [ "v0" ] ],
    [ "r1:2", "uno:3", "green", [ "h0" ] ],
    [ "uno:GND.1", "led1:C", "black", [ "v-30.16", "h180.33" ] ]
  ]
}
לימוד ארדואינו : סגמה מלאה

לימוד ארדואינו : סגמה מלאה

לימוד אמבדד

רובוטרוניקס מפתחת אמבדד ברכיבים ועם החברות הגדולות בעולם . ומעבירה גם קורס אבדד

פיתוח אמבדד –  צריך להבין קודם כל מה זה אומר אמבדד או מערכות אמבדד או באינגליש – Embedded System

בקר - לימוד רובוטיקה ללא חוטים חיבור ישיר

בקר – לימוד רובוטיקה ללא חוטים חיבור ישיר

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

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

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

כיום 97 אחוז מכלל המיקרו-מעבדים המיוצרים משמשים במערכות משובצות מה שהופך את תחום פיתוח אמבדד לתחום רציני ביותר

מערכות משובצות  אמבדד מחולקות למספר תחומים :

פיתוח אמבדד ESP32

פיתוח אמבדד ESP32

כך שבפיתוח אמבדד אנחנו בעצם מ פתחים מערכת אלקטרונית אשר מפקחת ומנהלת את הרכיבים מסביבה דרך מיקרומעבק או מיקרו בקר על ידי מיקרו-בקרים או מעבדי אותות דיגיטליים (DSP), מעגלים משולבים ספציפיים ליישום (ASIC), מערכי שערים הניתנים לתכנות בשטח (FPGA), טכנולוגיית GPU ומערכי שערים. מערכות עיבוד אלו משולבות עם רכיבים ייעודיים לטיפול בממשקים חשמליים ו/או מכניים.

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

 

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

קורס אמבדד

קורס אמבדד

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

 

מחשבים לשימוש כללי הם בוא נחזור למחשבים מיוחדים מחשבים ייעודיים מאוד ספציפיים ל-, משרתים פונקציה מסוימת ופופולרית דוגמה היא , מאוחר יותר זה תפקיד אחד ויחיד הוא לעשות , חישובים עכשיו השאלה היא מה זה הצורך במחשבון כשיש לנו מחשב, מה הטעם להחזיק מחשבים למטרות מיוחדות כשיש לנו , מחשבים למטרות כלליות מדי שנה מיליון מחשבונים נמכרים ברחבי העולם כי לאנשים אין תמיד יש צורך במטרה כללית, מחשבים למטרות כלליות לפעמים ומגזים אם אתה מנהל חנות מכולת קטנה זה עדיף להשתמש במחשבון ואז ב-MacBook Pro, כן זה הגיוני מחשבים לשימוש כללי הם יקרים, מחשבון פשוט עולה 10 דולר בהשוואה למחשב נייד של 400 דולר או למחשב, מחשבים לשימוש כללי לא יכולים לעשות זאת הכל אם אתה רציני לגבי צילום אז עדיף להשתמש ב-DSLR ואז טלפון חכם כדי שתוכל לקבל תמונות באיכות טובה יותר מי שלא אוהב תמונות באיכות טובה יותר מוטבעים נכון, המערכת יכולה לבוא בטעמים שונים ניתן לסווג מערכות משובצות באופן כללי לשלוש קטגוריות

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

פיתוח אמבדד

 

פיתוח אמבדד ESP32

פיתוח אמבדד ESP32

מה זה פיתוח אמבדד ?

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

 

 

 

 

פיתוח מערכוחת אמבדד (embedded system)

צוות פיתוח של פיתוח אמבדד יכלול בתוחו מספר אנשים  לפחות

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

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

485 \ מודבאס בלוטוס BLE

485 מודבאס בלוטוס BLE

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

טעיות קלאסיות בפיתוח אמבדד (embedded system)

  1. חיפוש מוצר מושלם ואי עמידה בתוכנית עסקית או הפיתוח שהוגדרה מראש . גורם לחרגיה בשעות העבודה משאבים זמן שהוגדר לסיום המוצר – הסיבה העקרית  על פי רוב שהצוות המפתח גילה שבעוד מאמץ קטן הוא יוכל לייצר מוצר טוב יותר וכך עשוי להיות לו פוטנציאל מכירתי טוב יותר , מוקש תמים זה גורם לחברות ענק וחברות הזנק לפספס את היעד ופעמים רבות כלל לא להגיע למוצר עובד – הפיתרון למלקוד זה להיצמד לתוכנית המקורית ועבוד לפי גירסאות כך תסיים החברה גירזה 1.0 תתחל מכירות תעמוד ביעד ואת השיפורים יעשו בגירסה 1.1 ……1.2  וכדו .
  2. בחירה שגויה של רכיבים אלקטורנים ומעבדים  – דילוג על נסוי סמעבדה ודילוג בחלקות הפיתוח לתת שלבים בזמן פיתוח אמבדד , יגרום לקבלת סלט נוראי ובאגים רבים בשלב האינטגרציה , לכן חשוב לחק את פיתוח האמבדד לתת שלבים  יצור מעגלי ביניים – אימות הרכבים מול ה DATASHEET של היצרן  בתחום רב מימדי של ביצועים מתח , זרם , עומס , חום, תדר , שימוש חוזר , רעשים אקראים ועוד . בנוסף סביבית הפיתו- של פיתווח אמבדד צריכה להיות מוכרת היטב למתכנת אמבדד – עך שאם כתוב בדפי היצרן שיש UART עם אינטראפ או DMA ל SPI אין זה אומר שזה יהיה לפעמים קל לישום ובצורה יעילה – כן על מתכנת המאבדד להיות בקיא היטב ובעל נסיון בכל דרישות התוכנה – פעמים רבות בוחרים מעבד חדש כי הוא זול ב 30 אחוז יותר אך שוכחים לקחת בחשבון את זמן הפיתוח וההטמעה שידרש לצוות פיתוח אמבדד להטמיעה אותו
  3. חוסר עבודה מולה היצר שימוש בקהילות פיתוח – רבים ממפתחי האמבדד  (embedded system)    בפרוייקטים חדשים וגדולים מעל 100 אלף יחידות שוכחים או בוחרים לפתור בעיות לבד במקום לפנות לקשת פתרונות ותמיכה שמקצה היצרן  , למשל פורמים שהיצרן תומך , קהילה ברשותות חברתיות – לקיחת קורסים קצרים בתלום אשר מכשירים תוך מספר שעות , ופניה ליצרן עצמו דרך המפיצים המורשים שלו לתמיכה , עבור פרוייקטים קטנים כון לעבוד מול פורום היצרן והקהילות , אך עבור פרוייקטים גדולים ב פיתוח אמבדד אפשר ורצוי לפתוח קו ישיר מול היצרן  .

 

 

 

 

פיתוח אמבדד ESP32

רובוטרוניקס פיתוח אמבדד