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

חיישן אבק נתרן באנדרואיד: 6 שלבים
חיישן אבק נתרן באנדרואיד: 6 שלבים

וִידֵאוֹ: חיישן אבק נתרן באנדרואיד: 6 שלבים

וִידֵאוֹ: חיישן אבק נתרן באנדרואיד: 6 שלבים
וִידֵאוֹ: המזון בראי העתיד 2024, נוֹבֶמבֶּר
Anonim
חיישן אבק נתרן באנדרואיד
חיישן אבק נתרן באנדרואיד

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

שלב 1: מה שאתה צריך

מה אתה צריך
מה אתה צריך
מה אתה צריך
מה אתה צריך

אתה צריך את החלקים הבאים

  • מחבר התאמה JST XH 7 פינים לממשק Sodial עם חוטים. קניתי את שלי ב- eBay.
  • מודול בלוטות 'HC05 או 06 תואם למחבר UART
  • ממיר USB-סדרתי עם ממשק ברמת TTL. אנו משתמשים בזה כדי לתת למודול BT שם ייחודי
  • חיישן אבק Sodial SDS011. את שלי קיבלתי מאיביי
  • חתיכת veroboard
  • מחבר USB-B
  • חוּט
  • פיסת עץ להרכבה הכל

אז תזדקק לכמה כלים פשוטים:

  • מסור כסף לחיתוך העץ
  • מַלְקֶטֶת
  • ברזל הלחמה והלחמה
  • קאטר
  • אקדח דבק חם
  • חתיכת שרוול סיליקון 8 מ"מ (לא בתמונה)

אתה יכול להוריד את גליון הנתונים של Sodial SDS011 כאן גליון הנתונים של Sodial SDS011

שלב 2: הכנת מודול ה- Bluetooth

הכנת מודול בלוטות '
הכנת מודול בלוטות '
הכנת מודול בלוטות '
הכנת מודול בלוטות '
הכנת מודול בלוטות '
הכנת מודול בלוטות '
הכנת מודול בלוטות '
הכנת מודול בלוטות '

למודול BT יש ממשק UART עם רמת TTL. ניתן להגדיר אותו מחדש עם פקודות "AT" כמו שעשינו עם מודמים באינטרנט עוד בימי קדם. כדי לחבר אותו לתוכנית מסוף במחשב שלך עליך להתאים את ה- UART למחשב שלך. השתמשתי בממיר USB-RS232 שקניתי באמזון. החלתי מחבר למודול BT וניתבתי את ספק הכוח 3, 3V וה- GND מהממיר למודול BT. ואז חיברתי את קווי TxD ו- RxD בהתאמה בהצלבה. TxD מממיר USB ל- RxD ממודול BT ולהיפך.

יש לי מכונת לינוקס והשתמשתי ב- cutecom. לאחר חיבור ממיר ה- USB המחבר היה "ttyUSB0". אתה יכול למצוא את שמות ה- comport בספריית "/dev" במחשב הלינוקס שלך. עבור משתמשי Windows אני ממליץ על "hterm". זה קל לתפעול. הקלד "AT" וכדאי לקבל "AT" כתגובה. לאחר מכן הקלד "AT+NameSensor" כדי לתת למודול BT את השם "Sensor"

שלב 3: הרכבת החלקים

הרכבת החלקים
הרכבת החלקים
הרכבת החלקים
הרכבת החלקים
הרכבת החלקים
הרכבת החלקים
הרכבת החלקים
הרכבת החלקים

חותכים פיסת עץ בגודל המתאים ללקיחת כל החלקים. חבר את כל האותות כפי שמצוין בתרשים. כדאי לשים שרוול סיליקון סביב החוטים כדי להגן עליהם. הלחם את תקע ה- USB-B בלוח הלוח. הוא משמש רק לאספקת החשמל. תקן את כל החלקים בעזרת ברגים על בסיס העץ. לבסוף הדבק חם את הכבלים כדי לתקן אותם על העץ.

שלב 4: התאמה

צִמוּד
צִמוּד
צִמוּד
צִמוּד

הפעל את יישום החיישן על ידי חיבור ספק כוח USB. נורית אדומה על מודול BT תתחיל להבהב. אל תנסה לשדך אותו לסמארטפון האנדרואיד שלך. עליך להזין קוד PIN. זהו "1234". לאחר הזנת הקוד הטלפון החכם שלך צריך להיות מזווג עם מודול BT.

שלב 5: התוכנה

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

  • מינטוריס בייסיק. מתורגמן בסיסי עם מערכת עשירה של פקודות להתעסק עם כמעט הכל באנדרואיד. תוכל ליצור קיצורי דרך לאפליקציות שלך. Mintoris basic אינו מכיל מהדר. אז כנראה שהתקנת את Mintoris בכל מכשיר שאתה משתמש בו. אבל אתה רק צריך לשלם על זה פעם אחת (בערך 7 €)
  • בסיסי! מתורגמן בסיסי ומהדר (תוספת תמורת קצת €). כמעט מתחבר להכל באנדרואיד ואתה יכול לאסוף אפליקציות אמיתיות להפצה שלהן ללא Basic! על מכשיר היעד. לצערי בסיסי! חסר את פונקציות התרשים המעולות של מינטוריס
  • AIDE הוא IDE למחצה מקצועי לביצוע פיתוח אנדרואיד בג'אווה באנדרואיד. עם AIDE יש לך את הגמישות הגדולה ביותר אך עליך ללמוד ג'אווה. ל- AIDE עלויות שנתיות של כ -50 €

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

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

WakeLock חלקית

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

גודל טקסט 24

CLS

קופץ "מד חיישן אבק (ג) ARJ 2017"

Global dustData (), dustDataF (), timeStamp () אינדקס גלובלי, בחירה, maxData, fileName $

חותך זמן עמום (59)

אבק עמום נתונים (59)

אבק עמום DataF (59)

תפריט עמום $ (4) = "מקסימום 100 מערכי נתונים", "מקסימום 1000 ערכות נתונים", "מקסימום 5000 ערכות נתונים", "מקסימום 10000 מערכות נתונים", "יציאה"

״אתחל את המערכים

עבור i = 0 עד 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

הבא i

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

תפריט מפורט $ (), בחירה

'בחר כמות מקסימלית אם יש לאחסן נתונים

runLevel = 1

בחר בחירה

מקרה 0 maxData = 100

מקרה 1 maxDate = 1000

מקרה 2 maxData = 5000

מקרה 3 maxData = 10000

מקרה 4 maxData = 0

סיום בחר

'' חבר חיישן

זוג עמום $ (0)

זוג $ () = BTGetPaired $ ()

אם זוג $ (0) = "אין" אז

הדפס "לא נמצאו התקנים משויכים. האם BT מופעל?" הדפס "התוכנית הסתיימה"

סוֹף

אנדיף

זוג רשימה ($), מכשיר $

שם $ = פריט חילוץ $ (מכשיר $, 0)

כתובת $ = Item Extract $ (מכשיר $, 1)

BTConnect 1, כתובת $

'חכה לחיבור

התקדמות ON

הדפס "מנסה להתחבר"; כתובת $

עבור i = 1 עד 20

התקדמות i/2

אם BTGetstate (1) = 4 אז צא להמתנה 1000

הבא i

התקדמות כבויה

'בהצלחה התחבר למכשיר BT

אם BTGetState (1) = 4 ואז הדפס "מחובר" הדפסה אחרת "לא ניתן להתחבר"; שם $

הדפס "התוכנית הסתיימה"

סוֹף

אנדיף

הבלוק הבא מציג את דרישת הנתונים. עבור כל הפעלת נתונים, קובץ נפתח באופן אוטומטי ונקרא על שם השעה והתאריך. ואז הלולאה קוראת את נתוני החיישן. הנתונים ארוזים בכמה בייטים. קבוצת בייטים מזוהה על ידי שתי תווי ASCII 170 ו- 171. הנתונים הבאים מאורגנים מחדש וממלאים במערכי האבק.

גרפיקה מופעלת

'פתח קובץ נתונים לכתיבה

fileName $ = FormatTime $ (t, "yyyy-MM-dd-kk-mm-ss") + ".dat"

פתח 1, קובץ שם $, "w+" הדפס "קובץ נתונים פתוח"; שם קובץ $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Writeln 1, "אבק זמן 2.5 אבק 10"

'מלא את המערך בנתונים הנמדדים

נתונים $ = "" מנות $ = ""

אינדקס = 0

עשה בעוד maxData> 0

BTR קרא 1, מנות $, 10

data $ = נתונים $+מנה $

אם Len (נתונים $)> = 10 אז

אם (ASCII (שמאל $ (נתונים $, 1)) = 170) & (ASCII (ימין $ (נתונים $, 1)) = 171) אז

dustDataF (אינדקס) = ASCII (אמצע $ (נתונים $, 2, 1))

dustDataF (אינדקס) = (dustDataF (אינדקס)+256*ASCII (אמצע $ (נתונים $, 3, 1))))/10

dustData (אינדקס) = ASCII (אמצע $ (נתונים $, 4, 1))

dustData (index) = (dustData (index)+256*ASCII (אמצע $ (נתונים $, 5, 1)))/10

Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))

נתונים $ = ""

maxData = maxData-1

אינדקס = אינדקס+1

אם אינדקס> 59 ואז אינדקס = 0

dustData (אינדקס) = 0

dustDataF (אינדקס) = 0

אנדיף

אנדיף

DrawGraph ()

חכה 100

לוּלָאָה

סגור 1

הגרפיקה כבויה

CLS הדפס "התוכנית הסתיימה"

סוֹף

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

'צייר את הקואורדינטות, התוויות, הקרציות וגם עקומות הנתונים

תת DrawGraph ()

'במצב גרפיקה המסך מתבהר לצבע הנוכחי

צבע 0, 0, 0

CLS

צבע 0, 0, 100

'הגדר את צבע הגרפיקה שישמש לציור קווי הרשת

TextColor 100, 100, 100, 50

'TextColor הוא צבע הכותרת הראשית של הרשת

TextColorA 100, 100, 100

'TextColorA משמש לכותרות ציר והערות רשת.

'הגדר את גודל טקסט הכותרת של הציר

'הכותרת הראשית של הרשת היא פי 2 מהגודל הזה

גודל טקסט 20

FixDecimal 0

'הגדר להצגת 2 מקומות עשרוניים

PadDigits 2

'צייר רשת לתרשים' הגדר את הטווח והכותרת של X & Y

ציר AxisX 0, 59, "זמן/ים"

ציר Y 0, 10000, "ug/m3"

רשת 3, "ריכוז אבק"

'צייר גרפי אבק

צבע 100, 0, 0

GraphXY timeStamp (), dustDataF ()

צבע 0, 100, 0

GraphXY timeStamp (), dustData ()

TextColor 100, 0, 0

DrawText "PM2.5", 30, Int (ScreenY ()-60), 90, 1

TextColor 0, 100, 0

DrawText "PM10", 30, Int (ScreenY ()-150), 90, 1

TextColor 100, 100, 100, 50

לַחֲזוֹר

הורד את קוד המקור כאן

שלב 6: בדוק

Image
Image
מִבְחָן
מִבְחָן
מִבְחָן
מִבְחָן
מִבְחָן
מִבְחָן

הפעל את החיישן והפעל את האפליקציה. מרשימת המכשירים המשויכים בחר את המכונה בשם "חיישן". לאחר חיבור החיישן המסך יתחיל להציג את הנתונים. במקביל קובץ הנתונים מוקצה. לאחר סיום האופנה תוכל להשתמש ב- GnuPlot להצגת הנתונים. השתמש בקובץ "Test.gp" ב- GnuPlot כדי להגדיר את GnuPlot להצגת קובץ נתונים בשם "Test.dat". אתה יכול למצוא אותו גם כאן

עיין בסרטון לפרטים נוספים ובדיקות. שיהיה הרבה כיף ועוד רעיונות!

מוּמלָץ: