مقياس درجة الحرارة والرطوبة على وحدة تحكم اردوينو مع عرض القيم على شاشة LCD

في الآونة الأخيرة ، بدأت في دراسة برمجة متحكم Arduino. بعد أن أكملت العديد من التمارين الأساسية (المصابيح الوامضة ، والعمل مع المدخلات المنفصلة والتناظرية ، وعرض المعلومات على شاشة LCD ، وما إلى ذلك) ، أردت أن أصنع نوعًا من الأجهزة المفيدة للمنزل.

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

في المشروع ، استخدمت المكونات التالية:

1. لوحة Arduino Uno

صورة

2. شاشة LCD1602 مع وحدة دعم بروتوكول I2C. من أجل تقليل عدد الأسلاك وتبسيط توصيل الشاشة ، قررت توصيله عبر بروتوكول I2C ، لذلك قمت بلحام وحدة تحويل خاصة بشاشة LCD.

"

3. مستشعر درجة الحرارة والرطوبة DHT11. يسمح لك بتحديد الرطوبة من 20-80٪ ودرجة الحرارة من 0-50 درجة مئوية. يحتوي المستشعر على 4 مخرجات ، ولكن يتم استخدام 3 فقط. يجب تثبيت المقاوم 10kΩ بين خرج الطاقة ومخرج البيانات. I لقد استخدمت مستشعرًا جاهزًا مثبتًا على اللوحة مع المقاوم متصل ، بحيث يمكنك توصيله بأمان بلوحة Arduino.

"

4. مقاومة ضوئية. وهي متصلة بلوحة Arduino مع سحب إلى GND ، من خلال المقاوم 10kΩ.



مخطط الاتصال على النحو التالي:



يتم توصيل المقاوم الضوئي إلى المدخلات التناظرية A0 للوحة Arduino. يتم توصيل خط بيانات مستشعر DHT11 بدبوس منفصل 2 ، ويتم توصيل دبوس الطاقة بـ + 5V Arduino ، على التوالي ، ويتم توصيل دبوس GND في أرض لوحة Arduino. يتم توصيل شاشة LCD بطاقة اللوحة ، ودبوس SDA متصل بـ A4 ، ودبوس SCL إلى A5. يتم توصيل خط التحكم في سطوع الإضاءة الخلفية بالطرف 9 ، حيث يتم إنشاء إشارة PWM.

أدناه هو رمز المصدر:

#include "DHT.h"                  //      DHT11
#include "Wire.h"               
#include "LiquidCrystal_I2C.h"    //     LCD 

int LD;                           //  

#define DHTPIN 2                  // PIN    DHT11
#define LED 9                     // PIN   -
#define FOTO 0                    // PIN   

DHT dht(DHTPIN, DHT11);           //  DHT11
LiquidCrystal_I2C lcd(0x27,16,2); // 


void setup() {
 pinMode(LED, OUTPUT);            // PIN LED  
 
 dht.begin();                     //    
 
 lcd.init();                      // LCD 
 lcd.backlight();
}


int light(int svet)               //  
{                                 //    
  if (svet<25)                    //  -
  {
    return 255;
  }

  if(svet>1020)
  {
    return 2;
  }
  else
  {
    int L=(int)(-0.2*svet+261.262);
    return L;
  }
}


void loop() {
   int f = analogRead(FOTO);              //    
   LD=light(f);
   delay(2000);
   analogWrite(LED, LD);                  //   
   
   float h=dht.readHumidity();            //  
   float t=dht.readTemperature();         //  

    lcd.setCursor(0,0);                   //      
    lcd.print("Temp ");                   //  
    lcd.print(t);
    
    lcd.setCursor(0,1);                   //      
    lcd.print("Hum ");                    //  
    lcd.print(h);

}


بعد تجميع هذا الرمز ، نحصل على مثل هذا الجهاز العامل:



في المستقبل أخطط لجعل بعض الأجهزة أكثر إثارة للاهتمام وأكثر تعقيدًا على Arduino.

قمت أيضًا بعمل فيديو حيث عرضت كيف يعمل الجهاز:


All Articles