Arduino NRF24l01 ile Lcd Ekrana Sıcaklık Nem Verisi Gönderme

0 625

Arduino uygulamalarında rf haberleşme sık kullanılmakta. Bu projemizde de arduino ile NRF24l01 sıcaklık nem değerlerini lcd ekrana gönderecek. Projeye başlamadan önce NRF24l01 modül hakkında bilgi almak isterseniz buraya bakabilirsiniz. Projenin videosunu ilerleyen günlerde yayınlayacağım. Yukarıdaki video örnek amaçlı konulmuştur.

Malzemeler:

Verici Devresi:

  1. Arduino Uno

  2. NRF24l01 RF modül

  3. Dht11 Sıcaklık Nem Sensörü

  4. 9v Pil ( Arduino Jak Girişinden Beslemek İçin)

  5. 4.7k Direnç

Alıcı Devresi:

  1. Arduino Uno

  2. NRF24l01 RF modül

  3. I2C LCD 16 × 2 Ekran

  4. 9v Pil ( Arduino Jak Girişinden Beslemek İçin)

 

Verici Devre Şeması:

Alıcı Devre Şeması:

Bağlantı şemalarına göre devreyi kuralım. Gerekli açıklamalar devre şemaları üzerinde açıklandı. NRF24l01 3.3 v ile çalıştığından fazla voltaj verirseniz modüle zarar verebilirsiniz.

 

Kütüphaneler: RF24 dht11 ve LCD kütüphaneleri

Verici Devrenin Arduino Yazılımı:

// Robimek - Robotik Sistemler
// SICAKLIK NEM VERİCİ KODU
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DHT11.h>

int pin = A0;
DHT11 dht11(pin);
float deger[2];

RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;

void setup(void) {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
}

void loop(void)
{
float sicaklik, nem;
dht11.read(nem, sicaklik);
deger[0] = sicaklik;
deger[1] = nem;
radio.write(deger, sizeof(deger));
delay(1000);
}

Alıcı Devrenin Arduino Yazılımı:

// Robimek - Robotik Sistemler
// SICAKLIK NEM ALICI KODU
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
float deger[2];

RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;

void setup(void) {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1, pipe);
radio.startListening();
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.print("Nem - Sicaklik");
delay(1000);
lcd.clear();
lcd.print("Baglaniyor.....");
delay(1000);
}

void loop(void)
{
if ( radio.available() )
{
bool done = false;
while (!done)
{
done = radio.read(deger, sizeof(deger));
lcd.clear();
delay(500);
lcd.setCursor(0, 0);
lcd.print("Sicaklik:");
lcd.setCursor(0, 1);
lcd.print("Nem:");
lcd.setCursor(11, 0);
lcd.print(deger[0]);
lcd.print(" C");
lcd.setCursor(6, 1);
lcd.print(deger[1]);
lcd.print(" %");
delay(1000);
}
}
else
{
lcd.setCursor(0, 0);
lcd.print("İletisim Yok");
}
}

Bütün bağlantıları yapıp arduino kodlarını da yükledikten sonra modüller arasında iletişim sağlanmaz ise her iki modülün de vcc ve gnd pinleri arasına 3.3 uF ile 10 uF  arası değerde kondansatör yerleştirerek tekrar deneyiniz.

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.