nRF24L01 ile kablosuz sensör ağları uygulaması
  • Herkese merhabalar. Herkesin olduğu gibi benim işin de aciliyeti olduğunu belirtmek isterim. Umarım kısa zamanda cevap verirsiniz yoksa bitirme tezinden kalmak üzereyim.
    Problemimi şöyle belirteyim:
    3 Adet Arduino Uno (1 tanesi ana düğüm,kalan 2'si sıcaklık ve nem ölçümlerinin yapıldığı düğümler) ile kablosuz sensör ağları uygulaması yapmaya çalışıyorum. NRF24L01 WiFi iletişimi sağlayan modüllerim. DHT11 ile sıcaklık ve nem bilgilerini ölçüyorum. İlk aşamada bu aldığım verileri Ana düğüm olan Arduino'ya gönderip burada serial monitor'den görüntülemek istedim. Malesef yetersiz kod bilgisi ve programcılık yüzünden altından kalkamadım. Vakit ve nakit kısıtlı olduğundan şuanda bu projede aşama kaydetmeliyim. DHT11 sensör verilerini okuyan ve serial monitor'de gösteren program parçasını çalıştırıp sorunsuz şekilde istediğim verileri elde ediyorum. Asıl kısım olan ağı tasarlamada zaten problem. İnternet üzerinden indirmediğim kütüphane denemediğim yöntem kalmadı diyebilirim. Daha önce ilgilenen olduysa belki ''HELLO WORLD'' uygulamasını bilirler. Hani bir ihtimal "HELLO WORLD" yazısı yerine belki DHT11 kütüphanesinin yazdırdığı çıkış olan "Sıcaklık şudur...Nem şudur..."u entegre edip karakter şeklinde iletebileceğimi düşündüm. Ancak bu iş için yazılmış olan kütüphaneleri kullanan kod parçalarında kütüphane olduğu halde örneğin deaktif gözükmektedir. Programda hata oluşmaktadır. Başka bir uygulama olan 00'dan FF'e kadar saydırma işlemi başarı ile gerçekleşiyor. Bu yüzden düşündümki bu konuda uzman olan kişiler belki kolay bir şekilde sorunu çözebilir. Saydırma işlemi yapan TX-RX kodlarında döngü içindeki saydırma işlemini göndermek yerine sensör verilerini iletebileceğim şekilde kodu harmanlayabilecek abiler,kardeşler,ablalardan yardım istiyorum.
    Malesef kodları yükleyemedim fazla karater oluyormuş. Yardımcı olmak isteyenler olursa bana ulaşsın lütfen saygılar.
  • rf modulu kendi kutuphanesi ile test edip deneyin bu şekilde hakim olamazsanız. şuradaki örneği http://playground.arduino.cc/InterfacingWithHardware/Nrf2401 denemişinizdir mutlaka en basiti bu. çalıştırıp anlamaya çalışın ne olduğunu.
  • Okoman bey teşekkür ederim cevap için.Yalnız şöyle bir durum var gönderdiğiniz NRF2401 olan farklı bir versiyon.Pin uyumlu değil isimleri de aynı olmadığından bağlantı kuramadım aralarında. Yine de teşekkürler.
  • Pinler ve isimler onemli evet ama cok farkli olamaz sonucta spi protokolu kullaniyor gerekli pinleri baglayin calisir
  • İşte mükemmel bir detay :)) Teşekkürler SPİ protokolü diye birşey öğrenmiş oldum.Söylediklerinizden yola çıkarak birşeyler oluşturmaya çalışacağım.
  • Arduino'da library içerisinde bulunan SPI kütüphanesi yine aynı protokole mi hitap ediyor diye sorsam?
  • Nrf24L01 kutuphanesi icinde zaten spi kullanilmistir.. lib icinde gordugunuz spi standart kutuphanedir evet. Cogu sensor spi pinlerini kullanarak haberlesir. Spi kutuphanesi icinde bir duzeltme yapmayin sakın sistem butunlugu bozulur. Nrf24L01 kutuphanesini inceleyebilirsiniz nasul calistigini anlamak icin. Hangi nrf24L01 kullaniyorsaniz bir linkini veya fotosunu buraya verebilirsen iyi olur
  • şimdi kontrol ettim benim verdiğim link spi kullanmamış direk kutuphane içinde manuel çösmüş olayı. bu daha iyi her turlu arduinoda çalışır bu kod. sparkfundaki modul şu https://www.sparkfun.com/products/691
    pinler
    sparkfun-uno
    gnd-gnd
    irq-boş
    miso-2
    mosi-6
    sck-5
    csn-4
    ce-3
    vcc-5v

    bu config çalışmassa miso mosi uçlarını yer değiştir öyle dene




  • Şöyle birşey sorsam;
    Alttaki kod parçası benim programımın içindeki kütüphaneden bir kısım. Şimdi burada 0x01 filan yazıyor.Bunlar acaba NRF bağlantı pinlerinin Arduino üzerindeki fiziksel adresleri mi? Mikrodenetleyicinin register adresleri mi? Hani çok havada kaldı,çözemedim acaba çözebilirseniz ne anlatmak istenilmiştir sizce?

    #define CE 0x01
    // CE_BIT: Digital Input Chip Enable Activates RX or TX mode

    #define SCK 0x04
    // SCK BIT: Digital Input SPI Clock

    #define MISO 0x10
    // MISO BIT: Digital Output SPI Slave Data Output, with tri-state option

    #define CSN 0x02
    // CSN BIT: Digital Input SPI Chip Select

    #define MOSI 0x08
    // MOSI BIT: Digital Input SPI Slave Data Input

    #define IRQ 0x20
    // IRQ BIT: Digital Output Maskable interrupt pin
  • oradakiler fiziki pin numaraları hex olarak yazılmış.
    ce sck miso csn mosi spi pinleridir. 0x10 pin16 demek
    irq pinde olabilir veya interrupt için bir tanımlamada olabilir bilemiyorum onu. modul bir sinyal aldığında irq pininden arduinoya haber verir ve iletişimi başlatır ama kullanılmayadabilir. biraz denemek lazım
  • Hocam eyvallah çok teşekkürler yardımlarınız için. Ciddi bir çalışma içerisine girip programlamayı ve malzemenin datasheet'ini öğrenmeye karar verdim. En mantıklısı bu olacak sanırım.
  • nrf24L01 arduinoda çok temel fonksiyonları ile kullanılıyor alıc verici adresleri ile veri al veri yolla gibi 3-4 fonkisyon belirlemişler, malzemenin kendisi arduinoda kullanılandan çok daha fazla yetenekleri var. amacın nrf24L01 i hatim edeyim diyorsan tamam çalış ama amacım rf uzerınden garantılı veri alıp vereyım işim olsun diyosan örnek kod işini görür onu çalıştırmayı denersen temelde işi bitirmiş olursun. pinleri bağla gitsin çalışır :)

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.