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

לקוח/מכשיר עבדים (חיישן) ארדואינו חד-חוטי: 4 שלבים
לקוח/מכשיר עבדים (חיישן) ארדואינו חד-חוטי: 4 שלבים

וִידֵאוֹ: לקוח/מכשיר עבדים (חיישן) ארדואינו חד-חוטי: 4 שלבים

וִידֵאוֹ: לקוח/מכשיר עבדים (חיישן) ארדואינו חד-חוטי: 4 שלבים
וִידֵאוֹ: הרכבות מכניות 2024, נוֹבֶמבֶּר
Anonim
Arduino 1-wire Generic Client/Slave Device (חיישן)
Arduino 1-wire Generic Client/Slave Device (חיישן)

אנא קרא את ההקדמה ואת שלב 2 בהוראותי כיצד לבנות תצוגה בעלת חוט חד-חוטי Arduino (144 תווים) על מנת לקבל מידע נוסף על המצב והספריות הזמינות. כפי שהוסבר שם נשתמש בספריית OneWire-Hub (אמולטור מכשירי עבד OneWire) על ידי אורגואה (שימו לב שישנן מזלגות אחרות בסביבה) על מנת לבנות התקנים כלליים של חוט אחד (למשל חיישנים) באמצעות Arduino.

שלב 1: תוכנה

הדבר החשוב ביותר הוא לייצר מכשיר שיכול להחזיר בעצם כל סוג של ערך בצורה פשוטה. המשמעות היא שניתן להשתמש בתוכנה סטנדרטית לקריאת כל הערכים ישירות (אין צורך בשיחה או מניפולציה בינארית). לשם כך אנו זקוקים למכשיר ברירת מחדל חד-חוטי פשוט מאוד שיכול להחזיר מצופים ונתמך באופן נרחב. הבחירה היחידה שאני יודע עליה היא מדחום DS18B20 (צג הסוללות DS2438 מעניין וגם שימושי אך מורכב למדי ולכן איטי בין חסרונות אחרים). ספריית OneWire-Hub מכילה דוגמה בשם DS18B20_asInterface שעושה בדיוק את מה שאנחנו צריכים. הוא יוצר חבורה של DS18B20 שמתוכם כל אחד מייצג ערך צף אחד אותו אנו רוצים להחזיר מהחיישן (ים) שלנו. המגבלות כאן הן הרזולוציה והערכים חייבים להיות בטווח -55, 0… 125, 0. ניתן להשיג זאת בקלות - במקרה הגרוע ביותר - שינוי גודל - ולמעשה טוב יותר מהערכים שניתן לייצג על ידי למשל ערכי DS2438 (1.5 עד 10V). לחלופין ניתן להגדיר טווח ערכים גדול יותר באמצעות:

setTemperatureRaw (static_cast (ערך * 16.0f));

אך ייתכן שקריאה ועיבוד ערכים אלה אינם נתמכים על ידי כל התוכנות מכיוון שמדובר במפרט.

מה שאתה צריך להיות מודע אליו הוא שבתחילה המספר המרבי של עבדים מוגבל ל -8 אך ניתן לשנות אותו ב- "OneWireHub_config.h" על ידי הגדלת HUB_SLAVE_LIMIT עד 32. כמו כן עליך להקפיד לאמץ ONEWIRE_TIME_MSG_HIGH_TIMEOUT במידת הצורך על ידי רשת חד-חוטית (למשל x10), כפי שהוסבר בשלב 2 של תצוגת 1-חוט Arduino (144 תווים). וכדי להשתמש בגרסת IDE> = 1.8.3 כדי לאסוף ולהעלות את הקוד לארדואינו שלך.

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

שלב 2: חומרה

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

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

דוגמה לחומרה אפשרית יכולה להיות תחנת מזג אוויר כמו למשל:

https://shop.boxtec.ch/wetter-messer-p-41289.html

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

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

שלב 3: בדוק את המכשיר

חבר אותו לרשת שלך ובדוק בתוכנתך אם כל מזהי ה- ROM קיימים והערכים שהם מחזירים כטמפרטורה.

שלב 4: נספח: ATtiny85

נספח: ATtiny85
נספח: ATtiny85

ניתן לבצע התקנים בודדים (הגבלת זיכרון) גם ב- ATtiny85. זה דורש כמה שלבים כאשר אנו מתכנתים את ה- ATtiny85 באמצעות Arduino Uno כספק ספק בעזרת ה- Arduino IDE:

  • קישורים

    • https://playground.boxtec.ch/doku.php/arduino/att…
    • https://sebastian.expert/could-not-find-usbtiny-d…
    • https://learn.sparkfun.com/tutorials/tiny-avr-pro…
    • https://forum.arduino.cc/index.php?topic=425532.0
    • https://forum.arduino.cc/index.php?topic=128963.0
  1. השתמש ב- Arduino IDE> = 1.8.3
  2. התקן את האפשרות ATtiny ל- IDE

    1. קובץ> העדפות> כתובות אתרים נוספות של מנהל לוחות:
    2. כלים> לוח: ??? > מנהל לוחות…
    3. חפש: "זעיר" והתקן
  3. העלה סקיצה של ספק האינטרנט ל- Uno

    קובץ> דוגמאות> ArduinoISP> ArduinoISP

  4. הכנס את ATtiny85 לשקע התכנות (אפס כוח) וחבר אותו:

    1. פין Arduino MOSI D11 עד פין ATtiny 5
    2. פין Arduino MISO D12 ל- ATtiny Pin 6
    3. פין Arduino SCK D13 עד פין ATtiny 7
    4. איפוס פין Arduino ל- D10 ל- PIN זעיר 1
    5. פין Arduino GND ל- ATtiny Pin 4
    6. פין Arduino VCC ל- ATtiny Pin 8
    7. (> = כובע 10uF על סיכת Unet RESET של Arduino Uno עשוי להיות נחוץ)
  5. בחר ATtiny85 (ראה תמונה):

    • לוח: "ATtiny25/45/85"
    • שעון טיימר 1: "מעבד"
    • B. O. D: "B. O. D. נכה"
    • LTO (1.6.11 + בלבד): "מושבת"
    • שבב: "ATtiny85"
    • שעון: "8 מגה -הרץ (פנימי)" (תואם ATtiny85 ו- ATtiny84)
    • שעון: "16 מגהרץ (PLL)" (הגדרה חלופית ל- ATtiny85 בלבד)
    • נמל: ???
  6. בחר מתכנת:

    כלים> מתכנת: "Arduino as ISP" (לא "ArduinoISP"!)

  7. הגדר הגדרות נתיכים (שעון וכו '):

    כלים> צריבת מטען אתחול

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

    1. פין 1: PB5 (RST)
    2. פין 2: PB3 (A3) - מחובר אופציונאלי באמצעות 220ohm ל- 1 <-TX
    3. פין 3: PB4 (A2) - מחובר ל- DATA של חוט אחד
    4. פין 4: GND - מחובר ל- GND
    5. פין 5: PB0 (PWM) - מחובר לחיישן I2C SDA
    6. פין 6: PB1 (PWM) - מחובר ל- LED עם 4.7k ל- GND
    7. פין 7: PB2 (A1) - מחובר לחיישן I2C SCL
    8. פין 8: VCC - מחובר ל- 5V

העבודה עם ATTiny85 דורשת קצת יותר עבודה מכיוון שאתה צריך להשיג ספריות נוספות עבור I2C comm (adafruit/TinyWireM) ופלט סדרתי (TinyDebugSerial). בנוסף מכיוון שהזיכרון די מוגבל אולי תרצה לעבוד הרבה עם #define למשל להסרת איתור באגים סדרתי. בדוגמה אתה יכול לראות את כל זה נזרק יחד.

לבדיקה השלב הראשון הוא לבדוק אם הנורית מהבהבת בתדר הנכון, 0.5Hz. לאחר מכן חבר אותו לאוטובוס 1wire ובדוק אם יש את המכשיר החדש.

מוּמלָץ: