שלום לכולם, היום בפרויקט זה נתממשק מודול מקלט ומשדר RF עם מיקרו-בקר PIC ונתקשר בין שני מיקרו-בקרים שונים באופן אלחוטי.
בפרויקט זה נעשה את הדברים הבאים: -
- אנו נשתמש ב- PIC16F877A עבור המשדר וב- PIC18F4520 עבור מקטע המקלט.
- אנו נתממשק מקשים ו- LCD עם מיקרו-בקר PIC.
- בצד המשדר ננתק את לוח המקשים עם PIC ונעביר את הנתונים. בצד המקלט נקבל את הנתונים בצורה אלחוטית ונראה איזה מקש נלחץ על ה- LCD.
- אנו נשתמש בקודן ובמפענח IC להעברת נתונים של 4 סיביות.
- תדר הקבלה יהיה 433Mhz באמצעות מודול RF TX-RX זול הקיים בשוק.
לפני שנכנס לתרשימים וקודים, בואו נבין את פעולתו של מודול RF עם ממשקי מקודדים-מפענחים. עיין גם בהמשך בשני מאמרים כדי ללמוד כיצד לממשק LCD ומקלדת עם מיקרו-בקר PIC:
- ממשק LCD עם מיקרו-בקר PIC באמצעות MPLABX ו- XC8
- ממשק לוח מקשים מטריקס 4x4 עם מיקרו-בקר PIC
משדר ומקלט RF 433MHz:
אלה מודולי המשדר והמקלט בהם אנו משתמשים בפרויקט. זהו המודול הזול ביותר הזמין עבור 433 מגה-הרץ. מודולים אלה מקבלים נתונים סדרתיים בערוץ אחד.
אם אנו רואים את המפרט של מודולים, המשדר מדורג עבור 3.5-12V פעולה כמו מתח הזנה ואת המרחק השידור הוא 20-200 מטר. הוא אכן משדר בפרוטוקול AM (Audio Modulation) בתדר 433 מגה הרץ. אנו יכולים להעביר נתונים במהירות של 4KB / S בהספק של 10mW.
בתמונה העליונה נוכל לראות את הצמד של מודול המשדר. משמאל לימין הסיכות הן VCC, DATA ו- GND. אנו יכולים גם להוסיף את האנטנה ולהלחין אותה על הנקודה המסומנת בתמונה לעיל.
עבור מפרט המקלט, כונס הנכסים יש דירוג של 5V DC ו 4mA רגיעה הנוכחי כקלט. תדר הקבלה הוא 433.92 מגהרץ עם רגישות -105DB.
בתמונה לעיל אנו יכולים לראות את הצמד של מודול המקלט. ארבעת הפינים הם משמאל לימין, VCC, DATA, DATA ו- GND. שני הפינים האמצעיים האלה מחוברים פנימית. אנו יכולים להשתמש בכל אחד או שניהם. אך נוהג להשתמש בשניהם להפחתת צימוד הרעשים.
כמו כן, דבר אחד אינו מוזכר בגיליון הנתונים, המשרן המשתנה או ה- POT באמצע המודול משמשים לכיול תדרים. אם לא היינו יכולים לקבל את הנתונים המשודרים, יש אפשרויות שהתדרים המשדרים והקבלים אינם מתאימים. זהו מעגל RF ועלינו לכוון את המשדר בנקודת התדר המועברת המושלמת. כמו כן, כמו המשדר, למודול זה יש גם יציאת אנטנה; אנו יכולים להלחין חוט בצורה מפותלת לקבלת פנים ארוכה יותר.
טווח השידור תלוי במתח המסופק למשדר ובאורך האנטנות בשני הצדדים. לפרויקט הספציפי הזה לא השתמשנו באנטנה חיצונית והשתמשנו ב -5 וולט בצד המשדר. בדקנו עם מרחק של 5 מטר וזה עבד בצורה מושלמת.
מודולי RF שימושיים מאוד לתקשורת אלחוטית למרחקים ארוכים. מעגל משדר ומקלט בסיסי RF מוצג כאן. ביצענו פרויקטים רבים באמצעות מודול RF:
- מכשירי חשמל ביתיים מבוקרי RF
- מכונית צעצוע נשלטת באמצעות Bluetooth באמצעות Arduino
- נוריות RF בשלט רחוק באמצעות פטל פי
צורך מקודד ומפענחים:
לחיישן RF זה מספר חסרונות:
- תקשורת חד כיוונית.
- רק ערוץ אחד
- הפרעות רעש מאוד.
בשל החיסרון הזה השתמשנו קודאי ו מפענח שבבים, HT12D ו HT12E. D מייצג מפענח שישמש בצד המקלט ו- E מייצג מקודד שישמש בצד המשדר. מכשירי IC זה מספקים 4 ערוצים. גם בגלל קידוד ופענוח רמת הרעש נמוכה מאוד.
בתמונה שלעיל, השמאלי הוא HT12D המפענח והימין הוא HT12E, המקודד. שני ה- IC זהים. A0 עד A7 משמש לקידוד מיוחד. אנו יכולים להשתמש בסיכות מיקרו-בקר כדי לשלוט בסיכות אלה ולהגדיר תצורות. צריך להתאים את אותן תצורות בצד השני. אם שתי התצורות מדויקות ותואמות, אנו יכולים לקבל נתונים. ניתן לחבר את 8 הפינים הללו ל- Gnd או ל- VCC או להשאיר אותם פתוחים. לא משנה מה התצורות שאנו עושים בקודן, עלינו להתאים את החיבור למפענח. בפרויקט זה נשאיר את 8 הפינים האלה פתוחים הן למקודד והן למפענח. 9 ו -18 פינים הם VSS ו- VDD בהתאמה. אנחנו יכולים להשתמש בסיכת ה- VT פנימהHT12D כמטרות הודעה. לפרויקט זה לא השתמשנו בו. סיכת ה- TE מיועדת להפעלה או השבתה של סיכה.
החלק החשוב הוא סיכת ה- OSC בה אנו צריכים לחבר נגדים היא לספק תנודה למקודד ולמפענח. המפענח זקוק לתנודה גבוהה יותר מהמפענח. בדרך כלל ערך הנגד של המקודד יהיה 1 מג וערך המפענח הוא 33k. נשתמש בנגדים אלה לפרויקט שלנו.
DOUT סיכה היא פיני נתוני משדר RF על HT12E ו DIN סיכת HT12D משמשים לחיבור סיכת הנתונים מודול RF.
ב- HT12E, AD8 ל- AD11 הוא קלט של ארבעה ערוצים המומר ומועבר באופן סדרתי באמצעות מודול RF והדבר ההפוך המדויק קורה ב- HT12D, הנתונים הסידוריים המתקבלים ומפענחים, ואנחנו מקבלים פלט מקביל 4 סיביות על פני 4 הפינים D8 עד D11.
רכיבים נדרשים:
- 2 - לוח לחם
- 1 - LCD 16x2
- 1 - לוח מקשים
- זוג HT12D ו- HT12E
- מודול RF RX-TX
- 1- 10K קבוע מראש
- נגד - 4.7k
- נגד 1M
- נגד 33k
- 2- קבלים קרמיים של 33pF
- קריסטל 1 - 20Mhz
- ברגסטיקס
- מעט חוטים בודדים.
- PIC16F877A MCU
- PIC18F4520 MCU
- מברג לשליטה בסיר התדרים, צריך להיות מבודד מגוף האדם.
תרשים מעגל:
תרשים מעגל לצד המשדר (PIC16F877A):
השתמשנו ב- PIC16F877A למטרת שידור. מקשי Hex מחוברים ברחבי PORTB ואת 4 ערוצי מחובר פני 4 ביטים האחרונים של PORTD. למידע נוסף על חיבור לוח מקשים מטריקס 4x4 כאן.
הצמד כדלקמן -
1. AD11 = RD7
2. AD10 = RD6
3. AD9 = RD5
4. AD8 = RD4
תרשים מעגל לצד המקלט (PIC18F4520):
בתמונה שלמעלה מוצג מעגל המקלט. ה- LCD מחובר על פני PORTB. השתמשנו במתנד פנימי של PIC18F4520 לפרויקט זה. 4 הערוצים מחוברים באותו אופן כפי שעשינו בעבר במעגל המשדר. למידע נוסף על חיבור 16x2 LCD עם מיקרו-בקר PIC כאן.
זהו צד המשדר -
וזה צד המקבל ב אֲרוּבָה נפרדת -
הסבר קוד:
יש שני חלקים מהקוד, אחד מיועד למשדר ואחד מיועד למקלט. תוכלו להוריד קוד מלא מכאן.
קוד PIC16F877A עבור משדר RF:
כמו תמיד ראשית, עלינו להגדיר את סיביות התצורה במיקרו-בקר pic, להגדיר כמה פקודות מאקרו, כולל ספריות ותדר גבישים. AD8-AD11 הנמל של IC Encoder מוגדר RF_TX ב PORTD. אתה יכול לבדוק קוד עבור כל אלה בקוד השלם שניתן בסוף.
השתמשנו בשני תפקידים, חלל system_init (void) ו encode_rf_sender והמבוטל (נתוני char).
System_init משמש initializations אתחול סיכה והמקלדת. אתחול המקלדת נקרא מספריית המקשים.
יציאת המקשים מוגדרת גם בלוח המקשים.ה. הכנו את ה- PORTD כפלט באמצעות TRISD = 0x00, והפכנו את יציאת RF_TX כ- 0x00 כמצב ברירת מחדל.
בטל system_init (בטל) { TRISD = 0x00; RF_TX = 0x00; keyboard_initialization (); }
ב- encode_rf_sender שינינו את מצב 4 הפינים בהתאם ללחצן שנלחץ. יצרנו 16 ערכי hex שונים או מצבי PORTD בהתאם ל ( 4x4) 16 לחצנים שונים שנלחצו.בטל encode_rf_sender (נתוני char) { if (data == '1') RF_TX = 0x10; אם (נתונים == '2') RF_TX = 0x20; אם (נתונים == '3') …………... ……..
בשנות ה העיקרית פונקציה אנחנו הראשונים לקבל את כפתור במקלדת לחוץ נתונים באמצעות switch_press_scan () פונקציה ולאחסן את הנתונים המפתח משתנה. לאחר מכן קידדנו את הנתונים באמצעות פונקציית encode_rf_sender () ושינוי סטטוס PORTD.
קוד PIC18F4520 למקלט RF:
כמו תמיד, ראשית הגדרנו את סיביות התצורה ב- PIC18f4520. זה קצת שונה מ- PIC16F877A, אתה יכול לבדוק את הקוד בקובץ ה- zip המצורף.
כללנו את קובץ כותרת ה- LCD. הגדיר את חיבור יציאת D8-D11 של מפענח IC על פני PORTD באמצעות #define RF_RX PORTD line, החיבור זהה לזה שבקטע מקודד. הצהרת יציאת LCD נעשית גם בקובץ lcd.c.
#לִכלוֹל
כאמור לפני כן אנו משתמשים במתנד פנימי עבור 18F4520, השתמשנו בפונקציה system _ init שם הגדרנו את רישום OSCON של 18F4520 כדי להגדיר את המתנד הפנימי ל- 8 מגה-הרץ. הגדרנו גם את סיבית ה- TRIS לשני סיכות LCD וגם לסיכות המפענח. מכיוון ש- HT - 12D מספק פלט ביציאות D8-D11, עלינו להגדיר את ה- PORTD כקלט לקבלת הפלט.
בטל system_init (בטל) { OSCCON = 0b01111110; // 8Mhz,, intosc // OSCTUNE = 0b01001111; // PLL לאפשר, Max prescaler 8x4 = 32Mhz TRISB = 0x00; TRISD = 0xFF; // 4 סיביות אחרונות כסיבית קלט. }
אנו הגדרנו את OSCON הקופה ב 8 MHz, גם עשה היציאה B כמו פלט ו D הנמל כפי קלט.
הפונקציה שלמטה נעשית תוך שימוש בהיגיון ההפוך המדויק ששימש בסעיף המשדר הקודם. כאן אנו מקבלים את אותו ערך hex מהיציאה D ועל ידי אותו ערך hex אנו מזהים איזה מתג נלחץ בקטע המשדר. אנו יכולים לזהות כל לחיצה על מקש ולהגיש את דמות הכתב למסך LCD.
בטל rf_analysis (char לא recived_byte) { אם (recived_byte == 0x10 ) lcd_data ('1'); אם (recived_byte == 0x20) lcd_data ('2'); אם (recived_byte == 0x30) ……. ….. …… ………..
Lcd_data נקרא מן lcd.c קובץ.
בשנות ה העיקרית פונקציה שאנחנו הראשון לאתחל את המערכת LCD. לקחנו משתנה בייט, ומאוחסן ערך hex שהתקבל D נמל. ואז על ידי הפונקציה rf_analysis נוכל להדפיס את התו על גבי LCD.
void main (void) { בתים לא חתומים ללא סימן = 0; system_init (); lcd_init (); בעוד (1) { lcd_com (0x80); lcd_puts ("CircuitDigest"); lcd_com (0xC0); בתים = RF_RX; rf_analysis (בתים); lcd_com (0xC0); } לחזור; }
לפני שהפעלנו אותו כיוונו את המעגל. ראשית לחצנו על כפתור ' D ' בלוח המקשים. אז, 0xF0 מועבר ברציפות על ידי משדר ה- RF. לאחר מכן כיוונו את מעגל המקלט עד שה- LCD יציג את התו ' D '. לפעמים המודול מכוון כראוי מהיצרן, לפעמים זה לא. אם הכל מחובר כראוי ולא מקבל את לחצן הלחיצה על הלחצן ב- LCD אז יש אפשרויות שמקלט ה- RF אינו מכוון. השתמשנו במברג המבודד להפחתת אפשרויות כוונון שגויות עקב השראות גופנו.
כך תוכלו לממשק את מודול ה- RF למיקרו-בקר PIC ולתקשר בין שני מיקרו-בקרים PIC באופן אלחוטי באמצעות חיישן RF.
תוכלו להוריד את הקוד השלם למשדר ומקלט מכאן, בדקו גם את סרטון ההדגמה למטה.