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:
-
Arduino Uno
-
NRF24l01 RF modül
-
Dht11 Sıcaklık Nem Sensörü
-
9v Pil ( Arduino Jak Girişinden Beslemek İçin)
-
4.7k Direnç
Alıcı Devresi:
-
Arduino Uno
-
NRF24l01 RF modül
-
I2C LCD 16 × 2 Ekran
-
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ı:
#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ı:
#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); } } }
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.
done = radio.read(deger, sizeof(deger)); Bu satırda hata veriyor yardımcı olabilir misiniz?
hocam merhabalar. aynı devreyi kablosuz voltmetre olarak kullanmamız mümkün müdür? Farklı bir odadaki akünün anlık voltajını görmek istiyorum ne yapmalıyım?
merhabarl
devreyi kurdum herşeyi yaptım kodları girdim 1 kere tek veri alıyor. sonra
iletişimyok
nem %60 fln (en son aldığı veride kalıyor)
tekrar veri göndermesi için aurduinoları başlatıyorm bi kaç defa öyle gene 1 kere tek alıyor.
kondansatör 100uF 3.3uF 10uF fln epey denedim sorun nedir acaba ?
Sorununu : Verici kod dizininde 27. satırdaki “delay(1000);” satırını sildiğimde sorun ortadan kalktı.
arkdşlar merhaba bende bu modülle bi kablosuz ısı nem ölçer yapayım dedim elektronikten soğudum resmen. Size yardımcı olması açısından şöyle söyliyim aşağıda yorum yazan Onur Atakan Ulusoy kardeşimizin attığı linklerdeki parçayı almak gerekiyo heralde tam çalışması için, çünkü bu parçada voltaj uyumsuzluğu çok oluyor. Ama şöyle bişey bu parçayı almadan önce modülün gnd ile vcc kısımlarına yani + – kısımlarına 3.3uF 10uF fln kondansatör bağlayın eğer öyle çalışırsa o ek parçayı almaya gerek yok. Başka yardım almak isterseniz devrenizle ilgili f.brglu@gmail.com benim adresim oraya mail atın elimden bişey gelirse yardımcı olurum. Bu arada şunuda diyim sitedeki kodlar doğru. Kodlarda bi problem yok yani devreniz çalışmıyosa o nrf24 modülün haberleşmesinden ötürü bi problem var ya da kablo bağlantılarını doğru yapmamışsınızdır.
Merhaba
Ben devreyi kurdum ama sürekli iletişim yok diyor.
Verici devresine seri portta baktım sıkıntı yok sıcaklık nem verisi veriyor ama alıcı devresinde bağlanıyor kısmından sonra direk iletişim yok yzaıyor bilgi verirseniz sevinirim.
Teşekkürler…
Aynı şeyi bende yaşıyorum nasıl çözümü olacak yazabilir misiniz? Acaba kanallar her nrf için ayrı mı?
merhabarl
devreyi kurdum herşeyi yaptım kodları girdim 1 kere tek veri alıyor. sonra
iletişimyok
nem %60 fln (en son aldığı veride kalıyor)
tekrar veri göndermesi için aurduinoları başlatıyorm bi kaç defa öyle gene 1 kere tek alıyor.
kondansatör 100uF 3.3uF 10uF fln epey denedim sorun nedir acaba ?
Eğer sadece alıcı veya verici devresinde sorun varsa, Bu modüllerin taşıyıcı kartları var. Onlardan alırsanız sistem daha kararlı çalışacaktır.
urun.n11.com/diger/nrf24l01-adaptor-nrf24l01-8pin-kablosuz-adaptor-modulu-P299560535?gclid=CjwKCAiA0ajgBRA4EiwA9gFOR_CHV4JocA-OgoOtT_HBa2tOsZH98F2PdmGg4ywwQOrOcNrk7mjbzhoCpdIQAvD_BwE&gclsrc=aw.ds
Veya
robolinkmarket.com/nrf24l01-tasiyici-kart.html?language=tr¤cy=TRY&gclid=CjwKCAiA0ajgBRA4EiwA9gFORy4HECFtsR0Hw6UMdNGTd9dk7nUPfWfsCT_0yO5lSUNiVNMgq8sGBhoCOYsQAvD_BwE
merhabalar hocam öncelikle emeğinize teşekkür ederim
alıcı devrede 2*16 lcd tek var elimde o bi ek bişey takılıyo ona 4pine düşüren. O parçayı bulamadım internette stokta yok çoğu yerde. paralel portlama şekliyle alıcı devreyi tekrardan yükleyebilrmisinz. birde bread boardda daha ayrıntılı olacak şekilde