التواصل BMP180 (استشعار الضغط الجوي) مع اردوينو: 9 خطوات

عندما بكى الشيخ عبد الباسط عبد الصمد مقطع سيهز قلبك

عندما بكى الشيخ عبد الباسط عبد الصمد مقطع سيهز قلبك

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

Anonim

BMP-180 هو جهاز استشعار الضغط الجوي الرقمي مع واجهة i2c. هذا المستشعر الصغير من بوش سهل الاستخدام لأنه صغير الحجم واستهلاك منخفض للطاقة ودقة عالية.

بناءً على كيفية تفسيرنا لقراءات المستشعر ، يمكننا مراقبة التغيرات في الطقس ، وقياس الارتفاع النسبي أو حتى العثور على السرعة العمودية (الارتفاع / السقوط) للكائن.

لذلك من أجل هذه التعليمات ، سأركز على جعل المستشعر يعمل مع Arduino.

اللوازم:

الخطوة 1: القليل من التاريخ على البارومترات: الضغط مستمر!

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

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

بخلاف ملاحظات الأرصاد الجوية ، فإن استخدامًا جديدًا لمستشعر الضغط الجوي هو حساب الارتفاع النسبي للمكان. الآن هذا هو المكان الذي تصبح فيه الأمور مثيرة للاهتمام.
تذكر الصيغة ، ( P = h * rho * g) من صف الفيزياء؟ اتضح أننا نستطيع حساب الارتفاع النسبي للمكان باستخدام BMP-180. أنيق ، هاه؟

الخطوة 2: جمع المعدات!

حان الوقت للعودة إلى القرن الحادي والعشرين. الآن وقد حصلنا على درس تاريخي هام للغاية حول البارومترات ، دعنا نعود إلى قائمة العناصر التي نحتاجها لهذا الغموض.

1. اللوح والصداري

2. BMP-180

3. أي مجلس اردوينو. (أنا أستخدم Arduino Pro Micro ، ولكن أي لوحة اردوينو ستكون كافية)

4. كبل USB وجهاز كمبيوتر يمكنه تشغيل Arduino IDE

الخطوة 3: توصيل الأسلاك!

نظرًا لأن BMP-180 يعمل على واجهة i2c ، فإنه من السهل توصيله. اعتمادًا على لوحة Arduino التي تستخدمها ، ابحث عن دبابيس i2c.
مجلس ----------------------------------->دبابيس I2C / TWI

أونو ، إيثرنت ، برو ميني -----------------> A4 (SDA) ، A5 (SCL)
Mega2560 -----------------------------> 20 (SDA) ، 21 (SCL)

ليوناردو ، برو مايكرو --------------------> 2 (SDA) ، 3 (SCL)

بسبب ------------------------------------> 20 (SDA) ، 21 (SCL) ، SDA1 ، SCL1

بالنسبة إلى دبوس VCC ، تأكد من التحقق مما إذا كان المستشعر متسامحًا بجهد 5 فولت أم لا. إذا لم يكن كذلك ، فقم بتشغيله حتى 3.3 فولت. تحتوي اللوحة الجانبية التي أستخدمها على منظم مدمج 3.3 فولت مما يجعله متسامحًا بقدرة 5 فولت.

لذلك فإن اتصالاتي بالدائرة هي شيء مثل هذا:
اردوينو -> BMP-180
D2 (SDA) -> SDA
D3 (SCL) -> SCL
5v -> VCC
GND -> GND


الأشياء التي يمكن أن تسوء في هذه الخطوة:

1. تأكد من خطوط VCC و GND قبل تشغيلها. قد تتلف المستشعر.
2. SDA -> SDA و SCL -> SCL ، لا تخلط بينهما.

الخطوة 4: اختيار المكتبة المناسبة

الآن لاختيار مكتبة لجعل حياتنا أسهل مع BMP-180. على الرغم من كونه مستشعرًا أنيقًا ، فهناك الكثير من الرياضيات المعقدة المعنية لاستخدامه بشكل صحيح. العمليات الحسابية مثل التحويل من وحدات الضغط إلى تصحيح ضغط مستوى سطح البحر … من المؤكد أنه يجعل الأمور أكثر صعوبة بالنسبة للشخص الذي تخطى العديد من دروس الفيزياء لتبدأ …. :(
الحل؟ المكتبات!
لقد استخدمت حتى الآن 3 مكتبات مختلفة لـ BMP180.
1. مكتبة sparkfun BMP180

2. Adafruit BME085 API (v1) (سأستخدم هذا واحد لهذه التعليمات)

3. API Adafruit BME085 (الإصدار 2)

السبب في أنني أربط بين المكتبات الثلاث هو أن لكل منها مزايا وإيجابيات. إذا كنت ترغب فقط في إنجاز المهمة ، فإن مكتبات Adafruit رائعة. إنها سهلة الاستخدام وتأتي مع وثائق لطيفة للغاية. من ناحية أخرى ، توفر مكتبة sparkfun الكثير من التعلم الإضافي حيث سيتعين عليك القيام بالكثير من الحسابات يدويًا. إذا كنت مهتمًا بذلك ، تحقق من هذا البرنامج التعليمي المذهل من sparkfun.

الخطوة 5: تنزيل مكتبة اردوينو

قم بتنزيل المكتبة من هذا الرابط.

يجب أن يكون لديك ملف مضغوط.

الخطوة 6: تثبيت مكتبة اردوينو

لتثبيت المكتبة التي قمت بتنزيلها للتو ،
انتقل إلى "اسكتشات" -> "تضمين مكتبة" -> "إضافة مكتبة مضغوطة"
ثم حدد موقع ملف zip الذي قمت بتنزيله وافتحه.
فويلا ، يجب أن يكون لديك مكتبة مثبتة.

الخطوة 7: تشغيل رمز المثال

للتحقق مما إذا كان كل شيء يعمل بشكل صحيح حتى الآن ، فلنشغل رمز المثال المقدم مع المكتبة.

انتقل إلى "الملفات" -> "أمثلة" -> "مكتبة Adafruit BMP085" وافتح "اختبار BMP085"

سد العجز في اردوينو الخاص بك ، والتحقق من منفذ COM الخاص بك وتحميل!

بعد أن تم تحميل الكود بنجاح ، افتح "الشاشة التسلسلية" للتحقق من قراءات المستشعر.

الأشياء التي يمكن أن تسوء في هذه الخطوة:
1. إذا لم تجد Adafruit BMP085 مدرجًا في الأمثلة ، فلم يتم تثبيت المكتبة بشكل صحيح. العودة والتحقق مرة أخرى.

2. إذا لم يتم تحميل الكود ، فتحقق من منفذ COM أو اتصال USB

3. إذا تلقيت رسالة خطأ على الشاشة التسلسلية ، فقم بإعادة فحص اتصالات الدائرة.

الخطوة 8: معرفة الكود

نموذج التعليمة البرمجية توضيحيًا بشكل كبير جدًا ، ولكن للتأكد من ذلك ، دعونا نتعمق فيه قليلاً.

أول ما نحتاج إلى القيام به هو تضمين مكتبة Wire.h للحصول على واجهة i2c في عمل Arduino. ثم نقوم بتضمين مكتبة Adafruit BMP085 وإنشاء كائن استشعار. (bmp في هذه الحالة)

#تتضمن #include Adafruit_BMP085 bmp؛

تُرجع الدالة bmp.begin () قيمة منطقية استنادًا إلى اكتشاف واجهة i2c BMP-180. يتم تشغيله مرة واحدة في الإعداد () للتحقق مما إذا كان الجهاز يتصل أم لا.

الإعداد باطل() {
Serial.begin (9600)؛ إذا (! bmp.begin ()) {Serial.println ("تعذر العثور على جهاز استشعار BMP085 صالح ، تحقق من توصيل الأسلاك!") ؛ بينما (1) {}}}

الآن للوظائف الأساسية ، لدينا

1. bmp.readTemperature ()

2. bmp.readPressure ()

3. bmp.readAltitude ()

4. bmp.readSealevelPressure ()

هنا ، BMP هو كائن الاستشعار أنشأنا. لا تتردد في اختيار أي اسم متغير يمكنك التفكير فيه.

لاحظ الآن أن readAltitude () يمكنه قبول عدد صحيح كمعلمة. هذا هو الحصول على قياس أكثر دقة للارتفاع إذا كنت تعرف ضغط مستوى سطح البحر الحالي. الآن سيختلف هذا باختلاف الطقس والموقع الجغرافي للمكان الذي تتم فيه القراءة. تأكد من تحويل ضغط مستوى سطح البحر في Pascals وانتقل إلى هذه الوظيفة.

الخطوة 9: الخطوة مكافأة! (التصفيق البطيء)

لذلك عملت مع جهاز استشعار BMP180 لفترة طويلة الآن وإليك بعض النصائح

1. لا أرفق المستشعر بالكامل. إذا كنت بحاجة إلى بناء مسكن له ، فتأكد من وجود تدفق هواء كافٍ. بما أن المستشعر يقيس ضغط الهواء المحيط ، فإنه يحتاج إلى التعرض للهواء الطلق.

2. يبدأ المستشعر في التصرف بشكل مجنون عندما يرتفع الارتفاع. حصلت على رفاهية إرسال BMP-180 إلى 32،450 متر باستخدام منطاد الطقس. يعرض المخطط أعلاه بيانات ارتفاع GPS مقابل بيانات ارتفاع BMP-180. في الارتفاعات المنخفضة ، تعد BMP-180 أكثر موثوقية حيث يصعب على GPS الحصول على قفل. ولكن في المناطق المرتفعة ، تصبح بيانات GPS أكثر دقة حيث ينخفض ​​ضغط الهواء بسرعة فوق 9000 متر.

3. تتقلب بيانات المستشعر على ضوء الشمس المباشر. لقد تأخرت قليلاً عن ملاحظة ذلك على ورقة البيانات لمشروع ما.

4. عنوان i2c على BMP180 هو 0x77. وهو ثابت ، مما يجعل من المستحيل إضافة أجهزة استشعار متعددة إلى نفس ناقل i2c.

لذلك كل شيء على BMP-180. هذا هو أول تدريب لي (آمل أن تعمل صور GIF هذه !!). لا تتردد في طرح المزيد من الأسئلة.