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

שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi: 4 שלבים (עם תמונות)
שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi: 4 שלבים (עם תמונות)

וִידֵאוֹ: שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi: 4 שלבים (עם תמונות)

וִידֵאוֹ: שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi: 4 שלבים (עם תמונות)
וִידֵאוֹ: Майкл Левин и Иоша Бах: Коллективный разум 2024, יולי
Anonim
שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi
שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi
שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi
שימוש בלוח החיישנים של Complex Arts לשליטה בנתונים טהורים באמצעות WiFi

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

לוח החיישנים של Complex Arts (complexarts.net) הוא מיקרו -בקר רב תכליתי המבוסס על ESP32 WROOM. יש לו את כל התכונות של פלטפורמת ESP32, כולל WiFi מובנה ו- Bluetooth, ו -23 סיכות GPIO הניתנות להגדרה. לוח החיישנים כולל גם את BNO_085 IMU - מעבד תנועה 9 DOF המבצע משולבי היתוך וחיישן של חיישנים משולבים, המספק נתוני כיוון סופר מדויק, וקטור כוח הכבידה ותאוצה לינארית. ניתן לתכנת את לוח החיישנים באמצעות Arduino, MicroPython או ESP-IDF, אך לשיעור זה נתכנת את הלוח עם ה- Arduino IDE. חשוב לציין כי מודולי ESP32 אינם ניתנים לתכנות מקורי מ- Arduino IDE, אך הפיכת הדבר לאפשרית היא פשוטה מאוד; יש כאן הדרכה מצוינת: https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/ שאמורה להימשך כשתי דקות. פיסת ההתקנה האחרונה שאנו זקוקים לה היא מנהל ההתקן של שבב ה- USB-to-UART בלוח החיישנים, אשר ניתן למצוא כאן: https://www.silabs.com/products/development-tools/software/usb-to -uart-bridge-vcp-drivers. פשוט בחר את מערכת ההפעלה והתקן, מה שאמור לקחת כ -2 דקות נוספות. ברגע שזה נעשה, אנחנו מוכנים לצאת לדרך!

[שיעור זה אינו מניח היכרות עם Arduino או Pure Data, אולם הוא לא יכסה את ההתקנה שלהם. ניתן למצוא את Arduino בכתובת aduino.cc. ניתן למצוא נתונים טהורים בכתובת puredata.info. לשני האתרים יש הוראות קלות להתקנה והתקנה.]

כמו כן … המושגים הנלמדים במדריך זה, כגון הגדרת חיבורי UDP, תכנות ה- ESP32 עם Arduino ובניית בסיס תיקוני Pure Data - הינם אבני בניין הניתנות ליישום לאינספור פרויקטים, אז אל תתכופף לכאן ברגע שתצא הוריד את המושגים האלה!

אספקה

1. לוח חיישן מורכב של אומנויות

2. Arduino IDE

3. נתונים טהורים

שלב 1: בחינת הקוד:

בחינת הקוד
בחינת הקוד
בחינת הקוד
בחינת הקוד

ראשית, נבחן את קוד הארדואינו. (המקור זמין בכתובת https://github.com/ComplexArts/SensorBoardArduino. מומלץ לעקוב אחר הקוד תוך כדי הגעה.) אנו זקוקים לכמה ספריות, שאחת מהן איננה ספריית ליבה של Arduino, אז אתה ייתכן שיהיה עליך להתקין אותו. פרויקט זה מסתמך על הקובץ SparkFun_BNO080_Arduino_Library.h, כך שאם אין לך את זה, יהיה עליך לעבור לסקיצה -> כלול ספרייה -> נהל ספריות. הקלד "bno080" והספרייה הנ"ל תופיע. לחץ על התקן.

שלוש הספריות הנוספות שבהן נעשה שימוש צריכות להגיע עם Arduino כברירת מחדל. ראשית, נשתמש בספריית SPI כדי לתקשר עם ה- BNO. אפשר גם להשתמש ב- UART בין ה- ESP32 ל- BNO, אך מכיוון של- SparkFun יש כבר ספרייה המשתמשת ב- SPI, אנו נדבק בכך. (תודה, SparkFun!) כולל קובץ SPI.h יאפשר לנו לבחור באילו סיכות ויציאות אנו רוצים להשתמש בתקשורת SPI.

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

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

לאחר מכן, אנו מקצים את הפינים המתאימים של ה- ESP לסיכות שלהם בהתאמה ל- BNO.

כעת הגדרנו את חבר הכיתה SPI, וקבענו גם את מהירות יציאת ה- SPI.

לבסוף אנו מגיעים לפונקציית ההתקנה. כאן נתחיל ביציאה טורית כדי שנוכל לעקוב אחר התפוקה שלנו אם נרצה. ואז נתחיל ב- WiFi. שים לב שהתוכנית ממתינה לחיבור WiFi לפני שתמשיך. לאחר חיבור ה- WiFi, אנו מתחילים את חיבור ה- UDP, ואז מדפיסים את שם הרשת ואת כתובת ה- IP שלנו לצג הטורי. לאחר מכן אנו מפעילים את יציאת SPI ובודקים אם יש תקשורת בין ה- ESP ל- BNO. לבסוף, אנו מכנים את הפונקציה "enableRotationVector (50);" מכיוון שנשתמש רק בקטור סיבוב לשיעור זה.

שלב 2: שאר הקוד…

שאר הקוד…
שאר הקוד…

לפני שנלך ללולאה הראשית (), יש לנו פונקציה בשם "mapFloat".

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

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

כעת עלינו למפות את הערכים הללו.

[מילה על תקשורת UDP: נתונים מועברים על פני UDP במנות 8 סיביות, או ערכים בין 0-255. כל דבר מעל 255 יועבר לחבילה הבאה, ויוסיף לערכו. לכן עלינו לוודא שאין ערכים מעל 255.]

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

כעת, כשיש לנו את הנתונים הממופים שלנו, נוכל להרכיב את המנה שלנו. על מנת לעשות זאת, עלינו להכריז על מאגר לנתוני המנות, ולתת להן גודל [50] כדי לוודא שכל הנתונים יתאימו. לאחר מכן אנו מתחילים את החבילה עם הכתובת והיציאה שציינו למעלה, כותבים את המאגר ו -3 הערכים שלנו אל החבילה ולאחר מכן מסיימים את החבילה.

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

שלב 3: התחברות לנתונים טהורים …

מתחבר עם נתונים טהורים …
מתחבר עם נתונים טהורים …

עכשיו ל- Pure Data! פתח את Pure Data והתחל תיקון חדש (ctrl n). התיקון שניצור הוא פשוט מאוד, בעל שבעה אובייקטים בלבד. הראשון שאנחנו הולכים ליצור הוא האובייקט [netreceive]. זהו הלחם והחמאה של התיקון שלנו, המטפל בכל תקשורת ה- UDP. שימו לב שיש שלושה ארגומנטים לאובייקט [netreceive]; ה- -u מציין UDP, -b מציין בינארי, ו -7401 הוא כמובן הנמל שאנו מקשיבים לו. תוכל גם לשלוח את ההודעה "האזינו 7401" אל [netreceive] כדי לציין את היציאה שלכם.

ברגע שנכנסים נתונים, עלינו לפרק אותם. אם נחבר אובייקט [הדפסה] ל- [netrecieve], נוכל לראות שהנתונים מגיעים אלינו בהתחלה כזרם מספרים, אך אנו רוצים לנתח את המספרים הללו ולהשתמש בכל אחד מהם למשהו אחר. לדוגמה, ייתכן שתרצה להשתמש בסיבוב של ציר ה- X כדי לשלוט במגרש המתנד, ובציר ה- Y עבור עוצמת הקול, או כל מספר אפשרויות אחרות. על מנת לעשות זאת, זרם הנתונים עובר דרך אובייקט [לפרוק] שיש לו שלוש מצפות (f f f) הוא הטיעונים שלו.

עכשיו שאתה רחוק, העולם הוא הצדפה שלך! יש לך בקר אלחוטי שבו אתה יכול להשתמש כדי לתמרן כל דבר שאתה רוצה ביקום Pure Data. אבל תעצור שם! מלבד Rotation Vector, נסה את מד התאוצה או המגנטומטר. נסה להשתמש בפונקציות מיוחדות של ה- BNO כגון "הקשה כפולה" או "לנער". כל מה שצריך הוא חפירה קטנה במדריכי המשתמש (או במדריך הבא …).

שלב 4:

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

מוּמלָץ: