جدول المحتويات:

مستشعر الغبار Sodial على Android: 6 خطوات
مستشعر الغبار Sodial على Android: 6 خطوات

فيديو: مستشعر الغبار Sodial على Android: 6 خطوات

فيديو: مستشعر الغبار Sodial على Android: 6 خطوات
فيديو: How to Show Sensitive Content on Twitter 2024, شهر نوفمبر
Anonim
مستشعر الغبار Sodial على Android
مستشعر الغبار Sodial على Android

قبل عام ، أقام صديق لي ورشة عمل في عطلة نهاية الأسبوع حول المراقبة البيئية. كان الهدف من ورشة العمل هو بناء مستشعر غبار متصل بلوحة raspberry pi لوضع بيانات القياس على بعض الخوادم التي توفر خرائط تركيز الغبار التي يتم تحديثها بشكل متكرر. سألني صديقي عما إذا كانت هناك طريقة للحصول على بيانات المستشعر مباشرة على هاتفه الذكي للمراقبة والتسجيل. لذلك قمت بحفر الإنترنت للحصول على ورقة بيانات ورأيت أن المستشعر يحتوي على واجهة UART بسيطة مع بروتوكول 9600Baud 8N1. ولكن كيف يتم توصيل UART بهاتف ذكي؟ حسنًا ، هذا سهل. كان عليّ فقط استخدام واحدة من وحدات البلوتوث الصغيرة المنتشرة في كل مكان والتي توفر توافقًا مقلدًا على نظام Android. الآن انظر كيف صنعتها.

الخطوة 1: ما تحتاجه

ماذا تحتاج
ماذا تحتاج
ماذا تحتاج
ماذا تحتاج

أنت بحاجة إلى الأجزاء التالية

  • موصل تزاوج JST XH ذو 7 سنون للواجهة Sodial مع الأسلاك. اشتريت لي على موقع ئي باي.
  • وحدة بلوتوث HC05 أو 06 متوافقة مع موصل UART
  • محول تسلسلي USB بواجهة مستوى TTL. نستخدم هذا لمنح وحدة BT اسمًا فريدًا
  • حساس الغبار Sodial SDS011. حصلت على خاصتي من موقع ئي باي
  • قطعة من فيروبورد
  • موصل 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" على جهاز Linux الخاص بك. لمستخدمي ويندوز أوصي باستخدام "hterm". إنه سهل التشغيل. اكتب "AT" ويجب أن تحصل على "AT" كاستجابة. ثم اكتب "AT + NameSensor" لمنح وحدة BT اسم "Sensor"

الخطوة 3: تركيب الأجزاء

تركيب الأجزاء
تركيب الأجزاء
تركيب الأجزاء
تركيب الأجزاء
تركيب الأجزاء
تركيب الأجزاء
تركيب الأجزاء
تركيب الأجزاء

قطع قطعة من الخشب بحجم مناسب لأخذ جميع الأجزاء. قم بتوصيل جميع الإشارات كما هو موضح في التخطيطي. من الجيد وضع غلاف من السيليكون حول الأسلاك لحمايتها. قم بتوصيل قابس USB-B على لوحة التحكم. يتم استخدامه فقط لإمداد الطاقة. ثبت جميع الأجزاء بالمسامير على القاعدة الخشبية. أخيرًا ، قم بالغراء الساخن للكابلات لتثبيتها على الخشب.

الخطوة 4: الاقتران

الاقتران
الاقتران
الاقتران
الاقتران

قم بتشغيل تطبيق المستشعر عن طريق توصيل مصدر طاقة USB. سيبدأ مصباح LED أحمر في وحدة BT في الوميض. لا تحاول إقرانه بهاتفك الذكي الذي يعمل بنظام Android. يجب عليك إدخال رمز PIN. هذا هو "1234". بعد إدخال الرمز ، يجب إقران هاتفك الذكي بوحدة BT.

الخطوة 5: البرنامج

أحب كتابة تطبيقات Android على النظام الأساسي المستهدف نفسه. إنه يحميك من كل عناصر المحاكاة التي يجب أن تهتم بها إذا كنت تعمل مع Android Studio. لقد اكتشفت ثلاث أدوات تطوير مناسبة على نظام Android نفسه

  • مينتوريس الأساسية. مترجم أساسي مع مجموعة غنية من الأوامر للتغلب على كل شيء تقريبًا على Android. يمكنك إنشاء اختصارات لتطبيقاتك. لا يحتوي Mintoris basic على مترجم. لذلك يجب أن تكون قد قمت بتثبيت Mintoris على كل جهاز تستخدمه. لكن عليك أن تدفع ثمنها مرة واحدة فقط (حوالي 7 يورو)
  • أساسي! مترجم ومترجم أساسي جيد للغاية (إضافة لبعض اليورو). تقريبًا يتم ربط كل شيء في Android ويمكنك تجميع تطبيقات حقيقية لتوزيعها دون الحاجة إلى Basic! على الجهاز المستهدف. للأسف أساسي! يفتقر إلى وظائف مخطط الرسم التخطيطي الممتازة لمينتوريس
  • AIDE هو IDE شبه احترافي للقيام بتطوير android في java على android. مع AIDE لديك أقصى درجات المرونة ولكن عليك أن تتعلم جافا. تبلغ تكاليف AIDE السنوية حوالي 50 يورو

اخترت مينتوريس. في هذا القسم ، لن أعطيك برنامجًا تعليميًا للبرمجة في Mintoris ولكن وصفًا موجزًا لمجموعات الوظائف

في الجزء التالي ، تم الإعلان عن ثلاث صفائف لخطي بيانات المستشعر والطوابع الزمنية ذات الصلة. تُستخدم بيانات الطابع الزمني لتسمية المحور السيني للرسم التخطيطي. يخرج Sodial دفقين من البيانات يتم تحديد كل منهما لحجم جسيم خاص. تأخذ مصفوفتا بيانات الغبار هذه القيم.

WakeLock الجزئي

لون النص 100 ، 75 ، 10

لون النص أ 50 ، 50 ، 50

محاذاة النص 0

حجم النص 24

CLS

نافذة منبثقة "مقياس حساس الغبار (c) ARJ 2017"

Global dustData () ، dustDataF () ، timeStamp () الفهرس العالمي ، الاختيار ، maxData ، fileName $

طابع زمني خافت (59)

غبار خافت داتا (59)

غبار خافت DataF (59)

قائمة التعتيم $ (4) = "100 مجموعة بيانات بحد أقصى" ، "1000 مجموعة بيانات بحد أقصى" ، "5000 مجموعة بيانات بحد أقصى" ، "10000 مجموعة بيانات بحد أقصى" ، "خروج"

تهيئة المصفوفات

بالنسبة إلى i = 0 إلى 59

بيانات الغبار (أنا) = 0

DustDataF (i) = 0

الطابع الزمني (ط) = أنا

بعدها انا

بعد ذلك يتم تكوين قائمة القائمة. يمنح هذا المستخدم خيارًا لتحديد الحجم الأقصى للبيانات المراد جمعها. هذا مجرد مفتاح أمان لمنع الهاتف الذكي من امتصاص البيانات التي لا نهاية لها. تعيد وظائف BTgetPaired $ () قائمة بجميع الأجهزة المقترنة على جهاز Android وأسمائها وعنوان BT.

قائمة المحضر $ () ، الاختيار

حدد الحد الأقصى للمبلغ إذا تم تخزين البيانات

مستوى التشغيل = 1

حدد الاختيار

الحالة 0 maxData = 100

الحالة 1 كحد أقصى التاريخ = 1000

الحالة 2 maxData = 5000

الحالة 3 maxData = 10000

الحالة 4 maxData = 0

حدد النهاية

'' توصيل جهاز الاستشعار

زوج خافت $ (0)

الزوج $ () = BTGetPaired $ ()

إذا كان الزوج $ (0) = "لا شيء" إذن

اطبع "لم يتم العثور على أجهزة مقترنة. هل تم تشغيل BT؟" طباعة "تم إنهاء البرنامج"

نهاية

إنهاء إذا

قائمة الزوج $ () ، الجهاز $

الاسم $ = ItemExtract $ (الجهاز $ ، 0)

العنوان $ = ItemExtract $ (الجهاز $ ، 1)

BTConnect 1 ، العنوان $

انتظر الاتصال

التقدم قيد التشغيل

اطبع "محاولة الاتصال بـ" ؛ العنوان $

بالنسبة إلى i = 1 إلى 20

التقدم ط / 2

إذا كانت BTGetstate (1) = 4 ثم اخرج من أجل الانتظار 1000

بعدها انا

التقدم معطلة

عند النجاح ، اتصل بجهاز BT

إذا كانت BTGetState (1) = 4 ، فقم بطباعة "متصل" Else Print "تعذر الاتصال بـ" ؛ name $

طباعة "تم إنهاء البرنامج"

نهاية

إنهاء إذا

تُظهر الكتلة التالية طلب البيانات. لكل جلسة بيانات ، يتم فتح الملف تلقائيًا وتسميته بعد الوقت والتاريخ. ثم الحلقة تقرأ بيانات المستشعر. البيانات معبأة في عدة بايت. يتم تحديد مجموعة البايت من خلال حرفين من أحرف ASCII 170 و 171. تتم إعادة تنظيم البيانات التالية وتعبئتها في مصفوفات الغبار

تشغيل الرسومات

افتح ملف البيانات للكتابة

اسم الملف $ = FormatTime $ (t، "yyyy-MM-dd-kk-mm-ss") + ".dat"

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

Writeln 1 ، "Time Dust2.5 Dust10"

املأ الصفيف بالبيانات المقاسة

البيانات $ = "" packet $ = ""

الفهرس = 0

افعل بينما maxData> 0

قراءة 1 ، حزمة ، 10 دولارات

البيانات $ = بيانات $ + حزمة $

إذا كان Len (data $)> = 10 ثم

إذا كان (ASCII (Left $ (data $، 1)) = 170) & (ASCII (Right $ (data $، 1)) = 171) ثم

dustDataF (index) = ASCII (Mid $ (data $، 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 $ (Time ()، "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))

البيانات $ = ""

maxData = maxData-1

الفهرس = الفهرس + 1

إذا كان الفهرس> 59 ثم الفهرس = 0

بيانات الغبار (الفهرس) = 0

dustDataF (فهرس) = 0

إنهاء إذا

إنهاء إذا

DrawGraph ()

انتظر 100

حلقة

أغلق 1

إيقاف تشغيل الرسومات

CLS Print "تم إنهاء البرنامج"

نهاية

الجزء الأخير عبارة عن روتين فرعي يتم استدعاؤه بعد كل استقبال للبيانات. إنه يمسح الشاشة ، ويعيد رسم المخطط بالبيانات الفعلية المخزنة في مصفوفتي الغبار والطوابع الزمنية.

ارسم الإحداثيات والتسميات والعلامات ومنحنيات البيانات

رسم بياني فرعي ()

في وضع الرسومات ، يتم مسح الشاشة إلى اللون الحالي

اللون 0 ، 0 ، 0

CLS

اللون 0 ، 0 ، 100

اضبط لون الرسومات المراد استخدامه لرسم خطوط الشبكة

لون النص 100 ، 100 ، 100 ، 50

TextColor هو لون العنوان الرئيسي للشبكة

TextColorA 100 ، 100 ، 100

يتم استخدام TextColorA لعناوين المحور وشروح الشبكة.

اضبط حجم نص عنوان المحور

العنوان الرئيسي للشبكة هو 2x هذا الحجم

حجم النص 20

FixDecimal 0

اضبط لعرض منزلتين عشريتين

PadDigits 2

"ارسم شبكة للرسم البياني" عيّن نطاق وعنوان X & Y

محور المحور X 0 ، 59 ، "الوقت / ثانية"

المحور Y 0 ، 10000 ، "ug / m3"

الشبكة 3 ، "تركيز الغبار"

ارسم الرسوم البيانية للغبار

اللون 100 ، 0 ، 0

GraphXY timeStamp () ، dustDataF ()

اللون 0 ، 100 ، 0

GraphXY timeStamp () ، dustData ()

لون النص 100 ، 0 ، 0

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

لون النص 0 ، 100 ، 0

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

لون النص 100 ، 100 ، 100 ، 50

يعود

قم بتنزيل الكود المصدري هنا

الخطوة 6: الاختبار

Image
Image
اختبار
اختبار
اختبار
اختبار
اختبار
اختبار

قم بتشغيل المستشعر وابدأ تشغيل التطبيق. من قائمة الأجهزة المقترنة ، اختر الجهاز المسمى "Sensor". بعد توصيل المستشعر ، ستبدأ الشاشة في عرض البيانات. في نفس الوقت يتم تخصيص ملف البيانات. بعد الانتهاء من الموضة ، يمكنك استخدام GnuPlot لعرض البيانات. استخدم ملف "Test.gp" في GnuPlot لتكوين GnuPlot لعرض ملف بيانات باسم "Test.dat". يمكنك أيضًا العثور عليها هنا

شاهد الفيديو لمزيد من التفاصيل والاختبار. استمتع بالكثير من المرح والمزيد من الأفكار!

موصى به: