سنقوم في هذا البرنامج التعليمي بتصميم نظام قياس الضغط الجوي باستخدام BMP180 و ARDUINO. بادئ ذي بدء ، لربط BMP180 بـ ARDUINO ، نحتاج إلى تنزيل مكتبة مصممة خصيصًا لـ BMP180. هذه المكتبة متاحة على: https://github.com/adafruit/Adafruit-BMP085-Library بعد إرفاق تلك المكتبة ، يمكننا استدعاء وظائف خاصة تسهل العمل مع مستشعر BMP180.
المكونات مطلوبة
الأجهزة: لوحة اردوينو أونو ، دبابيس توصيل ، مقاوم 220Ω ، مستشعر الضغط الجوي BMP180 ، شاشة LCD مقاس 16 × 2 ، لوح الخبز.
البرمجيات: اردوينو ليلا
مخطط الدائرة وشرح العمل
بعد الاتصال بالرأس ، لا داعي للقلق بشأن إنشاء اتصال بين مستشعر Arduino Uno و BMP180. يمكننا ببساطة استدعاء وظائف خاصة والتي ستفعل ذلك لنا. نحتاج فقط إلى تهيئة شاشة LCD وإظهار القيم التي تم استدعاؤها من SENSOR عليها.
في 16x2 LCD ، يوجد 16 دبوسًا في الكل إذا كان هناك ضوء خلفي ، إذا لم يكن هناك ضوء خلفي ، فسيكون إجمالي 14 دبوسًا. يمكن للمرء أن يغادر أو يترك دبابيس الضوء الخلفي. الآن في دبابيس 14 هناك 8 دبابيس البيانات (7-14 أو D0-D7)، 2 دبابيس امدادات الطاقة (1 و 2 أو VSS و VDD أو GND و + 5V)، 3 الثالثة دبوس للسيطرة على النقيض من ذلك (VEE ضوابط كيف سميكة يجب أن تكون الأحرف معروض) و 3 دبابيس تحكم (RS & RW & E).
في الدائرة ، يمكنك ملاحظة أنني أخذت دبابيس تحكم فقط ، ولا يتم استخدام بت التباين والقراءة / الكتابة في كثير من الأحيان حتى يمكن تقصيرهما على الأرض. هذا يضع LCD في أعلى وضع التباين والقراءة نحتاج فقط إلى التحكم في دبابيس ENABLE و RS لإرسال الأحرف والبيانات وفقًا لذلك.
فيما يلي التوصيلات التي تمت لشاشات الكريستال السائل:
PIN1 أو VSS على الأرض
PIN2 أو VDD أو VCC إلى + 5 فولت
PIN3 أو VEE على الأرض (يعطي أقصى تباين أفضل للمبتدئين)
PIN4 أو RS (اختيار التسجيل) إلى PIN8 من ARDUINO UNO
PIN5 أو RW (قراءة / كتابة) على الأرض (يؤدي وضع شاشة LCD في وضع القراءة إلى تسهيل الاتصال للمستخدم)
PIN6 أو E (تمكين) toPIN9 من ARDUINO UNO
PIN11 أو D4 إلى PIN10 من ARDUINO UNO
PIN12 أو D5 إلى PIN11 من ARDUINO UNO
PIN13 أو D6 إلى PIN12 من ARDUINO UNO
PIN14 أو D7 إلى PIN13 من ARDUINO UNO
يسمح ARDUINO IDE للمستخدم باستخدام LCD في وضع 4 بت. يمكّن هذا النوع من الاتصال المستخدم من تقليل استخدام الدبوس على ARDUINO ، على عكس الآخر ، لا يحتاج ARDUINO إلى البرمجة بشكل منفصل لاستخدامه في وضع 4 it لأنه افتراضيًا تم إعداد ARDUINO للتواصل في وضع 4 بت. في الدائرة يمكنك أن ترى أننا استخدمنا اتصال 4 بت (D4-D7).
لذلك من مجرد الملاحظة من الجدول أعلاه ، نقوم بتوصيل 6 دبابيس من شاشة LCD بوحدة التحكم حيث تكون 4 دبابيس عبارة عن دبابيس بيانات و 2 دبابيس للتحكم.
لتوصيل BMP180 بـ Arduino Uno ، نحتاج إلى القيام بما يلي:
|
نحتاج أولاً إلى استدعاء ملف الرأس لتمكين الوظائف الخاصة "#include".
باستخدام ملف الرأس هذا ، يمكننا استدعاء الوظائف التي يمكنها قراءة القيم من Sensor مباشرة دون أي ضباب.
نحتاج الآن إلى تمكين اتصال C ، ويتم ذلك عن طريق استدعاء “#include
يمكننا قراءة الضغط باستدعاء ”String PRESSUREVALUE = String (bmp.readPressure ())؛”. هنا سيتم قراءة قيمة الضغط من المستشعر ويتم تخزينها في السلسلة "PRESSUREVALUE".
يمكننا قراءة temparature عن طريق استدعاء "String TEMPARATUREVALUE = String (bmp.readTemperature ())؛". هنا سيتم قراءة قيمة الضغط من المستشعر ويتم تخزينها في السلسلة "TEMPARATUREVALUE".
نحتاج أولاً إلى تمكين ملف الرأس ('#include
ثانيًا ، نحتاج إلى إخبار اللوحة بنوع شاشة LCD التي نستخدمها هنا. نظرًا لأن لدينا العديد من الأنواع المختلفة لشاشات الكريستال السائل (مثل 20 * 4 ، 16 * 2 ، 16 * 1 وما إلى ذلك). هنا سنقوم بتوصيل شاشة LCD مقاس 16 * 2 بـ UNO حتى نحصل على 'lcd.begin (16،2)؛'. مقابل 16 * 1 نحصل على 'lcd.begin (16،1) ؛'.
في هذه التعليمات ، سنخبر اللوحة حيث قمنا بتوصيل المسامير ، سيتم تمثيل المسامير المتصلة بالترتيب كـ "RS ، En ، D4 ، D5 ، D6 ، D7". يتم تمثيل هذه المسامير بشكل صحيح. نظرًا لأننا قمنا بتوصيل RS بـ PIN0 وما إلى ذلك كما هو موضح في الرسم التخطيطي للدائرة ، فإننا نمثل رقم الدبوس على اللوحة كـ "LiquidCrystallcd (0،1،8،9،10،11) ؛".
بعد ما سبق ، لم يتبق سوى إرسال البيانات ، يجب كتابة البيانات التي يجب عرضها على شاشة LCD كـ "cd.print (" hello، world! ")؛". باستخدام هذا الأمر ، تعرض شاشة LCD رسالة "hello، world!".
كما ترون ، لا داعي للقلق بشأن أي شيء آخر ، علينا فقط التهيئة وسيكون UNO جاهزًا لعرض البيانات. لا يتعين علينا كتابة حلقة برنامج لإرسال البيانات BYTE بواسطة BYTE هنا. بعد قراءة القيمة من المستشعر ، سنعرضها على شاشة LCD مقاس 16 × 2.