فهرست مطالب:

سنسور گرد و غبار بدن در اندروید: 6 مرحله
سنسور گرد و غبار بدن در اندروید: 6 مرحله

تصویری: سنسور گرد و غبار بدن در اندروید: 6 مرحله

تصویری: سنسور گرد و غبار بدن در اندروید: 6 مرحله
تصویری: 15دیمەنی سەرسوڕهێنەرتاکو بە چاوی خۆت نەیانبینی بڕوایان پێ ناکەیت😱 2024, جولای
Anonim
Sensial Dust Sensor در اندروید
Sensial Dust Sensor در اندروید

یک سال پیش یکی از دوستانم یک کارگاه آموزشی آخر هفته در مورد نظارت بر محیط زیست داشت. هدف از این کارگاه ایجاد یک سنسور گرد و غبار متصل به یک برد تمشک pi بود تا داده های اندازه گیری را روی برخی از سرورها که نقشه های غلظت گرد و غبار را به روز می کند ، قرار دهد. دوستم پرسید آیا راهی وجود دارد که بتوان اطلاعات سنسور را مستقیماً در تلفن هوشمند خود برای نظارت و ورود به سیستم دریافت کرد. بنابراین من اینترنت را برای یک برگه اطلاعات جستجو کردم و دیدم که سنسور دارای یک رابط ساده UART با پروتکل 9600Baud 8N1 است. اما چگونه می توان UART را به تلفن هوشمند متصل کرد؟ خوب ، این آسان است. من فقط مجبور شدم از یکی از آن ماژول های کوچک بلوتوث در همه جا استفاده کنم که یک comport شبیه سازی شده در اندروید را ارائه می دهد. حالا ببینید چطور درست کردم

مرحله 1: آنچه شما نیاز دارید

آنچه شما نیاز دارید
آنچه شما نیاز دارید
آنچه شما نیاز دارید
آنچه شما نیاز دارید

شما به قطعات زیر نیاز دارید

  • اتصال JST XH 7 پین برای رابط Sodial با سیم. من مال خودم را در ای بی خریدم.
  • ماژول بلوتوث HC05 یا 06 سازگار با اتصال UART
  • مبدل سریال USB با رابط سطح TTL. ما از این مورد برای نامگذاری واحد ماژول BT استفاده می کنیم
  • سنسور گرد و غبار SDS011 Sodial. من از ای بی گرفتم
  • یک تکه ورو برد
  • اتصال USB-B
  • سیم
  • یک تکه چوب برای نصب همه چیز روی آن

سپس به چند ابزار ساده نیاز دارید:

  • اره برقی برای برش چوب
  • موچین
  • لحیم کاری و لحیم کاری
  • سیم چین
  • چسب حرارتی تفنگی
  • یک تکه آستین سیلیکونی 8 میلی متری (روی عکس نیست)

شما می توانید برگه داده Sodial SDS011 را از اینجا برگه داده Sodial SDS011 بارگیری کنید

مرحله 2: آماده سازی ماژول بلوتوث

آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث
آماده سازی ماژول بلوتوث

BT-Module دارای رابط UART با سطح TTL است. می توان آن را با دستورات "AT" پیکربندی کرد ، همانطور که در دوران باستان با مودم های اینترنتی انجام می دادیم. برای اتصال آن به یک برنامه پایانه در دستگاه خود ، باید UART را با رایانه خود سازگار کنید. من از مبدل USB-RS232 که در آمازون خریدم استفاده کردم. من یک کانکتور برای ماژول BT استفاده کردم و منبع تغذیه 3 و 3 ولت و GND را از مبدل به ماژول BT هدایت کردم. سپس خطوط TxD و RxD مربوطه را در متقاطع متصل کردم. TxD از مبدل USB به RxD از ماژول BT و بالعکس.

من یک دستگاه لینوکس دارم و از cutecom استفاده می کنم. پس از اتصال مبدل USB ، کامپورت "ttyUSB0" بود. می توانید نام های comport را در فهرست "/dev" در دستگاه لینوکس خود پیدا کنید. برای کاربران ویندوز "hterm" را توصیه می کنم. کار با آن آسان است. "AT" را تایپ کنید و باید "AT" را به عنوان پاسخ دریافت کنید. سپس "AT+NameSensor" را تایپ کنید تا به ماژول BT نام "Sensor" داده شود.

مرحله 3: نصب قطعات

نصب قطعات
نصب قطعات
نصب قطعات
نصب قطعات
نصب قطعات
نصب قطعات
نصب قطعات
نصب قطعات

یک تکه چوب را در اندازه ای مناسب برای گرفتن همه قسمت ها برش دهید. تمام سیگنالها را همانطور که در شماتیک نشان داده شده است وصل کنید. ایده خوبی است که برای محافظت از سیم ها ، یک آستین سیلیکونی در اطراف آنها قرار دهید. پلاگین USB-B را روی تخته چوب لحیم کنید. فقط برای منبع تغذیه استفاده می شود. تمام قسمتها را با پیچ روی پایه چوبی ثابت کنید. در نهایت کابل ها را با چسب داغ بچسبانید تا روی چوب ثابت شوند.

مرحله 4: جفت شدن

جفت شدن
جفت شدن
جفت شدن
جفت شدن

با اتصال منبع تغذیه USB ، برنامه سنسور را تغذیه کنید. یک چراغ قرمز روی ماژول BT چشمک می زند. سعی نکنید آن را با تلفن هوشمند اندرویدی خود جفت کنید. شما باید کد پین را وارد کنید. این "1234" است. پس از وارد کردن کد ، تلفن هوشمند شما باید با ماژول BT جفت شود.

مرحله 5: نرم افزار

من دوست دارم برنامه های Android را روی خود پلتفرم مورد نظر بنویسم. اگر شما با Android Studio کار می کنید ، شما را از همه موارد شبیه سازی که باید به آنها اهمیت دهید نجات می دهد. من سه ابزار توسعه مناسب را در خود Android پیدا کردم

  • Mintoris Basic. یک مترجم پایه با مجموعه ای غنی از دستورات که تقریباً همه چیز را در Android کار می کند. می توانید برای برنامه های خود میانبر ایجاد کنید. Mintoris Basic فاقد کامپایلر است. بنابراین باید Mintoris را روی هر دستگاهی که استفاده می کنید نصب کرده باشید. اما فقط باید یکبار هزینه آن را بپردازید (حدود 7 یورو)
  • پایه ای! فوق العاده خوب مترجم و کامپایلر (افزودنی با مبلغ یورو). تقریباً به همه چیز در اندروید متصل است و می توانید برنامه های واقعی را برای توزیع آنها بدون داشتن Basic کامپایل کنید! روی دستگاه مورد نظر متاسفانه اساسی! فاقد توابع نمودار عالی Mintoris است
  • AIDE یک IDE نیمه حرفه ای برای انجام توسعه اندروید در جاوا در اندروید است. با AIDE شما حداکثر انعطاف پذیری را دارید اما باید جاوا را یاد بگیرید. هزینه AIDE سالانه حدود 50 یورو است

من مینتوریس را انتخاب کردم. در این بخش من آموزش برنامه نویسی در Mintoris را به شما نمی دهم بلکه شرح کوتاهی از بلوک های تابع را ارائه می دهم

در قسمت زیر سه آرایه برای دو خط داده سنسور و زمان بندی مربوطه اعلام می شود. داده های زمان بندی برای برچسب زدن محور x نمودار استفاده می شود. Sodial دو جریان داده را خارج می کند که هر کدام برای اندازه ذرات خاص مشخص شده اند. دو آرایه dustdata این مقادیر را می گیرند.

WakeLock جزئی

TextColor 100 ، 75 ، 10

TextColorA 50 ، 50 ، 50

TextAlign 0

اندازه متن 24

CLS

پنجره "سنسور گرد و غبار (ج) ARJ 2017"

dustdata جهانی () ، dustDataF () ، timeStamp () فهرست جهانی ، انتخاب ، maxData ، نام فایل $

زمان کم نور تمبر (59)

گرد و غبار کم داده (59)

گرد و غبار کم DataF (59)

منوی تیره $ (4) = "حداکثر 100 مجموعه داده" ، "حداکثر 1000 مجموعه داده" ، "حداکثر 5000 مجموعه داده" ، "حداکثر 10000 مجموعه داده" ، "خروج"

'شروع به آرایه ها

برای i = 0 تا 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

بعدی منم

بعد منوی لیست پیکربندی می شود. این به کاربر این امکان را می دهد که حداکثر اندازه داده را برای جمع آوری انتخاب کند. این فقط یک سوئیچ ایمنی است تا از مکش اطلاعات بی پایان تلفن هوشمند جلوگیری شود. توابع BTgetPaired $ () لیستی را با تمام دستگاه های مرتبط با دستگاه اندروید ، نام آنها و آدرس BT باز می گرداند.

L ist Menu $ () ، انتخاب

در صورت ذخیره داده ها حداکثر مقدار را انتخاب کنید

runLevel = 1

انتخاب را انتخاب کنید

مورد 0 maxData = 100

مورد 1 maxDate = 1000

مورد 2 maxData = 5000

مورد 3 maxData = 10000

مورد 4 maxData = 0

پایان انتخاب

سنسور اتصال

جفت کم نور $ (0)

جفت $ () = BTGetPaired $ ()

اگر جفت $ (0) = "هیچ" پس

چاپ "هیچ دستگاه زوجی یافت نشد. آیا BT روشن است؟" چاپ "برنامه پایان یافت"

پایان

Endif

لیست جفت $ () ، دستگاه $

نام $ = ItemExtract $ (دستگاه $، 0)

آدرس $ = ItemExtract $ (دستگاه $، 1)

BTConnect 1 ، آدرس $

'منتظر اتصال باشید

پیشرفت ON

چاپ "تلاش برای اتصال به" ؛ آدرس $

برای i = 1 تا 20

پیشرفت i/2

اگر BTGetstate (1) = 4 سپس خروج کنید منتظر بمانید 1000

بعدی منم

پیشرفت خاموش

در صورت موفقیت به دستگاه BT متصل شوید

اگر BTGetState (1) = 4 سپس چاپ کنید "متصل" در غیر اینصورت چاپ "اتصال به آن متصل نشد" ؛ نام $

چاپ "برنامه پایان یافت"

پایان

Endif

بلوک بعدی ذخیره داده ها را نشان می دهد. برای هر جلسه داده ، یک فایل به طور خودکار باز می شود و نام آن بر اساس زمان و تاریخ است. سپس حلقه در حال خواندن داده های سنسور است. داده ها در چندین بایت بسته بندی می شوند. مجموعه ای از بایت ها توسط دو کاراکتر ASCII 170 و 171 شناسایی می شوند. داده های زیر دوباره سازماندهی شده و در آرایه های گرد و غبار پر می شوند

گرافیک روشن است

فایل نوشتاری را برای نوشتن باز کنید

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

Open 1، fileName $، "w+" Print "Opened datafile"؛ fileName $ Writeln 1، FormatTime $ (Time ()، "yy-MM-dd")

Writeln 1 ، "Time Dust2.5 Dust10"

'آرایه را با داده های اندازه گیری شده پر کنید

داده $ = "" بسته $ = ""

شاخص = 0

Do while maxData> 0 را انجام دهید

BTRead 1 ، بسته $ 10

داده $ = داده $+بسته $

اگر Len (داده $)> = 10 سپس

اگر (ASCII (Left $ (data $، 1)) = 170) & (ASCII (Right $ (data $، 1)) = 171) سپس

dustDataF (فهرست) = ASCII (اواسط $ (داده $ ، 2 ، 1))

dustDataF (index) = (dustDataF (index)+256*ASCII (Mid $ (data $، 3، 1)))/10

dustData (index) = ASCII (Mid $ (data $، 4، 1))

dustData (index) = (dustData (index)+256*ASCII (Mid $ (data $، 5، 1)))/10

Writeln 1 ، FormatTime $ (زمان () ، "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))

داده $ = ""

maxData = maxData-1

index = index+1

If index> 59 سپس index = 0

dustData (index) = 0

dustDataF (فهرست) = 0

Endif

Endif

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 ، "زمان/ثانیه"

AxisY 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" استفاده کنید. شما همچنین می توانید آن را در اینجا پیدا کنید

برای جزئیات بیشتر و آزمایش به ویدیو مراجعه کنید. بسیار سرگرم کننده و ایده های بیشتر داشته باشید!

توصیه شده: