مقدمةما الذي يمكن عرضه على شاشة من سطرين باستثناء "Hello world!"؟ لماذا لا تعرض رطوبة وضغط درجة الحرارة؟
تُظهر المستشعرات المُقدمة كمساعد تدريب لاردوينو (DHT11 ، DHT22) درجة الحرارة والرطوبة. للأغراض التعليمية (بالنسبة للجامعة) كان من الضروري مراقبة الضغط بنفس الطريقة. وبطبيعة الحال ، يحتوي القسم على مقياس ضغط ، ولكن لماذا لا تجمع مقياسك الخاص؟ بالإضافة إلى ذلك ، يمكنك أيضًا تجميع القراءات في الوضع التلقائي ، وهذه تجربة جيدة في تعلم اردوينو.
بطريقة أو بأخرى ، تم طلب المكونات من الصين وتم تجميع هذا الجهاز.
المكونات الضروريةاردوينو برو مينيI2C لشاشات الكريستال السائل (كان من الممكن طلب تجميعها على الفور ، ولكن تبين أنها أرخص قليلاً)
شاشات الكريستال السائل 1602BME280تم استخدام
USB-UART لإرسال الرسم إلى اردوينو. كان من الممكن أيضًا استخدام Raspberry Pi أو جهاز كمبيوتر بمنفذ COM.
مخطط اتصال للبرنامج الثابت ورمز البرنامجمن الصين ، جاء USB-UART بمجموعة من الأسلاك:

كانت كافية. تركت الطائر عند 3.3 فولت ، على الرغم من حقيقة أن نسختي من arduino تعمل بـ 5 فولت.
UART - Arduino
5 فولت - VCC
TXD - RXD
RXD - TXD
GND - GND
CTS - DTR (اختياري ، لم يعمل معي ، ربما لأن جهد الإشارة ظل 3.3V)
إذا لم تقم بتوصيل DTR ، فبعد إرسال برنامج Arduino الثابت ، ستحتاج إلى إعادة التشغيل باستخدام الزر المدمج ، سيبدأ تبادل البيانات النشط على كلا الجانبين (كما هو موضح من خلال مصابيح USB-UART LED) ، بعد تنزيل البرنامج الثابت بنجاح ، سيتم إعادة تشغيل نفسه.
مكتبات الجهات الخارجية الضرورية:
SparkFunBME280LiquidCrystal I2Cالكود مباشرة ، مع التعليقات من الأمثلة (في حالة احتياج شخص ما لتغيير شيء ما).
كود#include <stdint.h> #include "SparkFunBME280.h" #include "Wire.h" #include "SPI.h" #include <LiquidCrystal_I2C.h> //Global sensor object BME280 mySensor; LiquidCrystal_I2C lcd(0x3F,16,2); // , 0x3F void setup() { lcd.init(); lcd.backlight(); //***Driver settings********************************// //commInterface can be I2C_MODE or SPI_MODE //specify chipSelectPin using arduino pin names //specify I2C address. Can be 0x77(default) or 0x76 //For I2C, enable the following and disable the SPI section mySensor.settings.commInterface = I2C_MODE; mySensor.settings.I2CAddress = 0x76; // , //For SPI enable the following and dissable the I2C section //mySensor.settings.commInterface = SPI_MODE; //mySensor.settings.chipSelectPin = 10; //***Operation settings*****************************// //renMode can be: // 0, Sleep mode // 1 or 2, Forced mode // 3, Normal mode mySensor.settings.runMode = 3; // Forced mode, Normal mode //tStandby can be: // 0, 0.5ms // 1, 62.5ms // 2, 125ms // 3, 250ms // 4, 500ms // 5, 1000ms // 6, 10ms // 7, 20ms mySensor.settings.tStandby = 5; // //filter can be off or number of FIR coefficients to use: // 0, filter off // 1, coefficients = 2 // 2, coefficients = 4 // 3, coefficients = 8 // 4, coefficients = 16 mySensor.settings.filter = 0; //tempOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.tempOverSample = 1; //pressOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.pressOverSample = 1; //humidOverSample can be: // 0, skipped // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively mySensor.settings.humidOverSample = 1; //Calling .begin() causes the settings to be loaded mySensor.begin(); } void loop() { // , , . lcd.setCursor(0,0); lcd.print("H="); lcd.print((uint8_t)mySensor.readFloatHumidity()); lcd.print("%"); lcd.print(" T="); lcd.print(mySensor.readTempC()); lcd.setCursor(13,0); lcd.print(" P:"); lcd.setCursor(0,1); int mmH=mySensor.readFloatPressure()/133; lcd.print(mmH); lcd.print("mmH "); lcd.print(mySensor.readFloatPressure()); lcd.setCursor(14,1); lcd.print("Pa"); delay(1000); }
يمكن تخمين عنوان المستشعر ، يوجد اثنان فقط.
كيفية معرفة عنوان شاشتك ، يمكنك أن ترى
هنا . اعتمادًا على الشريحة ، هناك لوحان.
في هذه الحالة:
وسيكون العنوان 0x3F منذ ذلك الحين A0 - A2 مفتوح:

من
الأفضل أن يتبخر الصمام الذي يدور في شكل بيضاوي.
مخطط الأسلاكتم اختيار المقاوم على أنه نصف مقاومة المستشعر (بين VVC و GND) ، بحيث كان انخفاض الجهد عليه 1.7 فولت. أيضا ، يمكن تشغيل الدائرة من مدخلات RAW ، الجهد الآخر (على سبيل المثال من التاج).

تظهر الصورة أنه من أجل الضغط ، يمكنك نقل الطاقة إلى المستشعر والعرض من دبوس آخر. كما يظهر أيضًا فرعًا من زوج من الأسلاك البرتقالية الصفراء ، ومقاوم من 100 أوم معلق عليه لتقليل سطوع الإضاءة الخلفية (يمكنك ترك الطائر ، ولكنه سيقطع عينيك).

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

منظر أمامي.

المنظر الخلفي.