תוכן עניינים:

קל לתכנות להפליא !: 10 שלבים
קל לתכנות להפליא !: 10 שלבים

וִידֵאוֹ: קל לתכנות להפליא !: 10 שלבים

וִידֵאוֹ: קל לתכנות להפליא !: 10 שלבים
וִידֵאוֹ: 10 השלבים להצלחה בחיים | הפודקאסט של מועדון סיכומי הספרים עם רפאל יאגודייב -פרק 13 2024, נוֹבֶמבֶּר
Anonim
Image
Image
קל לתכנות להפליא!
קל לתכנות להפליא!

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

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

לבסוף, בנוגע לפרויקט היום, נשתמש בשני חיישני DS18b20 בנוסף ל- L476RG. אז נכין הרכבה פשוטה באמצעות L476RG, נייבא ספריה לסביבת MBED, ניצור תוכנית בסביבת MBED ונקבל נתונים מה- L476RG באמצעות USB / Serial.

כבר דיברתי קצת על L476RG בסרטון הזה: הדרך הקלה יותר לתכנת מיקרו -בקר, שם אני מראה כיצד להגדיר את סביבת MBED, המקוונת.

כמה אנשים שעוקבים אחר הסרטונים שלי שואלים אותי אם STM32 מחליף את ESP32. אני אומר דבר אחד: הוא אינו מחליף ואינו יכול, מכיוון שהם שני דברים שונים בתכלית.

שבב STM32 זה הוא מיקרו -בקר, או ליתר דיוק; הוא אינו "אשכול דברים" וכך גם ה- ESP32. כך שהשם אולי נראה דומה, אך הם שונים בתכלית. STM32 הוא מיקרו -בקר למטרות כלליות, כגון PIC, אטמל, למשל.

שלב 1: שימוש במשאבים

משאבים בשימוש
משאבים בשימוש

ליבה אחת L476RG

2 חיישני DS18b20 (אנו משתמשים במודולים העמידים למים הקיימים בשוק)

נגד 4k7

מיני פרוטבורד

מגשרים לחיבור

שלב 2: הרכבה

הַרכָּבָה
הַרכָּבָה

בתחילה נבצע את ההרכבה באמצעות אחד מחיישני הטמפרטורה.

הספק שלו יהיה 5V.

נגד 4k7 ישמש לביצוע משיכה בקו הנתונים (1-Wire).

אנו נקרא את הנתונים בעזרת סיכת A0.

שלב 3: תוכנית חדשה ב- MBED

תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED

לאחר שתגדיר את חשבונך ב- MBED ותיכנס אליו, ניצור תוכנית חדשה. לשם כך, לחץ באמצעות לחצן העכבר הימני על "התוכניות שלי" ובחר "תוכנית חדשה …"

אשר כי "הפלטפורמה" תואמת את הלוח בו אתה משתמש.

כעת נלחץ על "תבנית".

ניצור תוכנית המבוססת על הדוגמה "הצג הודעה במחשב באמצעות UART".

הזן את שם התוכנית ב"שם תוכנית ".

סמן את האפשרות "עדכן תוכנית זו וספריות לגירסה האחרונה".

תיווצר תיקיה חדשה לתוכנית שלך, כולל ספריית ברירת המחדל של MBED והקובץ main.cpp.

אתה יכול להשתמש בו כדי לבדוק אם הכל עובד טוב. לשם כך, פשוט הרכיב אותו והעתק אותו לפלטפורמה.

באמצעות מסוף סדרתי לבחירתך, תוכל לקבל את ההודעות הבאות.

שלב 4: ייבוא ספריית DS18b20

ייבוא ספריית DS18b20
ייבוא ספריית DS18b20

מכיוון שישנן מספר גרסאות של ספריות עבור ה- Ds18b20, נייבא באמצעות כתובת URL כך שהדוגמה שלך תשתמש באותה הספרייה.

שלב 5: תוכנית חדשה ב- MBED

תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED
תוכנית חדשה ב- MBED

בשדה "כתובת אתר מקור" מלא: https://os.mbed.com/users/Sissors/code/DS1820/ ולחץ על ייבוא.

ספריית DS1820 שלך אמורה להופיע בתיקיית התוכנית שלך.

שלב 6: קוד המקור

כולל

התחלנו בהכללת הספריות הדרושות.

#include "mbed.h" // inclusão da biblioteca padrão do MBED#include "DS1820.h" // inclusão da biblioteca do sensor DS1820

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

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

#define PINO_DE_DADOS A0 // הגדר o pino para leitura dos dados#הגדר MAX_SENSORES 16 // הגדר o número máximo par o vetor de sensores

אנו יוצרים וקטור שיצביע על כל אחד מ -16 המכשירים האפשריים המחוברים לקו הנתונים.

חיישן DS1820* [MAX_SENSORES]; // cria um vetor com 16 posições para os sensores

אנו מתחילים את השיטה הראשית (), שבה, בשיטת "unassignedProbe ()" הכלולה בספריית DS1820, אנו מחפשים את כל המכשירים הזמינים בקו התקשורת.

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

אנו עושים זאת עד שנמצא האחרון או עד שמגיעים למקסימום של 16 חיישנים.

int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensores sensor [encontrados] = DS1820 חדש (PINO_DE_DADOS); // cria uma instancia para o sensor encontrado encontrados ++; if (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; }

אנו שולחים את מספר החיישנים שנמצא בקו.

printf ("Encontrado dispositivos (s): %d / r / n / n", encontrados);

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

printf ("Encontrado dispositivos (s): %d / r / n / n", encontrados); בעוד (1) {sensor [0]-> convertTemperature (true, DS1820:: all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature ()); //… e retorna a temperatura printf ("\ r / n"); המתן (1); }

שלב 7: נתונים שהתקבלו

המידע התקבל
המידע התקבל

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

שלב 8: כולל חיישנים נוספים

כולל חיישנים נוספים
כולל חיישנים נוספים
כולל חיישנים נוספים
כולל חיישנים נוספים

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

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

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

שלב 9: הצג מקור

#include "mbed.h" // inclusão da biblioteca padrão do MBED #include "DS1820.h" // inclusão da biblioteca do sensor DS1820 #define PINO_DE_DADOS A0 // הגדר או פינו פאראוטורה לילה דאדוס #הגדר MAX_SENSORES 16 // הגדר o número máximo par o vetor de sensores DS1820* חיישן [MAX_SENSORES]; // cria um vetor com 16 posições para os sensores int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensores sensor [encontrados] = DS1820 חדש (PINO_DE_DADOS); // cria uma instancia para o sensor encontrado encontrados ++; if (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; } printf ("Encontrado dispositivos (s): %d / r / n / n", encontrados); while (1) {sensor [0]-> convertTemperature (true, DS1820:: all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature ()); //… e retorna a temperatura printf ("\ r / n"); המתן (1); }}

שלב 10: קבצים

PDF

אחרים

מוּמלָץ: