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

קלט מגע קיבולי ESP32 באמצעות "תקעי חורים מתכתיים" לכפתורים: 5 שלבים (עם תמונות)
קלט מגע קיבולי ESP32 באמצעות "תקעי חורים מתכתיים" לכפתורים: 5 שלבים (עם תמונות)

וִידֵאוֹ: קלט מגע קיבולי ESP32 באמצעות "תקעי חורים מתכתיים" לכפתורים: 5 שלבים (עם תמונות)

וִידֵאוֹ: קלט מגע קיבולי ESP32 באמצעות
וִידֵאוֹ: Зачем использовать резисторы с кнопками и как использовать их с Arduino 2024, יולי
Anonim
Image
Image
חוּמרָה
חוּמרָה

בזמן שסיימתי את החלטות העיצוב לפרויקט הקרוב המבוסס על ESP32 WiFi Kit 32 הדורש קלט של שלושה כפתורים, בעיה אחת בולטת היא כי ערכת ה- WiFi 32 אינה בעלת כפתור מכני אחד, אך לבדה שלושה כפתורים מכניים, לקלט. עם זאת, לערכת WiFi 32 יש שפע של כניסות מגע קיבוליות, לכן הקדשתי זמן להרכבת חומרה, כתיבת תוכנות ובדיקת עיצוב כניסת שלושה כפתורים תוך שימוש בתכונת קלט המגע הקיבולית ESP32 ושלושה "8 תקעים" חורים מתכתיים " כפתורים.

כפי שגילה כל מי שהתנסה בכניסות המגע הקיבוליות ESP32, כניסות המגע בהחלט רועשות מספיק כדי לדרוש סינון לצורך זיהוי קלט אמין. כדי למזער את מספר החלקים הכולל של הפרויקט הקרוב, קבעתי שמסנן דיגיטלי מונע הפרעות פשוט (יותר "ניתוק" מאשר מסנן, אבל אני סוטה), בניגוד להוספת חומרת מסנן חיצונית, עלול להשתיק את הכניסות הרועשות.. ואחרי הבדיקה התברר כי כניסות הקיבולת ESP32, שלוש תקעי חור מתכתיים בגודל 3/8 אינץ 'וכמה תוכנות "סינון" דיגיטליות, אכן יספקו כניסת אמין לשלושה כפתורים לעיצוב.

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

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

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

שלב 1: חומרה

חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה

העיצוב משתמש בחומרה הבאה:

  • אחת, ערכת WiFi 32.
  • שלושה אטמי חורים מתכתיים בגודל 3/8 אינץ '.
  • שלושה, 4 "אורכים של חוט 28awg.

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

  • הפשילו והצבעו את הקצוות של כל אורך חוט בגודל 4 אינץ 'כפי שמוצג.
  • מולחם את החוט הראשון לפין 13 של ה- ESP32 (קלט TOUCH4, או "T4").
  • הלחמה את החוט השני לסיכה 12 של ה- ESP32 (קלט TOUCH5, או "T5").
  • מולחם את החוט השלישי לפין 14 של ה- ESP32 (קלט TOUCH6 או "T6").
  • מולחם אחד מכל אחד משלושת תקעי החורים המתכתיים בגודל 3/8 אינץ 'לקצותיהם החופשיים של שלוש אורכי החוטים.

שלב 2: תוכנה

תוֹכנָה
תוֹכנָה

הקובץ "Buttons.ino" הוא קובץ סביבת Arduino המכיל את התוכנה לעיצוב. בנוסף לקובץ זה, תזדקק לספריית הגרפיקה "U8g2lib" לתצוגת WiFi Kit32 OLED (ראה https://github.com/olikraus/u8g2/wiki למידע נוסף על ספרייה זו).

כאשר הספרייה הגרפית U8g2lib מותקנת בספריית Arduino שלך ו- "Buttons.ino" נטענת בסביבת Arduino, הידור והורד התוכנה ל- ESP32.

לאחר ההורדה וההפעלה, השורה העליונה של התצוגה אמורה לקרוא "לחצנים" כאשר השורה השנייה של המסך "1 2 3" היא כמחווני הלחצנים. מתחת לכל אחד ממחווני הכפתורים 1, 2, 3 נמצאים ערכי קריאת המגע הבלתי מסוננים, ומתחת לכל אחד מהם נמצאים מחווני הלחיצה על הכפתורים ("1" ללחיצה, "0" עבור לא לחיצה). כפי שניתן לראות בסרטון (וכפי שנבדקו לטווח הארוך), מסנן התוכנה מספק זיהוי קלט כפתורים אמין ללא הפעלה שקרית.

שלב 3: אודות התוכנה

התוכנה מכילה שלושה מדורי קוד עיקריים; החלקים הנדרשים "התקנה ()" ו"לולאה () ", ומקטע" הפרעות ". סעיף ההתקנה () מכיל את הקוד הדרוש לאתחול OLED ושירותי הפרעה. פונקציות ההתקנה של OLED מתוארות בקישור למעלה. פונקציות ההתקנה של שירות ההפרעה הן כדלקמן:

  • "timerLoopSemaphore = xSemaphoreCreateBinary ()" יוצר סמפור עבור "InterruptService ()" (שגרת שירות ההפרעה) להודיע לולאה () כאשר הגיע הזמן לבצע מעבר לולאה.
  • "timerInterruptService = timerBegin (0, 80, true)" יוצר טיימר באמצעות טיימר חומרה 0 עם סולם 80 מראש.
  • "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" מצרף את InterruptService () לטיימר.
  • "timerAlarmWrite (timerInterruptService, 1000, true)" מגדיר את קצב שירות ההפרעה ל -1000 הרץ.
  • "timerAlarmEnable (timerInterruptService)" מפעיל את אזעקת הטיימר, ובכך מפריע לשירות.

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

אם (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), כלומר לולאה () תחכה בשלב זה עד שתגיע הסמפור מה- InterruptService (). כאשר הסמפור מגיע, קוד הלולאה () מבוצע, מעדכן את תצוגת OLED עם נתוני הכפתורים, ואז חוזר לראשו וממתין שוב לסמפור הבא. כאשר InterruptService () פועל במהירות של 1000 הרץ ושווי LOOP_DELAY של 30, לולאה () מבוצעת כל 30 ms, או בקצב עדכון תצוגה של 33.333 הרץ. למרות שמדובר בקצב רענון תצוגה גבוה מהנדרש עבור רוב יישומי ESP32, השתמשתי בהגדרה זו כדי להמחיש את ההיענות של המסנן. עשיתי בדיקה וקבעתי את הזמן הנדרש לביצוע לולאה אחת () לעבור כדי להיות 20ms.

InterruptService () נקרא על ידי הטיימר שנוצר ב- setup () בקצב של 1000 הרץ. כאשר קוראים לו, הוא מעדכן שני מונים למטה, nLoopDelay ו- nButtonDelay. כאשר nLoopDelay יורד למטה לאפס, הוא שולח את הסמפורא המאפשר ללולאה () לבצע מעבר יחיד ואז מאפס את nLoopDelay. כאשר nButtonDelay יורד לאחור לאפס, גם הוא מתאפס ואז הכפתור "מסנן" מבוצע.

לכל מסנן כפתורים יש מונה סינון ייחודי (למשל nButton1Count, nButton2Count ו- nButton3Count). כל עוד ערך קלט המגע שהוקצה ללחצן גדול או שווה לערך הסף המוגדר (BUTTON_THRESHHOLD), מונה המסננים שהוקצה ללחצן והלחצן נשארים אפס. אם ערך קלט המגע שהוקצה ללחצן קטן מהסף המוגדר, מונה המסנן שהוקצה ללחצן יעלה באחד בכל 20 ms. כאשר מונה המסנן חורג מערך מסנן הכפתורים (BUTTON_FILTER), הכפתור נחשב כ"לחוץ ". ההשפעה של שיטה זו היא ליצור מסנן הדורש 80ms (20ms nButtonDelay * 4ms nButtonCountN כאשר N הוא מספר הכפתור) של ערכי קלט מגע רציפים מתחת לסף המוגדר כדי לשקול את הלחצן שנלחץ בפועל. כל זמן של פחות מ -80 ms נחשב ל"תקלה "ונדחה על ידי המסנן.

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

מקווה שנהנית!

שלב 4: "הפרויקט הקרוב"

ה
ה

הפרויקט הקרוב, "Intelligrill® Pro", הוא צג עישון טמפרטורה כפולה הכולל:

  • חישובי בדיקת טמפרטורה של שטיינהרט-הארט (בניגוד לטבלאות "חיפוש") לדיוק מוגבר.
  • זמן חיזוי להשלמה על בדיקה 1 המשלבת את הדיוק המוגבר הנגזר מהחישובים של שטיינהרט-הארט.
  • בדיקה שנייה, בדיקה 2, לניטור טמפרטורת המעשן (מוגבלת ל -32 עד 399 מעלות).
  • פקדי קלט מגע קיבוליים (כמו במדריך זה).
  • ניטור מרחוק מבוסס WIFI (עם כתובת IP קבועה, מאפשר מעקב אחר התקדמות המעשנים מכל מקום בו קיים חיבור לאינטרנט).
  • טווח טמפרטורות מורחב (שוב 32 עד 399 מעלות).
  • אזעקות להשלמה קולית הן בתוך משדר ® Intelligrill והן ברוב מכשירי הניטור המתאימים ל- WiFi.
  • תצוגת טמפרטורה במעלות F או מעלות C.
  • פורמט הזמן הן HH: MM: SS או HH: MM.
  • תצוגת סוללה בוולט או באחוז טעון.
  • ובקרוב, פלט PID למעשנים המבוססים על סופגנים.

"Intelligrill® Pro" בודק כדי להפוך למדויק ביותר, תכונות ארוז ואמין מבוסס HTML מבוסס HTML שעיצבתי.

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

שוב, אני מקווה שאתה נהנה!

שלב 5: הבא: ESP32 NTP בדיקת טמפרטורה אנלוגי קלט עם תיקון Steinhart-Hart

היה מוכן לאבק את ספרי האלגברה שלך עבור ספר זה.

מוּמלָץ: