Arduino İle NRF24L01 Rf Modül Kullanımı
Kablosuz haberleşmede sıkça kullanılan modüllerden NRF24L01 Rf modül kullanımı hakkında bahsedeceğim.Bu modülün kullanımı kolay ve menzili gayet iyi olduğundan projelerinizde rahatlıkla kullanabilirsiniz.Ayrıca fiyatı da uygundur.Düşük güç tüketimi ve 2.4GHz frekans da çalışması bize avantaj sağlamaktadır.
- NRF24L01 2.4GHz Transceiver Modül
- Modülün pcb ve harici antenli modeli mevcuttur.Pcb modellerde menzil 250 m iken harici antenli modelinde menzil 1000 m’ye kadar çıkabiliyor.
- Modülü projenize göre çift yönlü haberleşme yaptırmak için hem alıcı hem verici olarak kullanabilirsiniz.
NRF24L01 Proje Ürünlerini İncele
- Modülün Pin Bağlantıları:
Modül SPI protokolünü kullanarak haberleşmektedir.Bundan dolayı pin bağlantılarını arduino modelinin SPI pinlerine bakarak yapmalısınız.Örnek olarak arduino uno ile pin bağlantılarını gösterelim.
nRF24L01 | Arduino Uno |
VCC | 3.3 V |
GND | GND |
CS | 7 |
CE | 8 |
MOSI | 11 |
MISO | 12 |
SCK | 13 |
Kablosuz haberleşme yaparken modüllerden birini alıcı diğerini ise verici olarak ayarlamamız gerekiyor.İstenirse projenin durumuna göre bir modül hem alıcı hem de verici olarak da kullanılabilmektedir.Modülün alıcı veya verici durumunda olması kablo bağlantılarını değiştirmez.Bu bağlantılar tüm durumlar için aynıdır.
Örnek Kod:
Verici kodu:
#include <SPI.h> #include <nRF24L01p.h> nRF24L01p verici(7,8);//CSN,CE void setup(){ delay(150); Serial.begin(115200); SPI.begin(); SPI.setBitOrder(MSBFIRST); verici.channel(90); verici.TXaddress("kontrol"); verici.init(); } String message; void loop(){ if(Serial.available()>0){ char character=Serial.read(); if(character=='\n'){ verici.txPL(message); verici.send(SLOW); message=""; }else{ message+=character; } } }
Alıcı Kodu:
#include <SPI.h> #include <nRF24L01p.h> nRF24L01p alici(7,8);//CSN,CE void setup(){ delay(150); Serial.begin(115200); SPI.begin(); SPI.setBitOrder(MSBFIRST); alici.channel(90); alici.RXaddress("kontrol"); alici.init(); } String message; void loop(){ if(alici.available()){ alici.read(); alici.rxPL(message); Serial.println(message); message=""; } }
Fonksiyonların Açıklamaları:
- Modülün nRF24L01p.h adında kütüphanesini buradan indirelim. >>nRF24L01p
- Yazılımda öncelikle CE ve CSN pinlerini tanımlamamız gerekiyor.
- nRF24L01p alici(7,8); >> Burdaki komutla 7.pin CSN, 8.pin CE pini olarak tanımlanmış.Bu fonksiyonda alıcı modül adına “alici” ismini verdik.
- nRF24L01p verici(7,8); >> Burdaki komutla 7.pin CSN, 8.pin CE pini olarak tanımlanmış.Bu fonksiyonda verici modül adına “verici” ismini verdik.
- SPI protokolü ile haberleştiği için SPI kütüphanesi eklenip SPI.begin(); fonksiyonu setup’ın içine yazılarak haberleşme başlatılır.
- alici.channel(90);>> Alıcı modülde setup’ın içinde tanımlanarak haberleşme kanal değerini 90 yaptık.Bu değer iki modülde de aynı değer olmalıdır.0 ile 125 arası değer yazılabilir.
- verici.channel(90);>> Verici modülde setup’ın içinde tanımlanarak haberleşme kanal değerini 90 yaptık.Bu değer iki modülde de aynı değer olmalıdır.0 ile 125 arası değer yazılabilir.
- alici.RXaddress(“kontrol”); >> Bu fonksiyon ile modülü alıcı olarak ayarladık ve adres ismine de “kontrol” adını verdik.
- verici.TXaddress(“kontrol”);>>Bu fonksiyon ile de modülü verici olarak ayarladık ve adres ismine de “kontrol” adını verdik.
- İki modülün de adres ismi ve haberleşme kanal değeri aynı olmalıdır.
Önemli Not:Modüller arası haberleşme sağlanamıyorsa 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.
NRF24L01 Proje Ürünlerini İncele
Örnek Uygulama:
Potansiyometre ile Kablosuz Servo Motor Kontolü
RF24 Kütüphanesini buradan indirelim.
Şekildeki alıcı ve verici devrelere bakarak gerekli bağlantıları yapabilirsiniz.
Yazılım kısmında bir modülü alıcı diğer modülü de verici olarak tanımlayarak kablosuz olarak veri transferini gerçekleştireceğiz.
Verici Yazılımı:
#include <SPI.h> #include "RF24.h" int msg[1]; //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8 RF24 radio(8,7); const uint64_t pipe = 0xE8E8F0F0E1LL; int potpin = 0; int val; void setup(void){ radio.begin(); radio.openWritingPipe(pipe); } void loop(void){ val = analogRead(potpin); val = map(val, 0, 1023, 0, 179); msg[0] = val; radio.write(msg, 1); }
Alıcı Yazılımı:
#include <Servo.h> #include <SPI.h> #include "RF24.h" Servo myservo; //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8 RF24 radio(8,7); const uint64_t pipe = 0xE8E8F0F0E1LL; int msg[1]; void setup() { myservo.attach(9); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening(); } void loop() { if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); myservo.write (msg[0]); } } }
Nrf24l01 modülü veri okuduğunda hangi pin den bu veriyi bı LED e aktarabilirim. Yani mesele Arduino ya bir kodu yüklerken rx tx ledleri yanıp sönüyor ya onun gibi verinin alındığını haber etmesi için bir LED yakmak istiyorum ama Arduino kullanarak değil direk nrf24l01 den mümkün mü bu Ve veride bir kayıp veya hata oluşturur mu
abi kafayı yicem bu konularda yeniyim de şu MISO MSI IRQ bunlar ne ya
modül pın bağlantıları dediğin fotodaki kısaltmaların adı ne
nrf24l01 ile uzaktan kumandalı araba yapımını da yapabilirmisiniz
selamlar,alıcı tarafında sıkıntı yaşıyorum potansiyometre değerlerini verici serial portunda düzgün okuduğunu gözlemliyorum ancak alıcıya bilgiler sıfır olarak iletiliyor. Adaptör modülü hatta yeni nrf24ler bile aldım ama değişen olmadı yardımcı olabilirmisiniz?
Servo alıcı kodu kısmında 20. Satırda hata veriyor yardımcı olurmusunuz
nrf24l01 3.3 voltla çalışıyor vcc pinine 3.3 volt bağlamışsınız fakat arduino nun diğer pinleri (7, 8, 11, 12, 13 pinleri) 5 voltla çalışıyor . Bu sıkıntı olmuyor mu modül için?
Selam hocam ben iki tane robotun birbirleriyle haberlesmesini saglamaya çalışıyorum ama pin sayisi yeterli degil ne yapmaliyim bilen varsa yardimci olsun sensor motor surucu derken nrf24 icin yer kalmadi pin yerine rx tx i kullanabilirmiyim
Selam Hocam nrf ile en fazla kac byt lik veri gönderilir?
Hocam Çok faydalı oldu teşekkürler ,
Uyguladım çalışıyor,
servo hareketini Hc06 ilede cepten hareket vermek istiyorum
normalde Hc06 ile hareket eden bir tekne yaptım çalışıyor ,
Nrf 24 ile mesafe uzatma yapacağım,
program konusunda yardımcı olabilirmisiniz,
1 uF lık kondansatör kullanarak çalıştırdım. Kondansatörsüz çalıştıramadım.String gönderebilmek istiyorsanız aynı veriyi en az 5 kez belki de daha fazla göndermeniz lazım çünkü çok fazla veri kaybı oluyor. Bunu yaparken de verici koduna bir for loop eklemeniz gerekecek. alıcı için ise kısa bir filtre kodu yazmanız lazım. Veri aktarım hızı düşse de veri kaybı olmuyor. Kolay gelsin.
Visitor Rating: 5 Stars
Çalışıyor kondansatörü bağlayınca. 47uf bağladım oldu sonunda. 2 uno kullandım.
Visitor Rating: 5 Stars
Visitor Rating: 5 Stars
void value not ignored as it ought to be HATASI VERİYOR
done = radio.read(msg, 1); CÜML5SİNİN HATALI OLDUGUNU GOSTERİYOR YARDIMCI OLURSANIZ COK SEVİNİRİM.ŞMDİDEN TEŞEKKÜRLER.
RF-24-master.zip teki dosyayı yalın bir şekilde arduino kütüphanesine at
Merhaba ben de ayni hatayi alıyorum, acaba biz çözüm bulabildiniz mi
Visitor Rating: 5 Stars
ben aynısını yaptım bağlantıları defalarca kontrol etmeme rağmen yükleme başarılı oluyor ancak hiç tepki yok çalışmıyor 1 aydı uğraşıyorum almadığım malzeme kullanmadığım yol kalmadı allah rızası için yardım edin kafayı yemek üzreryim
🙁 🙁
Visitor Rating: 4 Stars
Visitor Rating: 1 Stars
Merhaba Hocam 1 Haftadır hemen hemen ugrasıyorum. nanoda sıkıntı yok gayet basarılı calısıyor. artı megadan nanoya verı aktarımındada sorun yok ama nanodan megaya verı aktarırken sorun yasıyorum bu sorunu nasıl cozebılırım bır bılgınız varmı acaba
kardeşim nolur banada yardım edin denemediğim yol kalmadı. Yardımını bekliyorum inanki memlekette bunu yapamayan tek kişi benimdir herhalde 🙁
emrahgulger@icloud.com
teşekkür ederim
maker.robotistan.com/nrf24l01-ile-uzaktan-kontrol/ emrah buradakileri aynen yap olur
malzeme listesii varmı
Merhabalar..
Ben projemde bu modülü kullanmayı planlıyorum fakat arduino değil de kartımı kendim tasarlıcam. Kendi tasarladığım kartla böyle birşey mümkün mü ? Mümkün ise hangi hangi entegreler ile haberleştirebilirim ? (Benim kullanacağım entegre PIC16F84a)
Yardım ederseniz sevinirim.
hocam merhabalar string ifadeyi örneğin “merhaba” ifadesini nrf24 ile nasıl gönderebiliriz.
Visitor Rating: 1 Stars
Visitor Rating: 2 Stars
Visitor Rating: 5 Stars
Visitor Rating: 5 Stars
Keşke servo motorların hrc05 ile baglantı seması da olsa
Visitor Rating: 5 Stars
İyi akşamlar. Bir verici 2 yada daha fazla alıcı olduğunda 2. Kanalı nasıl tanımlıyoruz. Yani mesaj 1 ise 1. Kanaldan , mesaj 2 ise 2. Kanaldan iletmek istiyorum. Yada tek kanal kullanıp 2 alıcı için farklı mesajlar mı göndermem gerekli.
Siz 6 ardunio haberleşebilir dediniz o nedenle soruyorum hepsi aynı kanalı kullanacaksa 6 dan daha fazla sayıda ardunio kullanabiliriz
BU PROJEDE NRF24L01 YERİNE KIZIL ÖTESİ KULLANIRSAK NASI OLUR YAZILIMI VE KURULUMU YARDIMCI OLABİLİRMİSİNİZ ÇOK ACİL LÜTFEN
kızılötesi alıcı ve verici seti alın. kütüphanedeki örnek koda göre butonlara servoların açılarını aktarın.
peki çook teşekkür ederim
Visitor Rating: 1 Stars
merhaba bu projeyi yapmaya çalışıyorum ama alıcı kodunda done hataveriyor sebebini söylermisiniz ?
Sorunu cozebildiniz mi bilemiyorum ama Setup altinda Serial.begin(9600); ekleyip done = satirinin ustune Serial.println(done); yazarak basit bir debug yapabilirsiniz. Cunku yukarida done bool olarak tanimlanmis. fakat anladigim kadari ile (kodu kullanmadigim icin bilemiyorum) radio.read(msg, 1) olarak farkli birsey set ediyor olabilir. Bu sekilde daha kolay cozum bulabilirsiniz.
Merhaba; bu yöntem ile arduino mega üzerinden matlab&simulink ‘e sensör üzerinden sinyal gönderebilir miyim?
Teşekkürler.
simulink serial uzerinden yada baska bir uygulama uzerinden veri alabiliyor ise mumkun.
Bu sistem ile PC ye bagli serial porta gonderdiginiz verileri herhangi bir programlama dili ile okuyup simulink e anlayacagi mesajlari gonderebilirsiniz.
Merhaba; bu sistemle arduino mega üzerinden matlab&simulink ‘e veri aktarabilir miyim?
Teşekkürler.
merhaba sezgin buna benzer bir proje üzerine çalışıyorum yapmak istediğim butona basıldığında servo 90 derece dönsün tekrar basıldığında 0 dereceye geri gelsin bir iki deneme yaptım fakat sonuç alamadım baştaki kalıp haberleşme programına nasıl bi eklenti yapmalıyım yardım edersen sevinirim.
verici tarafinda butona basiminizda sizin anlayacaginiz bir mesaj olusturabilirsiniz (RF_motor_turn) gibi. bu mesaji aliciya gonderip hangi yontem akliniza yatar ise o yontem ile gelen mesaji karsilastirip motora donme adimi islemini yaptirabilirsiniz. Servolarda kullanilan libraryler onemli. Kiminde basit komutlar ile donme saglarken en son detayli calisma yaptigim bir library de 0.1 tam tur 0.01 yarim tur 0.001 ceyrek tur mesajlari idi. Bunada dikkat etmeniz gerek.
Merhaba benim sorunum şu alıcı verisi olarak çalıştırıyorum sıkıntı yok fakat ben bir cihazı hem alıcı hem verici yapmak istiyorum. Yardımlarınızı bekliyorum.
pa antenli ile sıradan nrf arasında hiçbir kullanım farkı var mı?
ben sorunsuz bir sekilde antensizi kullanıyorum ama antenli aynı devrede calısmıyor
Kardeşlerim agabi lerim bir ricada buluncam, bir pir hareket sensör ile iki adet nrf24lo1 arasında led di nasıl çalıştıra biliris kodu nasıl yaza biliris bilen varmı ( sinallanis@hotmail.com )
Merhaba nrf24rl01 adaptörü olmadan kullanabilir miyiz nrf2rl01 i teşekkürler acil lütfen!
Ben 2 servo ve
1 motor kullanmak istiyorum
Ne yapmaliyim
hocam çok teşekkür ederim uzun zamandan beri uğraşıyordum bir türlü eşleşme sağlayamıyordum…sonunda önceki kütüphaneleri sildim verdiğin linkten indirdim. sadece her iki nrf24 ün vcc ile GND arası 47 uf lik kondansatör bağladım. kondansatör bağlı olmayınca çalışmıyor..HARCADIĞIN EMEK İÇİN TEŞEKKÜRLER…
Her yerde farklı değerlerde kondansatör söyleniyor, 2.2, 3.3, 10, 20, 100 uf lik kondansatörler bağladım, hiç biriyle çalıştıramadım. İki adet arduino var biri orjinal diğeri çin malı. Her ikisinde de çalışmıyor. Başka hiç bir işle uğraşamaz oldum şunu çalıştırana kadar.
bende faklı uno lar vardı çalışmadı , her ikisini aynı yapınca çalıştı
bir wireless module (Nrf24l01) takılı arduino uno ile bilgisayar arasında kablosuz veri aktarımı yapılabilir mi ? eğer yapılırsa nasıl olacağını anlatabilir misiniz ? alıcı arduino, verici pc olacak, ya da verici arduino alıcı pc olacak. wifi üzerinden. bu verileri okumak için de pc de c# programını kullanmayı düşünüyorum.
Yapabilirsin. Buradaki projeye bakarsan yardımcı olacaktır. http://www.robimek.com/arduino-ve-visual-basic-ile-rf-uzerinden-sicaklik-nem-olcumu/
abi birden fazla değer okumak istiyorum nasıl değişiklikler yapmalıyım
Selamın aleyküm
Aynı projeye ek olarak pot un yanına PIR sensörü; servo nun yanına da Led bağlayarak aynı zamanda PIR ile Led i kontrol etmek istiyorum.
Programı yazdım hata yok gibi ;
Led yanıyor ama Servo yu kontrol edemiyorum.
Nrf gnd ile Vcc arasinda 3,3 mikrofarad bağlı sorun nerde olabilir? TEŞEKKÜR EDERİM SIMDIDEN
Verici kısım sinyal gönderiyor fakat alıcı kısım sinyali almıyor, kapasitede kullandık fakat sadece sinyal gönderiyor alıcı kısım bu bilgileri almıyor sebebi ne olabilir.Teşekkürler
hocam servo kontrolünde sadece yazdığınız kodlar yeterli mi yukarıda bahsettiğiniz kütüphaneyi indirdikten sonra ne yapacağız ?
nrf kütüphanesi indirip arduinonun kütüphanesine ekleyin. servo kütüphanesi zaten mevcut. bu kadar.
merhaba bende sindaki kodda bir probem cikiyor yardimci ola bilirmisiniz?
Arduino: 1.6.8 (Windows 10), Board: “Arduino Nano, ATmega328”
C:UsersAyselDocumentsArduinoalici2alici2.ino: In function ‘void loop()’:
alici2:21: error: void value not ignored as it ought to be
done = radio.read(msg, 1);
^
exit status 1
void value not ignored as it ought to be
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
meraba hocam ben nrf ile iki verici bi alici sistemi yapmak istiyorum ve hazır kodların birçoğunu denedim yani şöyle söylemeliyim bir göndericide bi buton diğer göndericide bi buton alıcıda ise bir led bu iki butonunda görevi o ledi yakmak ben bunu bir gönderi bir alıcı şeklinde yaptığımda gayet güzel çalışırken iki gönderici bir alıcı yaptığımda sistem sapıtıyor led yan-sön yapıyor. bu arada iki göndericininde kodları birebir aynı ne yapmamı önerirsiniz.
2.ci göndericinin gönderdiği mesajı değiştir ve ayrı mesajara aynı görevi yukle
Merhaba nrf24l01 kullanarak haberleşme yapmak istiyorum. iki adet mevcut. birine uno birine mega bağlayarak alıcı ve verici kodlarını attım. ancak mesela vericiden ‘selam’ yazdırıp alıcıdan görmek istiyorum. nasıl yapılacağını anlamadım. daha sonrasında vericiye termometre bağlayıp uzaktan okuma yaptıracağım.
merhabalar benim isteğim arduinoma bağlı sensörün verilerini kablosuz olarak bilgisayarımda görmek .
daha önceden seri port için bilgisayarda bir arayüz programında görmüş olduğum verileri şimdi kablosuz görmek istiyorum ne yapmam gerekiyor.
Bu projeye bakabilirsiniz. http://www.robimek.com/arduino-ve-visual-basic-ile-rf-uzerinden-sicaklik-nem-olcumu/
i need a code of 2 pot and 2 servo serial communication between two ardunio via bluetooth or nrf24l01 module plzzzzz help me
sample project: http://www.robimek.com/potansiyometre-ile-bluetooth-uzerinden-servo-motor-kontrolu/
Hocam 2 arduino uno yu , nrf24l01 ile haberleştirmeye çalışıyoruz. Alıcı olarak kullandığımız arduinonun RX ışığı yanıyor fakat verici olarak kullandığımız arduino nun yazılımı sırasında TX ışığı anlık yanıyor ve sönüyor. 2 farklı bilgisayar kullanıyoruz ve kapasiteleride kullandık fakat bi değişiklik olmadı. Sorun nedir acaba teşekkürler.
Merhaba.
Arduino megaya nrf24l01 ve as kart modülü bağlamam gerekiyor ve ayni anda veri almam gerekiyor. Fakat nrf24l01 de kullandığım pinler ile ad kart modülünde kullandığım pinler ayni yani ikisindede MOSİ MİSO CSN ve SS pinlerini kullanıyorum ad kart modülünü kullanmadan nrfden veri aliyorum veya nrf olmadan sd karttan veri alabiliyorum fakat ikisini ayni anda kullandigimda ne sd karttan veri alabiliyorum nede nrfden. Bunun icin bi çözümünüz varmi ?
Teşekkür ederim.
Normalde spı ile haberleşen iki farklı modül aynı spı pinlerinde çalışır. fakat bazı kütüphanelerde çakışma olduğundan çalışmıyor.
nasıl yani kutuphanelerdekı cakısmayı bıraz acarmısın. SPI ın kendı kutuphanesınde mı yoksa nrf24l01 ve sd kartın kutuphanesınde tam olarak anlamadım?
Merhaba,
Kusura bakmayın sizin sorunuza yanıt veremeyeceğim ama size başka bi sorum olacak. Aynı pinleri kullanan modülleri nasıl birlikte bağlayabildiniz board üzerinde aktardıgımızda aynı pini farklı 2 modül kullandıgı için sorun cıkıyor acaba bi entegre veya başka bişey mi kullandınız?
Merhaba hocam,
NRF24L01 kullanılarak çift yönlü haberleşmenin nasıl yapılacağı ile ilgili bilginiz var mı?
Merhaba
Arduino nano ile headtracker yaptım. Ancak bunu wireless olarak yapmak istiyorum. O zaman burda mantıkla hareket edersek 2 adet nano’ya mı ihtiyacım olacak.
RF ile yapmak mümkün değil mi?
rf ile yapabilirsiniz mümkün.
Arduinoları hem nrf24l01 ile haberleştirirken hemde C# arayüzü kullanarak komut vermek istiyorum. Bu durumda iki seri haberleşme olacak. Arduinolar arasında ve C#ile arduino arasında. Bu durumda sıkıntı çıkarmı.
Sorun çıkmaz.
Hocam kolay gelsin;
Kodu projemde kullandığımda aynen şöyle bir hata mesajı alıyorum
” void value not ignored as it ought to be ” ve bir türlü çözemedim durumu.
İşin garip kısmı sadece sizin paylaşmış olduğunuz kodu yüklemeye çalışıyorum Arduino’ya yine aynı hatayı alıyorum
Kodların hepsi sorunsuz derleniyor. Arduino programınızda sorun olabilir. Başka kütüphaneler eklemiş isen bazı kütüphaneler birbirleriyle aynı kodda derlenemiyor.
Öncelikle böyle faydalı bir yazı için teşekkür ederim.Bir arduinoya 2 adet NRF24L01 bağlamak mümkün mü?
SPI haberleşme yaptığından arduino larda standart pinler bulunur ve bu pinlerden ikişer tane vardır. Yazılımda csn ve ce pinlerini farklı tanımlayıp, diğer (miso,mosi,sck) pinlerini de SPI pinlerine takarsan bağlantı kurabilirsin. Lakin 2 nrf modül kullanmaktansa, bir modül hem alıcı hem verici olarak çalıştığı gibi, aynı anda birden fazla modülle haberleşebiliyor.
1. Spı pinleri digital pinlerde peki 2. pinler nerede bu konuda yardımcı olabilir misiniz ?
Teşekkürler.
Hocam iyi günler ben uno ve mega ile denedim olmadı sorun kondansatör olabilir mi? 2 tane kondansatör alcam bunların değeri tam olarak nedir ve nasıl lehimlenecek bilgi verebilir misiniz? Yine olmazsa yeni bir uno alıp uno+uno ile deneyeceğim.
Selçuk kodu yeniledim. rf24 kütüphanesi ile yaptım. Diğer kütüphane ile olan kodu çoğu arkadaş çalıştırırken sorun yaşamış. Bu şekilde sorun yaşamassın.
yukarıdaki cevabı yeni gördüm
KAYHAN 28 ŞUBAT 2016
Mega da bağlantı pinleri farklı
CE = 9
CSN= 53
SCK = 52
MOSI= 51
MISO = 50
Programda da gerekli değişiklikleri yaparsan sorun çözülür.
bir de bu kodla deneyim olmazsa şu kondansatörden sanırım
merhaba ben de bu modülleri kullanmaya yeni başladım ve bende sadece pcb antenli kısa mesafe nrf24l01 modellerinden var ve pahalı olduğu için 2 tane antenli model almak şimdilik fazla masraflı kaçıyor onun için merak ediyorum acaba bir tane harici antenli model alıp verici olarak kullansam ve alıcı olarak ta pcb antenli model kullansam(tersi de olabilir) iletişim sağlanabilir mi ve de mesafe artar mı? elinde bu harici antenli modellerden olanlar varsa bu soruma bi cevap bulabilirler mi?ona göre projelerime devam edeceğim çünkü? şimdiden çok teşekkür ederim ve bu arada yazı çok güzel olmuş bilgilerini paylaşan herkese teşekkürler 🙂
hocam yukardakı kodlardan şu şekilde bir kod çıkardım fakat programı yükledim pottan okuduğum değer alıcı kısmında alıp serialden okuyorum . arduinalardan birinin enerjisini kesip tekrar verdiğimde program birdaha çalışmıyor, ancak arduinoya başka bir program yulleyip üzerine tekrar bu programı yükleyince çalışıyor neden böyle bir sorun yaşıyorum ? arduino nano kullandım mega kullandım ikisndede aynı sorunu yaşadım elimde 5 adet nrf var hepsiylede aynı oluyor
kodlar şu şekilde
#include
#include
nRF24L01p verici(10,9);
/* CSN – > 7, CE -> 8 olarak belirlendi */
int pot=A0;
int val;
int pos;
int pos2;
int button1;
int button2;
int SW1 = 7;
int SW2 = 6;
void setup() {
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
/* SPI başlatıldı */
verici.channel(90);
verici.TXaddress(“kontrol”);
verici.init();
/* Verici ayarları yapıldı */
}
void loop() {
val = analogRead(pot);
Serial.println(val);
verici.txPL(val);
boolean gondermedurumu = verici.send(FAST);
delay(500);
#include
#include
nRF24L01p alici(10,9);
/* CSN – > 7, CE -> 8 olarak belirlendi */
int LED1 = 3;
int LED2 = 5;
int LED3 = 13;
void setup() {
Serial.begin(9600);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
/* SPI başlatıldı */
alici.channel(90);
alici.RXaddress(“kontrol”);
alici.init();
/* Alıcı ayarları yapıldı */
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
int deger;
int deger2;
int deger3;
void loop() {
while (alici.available()) {
/* Modülden veri geldiği sürece while devam edecek */
alici.read();
alici.rxPL(deger);
Serial.print(“1. data =”);
delay(10);
Serial.println(deger);
delay(10);
}
}
SPI setup kısmında başlatılıyor yani bir modülü kapatıp diğer modülü de kapatmaz isen kapattığın modül çalıştığında diğer modül setup kısmına dönmediğinden iletişime geçemiyor.
hocam tam anlayamadım. spı kısmını nerede yazmamız gerekiyor ?
yukardaki paylaşmış olduğunuz program aslında bu. enerji kesilip geri verildiginde çalışması gerekmezmi ? bunun için nasıl bir düzenleme yapmam gerekir
Bir arduinoyu kapatıp açtığında setup çalışır ve etrafındaki modüllere bulur fakat önceki bağlandığı diğer arduinoyu kapatıp açmaz ise o arduinonun setup kısmı çalışmayacağından birbirlerini göremezler. yani bir arduinoyu kapatıp açtığında diğer arduinoyu da kapatıp açman gerekir.
hocam anladım fakat bu uygulamamda dediğiniz gibide yapsam çalışmıyor birdaha. ikisine aynı anda enerji veriyorum yine tepki yok. farklı bir program yükleyip çalıştırıp, tekrar bu programı çalıştırdığım zaman çalışıyor düzğün bir şekilde.
ben bir kumanda yapmak istiyorum butona basıldığı zaman arduinoya enerji verip alıcıya sinyal göndermesi lazım bil ömrünü korumak için. bu bahsettiğiniz şekilde olduğu zaman kumanda olmaz ozaman.
rf24.h kütüphanesinin kullanıldığı bir program var o program düzgün çalışıyor fakat ondada hem dijital hem analog data gönderemiyorum.
Sorun kütüphaneden de kaynaklı olabilir bilmiyorum. Ama amacın pilin erken bitmesini istememek ise buton kullanmak yerine arduinoyu uyutabilirsiniz. Uyku modunda yok denecek kadar az akımla çalışmaya devam eder.
peki zor değilse kodum üzerinde oynama yapıp tekrardan mail adresime yollarmısınız ?? bitirme projem bu benim ve zorlandım bayağı
Merhaba böyle bir hata alıyorum nasıl düzeltirim hiç birşekilde iletişim sağlayamıyorum aynen kod yazıyorum …
C:\Users\ASUSPC\Documents\Arduino\NRF24_ALICI_1\NRF24_ALICI_1.ino:13:27: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
alici.RXaddress(“kontrol”);
^
kütüphane eklediniz mi ?
hocam bende aynı hatayı alıyorum sebebınını bulamadım kutuphaneler de ekli.C:\Users\y\Desktop\verici\verici.ino: In function ‘void setup()’:
C:\Users\y\Desktop\verici\verici.ino:18:27: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
verici.TXaddress(“Hasbi”);
^
bu hata neden kaynaklanabılır baska
Merhabalar, ultrasonik sensör, servo motor ve processing kullanarak bir radar yaptım. Şimdi de sensör ile ölçtüğüm değeri nrf modülü ile diğer arduinoya gönderip proccesing de radarımı aynı şekilde çalıltırmak istiyorum ama sorunlar yaşıyorum irtibada geçebilirsek sevinirim
Buraya yazın yardımcı olalım.
#include
#include
#include “RF24.h”
//vericiiii
Servo leftRightServo;
unsigned long pulseTime = 0; // sensör pulse süresi
unsigned long distance = 0; // mesafe değişkeni
const int numReadings = 10;
int index = 0; //Anlık okunan değerlerin indeksi
int total = 0; // Toplanan okunan değerlerin indeksi
int average = 0; // Ortalama
int leftRightPos = 0;
int msg[1];
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
const int trig = 2;
const int echo = 3;
int potpin = 0;
int val;
int sure ;
int mesafe ;
void setup(void){
leftRightServo.attach(9);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
radio.begin();
radio.openWritingPipe(pipe);
}
void loop(void){
for(leftRightPos = 0; leftRightPos < 180; leftRightPos++) {
leftRightServo.write(leftRightPos);
for (index = 0; index= numReadings) {
index = 0;
total = 0;
}
Serial.print(“X”); // processingin tanıması için önce X stringini gönder
Serial.print(leftRightPos); // anlık servo açısı
Serial.print(“V”); // ikinci değer için V yolla
Serial.println(average); // okunan ortalama sensör değeri
}
//servo sağdan sola git
for(leftRightPos = 180; leftRightPos > 0; leftRightPos–) {
leftRightServo.write(leftRightPos);
for (index = 0; index= numReadings) {
index = 0;
total = 0;
}
Serial.print(“X”);
Serial.print(leftRightPos);
Serial.print(“V”);
Serial.println(average);
}
}
——————————
#include
#include “RF24.h”
//alıcıııı
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
void setup()
{
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(msg, 1);
Serial.print (msg[0]);
}
}
}
—————————
import processing.serial.*; // import serial library
Serial myPort; // declare a serial port
float x, y; // variable to store x and y co-ordinates for vertices
int radius = 350; // set the radius of objects
int w = 300; // set an arbitary width value
int degree = 0; // servo position in degrees
int value = 0; // value from sensor
int motion = 0; // value to store which way the servo is panning
int[] newValue = new int[181]; // create an array to store each new sensor value for each servo position
int[] oldValue = new int[181]; // create an array to store the previous values.
PFont myFont; // setup fonts in Processing
int radarDist = 0; // set value to configure Radar distance labels
int firstRun = 0; // value to ignore triggering motion on the first 2 servo sweeps
/* create background and serial buffer */
void setup(){
// setup the background size, colour and font.
size(750, 450);
background (0); // 0 = black
myFont = createFont(“verdana”, 12);
textFont(myFont);
// setup the serial port and buffer
myPort = new Serial(this, Serial.list()[0], 9600);
println(Serial.list());
myPort.bufferUntil(‘\n’);
}
/* draw the screen */
void draw(){
fill(0); // set the following shapes to be black
noStroke(); // set the following shapes to have no outline
ellipse(radius, radius, 750, 750); // draw a circle with a width/ height = 750 with its center position (x and y) set by the radius
rectMode(CENTER); // set the following rectangle to be drawn around its center
rect(350,402,800,100); // draw rectangle (x, y, width, height)
if (degree >= 179) { // if at the far right then set motion = 1/ true we’re about to go right to left
motion = 1; // this changes the animation to run right to left
}
if (degree <= 1) { // if servo at 0 degrees then we're about to go left to right
motion = 0; // this sets the animation to run left to right
}
/* setup the radar sweep */
/*
We use trigonmetry to create points around a circle.
So the radius plus the cosine of the servo position converted to radians
Since radians 0 start at 90 degrees we add 180 to make it start from the left
Adding +1 (i) each time through the loops to move 1 degree matching the one degree of servo movement
cos is for the x left to right value and sin calculates the y value
since its a circle we plot our lines and vertices around the start point for everything will always be the center.
*/
strokeWeight(7); // set the thickness of the lines
if (motion == 0) { // if going left to right
for (int i = 0; i = 0; i–) { // draw 20 lines with fading colour
stroke(0,200-(10*i), 0); // using standard RGB values, each between 0 and 255
line(radius, radius, radius + cos(radians(degree+(180+i)))*w, radius + sin(radians(degree+(180+i)))*w);
}
}
/* Setup the shapes made from the sensor values */
noStroke(); // no outline
/* first sweep */
fill(0,50,0); // set the fill colour of the shape (Red, Green, Blue)
beginShape(); // start drawing shape
for (int i = 0; i < 180; i++) { // for each degree in the array
x = radius + cos(radians((180+i)))*((oldValue[i])); // create x coordinate
y = radius + sin(radians((180+i)))*((oldValue[i])); // create y coordinate
vertex(x, y); // plot vertices
}
endShape(); // end shape
/* second sweep */
fill(0,110,0);
beginShape();
for (int i = 0; i < 180; i++) {
x = radius + cos(radians((180+i)))*(newValue[i]);
y = radius + sin(radians((180+i)))*(newValue[i]);
vertex(x, y);
}
endShape();
/* average */
fill(0,170,0);
beginShape();
for (int i = 0; i = 360) {
stroke(150,0,0);
strokeWeight(1);
noFill();
for (int i = 0; i 35 || newValue[i] – oldValue[i] > 35) {
x = radius + cos(radians((180+i)))*(newValue[i]);
y = radius + sin(radians((180+i)))*(newValue[i]);
ellipse(x, y, 10, 10);
}
}
}
/* set the radar distance rings and out put their values, 50, 100, 150 etc.. */
for (int i = 0; i <=6; i++){
noFill();
strokeWeight(1);
stroke(0, 255-(30*i), 0);
ellipse(radius, radius, (100*i), (100*i));
fill(0, 100, 0);
noStroke();
text(Integer.toString(radarDist+50), 380, (305-radarDist), 50, 50);
radarDist+=50;
}
radarDist = 0;
/* draw the grid lines on the radar every 30 degrees and write their values 180, 210, 240 etc.. */
for (int i = 0; i = 300) {
text(Integer.toString(180+(30*i)), (radius+10) + cos(radians(180+(30*i)))*(w+10), (radius+10) + sin(radians(180+(30*i)))*(w+10), 25,50);
} else {
text(Integer.toString(180+(30*i)), radius + cos(radians(180+(30*i)))*w, radius + sin(radians(180+(30*i)))*w, 60,40);
}
}
/* Write information text and values. */
noStroke();
fill(0);
rect(350,402,800,100);
fill(0, 100, 0);
text(“Açı: “+Integer.toString(degree), 100, 380, 100, 50); // use Integet.toString to convert numeric to string as text() only outputs strings
text(“Mesafe: “+Integer.toString(value), 100, 400, 100, 50); // text(string, x, y, width, height)
fill(0);
rect(70,60,150,100);
fill(0, 100, 0);
text(“Göstergeler:”, 100, 50, 150, 50);
fill(0,50,0);
rect(30,53,10,10);
text(“İlk Tarama”, 115, 70, 150, 50);
fill(0,110,0);
rect(30,73,10,10);
text(“İkinci Tarama”, 115, 90, 150, 50);
fill(0,170,0);
rect(30,93,10,10);
text(“Ortalama”, 115, 110, 150, 50);
noFill();
stroke(150,0,0);
strokeWeight(1);
ellipse(29, 113, 10, 10);
fill(150,0,0);
text(“Hareket”, 115, 130, 150, 50);
}
/* get values from serial port */
void serialEvent (Serial myPort) {
String xString = myPort.readStringUntil(‘\n’); // read the serial port until a new line
if (xString != null) { // if theres data in between the new lines
xString = trim(xString); // get rid of any whitespace just in case
String getX = xString.substring(1, xString.indexOf(“V”)); // get the value of the servo position
String getV = xString.substring(xString.indexOf(“V”)+1, xString.length()); // get the value of the sensor reading
degree = Integer.parseInt(getX); // set the values to variables
value = Integer.parseInt(getV);
oldValue[degree] = newValue[degree]; // store the values in the arrays.
newValue[degree] = value;
/* sets a counter to allow for the first 2 sweeps of the servo */
firstRun++;
if (firstRun > 360) {
firstRun = 360; // keep the value at 360
}
}
}
bazı eksikler var ama tamamlanmalı:)
#include .
#include
#include “RF24.h”
//vericiii
int msg[1];
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
// Ultrasonik Sinyal pinleri
const int trigPin = 3;
const int echoPin = 2;
long duration;
int distance;
Servo myServo;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
myServo.attach(9); // Servo motor sinyal pini
radio.begin();
radio.openWritingPipe(pipe);
}
void loop() {
// 15 derece ile 165 derece arasında dön
for(int i=15;i15;i–) {
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(“,”);
Serial.print(distance);
Serial.print(“.”);
}
}
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
msg[0] = distance;
radio.write(msg, 1);
return distance;
}
————
#include
#include “RF24.h”
//alıcıı
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
void setup()
{
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(msg, 1);
radio.write (msg, 0);
}
}
}
——–
import processing.serial.*; // kütüphane entegresi
import java.awt.event.KeyEvent;
import java.io.IOException;
Serial myPort;
String angle=””;
String distance=””;
String data=””;
String noObject;
float pixsDistance;
int iAngle, iDistance;
int index1=0;
int index2=0;
PFont orcFont;
void setup() {
size (1366, 700);
smooth();
myPort = new Serial(this,”COM5″, 9600); // Com portunu seçin
myPort.bufferUntil(‘.’);
}
void draw() {
fill(98,245,31);
noStroke();
fill(0,4);
rect(0, 0, width, 1010);
fill(98,245,31); // yeşil renk
drawRadar();
drawLine();
drawObject();
drawText();
}
void serialEvent (Serial myPort) {
data = myPort.readStringUntil(‘.’);
data = data.substring(0,data.length()-1);
index1 = data.indexOf(“,”);
angle= data.substring(0, index1);
distance= data.substring(index1+1, data.length());
iAngle = int(angle);
iDistance = int(distance);
}
void drawRadar() {
pushMatrix();
translate(683,700);
noFill();
strokeWeight(2);
stroke(98,245,31);
// draws the arc lines
arc(0,0,1300,1300,PI,TWO_PI);
arc(0,0,1000,1000,PI,TWO_PI);
arc(0,0,700,700,PI,TWO_PI);
arc(0,0,400,400,PI,TWO_PI);
// draws the angle lines
line(-700,0,700,0);
line(0,0,-700*cos(radians(30)),-700*sin(radians(30)));
line(0,0,-700*cos(radians(60)),-700*sin(radians(60)));
line(0,0,-700*cos(radians(90)),-700*sin(radians(90)));
line(0,0,-700*cos(radians(120)),-700*sin(radians(120)));
line(0,0,-700*cos(radians(150)),-700*sin(radians(150)));
line(-700*cos(radians(30)),0,700,0);
popMatrix();
}
void drawObject() {
pushMatrix();
translate(683,700);
strokeWeight(9);
stroke(255,10,10); // kırmızı renk
pixsDistance = iDistance*22.5;
// 40 cm ye kadar ölçer
if(iDistance40) {
noObject = “Out of Range”;
}
else {
noObject = “In Range”;
}
fill(0,0,0);
noStroke();
rect(0, 1010, width, 1080);
fill(98,245,31);
textSize(25);
text(“10cm”,800,690);
text(“20cm”,950,690);
text(“30cm”,1100,690);
text(“40cm”,1250,690);
textSize(40);
text(“Object: ” + noObject, 240, 1050);
text(“Angle: ” + iAngle +” °”, 1050, 1050);
text(“Distance: “, 1380, 1050);
if(iDistance<40) {
text(" " + iDistance +" cm", 1400, 1050);
}
textSize(25);
fill(98,245,60);
translate(390+960*cos(radians(30)),780-960*sin(radians(30)));
rotate(-radians(-60));
text("30°",0,0);
resetMatrix();
translate(490+960*cos(radians(60)),920-960*sin(radians(60)));
rotate(-radians(-30));
text("60°",0,0);
resetMatrix();
translate(630+960*cos(radians(90)),990-960*sin(radians(90)));
rotate(radians(0));
text("90°",0,0);
resetMatrix();
translate(760+960*cos(radians(120)),1000-960*sin(radians(120)));
rotate(radians(-38));
text("120°",0,0);
resetMatrix();
translate(840+900*cos(radians(150)),920-960*sin(radians(150)));
rotate(radians(-60));
text("150°",0,0);
popMatrix();
}
buna bakarsanız seviinirim diğeri hatalı
merhaba hocam, adını ve kanal numarasını bilmediğimiz bir alıcının (server’ın) bilgilerini nasıl öğreniriz. verici kodlarını ona göre düzenleyip haberleştireceğim.
tüm kanalları tarama, hepsine bilgi gönderme gibi durum mümkünmü. aslına kanal yetmiyor isim de gerekli sanırım ama bir fikir alayım dedim..
tşk
şöyle bir sıkıntım var hocam,
vericiyi nano ile yaptım alıcıyı mega ile yaptım. sistemin ikiside bilgisayar usb den çalışıyor.
problem şu ;
#include “RF24.h” kütüphanesinin kullanıldığı bir program var, sisteme bu programları yüklediğim zaman sorunsuz şekilde nrf çalışıyor. ardından sizin bu programı yüklüyorum sistem yine çalışıyor fakat enerjiyi kesip tekrar açtıgım zaman alıcı birdaha çalışmıyor. taki başka bir program yükleyip sonra üzerine tekrar sizin programı yükleyince çalışmaya devam ediyor. böyle bir saçmalığı çözemedim
Sorun şundan kaynaklanıyor. alıcının enerji kesip çalıştırdığında vericiyi de yeniden çalıştırman lazım. Çünkü programın setup kısmı çalışması lazım ki birbirlerini eşleyebilsinler. Bu şekilde deneyin sorun olursa yazın.
Hayır rf24.h kütüphanesini ekle oradaki örnek kodlara bakıp öyle dene
Sezgin hocam merhaba,ben vericideki pot değerini yani anolog değeri lcd ekranda görmek istiyorum,yani alıcıya servo bağlamıcam,kod bilgim fazla yok alıcı kodda lcd ekran için hangi satırları eklemem gerekiyor acaba?
lcd kütüphanesini ekleyerek bu şekilde veriyi yazdır.
LCD.print(deger);
Lcd ile örnek uygulamaya buradan bakıp yapabilirsin >> http://www.robimek.com/bluetooth-uzerinden-lcd-ekrana-veri-aktarma/
Hocam bu projeyi yapmadan bu msjı yazmıştım,fakat bu servo kontrol projesini bir türlü çalıştıramadım,defalarca kontrol ettim,kondansatör bağladım nafile..Verici serial monitörde değerleri görebiliyorum fakat alıcıdaki servoda hicbir hareket yok,elimde yedek olduğu için nrf modulu-unoyu ve servoyu değiştirdim yine olmadı,arduino 1.6.7 versiyonu kullanıyorum,başkada ne yapabilirim bilmiyorum.
rf24.h kütüphanesiyle dene ama fonksiyonları değiştirmen gerekecek.
fonksiyon derken hocam anlamadım,kod bilgim çok yok,nrf kütüphanesini komple kaldırıp rf yi mi koyayım
hocam char = değer ; neden kullandık zaten val degeri vardı vericide
ikisinde de veri iletişim türü char olarak yapıldı. ikisine de char tanımlaması yapman lazım.
Merhabalar. Öncelikle anlatımınız çok kaliteli ve açıklayıcı olmuş, bunu belirtmek istiyorum. nRF24L01 modülün kullanımına dair iki sorum olacak. öncelikle bahsettiğiniz 3.3 uf ve 10 uf arasında değerlerde kondasatörlerin vcc ve gnd pinleri için kullanılması gerektiğini duymuştum, ama sebebini bilmiyorum, bunu açıklayabilirseniz çok memnun olurum. Bir diğer sorum da aynı anda iki joystickin de verisini gönderemez miyim bu modüller aracılığyla? Çünkü bir joystickin tüm verisini (x ekseni, y ekseni, buton) rahatlıkla gönderebiliyorum fakat 2 joyistickin verisini aynı anda göndermeye çalıştığımda sadece birinin verisi gidiyor. joysticklerin hepsinin çalıştığından da eminim. Sorun ne olabilir sizce? Şimdiden ilginize teşekkürler…
Saygılarımla…
Konuralp DEMİR
stabil çalışma sağladığı için kondansatör ekleniyor. 4 veri göndermek için de 2 veri göndermede kodladığın gibi 4 veri ekleyebilirsin. Yani aynı şekilde göndermesi gerekir. Sorun yaşarsan nrf24l01p kütüphanesinde 0x02 array isimli örnek var oradan bakıp entegre et.
verici.txPL(pos);
Verici.txPL(pos2);
verici.txPl(pos3);
boolean gondermedurumu = verici.send(FAST);
Su sekilde birden fazla deger gonderebiliyorum sknti olmaz umarim ?
Soyle bir sikintim var ; alici ve vericiyi nano ile pc ye usb ile bagli ve yukardaki ornegi yukledigimde ilk etapta yukledim calismadi sonra bi ara yukledim alicidan serilade datalari gormeye basladim 1 saat kadar enerjiyi hic kapatmadim bu arada devreler board uzerine kurulu. Bi ara vericinin usb kablosunu cekip geri taktim alici bida sinyal alamadi devreye hic dokunmamistim. Enerji gidup gelince calismadi alici devre. Neden boyle bi sikinti yapar ki. Pic te defalrca rf uzerine denemelr yaptim hic bole sikinti yasamadim
Vcc ye yanlışlıkla 5v vermişseniz rf modülü bozar ve iletişim sağlanamaz. Diğer yandan gerilim değişkenliğinden ya da kablolarda temassızlık olabilir tekrar kontrol ediniz. Yine iletişim sağlanamaz ise modülün vcc ile gnd pinleri arasına 3.3 uF ile 10 uF arasında bir kondansatör yerleştirin.
hocam programı şuan çalıştırmdım nasıl oldu anlamadım,
bir sorum olacaktı verici.txPL komutuyla birden falzla değişken içerigini nasıl gönderebiliriz ve alabilriz?
transceiver modunda çalışma özelliği var yani hem alıcı hem de verici olarak aynı anda çalışıyor. yapman gereken aynı modüle hem alıcı hem de verici komutlarını girmek. Bir modül alıcı konumunda iken 6 farklı verici modülle haberleşebilir.Alıcı kısmın koduna vericilerin adreslerini girdiğinde haberleşme sağlanır.
merhaba, yukadaki kodları çalıştırımadım ama internet sitesindeki yazılım içerisinde radio kodları geçen programı yükleyince devrem çalışıyor aynı devreye sizin programı yükleyip pinleri buna göre bağlayınca çalıştırmadım ? sıkıntı ne olabilir
yazılımda çalışıyor devrenizde sorun olabilir
merhabalar, anlatımınız için teşekkürler. Peki bu modülleri android yazılımlı telefonlarla haberleştirmek mümkün mü?
android telefondan sadece bluetooth kablosuz iletişim sağladığından rf modülle bağlantı kurulamaz.
öncelikle teşşekkürler. 2 yönlü haberleşme ile ilgili çalışmanız varmı? mesala iki taraftada bir buton bir led var. butona basınca diğerinin ledi yanıyor karşı taraf başınca kendisinin ledi yanıyor.
transceiver modunda yani alıcı verici olarak çalışabiliyor. Örnekler kısmında transceiver örneği var onu incele
Anlatım ve yardımcı olma çabanızdan dolayı öncelikle teşekkürler. 1 tanesi alıcı olarak programlayıp diğer 30 tanesini verici olarak kullanabilirmiyim tek bir alıcı ile 30 tane vericiden bilgi toplamak istiyorum.
Bir alıcı maksimum 6 vericiden veri alabilir.
Merhaba, hiç deneme yaptınız mı maksimum mesafe nedir? Datasheet ve satıcılar 250 metre diyor ama mantıklı gelmedi bana? Birde nRF24L01 ve +PA olan modül tamamen aynı yazılım ve aynı mantıkla çalışıyor birinin PA diğerini normal kullanarak haberleştirme yapmamızda bir sorun var mıdır?
Mesafe denemesi yapmadım. İki modül de aynı mantıkla çalışır ve aynı değerle kullanabilirsiniz.
Sezgin bey nrf kütüphanelerinden hangisini denediysem olmuyor . Nrf çalışıp çalışmadığını anlayabileceğimiz bir yazılım yokmudur mesela sadece nano ve nrf bağlınolacak PC’den çalışıp calışmadını anlayacağız hepsi bu yardımcı olur musunuz
paylaşımızın ve desteğiniz için teşekkürler.
Rica ederiz. Sizler de maker hareketine katkıda bulunmak isterseniz bu projeleri kendi sosyal medya hesaplarınızdan paylaşarak, daha geniş kitlelere ulaşmasına katkı sağlayabilirsiniz.
Merhabalar bu ise yeni baslayan birisi olarak bir hayalim var ama kumanda olarak kullanmak istiyorum projemi. Bir adet aksonometre ve bir adet de joyctick arduino ve nrf24l01 aracılığı ile gerçekleştirmek istiyorum. yardımcı ola bilirmisiniz ?
merhaba, projenizi anlatın yardımıcı olayım.
Hocam, servo motor yerine brushless motor kullanabilir miyiz bu devrede? Kullanabilmek için ne değişiklik yapmamız gerekiyor?
pinleri high low yapman lazım normal motor sürme işlemi yani. fırçasız motor kullanman için esc de kullanman lazım
Abi, aynı kodu yükledim, kütüphaneyi indirdim verdiğin talimatları uyguladım ama karşıma bu sorun “Belirtilen dizin/zip dosyası geçerli bir kütüphane içermiyor.” çıktı. Farklı kütüphaneler indirmeme rağmen düzelmedi. Sorun nedir acaba yardımcı olabilir misin?
zipten çıkarıp eklemen lazım
Merhabalar;
Ben alıcı kısmı bir türlü çalıştıramadım. Vericide TX ledi yanıp sönüyor ve serial monitörde veri gidiyor gözüküyor. Ancak Alıcıda RX ledi hiç yanmıyor. Verici Uno, Alıcı ise Leonardo. Yerlerini değiştirerek de denedim yine sadece verici çalışıyor. Yardımcı olursanız sevinirim.
örnekteki servo kontrolünü yaptınız mı ?
farklı bilgisayrlar üzerinden mi haberleştirecez acaba tek bilgisayar üzerine 2 tane arduino bağladım bi türlü haberleştiremedim
aynı pc üzerinden haberleştirmek için farklı serial veri programları kullanmanız gerekir. Örneğin teraterm ile arduinonun serial monitörleri arasından haberleştirme yapabilirsiniz.
HC-SR04 mesafe sensöründen okuduğum bilgisi nrf24L01 modülü ile diğer arduinoya nasıl aktarırım… İlgilenirsenin sevinirim teşekkür ederim.
Sensöre ölçüm yaptırarak serial.print yapın.Örnekteki pos serailden print edildi. Sizde bu şekilde yapın
Hocam sorun herhalde başka bir yerde ilgilendiğiniz için ve yardımlarınız için teşekkür ederim
Rica ederim iyi çalışmalar
7.2 voltluk lipoyla adaptör girişinden yapıyorum
Vin pinine tak öyle dene dene liponun akımı fazla olursa adaptör girişinden sıkıntı olur
Hocam benim projede arduino pc ye bağlıyken sorunsuz çalışıyor ama alıcı kısmı bilgisayardan çıkartıp güç kaynağıyla beslediğim zaman haberleşme sağlanmıyor, önce pc den çalıştırıyorum sonra güç kaynağını açıyorum pc bağlantısını kesincede çalışmaya devam ediyor ama güç kaynağı ile açınca haberleşme sağlanamıyor.
Güç kaynağı yetersizdir veya vin pininde sıkıntı vardır. Beslemeyi nereden yapıyorsun ?
WE NEED YOUR EXPERTISE FOR A PARKING OF 1000 CARS IN DIFFERENT SLOTS
AND TO IDENTIFY WHERE IT IS PARKED IN WHICH SLOT USING ARDUINO WITH WIRELESS AND BT AND BT IN EACH VEHICLE .THE ARDUINO CONNECTED TO WIRE IN FRONT OF EACH SLOT
this look project >> http://www.robimek.com/arduino-ile-mobil-park-sensoru-yapimi/
Bir adet uno bir adet mega ile çalışıyorum. Unodan gönderip megadan almak istiyorum veriyi . Unoda mesaj gönderildi demesine rağmen megadan değer okuyamyorum. Kodların aynısını yazmama rağmen olmuyor iyi akşamlar
Kod çalışıyor yazılımsal sorun yok. Megadan unoya göndermeyi deneyin.
Mega da bağlantı pinleri farklı
CE = 9
CSN= 53
SCK = 52
MOSI= 51
MISO = 50
Programda da gerekli değişiklikleri yaparsan sorun çözülür.
2 tane arduıno uno nrf24l01 modulu birbiriyle haberleştirdim seri port ekranına yazdım bunu lcd ekranına nasıl gözükcek
Lcd kütüphanesi ekleyerek lcd.print(” mesajını”); şeklinde lcd ye yazdırabilirsiniz. Lcd örnek uygulaması buradan bakabilirsiniz. http://www.robimek.com/arduino-ile-manyetik-dedektor-yapimi/