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

מחולל פונקציות נייד ב- WiFi ובאנדרואיד: 10 שלבים
מחולל פונקציות נייד ב- WiFi ובאנדרואיד: 10 שלבים

וִידֵאוֹ: מחולל פונקציות נייד ב- WiFi ובאנדרואיד: 10 שלבים

וִידֵאוֹ: מחולל פונקציות נייד ב- WiFi ובאנדרואיד: 10 שלבים
וִידֵאוֹ: אינטרנט בכל מצב: מדריך מעולה ליצירת נקודת גישה\נקודה חמה בטלפון הנייד שלך | Android Mobile HotSpot 2024, יולי
Anonim
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד
מחולל פונקציות נייד ב- WiFi ואנדרואיד

לקראת סוף המאה ה -20 צצו חידושים טכנולוגיים שונים, במיוחד בתחום התקשורת; אך לא רק. עבורנו, משתמשים, צרכנים ומהנדסים באו לפיתוח מהיר של מכשירים אלקטרוניים, שיכולים להקל על חיינו הרבה יותר: שעונים חכמים, בתים חכמים, סמארטפונים וכו '.

מכיוון שהכל יכול להיות "חכם" בימינו, החלטתי לעצב מכשיר שימושי במיוחד שיהיה חלק מציוד מעבדה אלקטרוני חיוני - מחולל פונקציות נייד, הניתן לשליטה באמצעות סמארטפון מבוסס מערכת הפעלה אנדרואיד באמצעות WiFi ישיר או רשת מקומית WiFi (WLAN)).

מדוע עלינו לבנות מכשיר זה?

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

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

תכונות עיקריות

ספק כוח

  • מחבר USB מסוג A, הן למערכות אספקת חשמל והן לתכנות
  • מערכת ניהול סוללות Li -Ion מלאה - טעינה ומצבים יציבים
  • יישום Smart Switch - אין צורך במתג החלפת כוח
  • ספק כוח כפול: +3.3V ו -3.3V לייצור צורות גל סימטריות

יצירת צורות גל

  • יישום רמת DC במפל הפלט - צורת גל מוטה בין גבולות המתח
  • DDS מבוסס 4 צורות גל צורות - סינוס, משולש, מרובע ו- DC
  • תמיכה בתדר עד 10MHz
  • זרם פלט עד 80mA עם זמינות הספק מרבית של 500mW
  • ערוצים נפרדים לייצור צורות גל - מעגלים מבוססי AD9834 מפוצלים

תִקשׁוֹרֶת

  • יישום ESP32 - יכולות WiFi ישימות
  • תמיכת TCP/IP מלאה על ידי מכשיר מחולל וסמארטפון אנדרואיד
  • היכולת לאחסן פרמטרים של משתמשים לכל מחזור התקנים
  • ניטור המדינה - שתי המערכות מודעות זו לזו: FuncGen (נקרא לזה מעכשיו) וסמארטפון.

ממשק משתמש

  • 20 x 4 תווים LCD עם ממשק נתונים פשוט של 4 סיביות
  • אפליקציית אנדרואיד - שליטת משתמשים מלאה על מכשיר ה- FuncGen
  • מעגל זמזם - משוב קול למשתמש

שלב 1: תרשים בלוק - חומרה

דיאגרמת בלוק - חומרה
דיאגרמת בלוק - חומרה
דיאגרמת בלוק - חומרה
דיאגרמת בלוק - חומרה

יחידת מיקרו -בקר - ATMEGA32L

מיקרו -בקר הוא שבב הניתן לתכנות המורכב מכל פונקציונליות המחשב השוכנת בשבב אלקטרוני יחיד. במקרה שלנו, זהו "המוח" ומרכיב מרכזי במערכת. מטרת ה- MCU היא לנהל את כל המערכות ההיקפיות, לטפל בתקשורת בין מערכות אלה, לשלוט על פעולת החומרה ולספק תמיכה מלאה בממשק המשתמש והאינטראקציה שלו עם משתמש בפועל. פרויקט זה מבוסס על ATMEGA32L MCU, שעשוי לפעול על 3.3V ותדר של 8MHz.

SoC תקשורת - ESP32

SoC זה (System on Chip) מספק תמיכה מלאה בתקשורת עבור FuncGen - גישה ליכולות WiFi כולל תקשורת ישירה, מקומית או אינטרנטית. מטרות המכשיר הן:

  • טיפול בהעברת נתונים בין אפליקציית Android למכשיר FuncGen
  • ניהול הודעות בקרה/נתונים
  • תמיכה בתצורה רציפה של TCP/IP Client-Server

בפרויקט שלנו ה- SoC הוא espressif ESP32, שהוא פופולרי מכדי להרחיב עליו עוד יותר:)

מערכת ניהול סוללות ליתיום

על מנת להפוך את המכשיר שלנו למכשיר נייד, המכשיר מכיל מעגל טעינת סוללות ליתיום מעוצב. המעגל מבוסס על MC73831 IC, עם זרם טעינה הניתן לשליטה באמצעות התאמת הערך של נגד תכנות יחיד (נעסוק בנושא זה בשלב סכמטי). קלט אספקת החשמל של המכשיר הוא מחבר USB Type-A.

מעגל מתג חכם

מעגל בקרת הספק של מתג חכם מספק בקרת תוכנה מלאה על רצף כיבוי המכשיר וחוסר צורך במתג חיצוני חיצוני להפסקת מתח הסוללה של המכשיר. כל פעולות ההספק מתבצעות על ידי לחיצה על כפתור הלחיצה והתוכנה של MCU. במקרים מסוימים יהיה צורך לסגור את המערכת: מתח סוללה נמוך, מתח כניסה גבוה, שגיאת תקשורת וכן הלאה. מתג חכם מבוסס על IC מתג חכם STM6601, שהוא זול וידידותי מאוד לשחק איתו.

יחידת אספקת החשמל הראשית

יחידה זו מורכבת משני מעגלי אספקת חשמל המונעים על ידי סוללות - +3.3V לכל מעגלי האספקה הדיגיטליים / אנלוגיים ו -3.3V ליציאה סימטרית של FunGen ביחס לפוטנציאל 0V (כלומר ניתן להגדיר צורת גל שנוצרת ב- [-3.3V: 3.3V] אזור.

  • מעגל האספקה הראשי מבוסס על ווסת מתח ליניארי 1A LP3875-3.3 LDO (נשירה נמוכה).
  • מעגל אספקה משני מבוסס על LM2262MX IC, המבצע המרת מתח שלילי DC-DC באמצעות משאבת קבלים-מטען-מערכת עליה מבוססת IC.

מערכת מחוללי צורות גל

המערכת תוכננה בדגש על מעגלים משולבים נפרדים של DDS (ישירות דיגיטלית ישירה), המאפשרים שליטה מלאה ביצירת צורות גל באמצעות SPI (ממשק היקפי טורי) של MCU. המעגלים ששימשו לעיצוב הם התקנים אנלוגיים AD9834 שעשויים לספק סוגים שונים של צורות גל. האתגרים שעומדים בפנינו בעת עבודה עם AD9834 הם:

  • משרעת צורת גל קבועה: משרעת צורת הגל נשלטת על ידי מודול DAC חיצוני
  • אין התייחסות לרמת קיזוז DC: יישום מעגלי סיכום עם ערכי קיזוז DC רצויים
  • יציאות נפרדות לגל מרובע ולגל משולש/סינוס: יישום מעגל מיתוג בתדר גבוה ולכן כל פלט יחיד של ערוץ יכול לספק את כל צורת הגל הרצויה: סינוס, משולש, ריבוע ו- DC.

תצוגת קריסטל נוזלי

LCD הוא חלק מממשק המשתמש (ממשק משתמש), ומטרתו לאפשר למשתמש להבין מה המכשיר עושה בזמן אמת. הוא מתקיים עם המשתמש בכל מצב מכשיר.

זַמזָם

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

מתכנת ISP משולב

קיימת בעיה מתמשכת לכל מהנדס בכל הנוגע לתהליך התכנות: תמיד יש את הצורך הגרוע ביותר לפרק את המוצר על מנת לתכנת אותו מחדש עם קושחה חדשה. כדי להתגבר על אי הנוחות הזו, תוכנת AVR ISP הייתה מחוברת למכשיר מבפנים, בעוד שנתוני USB וקווי חשמל קשורים למחבר USB Type-A של המכשיר. בתצורה זו, אנו רק צריכים לחבר את ה- FuncGen שלנו באמצעות כבל USB לתכנות או לטעינה!

שלב 2: דיאגרמת בלוק - רשתות

דיאגרמת בלוק - רשתות
דיאגרמת בלוק - רשתות

מחולל פונקציות ערוץ כפול

מכשיר ראשי. זה שבדקנו בשלב הקודם

ESP-WROOM-32

מערכת-על-שבב משולבת עם יכולות WiFi ו- BLE. SoC מחובר ללוח הראשי (נסקור זאת בשלב סכמטי) באמצעות מודול UART ומשמש מעביר הודעות בין המכשיר הראשי לסמארטפון אנדרואיד.

רשת מקומית WiFi

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

סמארטפון אנדרואיד

מכשיר סמארטפון מבוסס מערכת הפעלה אנדרואיד הפועל על אפליקציית FuncGen

שלב 3: חלקים, כלים, IDE וחשבון חומרים

חלקים, כלים, IDE ושטר החומרים
חלקים, כלים, IDE ושטר החומרים
חלקים, כלים, IDE ושטר החומרים
חלקים, כלים, IDE ושטר החומרים
חלקים, כלים, IDE ושטר החומרים
חלקים, כלים, IDE ושטר החומרים

שטר החומרים (ראה טבלת XLS המצורפת)

ממשק משתמש וחיבורי מערכת

  • 1 x 2004A Char-LCD 20x4 כחול
  • 1 x מחבר USB מסוג B
  • 1 x 10 סט מיני מיקרו JST XH 2.54 מ"מ 4 פינים
  • 1 x 6 יחידות SW רגעי

הזמנת PCB (על פי Seeed Studio)

חומר בסיס FR-4

מספר שכבות 2 שכבות

כמות PCB 10

מספר עיצובים שונים 1

עובי PCB 1.6 מ מ

צבע PCB כחול

משטח גימור HASL

סכר מסכת הלחמה מינימלי 0.4mm ↑

משקל נחושת 1 עוז

גודל חור מקדחה מינימלי 0.3 מ מ

רוחב עקבות / מרווח 6/6 מיל

חצי חורים מצופים / חורים קסטליים מס '

בקרת עכבה לא

כלים

  • אקדח דבק חם
  • מַלְקֶטֶת
  • מַחתֵך
  • ~ 22AWG חוט למטרות טיפול בתקלה
  • מגהץ/תחנה
  • פח הלחמה
  • תחנת עיבוד מחדש של SMD (אופציונלי)
  • מדפסת תלת מימד (אופציונלי)
  • קובץ extruding
  • מתכנת AVR ISP
  • ממיר USB לטורי (אופציונלי, למטרות איתור באגים)

סביבת פיתוח משולבת (IDE) ותוכנה

  • עורך Autodesk EAGLE או עורך סכמטי של Cadence / עורך PCB Allegro
  • OpenSCAD (אופציונלי)
  • Ulta Maker Cura (אופציונלי)
  • Logic Saleae (לפתרון בעיות)
  • Atmel Studio 6.3 ומעלה
  • Android Studio או Eclipse IDE
  • צג סידורי של Docklight / תוכנות ניטור יציאות COM אחרות
  • ProgISP לתכנות פלאש AVR ATMEGA32L

שלב 4: עיצוב חומרה - לוח ראשי

עיצוב חומרה - לוח ראשי
עיצוב חומרה - לוח ראשי
עיצוב חומרה - לוח ראשי
עיצוב חומרה - לוח ראשי
עיצוב חומרה - לוח ראשי
עיצוב חומרה - לוח ראשי

מעגל ניהול סוללות

מעגל טעינת הסוללות מבוסס על MCP7383 IC, המאפשר לנו לבחור זרם טעינה רצוי לסוללת ליתיום - 3.7V בהספק של 850mAh. זרם הטעינה נקבע על ידי ערך הנגד של התכנות (R1) במקרה שלנו

R1 = 3KOhm, I (תשלום) = 400mA

מתח USB VBUS מסונן על ידי מסנן π (C1, L3, C3) ופועל כמקור כוח למעגל הטעינה.

מעגל מחלק המתח (R2, R3) מאפשר ל- MCU לציין אם ספק הכוח החיצוני של USB מחובר או לא, על ידי מתן מתח הבא לערוץ MCU A/D:

V (אינדיקציה) ~ (2/3) V (BUS)

מכיוון שה- A/D שלנו ב- ATMEGA32L הוא 12 סיביות, אנו יכולים לחשב את הטווח הדיגיטלי:

A / D (טווח) = 4095V (אינדיקציה) / V (REF).

A/D ∈ [14AH: FFFH]

יחידת כוח מתג חכם

מעגל מאפשר למערכת לשלוט באספקת החשמל לכל בלוק מעוצב הן מכפתור לחיצה והן מתוכנה ב- MCU והוא מבוסס על STM6601 Smart-Switch עם אפשרות POWER במקום RESET. המסופים שברצוננו לשקול הם אלה:

  • PSHOLD - קו קלט, המגדיר את מצב המכשיר: אם הוא מושך למטה, המכשיר משבית את כל יחידות אספקת החשמל המשניות (+3.3V ו -3.3V). אם מוחזק HIGH - המכשיר שומר על מצב ON.
  • nSR ו- nPB - שורות קלט. מסופי כפתורים. כאשר מזוהה קצה נופל בסיכות אלה, המכשיר מנסה להיכנס למצב הפעלה / כיבוי
  • nINT - שורת פלט. נמשך LOW בכל פעם שלחיצה על כפתור הלחיצה
  • EN - קו פלט, משמש כמפעיל כוח ליחידות אספקת החשמל המשניות. בעוד שהוא מוחזק LOW, שני אספקת החשמל המשנית מושבתים

יש כמה הערות חשובות לפני שנמשיך לעיצוב הסופי:

  • יש להרים את PSHOLD עד 3.3V, מכיוון שיש מקרים שבהם מכשירי ה- MCU מכריחים את כל הקלט/פלט להיות במצב HIGH-Z. במקרה זה, מצב PSHOLD מה- MCU אינו ידוע ועלול להשפיע באופן דרמטי על תהליך תכנות המכשירים.
  • יש להזמין את STM6601 עם אפשרות כוונון EN בלחיצה ארוכה, במקום אפשרות RESET (נפלתי בזה).

יחידת אספקת חשמל: +3.3V

ספק כוח ראשי לכל המערכות בפרויקט שלנו. כאשר הקו +3.3V מוחזק ברמת GND (כלומר, אין מתח), כל ה- IC למעט המתג החכם מושבת. המעגל מבוסס על LDO LP-3875-3.3 IC, עם יכולת שליטה באמצעות מסוף EN ולספק זרם עד 1A.

מקור החשמל למעגל זה הוא מתח הסוללה, עם מחוון A/D מצורף לחישת VBAT בתצורה, בדומה למעגל חישה VBUS. במקרה זה, החישובים שונים במקצת;

V (סוללה ל- A/D) = 0.59V (סוללה); A/D (טווח) ∈ [000H: C03H]

יחידת אספקת חשמל: -3.3V

מעגל אספקת מתח שלילי מאפשר לנו ליצור צורות גל סימטריות עם גורם DC של 0V (כלומר הערך הממוצע של צורת הגל מסוגל להיות 0V). מעגל זה מבוסס על ממיר IC - DC/DC LM2662MX הפועל בשיטת "משאבת טעינה". זרם הפלט המרבי של המעגל הוא 200mA וזה מספיק לדרישות העיצוב שלנו - אנו מוגבלים בזרם פלט 80mA מכל ערוץ המכשיר.

IC מבצע את כל העבודה הדרושה, כך שרק חלקים שעלינו לצרף הם שני קבלים אלקטרוליטיים: C33 למתג ו- C34 עבור מעקף קו -3.3V (שיקולי הפחתת רעש). תדירות המיתוג זניחה בעיצוב אם אנו ממקמים את המעגל מספיק רחוק מחלקי יצירת צורות גל (נדון בו בשלב פריסת PCB).

יחידת מיקרו -בקר - MCU

זהו המנהל והמנכ ל של המערכת שלנו - שליטה, טיפול ברשת, העברת הודעות ותמיכה בממשק המשתמש - הכל על ידי MCU.

ה- MCU שנבחר הוא Atmel ATMEGA32L, שם L מייצג פעולת מתח נתמכת ∈ [2.7V: 5.5V]. במקרה שלנו, מתח ההפעלה הוא +3.3V.

הבה נבחן את אבני הפעולה העיקריות, הדרושות להבנה, בעבודה עם MCU בעיצובנו:

  • מתנד חיצוני - הוא רכיב אופציונלי, מכיוון שאנו מעוניינים בתדר הפעלה של 8MHz
  • בקרה היקפית, רשת SPI - כל המכשירים ההיקפיים (למעט ESP32) מתקשרים עם MCU באמצעות SPI. ישנם שלושה קווים משותפים לכל המכשירים (SCK, MOSI, MISO) ולכל מעגל היקפי יש קו CS (Chip Select) ייעודי. התקני SPI שהם חלק מהמכשיר:

    1. D/A לבקרת משרעת - ערוץ A
    2. D/A לבקרת משרעת - ערוץ B
    3. מכשיר AD9834 - ערוץ א
    4. מכשיר AD9834 - ערוץ B
    5. D/A לבקרת מתח הטיה - ערוץ A
    6. D/A לבקרת מתח הטיה - ערוץ B
    7. פוטנציומטר דיגיטלי להגדרות בהירות/ניגודיות LCD
  • תמיכת LCD - מכיוון ש- LCD הוא תצוגה כללית של 20 x 4 תווים, אנו משתמשים בממשק 4 סיביות (קווים D7: D4), סיכות שליטה (קווי RS, E) ובקרת בהירות/ניגודיות (קווי V0 ואנודה)
  • תמיכת LED RGB - מודול זה הוא אופציונלי, אך קיים מחבר RGB LED קתודי משותף עם נגדים מתאימים, המחובר למרכז ה- MCU.
  • בקרת חשמל - MCU מבצע ניטור מערכת החשמל במצב בזמן אמת, ומטפל בכל אירועי ההספק הדרושים:

    1. VBAT_ADC - ניטור מתח הסוללה וקביעת מצבו (ערוץ ADC0)
    2. PWR_IND - אינדיקציה לחיבור ספק כוח חיצוני (ערוץ ADC1)
    3. PS_HOLD - קו הפעלת כוח ראשוני לכל המערכות המוגדרות. כאשר ה- MCU נמשך נמוך, המכשיר מושבת
    4. מסוף קטע של מתג חכם - ניטור מצב כפתור
  • ניהול רשתות WiFi - ESP32: MCU מתקשר עם ESP32 באמצעות ממשק UART. מכיוון ש- 8MHz מאפשר לנו ליישם קצב שידור של 115200 עם שגיאה קטנה יחסית, אנו יכולים להשתמש ב- ESP32 במעגל ללא הגדרות מוקדמות לשינויי קצב שידור.

מתכנת AVR ISP

ה- MCU שלנו מתוכנת באמצעות SPI עם קו איפוס (/RST) יש למשוך אותו גבוה לפעולה תקינה (אם לא - MCU ימצא את עצמו במצב איפוס לנצח).

על מנת לאפשר את התכנות והטעינה של המכשיר באמצעות USB, צירפתי מתכנת AVR ISP (מוצר בגודל קטן, שנרכש מאיביי). על מנת לשמור על תמיכת USB מלאה במכשיר, יש צורך לקשור מסופי USB מסוג A (D+, D-, VBUS ו- GND) עם התקן AVR ISP.

מעגל ייצור צורות גל

ליבת המכשיר היא המעגלים האלה. AD9834 הוא מכשיר DDS בעל צריכת חשמל נמוכה המספק לכולנו את צורות הגל שהיינו רוצים לאחזר מהמערכת. המעגלים מכילים שני מחשבי IC AD9834 עצמאיים עם מתנדים חיצוניים 50MHz מופרדים (כפי שניתן לראות בתרשימים). הסיבה למתנד מופרד היא שיקולים של הפחתת רעש במעגלים דיגיטליים, ולכן ההחלטה הייתה לטפל בקווים נאותים של 50MHz עם מתנדים הממוקמים בסמוך ל- AD9834.

עכשיו בואו נסתכל על קצת מתמטיקה:

מכיוון שמכשיר DDS פועל על טכנולוגיית גלגל פאזה עם ערך פלט הנמצא ברשם של 28 סיביות, אנו יכולים לתאר יצירת צורות גל מתמטית:

dP (שלב) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2^28; ΔP ∈ [0: 2^28 - 1]

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

Δf = k * f (מתנד) / f (מקסימום) = 0.28 * 50M / 28M = 0.187 [Hz]

מחשבי IC של AD9834 מספקים פלט זרם אנלוגי לגל משולש/סינוס (מסוף IOUT) ופלט דיגיטלי לגל מרובע (מסוף SIGN_OUT). השימוש בסימן סיביות מעט מסובך אך אנו מסוגלים להתמודד עם זה - בכל פעם ש- DDS עובר את סף ערך ההשוואה, SIGN_OUT מתנהג בהתאם. נגד 200 אוהם מחובר לפלט של כל ערוץ, כך שלמתח המוצא יהיו ערכים משמעותיים:

I (ערוץ יחיד) = V (פלט) / R (בחירת מתח); V (פלט) = R (VS)*I (SS) = 200I (SS) [A]

מעגלי בקרת משרעת (D/A)

על פי גיליון הנתונים של AD9834, ניתן להתאים את משרעתו על ידי אספקת זרם למערכת בקנה מידה מלא של DDS, ולכן בעזרת כפול D/A IC נוכל לשלוט על משרעת אות הפלט על ידי התאמת זרם זה. שוב קצת מתמטיקה:

I (קנה מידה מלא) = 18 * (V_REF - V_DAC) / R_SET [A]

על פי סכמטים והוספת מספרים למשוואה:

I (קנה מידה מלא) = 3.86 - 1.17 * V_DAC [A]

מודול D/A המשמש בעיצוב הוא 12 סיביות MCP4922, כאשר הזרם נמצא בטווח של [0mA: 3.86mA] ופונקציית המשרעת הלינארית היא:

V (בחירת משרעת) = 1 - [V (D / A) / (2^12 - 1)]

מעגל ריבוי כפולות Waveform

יציאות גל ריבוע וגל סינוס/משולש מופרדות ב- AD9834 ומכאן שעלינו להשתמש במעגל ריבוב במהירות גבוהה עבור שתי היציאות על מנת לאפשר אחזור כל צורות הגל הרצויות מערוץ מופרד יחיד. מכפיל הכפול הוא מתג אנלוגי ADG836L עם עמידות נמוכה מאוד (~ 0.5Ohm).

טבלת הבחירה שבה משתמשת MCU לתפוקות כפי שהיא:

בחירת מצב [D2: D1] | ערוץ פלט א | פלט ערוץ ב

00 | סינוס/משולש | סינוס/משולש 01 | סינוס/משולש | ריבוע 10 | ריבוע | סינוס/משולש 11 | ריבוע | כיכר

מעגלי בקרת מתח (D/A)

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

המתח שאוחזר מ- D/A נמצא בטווח [0V: +3.3V] כך שיש מעגל מבוסס אופ-אמפר הממפה את טווח ה- D/A ל- [-3.3V: +3.3V], ומאפשר למכשיר לספק טווח מלא של רכיב DC הרצוי. נדלג על המתמטיקה האנליטית המעצבנת, ורק נתמקד בתוצאות הסופיות:

V_OUT (ערוץ B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (ערוץ A) = V_BIAS_A (+) - V_BIAS_A (-)

כעת, טווח רכיבי DC הממוקם בטווח [-3.3V: +3.3V].

מעגלי סיכום - רכיבי DC ויציאות גל

בשלב זה יש לנו את כל מה שאנחנו צריכים לפלט המכשיר הנכון - מתח הטיה (רכיב DC) בטווח המתח המלא ויציאות AD9834 מרובות. נגרום לזה לקרות באמצעות מגבר הסיכום - תצורת מגבר אופ

בואו נדלג שוב על המתמטיקה (כבר התייחסנו לגישה מתמטית רבה) ונרשום את התוצאה הסופית של תפוקת המגבר המסכם:

V (פלט מכשיר) = V (הטיה חיובית) - V (הטיה שלילית) - V (פלט מרובה) [V]

לָכֵן:

V_OUT = ΔV_BIAS - V_AD9834 [V]

מחברי פלט מסוג BNC מחוברים עם נגדי בחירה (R54, R55; R56, R57). הסיבה לכך היא שבמקרה שהעיצוב עלול להיות לא מתפקד, עדיין נוכל לבחור אם נרצה להשתמש במגבר סיכום.

הערה חשובה: ניתן להתאים את רשתות הנגדים של מגברי הסיכום הסופי על ידי מעצב, על מנת לשנות את המשרעת המרבית שניתן לאחזר מהמכשיר. במקרה שלי, כל המגברים חולקים את אותו הרווח = 1, ולכן המשרעת המרבית שנאגרת היא 0.7Vpp עבור גל משולש/סינוס ו -3.3Vpp לגל מרובע. ניתן למצוא את הגישה המתמטית הספציפית בין התמונות המצורפות של סטף.

ESP32 כמודול חיצוני

MCU מתקשר עם ESP32 באמצעות ממשק UART. מכיוון שרציתי PCB משלי עבור ESP32, ישנם 4 מסופים זמינים לחיבור: VCC, RX, TX, GND. J7 הוא מחבר ממשק בין מחשבי הלוח, ו- ESP32 יוקצה כמודול חיצוני בתוך המכשיר.

ממשק משתמש - LCD ורמקול

LCD שהיה בשימוש הוא תצוגה כללית בגודל 20 x 4 תווים עם ממשק של 4 סיביות, כפי שניתן לראות מהעיצוב יש פוטנציומטר דיגיטלי SPI המחובר למסופי LCD "A" ו- "V0" - מטרתו להתאים בהירות וניגודיות של מודול LCD באופן תכנותי.

הרמקול מספק פלט צליל למשתמש על ידי יצירת גל מרובע פשוט מה- MCU. BJT T1 שולט בזרם דרך הרמקול שיכול להיות רק בשני מצבים - ON / OFF.

שלב 5: עיצוב חומרה - מודול ESP32

עיצוב חומרה - מודול ESP32
עיצוב חומרה - מודול ESP32

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

אין הרבה מה להרחיב על עיצוב זה, אך יש כמה הערות לעיצוב:

  • לטיפול בכשל בשימוש במודול UART תקין של ESP32, צירפתי שלושה נגדי בחירה לקווי TX ו- RX. (0 אוהם לכל אחד). לתצורה סטנדרטית, מודול UART2 משמש לפקודות AT (יש להלחם R4, R7)
  • למכשיר פלט בעל 4 שורות - VCC, GND, TX, RX.
  • סיכות IO0 ו- EN מעריכות את פעולת המכשיר ויש לעצב אותן כפי שהיא מסופקת בתרשימים

כל תכונות ה- PCB שנכסה בשלב הבא.

שלב 6: פריסת PCB

פריסת PCB
פריסת PCB
פריסת PCB
פריסת PCB
פריסת PCB
פריסת PCB

מטרות עיצוב PCB

  1. צור מערכת משובצת לכל המעגלים המשולבים על אותו לוח
  2. שפר את ביצועי המכשיר באמצעות עיצוב PCB ראשי יחיד
  3. הפחתת עלויות - אם ברצונך לחפש את המחירים, עיצובים בעלות נמוכה הם בעלות ממש נמוכה
  4. צמצם את גודל הלוח האלקטרוני
  5. קל לפתור בעיות - אנו יכולים להשתמש ב- TP (נקודות בדיקה) עבור כל קו אפשרי.

פרמטרים טכניים

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

א - מועצה ראשית

  • גודל: 10 ס"מ על 5.8 ס"מ
  • מספר שכבות: 2
  • עובי PCB: 1.6 מ"מ
  • מרחב מינימלי/רוחב עקבות: 6/6mil
  • קוטר חור מינימלי: 0.3 מ"מ
  • נחושת עד קצה המרחק המינימלי של ה- PCB: 20mil
  • משטח גימור: HASL (סוג כסף די טוב למראה זול)

ב - מועצה ראשית

  • גודל: 3 ס"מ על 4 ס"מ
  • מספר שכבות: 2
  • עובי PCB: 1.6 מ"מ
  • מרחב מינימלי/רוחב עקבות: 6/6mil
  • קוטר חור מינימלי: 0.3 מ"מ
  • נחושת עד קצה המרחק המינימלי של ה- PCB: 20mil
  • גימור משטח: HASL

שלב 7: מארז תלת מימד

מארז תלת מימד
מארז תלת מימד

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

  1. מכשיר הדפסה: Creality Ender-3
  2. סוג המיטה: זכוכית, עובי 5 מ"מ
  3. קוטר נימה: 1.75 מ"מ
  4. סוג נימה: PLA+
  5. קוטר זרבובית: 0.4 מ"מ
  6. מהירות ראשונית: 20 מ"מ/שניות
  7. מהירות ממוצעת: 65 מ"מ/שניות
  8. תמיכה: לא
  9. מילוי: 25%
  10. טֶמפֶּרָטוּרָה:

    • מיטה: 60 (oC)
    • זרבובית: 215 (oC)
  11. צבע נימה: שחור
  12. סך כל הצמצמים: 5
  13. מספר לוחות מארז: 4

    • מעטפת עליונה
    • מעטפת תחתונה
    • פאנל קדמי
    • פאנל אחורי

שלב 8: יישום תוכנה - MCU

יישום תוכנה - MCU
יישום תוכנה - MCU
יישום תוכנה - MCU
יישום תוכנה - MCU
יישום תוכנה - MCU
יישום תוכנה - MCU

קישור GitHub לאנדרואיד וקוד Atmega32

אלגוריתם תוכנה

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

הפעלה

בשלב זה MCU מבצעת את כל רצפי האתחול יחד עם קביעת סוג התקשורת המאוחסן עם מכשיר אנדרואיד: תקשורת WiFi ישירה או רשת WLAN - נתונים אלה מאוחסנים ב- EEPROM. המשתמש יכול להגדיר מחדש את סוג ההתאמה של מכשירי אנדרואיד בשלב זה.

זיווג מכשיר אנדרואיד ישיר

סוג זה של זיווג מבוסס על יצירת רשת WiFi באמצעות מכשיר ה- FuncGen. הוא ייצור AP (נקודת גישה) ושרת TCP ב- IP של מכשיר מקומי עם SSID ספציפי (שם רשת WiFi) ומספר יציאה ספציפי. המכשיר צריך להחזיק את המצב - פתוח לחיבורים.

כאשר מכשיר אנדרואיד מחובר ל- FuncGen, MCU נכנס למצב ACTIVE ומגיב בהתאם להוראות המשתמש ממכשיר ה- Android.

זיווג WLAN

על מנת לתקשר ברשת WiFi מקומית, MCU צריך לספק פקודות עבור ESP32 ליצירת AP, לתקשר עם מכשיר אנדרואיד ולהחליף את נתוני הרשת החשובים:

  • מכשיר אנדרואיד מקבל מ- FuncGen את כתובת ה- MAC שלו ושומר אותו בזיכרון.
  • מכשיר FuncGen מקבל ממכשיר אנדרואיד פרמטרים נבחרים של WLAN: SSID, סוג אבטחה וסיסמא ושומר אותו ב- EEPROM.

כאשר המכשירים אכן מחוברים לאותו WLAN, מכשיר אנדרואיד יחפש את ה- FuncGen על ידי סריקת כל כתובות ה- MAC של מכשירים המחוברים ל- WLAN. כאשר מכשיר אנדרואיד קובע התאמה ל- MAC, הוא מנסה לתקשר.

חיבור וטיפול במדינה - MCU

כאשר מכשירים מתקשרים זה עם זה, הפרוטוקול (ראה שלב קדם-סופי) נשאר זהה, ותרשים הזרימה זהה.

ניטור מצב המכשיר

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

  • ספק כוח חיצוני - הפעלה/כיבוי
  • מצב מתח הסוללה
  • עדכון ממשק משתמש לכל התאמה אישית
  • לחצן לחיצה: לחץ/לא נלחץ

שלב 9: יישום תוכנה - אפליקציית אנדרואיד

יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד
יישום תוכנה - אפליקציית אנדרואיד

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

רצף הפעלה

רצף ראשון של המכשיר. כאן מוצג לוגו האפליקציה יחד עם הפעלת מודולי GPS ו- WiFi במכשיר אנדרואיד (אל תדאג, ה- GPS נחוץ לסריקת רשתות נאותות בלבד).

תפריט ראשי

לאחר אתחול האפליקציה, יופיעו ארבעה לחצנים על המסך. פעולת לחצנים:

  1. חיבור ישיר: אתחול החיבור ל- AP של FuncGen באמצעות ה- SSID של IOT_FUNCGEN. אם החיבור מצליח, המכשיר נכנס למצב ממשק משתמש ראשי.
  2. חיבור WIFI: המכשיר בודק אם קיימים פרמטרי נתונים מאוחסנים בזיכרון: wifi.txt, mac.txt. אם אין נתונים מאוחסנים, המכשיר ידחה את בקשת המשתמש ויספק הודעה מוקפצת כי יש לבצע את התאמת WLAN תחילה.
  3. התאמה: התקשורת עם FuncGen באותו אופן כמו חיבור ישיר, אך במקום חילופי מסרים רציפים, יש לחיצת יד אחת. מכשיר אנדרואיד בודק אם הוא כבר מחובר לרשת ה- WiFi, ומבקש מהמשתמש להזין סיסמה. אם החיבור מחדש מוצלח, מכשיר Android מאחסן SSID ומפתח סיסמה בקובץ wifi.txt. לאחר תקשורת מוצלחת עם FuncGen, היא מאחסנת את כתובת ה- MAC שקיבלה בקובץ mac.txt.
  4. יציאה: די אמר:)

מנהל סריקת WiFi

רציתי שהיישום יהיה תפעולי וללא התאמות מחוץ לאפליקציה. אז, עיצבתי סורק WiFi, שמבצע את כל הפעולות הדרושות כדי להתחבר לרשת ה- WiFi באמצעות מפתח סיסמה ידוע ו- SSID.

העברת נתונים ותקשורת TCP

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

  1. חפש ברים: כאן אנו מגדירים טווח אמיתי של פרמטרי פלט FuncGen

    1. אמפליטודה
    2. קיזוז DC
    3. בהירות LCD
    4. ניגודיות LCD
  2. עריכת טקסט: על מנת לשמור על ערכים שלמים מוגדרים היטב ומדויקים, קלט התדרים מתבצע באמצעות תיבות טקסט במספרים בלבד
  3. לחצנים: בחירת פרמטרים מהרשימות הזמינות:

    1. סוג צורת גל

      1. סינוס
      2. משולש
      3. זֶרֶם יָשָׁר
      4. כיכר
      5. כבוי
    2. לקבל מידע

      1. מצב סוללה (אחוז)
      2. מצב AC (ספק כוח חיצוני)
    3. אפשרות אתחול (ל- FuncGen MCU)

      1. הגדרות יצרן
      2. אתחול
      3. לכבות
      4. ישיר - הפעל מחדש עם מצב זיווג ישיר
      5. WLAN - הפעל מחדש עם מצב זיווג WLAN
    4. יציאה לתפריט הראשי: די נאמר:)

שלב 10: בדיקה

מוּמלָץ: