תוכן עניינים:
- שלב 1: מה אנחנו צריכים?
- שלב 2: חיבורי חומרה
- שלב 3: תוכנת פייתון
- שלב 4: תוכנת מיקרו -בקר
- שלב 5: מסקנה
וִידֵאוֹ: PIC MCU ותקשורת סדרתית של פייתון: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
היי ח'ברה! בפרויקט זה אנסה להסביר את הניסויים שלי בנושא PIC MCU ותקשורת טורית של פייתון. באינטרנט, יש הרבה הדרכות וסרטונים כיצד לתקשר עם PIC MCU דרך מסוף וירטואלי וזה מאוד שימושי. עם זאת, בפרויקט העיקרי שלי אחת הדרישות היא ליצור תקשורת טורית בין PIC MCU לפייתון שלא הצלחתי למצוא הדרכה טובה. אז בואו נתחיל:)
שלב 1: מה אנחנו צריכים?
אז קודם כל בוא נראה מה אנחנו צריכים. מבחינת חומרה:
- אין ספק, PIC MCU שהוא במקרה שלי PIC16f877a (אתה לא צריך את הלוח הזה. זה על מנת לפשט כמה חיבורים מלוכלכים)
- ממיר USB ל TTL על מנת לתקשר עם PIC MCU דרך יציאת USB באמצעות סיכות TX ו- RX.
- מתכנת MCU שהוא במקרה שלי מתכנת K150, אבל אתה יכול להשתמש ב- PicKit 2, 3 או כל דבר אחר.
- ולבסוף מחשב:)
מבחינת תוכנה:
- IDE על מנת לכתוב קוד פייתון שהוא במקרה שלי Pycharm, אבל אתה יכול להשתמש גם ב- Python IDE רגיל.
- סביבה לתכנות ה- MCU שהיא במקרה שלי MPLAB X IDE עם מהדר CCS C.
שלב 2: חיבורי חומרה
בתמונה ניתנים חיבורי חומרה מצורפים הנמצאים בין PIC MCU לממיר TTL USB כדלקמן:
RC7 (RX) ------------ TXD
RC6 (TX) ------------- RXD
GND -------------- GND
אין צורך לחבר את סיכת VCC של ממיר ה- TTL USB (עם זאת, אם תרצה תוכל לעשות זאת). 3 החיבורים האלה מספיקים.
שלב 3: תוכנת פייתון
בואו נתחיל לכתוב תוכנות לצד Python שיהיו משדרים במקרה שלנו, כי זה ישלח את המחרוזת ל- MCU.
יבוא סידורי #ייבוא ספריית נתונים סידרית = '24' #נתונים שנשלח נתונים = a+'\ 0' ser = serial. Serial ('COM17', baudrate = 9600, timeout = 1) #התחבר ליציאה ser.write (a.encode ()) #שלח את הנתונים
ראשית כל הספרייה הסדרתית מיובאת על מנת להשתמש בעתידיה. אנו רוצים לשלוח נתוני מחרוזת לדוגמא על מנת לאשר בקוד MCU כי קיבלנו אותם. אני רוצה כאן לציין דבר אחד. זו הסיבה שהוספנו '\ 0' למחרוזת. הסיבה לכך היא שבצד MCU אי אפשר לקרוא את המחרוזת לגמרי. הוא נקרא דמות אחר דמות. אז, אנחנו רוצים לדעת את סוף המחרוזת כדי להפסיק לקרוא. לכן, אנו מוסיפים '\ 0' למחרוזת המציינת את סוף המחרוזת. לאחר מכן אנו מתחברים ליציאה המחוברת ל- MCU. תוכל לקבוע את היציאה הזו על ידי חיפוש ב'מנהל התקנים '. לכן, היזהר כי אתה נמצא באותה יציאה. אחרי הכל, אנו שולחים את הנתונים ל- MCU. יש להוסיף ".encode ()" לנתוני המחרוזת על מנת שתוכל לשלוח אותם למקלט.
שלב 4: תוכנת מיקרו -בקר
אז בואו נראה את הקוד שלנו ל- MCU. קודם כל אני רוצה להראות לך את הקובץ "config.h" שבתוכו אין צורך, אבל עשיתי את זה בשביל הפשטות. כאן פשוט שנה את תדירות ה- MCU שלך.
#ifndef CONFIG_H#הגדר CONFIG_H
#לִכלוֹל
#מכשיר ADC = 16
#FUSES NOWDT // אין טיימר כלב שמירה
#FUSES NOBROWNOUT // אין אפס חום
#עיכוב שימוש (קריסטל = 6000000)
עכשיו בואו נראה את הקוד הראשי:
#לִכלוֹל
#לִכלוֹל
#שימוש rs232 (baud = 9600, xmit = pin_C6, rcv = pin_C7, זוגיות = N, עצור = 1)
#הגדר LED_RED PIN_D0
char inp; char cmp _ = "24"; חיץ חרוך [3];
#int_rda
void serial_communication_interrupt () {disable_interrupts (int_rda); int חתום i = 0; inp = getc (); putc (inp); while (inp! = '\ 0') {buffer = inp; inp = getc (); putc (inp); i ++; }}
void main (void) {
set_tris_d (0x00); פלט_ד (0xFF); enable_interrupts (GLOBAL); בעוד (1) {enable_interrupts (int_rda); if (strcmp (buffer, cmp_) == 0) output_low (LED_RED); אחר output_high (LED_RED); }}
בהתחלה אנו כוללים ספריית מחרוזות אשר נועיל בפעולות מחרוזת אשר במקרה שלנו היא פעולת השוואת מחרוזות (strcmp). לכן, מטרתנו בקוד זה היא להדליק את הלייד המחובר לסיכה D0 אם הערך המועבר זהה לערך הנתון שלנו שהוא "cmp_" שווה ל- "24".
קודם כל אנו מאפשרים interrupt "rda" אשר יגרום להפרעה בעת העברת נתונים.
שנית, בואו נסתכל בתוך ISR (שגרת שירות קטיעה) הנקראת "סדרת_תקשורת_פרעה". בפנים אנו משביתים ראשית את דגל הפסיקה על מנת לקרוא את הערך שהתקבל ולגרום להפרעה נוספת. לאחר מכן אנו קוראים את המחרוזת תו אחר תו עד שמגיעים ל '\ 0'. בזמן קריאה בתוך מחרוזת אנו כותבים גם כל צ'אר למאגר על מנת לקבל מחרוזת שהתקבלה.
בסוף, אנחנו שוב נכנסים פנימה בזמן. כאן אנו משווים את מחרוזת החיץ שלנו המתקבלת מחרוזת ומחרוזת cmp_ על מנת לראות אם קיבלנו את המחרוזת בצורה נכונה. אם הם שווים אז אני מדליק לד, אחרת מכבה.*
*בקוד אכן הפכתי מכיוון שהלוח שלי הופך את ערכי סיכת יציאת ה- D. בקוד שלך שנה את זה ל:
if (strcmp (buffer, cmp_) == 0) output_high (LED_RED); אחרת output_low (LED_RED);
לבסוף, הידור זה והעלה ל- MCU שלך ולאחר מכן הפעל קוד ב- Python. אתה אמור לראות את הדלק מופעל.
שלב 5: מסקנה
סיימנו משימה אחת בהצלחה. אני מקווה שזה יהיה שימושי עבורך. אם יש לך שאלה, אנא אל תהסס לשאול:) עד הפרויקט הבא.
מוּמלָץ:
ארדואינו ותקשורת Bluetooth ניידת (מסנג'ר): 8 שלבים
ארדואינו ותקשורת Bluetooth ניידת (שליח): תקשורת משחקת גורם חשוב בחיי היום יום שלנו. אבל בתקופות אלה של נעילה תקשורת עם המשפחה שלנו או תקשורת עם אנשים בבית שלנו לפעמים זקוקים לטלפונים ניידים. אבל שימוש בטלפונים ניידים עבור קצר
תקשורת סדרתית של ארדואינו: 5 שלבים
תקשורת סדרתית של Arduino: פרויקטים רבים של Arduino מסתמכים על העברת נתונים בין כמה Arduinos. בין אם אתה חובב שבונה מכונית RC, מטוס RC או עיצוב תחנת מזג אוויר עם תצוגה מרחוק, תצטרך לדעת כיצד לבצע אמין העברת סדרה
שנה Arduino ASCD 8x 18650 מטען חכם / פריקה עבור ESP8266 חומרה סדרתית: 4 שלבים
שנה Arduino ASCD 8x 18650 מטען / פריקה חכמה עבור ESP8266 חומרה סידורי: ב PCB גירסה 2.0 ותשמע למתאם ה- Arpino ESP8266 יש סיכות שגויות שבהן אינך יכול להשתמש (לתקשר) עם ESP8266 לתקשורת אלחוטית לפורטל הסוללות של Vortex It. שינוי זה מחבר את מתאם Arduino ESP8266 ל- Har
לוח גילוי STM32F4 ותקשורת Python USART (STM32CubeMx): 5 שלבים
לוח גילוי STM32F4 ותקשורת פייתון USART (STM32CubeMx): היי! במדריך זה ננסה ליצור תקשורת USART בין STM32F4 ARM MCU לבין פייתון (ניתן להחליף אותה בכל שפה אחרת). אז בואו נתחיל:)
תקשורת סדרתית של Arduino ו- Python - תצוגת לוח מקשים: 4 שלבים
תקשורת סדרתית של Arduino ו- Python - תצוגת לוח המקשים: פרויקט זה מיועד למשתמשי Mac אך ניתן ליישם אותו גם עבור Linux ו- Windows, הצעד היחיד שצריך להיות שונה הוא ההתקנה