Mini Hava istasyonu Yapımı

Merhaba arkadaşlar , bugünsizinle paylaşmak istediğim proje 2013 yılında yaptığım mini hava istasyonu. Projemiz ev ortamında kullanabileceğiniz hatta yanınızda taşıyabileceğiniz çapta küçük ve kullanışlı bir proje.

Bu projemizde Arduino pro mini , RTC DS1307 ve DHT 11 kullandığımdan dolayı Proje baya küçük oldu . Projemiz tarih, saat sıcaklık ve nemi  çok güzel bir animasyon ile NOKİA 5110 LCD de gösteriyor.

Proje tamamen geliştrimeye açık olduğundan eklemeleri sonuna kadar destekleyecektir. Ve belirtmekte de yarar var Bildiğiniz gibi Piyasada çokça bulunan BMP180 gibi basınç ve sıcaklık sensörleri ile HAVA TAHMİNİ YAPTIRABİLİRSİNİZ. Tahmini yaptırma ile ilgili küçük bir çalışmam oldu bunu da sizinle paylaşmaktan zevk alırım .

Kullanılan Malzemeler

Projemizde kullanılan malzemelerden üstte bahsettim ama bir daha yazmak istiyorum.

  1. Arduino Pro mini (herhangi bir model ile de aynı şekilde kullanabilirsiniz.)
  2. RTC DS1307  saat-tarih modülü
  3. DHT11 ( DHT22 tavsiye ediyorum )
  4. Ve küçük bir lipo pil . (200mA idare eder)

Projemizin ekran görüntüleri

Yukardaki resimde de gördüğünüz gibi herhangi bir animasyon yaptırmanız mümkün.

Gelelim projeyi proje yapan noktaya eminim sizde merak ediyorsunuzdur. Programımız tabiki .

Baglantı Şeması

Nokia 5110 Bağlantısı şu şekildedir.
* Pin 1 (RST) -> Arduino dijital 6 (D6)
* Pin 2 (CE) -> Arduino dijital 7 (D7)
* Pin 3 (DC) -> Arduino dijital 5 (D5)
* Pin 4 (DIN) -> Arduino dijital 4 (D4)
* Pin 5 (CLK) – Arduino dijital 3 (D3)
* Pin 6 (Vcc) -> direk 5volta bağlantılı
* Pin 7 (LIGHT) -> 56-100 ohm direnç bağlamanız uzun ömürlü olması için gereklidir.
* Pin 8 (GND) -> GND1 veya GND2

DS1307 Saat modülü
* GND —- GND pinine
* VCC —- direk 5 volta
* SDA—- A4 pinine
* SCL —-A5  pinine

DHT11 veya DHT22 Sıcaklık ve Nem Sensörü
* Data ucu Arduinomuzun A2 pinine bağlanmıştır.

Programımız

/*********************************************************************
Bu projemiz www.arduinom.org sitesinde yayınlanmıştır. 
Proje yapımında internetten yardım alınmıştır.
*********************************************************************/

/* 
Nokia 5110 Bağlantısı şu şekildedir.
* Pin 1 (RST) -> Arduino dijital 6 (D6)
* Pin 2 (CE) -> Arduino dijital 7 (D7)
* Pin 3 (DC) -> Arduino dijital 5 (D5)
* Pin 4 (DIN) -> Arduino dijital 4 (D4)
* Pin 5 (CLK) - Arduino dijital 3 (D3)
* Pin 6 (Vcc) -> direk 5volta bağlantılı
* Pin 7 (LIGHT) -> 56-100 ohm direnç bağlamanız uzun ömürlü olması için gereklidir.
* Pin 8 (GND) -> GND1 veya GND2 
*/

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
// Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, DC, CS, RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 7, 6);

#include <DHT.h>
#define DHTPIN A2     
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);


#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;

static unsigned char PROGMEM picatura[] =
{ B0001000,
  B0001000,
  B0001000,
  B0010100,
  B0100010,
  B0100010,
  B0011100
};

void setup () {
  
    Serial.begin(9600);

  display.begin();
/////// Burası çok önemlidir. Yazınızın kontrastı alttan ayarlanır//////////
  display.setContrast(50);
  display.clearDisplay();

  dht.begin();

  
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  display.println("wwww.arduinom.org");
  display.display();
  delay (5000);
  display.clearDisplay(); 
  
  Wire.begin();
  
//www.arduinom.org/
Wire.beginTransmission(0x68);
Wire.write(0x07); 
Wire.write(0x10); 
Wire.endTransmission();

    RTC.begin();
// RTC.adjust(DateTime(__DATE__, __TIME__));
  if (! RTC.isrunning()) {
    Serial.println("RTC calismiyor !");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

int k1;
int ko;

void loop () {
  
  DateTime now = RTC.now();
  int h = dht.readHumidity();
  int t = dht.readTemperature();

   int zs = now.second()/10;
   int us = now.second() - zs*10;
  
  if (us > 2 )
 {
   display.setTextSize(2);
   display.setTextColor(BLACK);
   display.setCursor(0, 0);
   
   
   {   if ( now.hour() < 10)
   {
     display.print(" "); 
     display.print(now.hour(), DEC);
   }
   else
   {
     display.print(now.hour(), DEC);
   }
   display.setCursor(20, 0);
   display.print(":");
   display.setCursor(28, 0);
   if ( now.minute() < 10)
   {
     display.print("0"); 
     display.print(now.minute(), DEC);
   }
   else
   {
   display.print(now.minute(), DEC);
   }

   display.setCursor(48, 0);
   display.print(":");
   display.setCursor(57, 0);
   if ( now.second() < 10)
   {
     display.print("0"); 
     display.print(now.second(), DEC);
   }
   else
   {
   display.print(now.second(), DEC);
   }
   }
 }
 else 
 {
   display.setTextSize(1);
   display.setTextColor(BLACK);
   display.setCursor(16, 0);
   if ( now.hour() < 10)
   {
     display.print(" "); 
     display.print(now.hour(), DEC);
   }
   else
   {
   //  display.setCursor(16, 0);
     display.print(now.hour(), DEC);
   }
   display.print(":");
   if ( now.minute() < 10)
   {
     display.print("0"); 
     display.print(now.minute(), DEC);
   }
   else
   {
   display.print(now.minute(), DEC);
   }
   display.print(":");
   if ( now.second() < 10)
   {
     display.print("0"); 
     display.print(now.second(), DEC);
   }
   else
   {
   display.print(now.second(), DEC);
   }
      
   display.setCursor(10, 8);
   if ( now.day() < 10)
   {
     display.print("0"); 
     display.print(now.day(), DEC);
   }
   else
   {
   display.print(now.day(), DEC);
   }
   display.print("/");
   if ( now.month() < 10)
   {
     display.print("0"); 
     display.print(now.month(), DEC);
   }
   else
   {
   display.print(now.month(), DEC);
   }
   display.print("/");
   display.print(now.year(), DEC);
 }
     
    if (us < 5 )
   {
   display.setTextSize(4);
   display.setTextColor(BLACK);
   display.setCursor(0,20);
   display.print(t);
   display.setCursor(60,20);
   display.print("C");
   display.setTextSize(2);
   display.setTextColor(BLACK);
   display.setCursor(48,20);
   display.print("o");
   display.display();
   }
else
   {
   display.setTextSize(4);
// display.setTextColor(WHITE, BLACK);
   display.setCursor(0,20);
   display.print(h);
/*   display.setCursor(60,20);
   display.print("H");
*/
   // bardak gibi bir sekil cizdirdik.
   display.drawLine(60, 20, 60, 45, BLACK);
   display.drawLine(61, 20, 61, 45, BLACK);
   display.drawLine(60, 44, 80, 44, BLACK);
   display.drawLine(60, 45, 80, 45, BLACK);
   display.drawLine(79, 20, 79, 45, BLACK);
   display.drawLine(80, 20, 80, 45, BLACK);
// display.display();
   int hp = h/4;
   for (int x = 0; x < hp+1; x++)
   { 
   display.drawLine(60, 44-x, 80, 44-x, BLACK);
   }
 // Damla şekli
   display.drawBitmap(65, 20,  picatura, 8, 8, 1);
   display.drawBitmap(70, 26,  picatura, 8, 8, 1);
  
   display.setTextSize(2);
   display.setTextColor(BLACK);
   display.setCursor(48,20);
   display.print("%");
   display.display();
   }

delay (500);
display.clearDisplay();  
}


  1. osman 14 Aralık 2016 22:33

    mehmet bey ben projenizi yapmaya çalışıyorum.bağlantı şemasını veya ares çizimini bana atabilirmisiniz.
    saygılarımla

    Cevapla
    • osman 17 Aralık 2016 16:14

      mehmet projeyi yapmaya çalışıyorum ama kodu derlediğim zaman 33. satırda
      exit status 1
      variable ‘picatura’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
      hatası veriyor.araştırdım ama bulamadım.yardımcı olursanız sevinirim ödev olarak yapacağımı söyledim hocaya
      ilginize şimdiden teşekkü

      Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.