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

אופן השימוש ב- Bluetooth (BLE) עם ESP32: 3 שלבים
אופן השימוש ב- Bluetooth (BLE) עם ESP32: 3 שלבים

וִידֵאוֹ: אופן השימוש ב- Bluetooth (BLE) עם ESP32: 3 שלבים

וִידֵאוֹ: אופן השימוש ב- Bluetooth (BLE) עם ESP32: 3 שלבים
וִידֵאוֹ: Home Assistant - планировщик включения питания с настройкой времени и продолжительности работы 2024, יוני
Anonim

#####הערה#####

השיטה המוצגת במדריך זה ישנה ומיושנת. צפה בסרטון זה לשיטה העדכנית ביותר.

###############

בעוד ש- ESP32 מתגאה ברשימת תכונות נרחבת (ויקיפדיה), התכונה הגדולה ביותר שמושכת את העין היא ה- bluetooth v4.2 המובנה עם תמיכה ב- BLE. אולם הצהרה זו עלולה להטעות, בעוד החומרה קיימת, תמיכת התוכנה לשימוש ב- Bluetooth חסרה. (זה בפיתוח)

למי שלא יודע מה זה BLE, זה מייצג Bluetooth Low Energy. זהו פרוטוקול בלוטות 'שמגביר את צריכת החשמל בהרבה בהשוואה ל- Bluetooth "קלאסי".

במדריך זה אראה לך כיצד תוכל להשתמש במשאבים המוגבלים (תוכנה) העומדים לרשותך כדי לשלוח נתונים מלוח ESP32 לטלפון שלך באמצעות BLE.

כמה כתב ויתור…

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

הערה 1: כשאני אומר שתמיכת Bluetooth עדיין לא זמינה, אני מתכוון בסביבת הפיתוח של arduino.

התמיכה עשויה להיות זמינה ב- SDK הרשמי כמו גם בצה ל, אך לא מצאתי הוראות מוסמכות לכך.

הערה 2: השיטה שבה אני משתמשת היא דרך לעקיפת הבעיה ולא כיצד BLE באופן אידיאלי אמור לפעול. הספרייה תומכת ביצירת שירותים ב- BLE אינה כאן עבור סביבת הארדואינו.

הדבר היחיד שאתה יכול לעשות באופן אמין הוא ליצור משואה שמפרסמת את שמו. הערה ביוטיוב אמרה את זה באלגנטיות רבה: "LOL, פריצה אכזרית. אבל מה אתה יכול לעשות?"

הערה 3: סוג הנתונים היחיד שאתה יכול לשלוח הוא מחרוזת.

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

שלב 1: דוגמה לבנייה

Image
Image
Build build
Build build
Build build
Build build
Build build
Build build

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

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

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

החומרה היחידה שאתה צריך היא לוח ESP32 וחיישן טמפרטורה דיגיטלי. הלוח שלי תומך בסוללה חיצונית ולכן אני משתמש ב- li-po של 3.7V שהצלתי ממכשיר ישן כלשהו כדי להפוך את הפרויקט הזה לנייד.

חוּמרָה

החיבורים לחיישן הטמפרטורה פשוטים. החוט האדום מתחבר ל- 3.3v, השחור מתחבר לאדמה (gnd), הצהוב מתחבר ל- GPIO 2 שעל הלוח שלי מסומן D9. חבר נגד 4.7k אוהם בין החוט האדום והצהוב. אני לא משתמש בנגד, במקום זאת אני משתמש במסוף בעל 3 פינים שניתן לחבר אותו עם החיישן שלי. יש לה נגד מובנה מובנה.

ה- li-po באמת צריך להיות מחובר באמצעות מחבר JST אבל לא יכולתי לטרוח לקנות אחד אז פשוט גרמתי כמה כבלי מגשר (נקבה לנקבה) לתוך המחבר והלחמתי זוג נוסף למסופי הסוללה. זה מאפשר חיבור אמין ומתג הפעלה מאולתר.

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

תוֹכנָה

אם עדיין אין לך את arduino IDE מותקן, עבור אל הקישור הזה כדי להוריד אותו. תוכנת arduino כברירת מחדל אינה מגיעה עם הגדרות הלוח עבור לוחות ESP32 השונים. כדי לגרום להם להיכנס לקישור הזה ולהוריד את הקבצים ב- zip. עליך לפתוח אותם למיקום זה:

C:/משתמשים // מסמכים/Arduino/hardware/espserrif/ESP32

היכן שם המשתמש שלך במחשב האישי שלך. וודא כי הקבצים השונים זמינים תחת תיקיית ESP32 ואינם תחת תיקיה אחרת.

עכשיו אם אתה מפעיל את תוכנת הארדואינו ועובר ללוחות-> לוחות אתה אמור לראות לוחות ESP32 שונים כשאתה מגולל למטה.

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

כעת תוכל להוריד ולפתוח את הקוד המצורף לשלב זה (temperature-example.ino).

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

החזרה;

היכן מצוף המכיל את הטמפרטורה.

חבר את הלוח, בחר את הלוח והיציאה הנכונים מתוך הכלים ולחץ על העלה.

אם הקוד מסרב להעלות, נתק את החיישן וחבר את ה- GPIO 0 לקרקע. שחזר את החיבורים לאחר ההעלאה.

ESP שלך צריך עכשיו לצעוק את הטמפרטורה של הקפה שלך לעולם אבל אתה צריך מישהו שיכול להבין את זה.

אפליקציית האנדרואיד

סליחה משתמשי אייפון (… ממש לא).

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

אם אתה מקבל הודעת שגיאה שאומרת 'פרסום לא נתמך', לחץ על אישור והתעלם ממנה, אך אם תקבל הודעה כי 'BLE אינו נתמך', הרי שלטלפון שלך אין Bluetooth 4.0 ומעלה ולא יוכל לפעול האפליקציה.

וודא שבלוטות 'בטלפון שלך מופעל ולחץ על' התחל סריקה ', כל עוד ה- esp הוא בטווח ומופעל עליך אמור לקבל ערך טמפרטורה כלשהו.

שגיאות אפשריות:

  • -1000:: המשמעות היא שהמכשיר שלך לא מצא את ה- ESP. וודא ש- Bluetooth פועל ונסה להפעיל מחדש את ה- ESP.
  • SNA:: המשמעות היא שהטלפון שלך מקבל נתונים מה- ESP אך ה- ESP עצמו לא מצא חיישן טמפרטורה ב- GPIO 2. ודא שהחיבורים מאובטחים, בדוק אם אתה משתמש בנגד בעל הערך הנכון. בדוק שוב עם סכמטי הלוח שאתה מחובר ל- GPIO 2 ולא סיכה המסומנת כ- D2.

שלב 2: ההסבר

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

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

הספריות (עבור ה- ESP32) הזמינות לנו כרגע מאפשרות לנו ליצור מגדלור שאחרים יכולים לגלות אך זהו היקפו. איננו יכולים ליצור שירותים ואף מכשיר לא יכול להתחבר אליו.

אז איך אני שולח נתונים מבלי ליצור שירותים הוא על ידי שימוש בטכניקה הדומה לפרוטוקול ה- WiFi הנקרא Beacon Stuffing. המשמעות היא שאני כולל נתונים שיישלחו בתוך שם המשואה עצמו. זה מאפשר לי לפרסם נתונים מבלי לחייב התקנים אחרים להתחבר למשואה.

ble.begin (beaconMsg); // beaconMsg הוא השם המפורסם

אנו משתמשים בספריית SimpleBLE ליצירת משואה עם שמה בפורמט ESP. כאשר 'ESP' תמיד נשאר ללא שינוי בתחילת השם ומוחלף בנתונים העדכניים ביותר שהפונקציה getValue () מחזירה כל 100 מילי שניות.

float getValue () {return sensorValue;}

אפליקציית האנדרואיד מחפשת שמות של מכשירי BLE המתחילים ב- 'ESP', לאחר שנמצאה, היא מפצלת את השם ומציגה רק את הנתונים מהסוף.

התקשורת היא רק דרך אחת, האפליקציה לא שולחת כלום בחזרה.

שלב 3: מסקנה

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

תודה גדולה ל- DFRobot.com ששלחת לי את המוצרים הבאים:

  • לוח אש חיפושית ESP32
  • מגן הרחבת FireBele
  • חיישן טמפרטורה DS18B20

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

אתה יכול לבדוק את סרטון הפרויקט בכתובת: YouTube

מוּמלָץ: