Arduino RF HaberleÅŸme
Yücel Çetin // 23 Ağustos 2012 // 91 yorum // kategori: Arduino Programlama, Arduino Projeleri Öncelikle herkesin geçmiş Ramazan bayramını kutluyorum. Bayramdan önce aldığım 434 MHz rf alıcı-verici modülleri ile ilgili bir yazı ile karşınızdayım. Eğer ben ebay?dan alırım 1.95$ veririm bir kuruşta fazla vermem diyorsanız yurtdışından gelmesini 1 ay bekleyebilirsiniz. Fakat ben bunları her zaman aldığım genelde Türkiye?de toptan fiyatı düzeyinde satış yaptığını düşündüğüm bluemavi.com?dan  aldım. Kabataştan tramvaya bindim, tophane durağında inerek bluemavi satış yerine gittim ve  kendim teslim aldım. Aşağıda fiyat listesinden aşağı yukarı kendinize göre bir hesap yaparak karar verirsiniz.
Başlangıç olarak yapmak istediğimiz iki tane arduino arasında bu alıcı ve verici devrelerimizi kullanarak veri yolmamak. Kısaca RF dediğimiz radyo frekansı 3 Hz ile 30 GHz arası frekanslardır. Uzun mesafe haberleşmeleri için uygun değildir. 434 MHZ?lik alıcı-verici ile gerilim kaynağı, kullandığımız antene ve alıcı-verici arası engel olup olmadığına bağlı olarak yaklaşık 90-100 metre arasında haberleşebiliriz.  Bağlantılar için genelde verici bilgileri modül üzerinde yazar fakat aldığınız vericinin datasheetine bakarak emin olabilirsiniz. Şekil-1 ?deki gibi bağlantıları gerçekleştirelim.
ÂÅžekil-1
Alıcı bağlantılarını Şekil-2 ?deki gibi yapalım. Benim aldığım alıcı PIN?leri şu şekildeydi.  1:GND 2:Digital output 3:Linear Out 4:VCC 5:VCC 6:GND 7:GND 8:Anten
Şimdi yazacağımız kod parçası vericiden gönderilen mesajı alıcıya gönderecek ve serial monitor üzerinden görüntüleyeceğiz. Kablosuz donanımımıza arayüzü sağlamak için VirtualWire kütüphanesini kullanacağız.
Kütüphaneyi http://www.open.com.au/mikem/arduino/VirtualWire-1.5.zip  adresinden indirebilir veya http://www.open.com.au/mikem/arduino/VirtualWire.pdf adresinden inceleyebilirsiniz.
Verici Kodu
/* Bu kod verici ile virtualwire kütüphanesini kullanarak alıcıya mesaj göndermemizi sağlar. */ #include <VirtualWire.h> //kütüphanemizi ekledik. void setup() { vw_set_tx_pin(12);// edit okoman: bu parametre programda yoktu sonradan eklendi vw_setup(2000); //2sn?de bir çalıştırmak için (edit okoman: yaklaşık veri trahasfer hızıdır hatalı açıklama yapılmış) virtualwire?ı başlatır. } void loop() {    send("hello");//göndereceğimiz mesaj     delay(1000); //1sn bekle     }    void send (char *message) /*mesajı ulaştırmak için    loop kodu send fonksiyonunu çağırır ve bu da mesajın ulaştırılması    için bekler.*/     {       vw_send((uint8_t *)message, strlen(message));        vw_wait_tx(); // mesaj gidene kadar bekle.     }
Alıcı Kodu
/* Arduino?ya bağladığımız alıcıda görünen vericiden gönderilmiş mesajı serial monitorde görüntülemek için */ #include <VirtualWire.h> // Kütüphaneyi ekledik. byte message[VW_MAX_MESSAGE_LEN]; // gelen mesajları tutmak için byte msgLength = VW_MAX_MESSAGE_LEN; // mesaj boyutu void setup() { Serial.begin(9600); Serial.println("Ready"); //Serial Monitor?de gözükecek mesaj vw_setup(2000); /*2sn?de bir çalıştırmak için (edit okoman: yaklaşık veri trahasfer hızıdır hatalı açıklama yapılmış)virtualwire?ı başlatır.*/ vw_rx_start(); // Alıcı başlat } void loop() { if (vw_get_message(message, &msgLength)) /*mesaj hazır ise tamam ve mesaj serial monitorde gözükür*/ { Serial.print("Got: "); for (int i = 0; i < msgLength; i++){ Serial.write(message[i]); } Serial.println(); } }
Sonuçlar
Arduino ile RF modülleri kullanarak güzel projeler yapabiliriz. Pahalı olan wireless modüllere bir alternatif olarak gösterilebilir.  “Anne  benim neden iki tane arduinom yok, bana neden bir tane daha arduino almıyorsun” diyenler varsa .  Usb-serial converter kullanarak arduino ile bilgisayarınızı haberleÅŸtirebilir hatta sohbet ettirebilirsiniz. Ä°ki tane arduinom var  ben zaten yastığımın altında arduino olmadan yatamam diyorsanız bir arduino’ya verici , diÄŸerine alıcı ile bir lcd baÄŸlarsınız millette görsün ne yapabiliyor bu arduino diye yaptıklarınız serial monitöre gömülü kalmasın : ) Herkese iyi çalışmalar diliyorum.
 Kaynaklar
[1] Â http://www.open.com.au/mikem/arduino/VirtualWire/
[2]  Micheal Margolis,  “Arduino Cookbook” ,2nd ed, O’Reilly Media, Aralık 2011,425- 429
Etiketler: 434 mhz > arduino 434 mhz > arduino data transfer > arduino haberleşme > arduino mesaj gönderme > arduino radio frequency > arduino receiver > arduino receiver transmitter > arduino rf > arduino rf haberleşme > arduino rf link > arduino serial > arduino serial monitör > arduino transmitter > arduino veri iletimi > arduino wireless > arduino wireless communication > data transfer > radio frequency > radyo frekans > receiver > rf 434 mhz > transmitter > wireless
Harika…
[…] birlikte kullanarak kendi hava durumu istasyonunuzu oluÅŸturabilirsiniz. Yücel Çetin’in Arduino RF HaberleÅŸme yazısında anlattığı ÅŸekilde,ölçtüğünüz deÄŸerleri, RF ile farklı bir noktaya […]
Merhaba,
Bir soru ile baÅŸlar herÅŸey ben de öyle yapacağım… Grafikerim ve hobi olarak bu iÅŸ soyut olarak eÄŸlenceli fakat somutta yardım isterim ilgi gösterirseniz! Neden 2 arduino demekten alamıyorum kendimi. Arduino üzerindeki led’i yakmak gibi bir durum söz konusu ve 4 kanal 35 mhz. bir kumanda ile test de ettim. Tek bir arduino ile! Farklı kanallarda denedim ve her bir kanal sinyal gönderdiÄŸinde çalışıyor yani arduino’daki led’i yakıyor. Bunu komut olarak kullanabilir, led yakabilir, veya baÅŸka bir pin’e komut verebilir miyim, bir örnek vermeniz mümkün mü? Ä°lginiz için ÅŸimdiden teÅŸekkürler, Kaloy gelsin…
Tek bir Arduino’ya alıcı baÄŸlayarak çalıştırdınız heralde kullandığınız alıcıyıda(frekans-model) yazabilir misiniz? DediÄŸin olayı 4 kanal demiÅŸsin 4 kanallı bir röle shield ve zigbee ile de yapabilirsin. sadece led yakmak veya motor çalıştırmak istiyorsan. Ya da ben bir yazı yazayım belki iÅŸine yarar.
@Modelleyen bu konuyu http://forum.arduinoturkiye.com/ ‘da yazabilir misin? Oradan beraber bir cevap bulabiliriz.
Rf modül ile seri iletişimi nasıl yapacağız, yani rf modül üzerinden 1 0 gibi değerler göndermek istesek ve bu şekilde kodunu bildiğimiz bir garaj kapısını açabilir miyiz ?
BirÅŸeyler buldum fakat pt2262 kodlaması gibi olmuyor osiloskopdan baktıgımızda bitler doÄŸru fakat bi yanlışlık oluyor…
[…] önceden “Arduino ile RF HaberleÅŸme” diye bir yazı paylaÅŸmıştık. Åžimdi de yine RF ile birÅŸeyler yapmak için kablosuz ileÅŸim saÄŸlayan, düşük […]
Merhabalar. VermiÅŸ olduÄŸunuz örnek devreyi kurduktan sonra ve arduino programını compile yapınca ”Required for DR3100” diye bir ÅŸey çıkıyor ve upload yapmıyor. Bunun ne anlama geldiÄŸini anlatabilirmisiniz.
Teşekkürler.
Merhabalar Özgür Bey, Kodlarınıza eklediÄŸiniz kütüphaneyi Arduino 1.0 ‘ a göre güncelleyerek, verici ve alıcı kodu içerisinde vw_setup(2000); satırından önce vw_set_ptt_inverted(true); satırını ekleyerek deneyebilir misiniz? Ä°yi çalışmalar.
İlgilendiğiniz için teşekkür ederim. Dediğinizi yaptım ve bu seferde;
‘vw_set_ptt_inverted’ was not declared in this scope diye bir hata mesajı geliyor. Nedeni ne olabilir?
Teşekkürler.
Merhabalar Özgür bey, kütüphane eklenmemiÅŸ gözüküyor. Kütüphanenin en güncel halini(1.9) yazıda verdiÄŸimiz adresten indirerek arduino IDE sini kütüphaneyi attığını dosya içinde bulunan arduino ya tıklayarak açıp tekrar dener misiniz?(kısayoldan açmayın direk arduino 1.0 dosyası içerisindeki arduino.exe ye tıklayarak açın. kütüphaneyieklediyseniz orada Sketch>import library altında virtualwire’ı görebilmeniz gerekiyor ardından çalıştırın)
İyi çalışmalar.
Hasan bey bir “yanlışlık oluyor yazmışsınız” nerede yanlışlık oldugunu yazarsanız yardımcı olmaya çalışırız. Ä°yi çalışmalar.
Yücel bey çok teşekkür ederim. Şimdi çalıştı.
Saygılar.
Yücel bey teşekkür ederim.
Forumda konu açacağım bunun ile ilgili 🙂
Özgür Bey iyi çalışmalar. Teşekkürler Hasan bey 🙂
Alıcı verici uygulamasını aynı arduino üzerinden yapmak mümkün mü?
Bu örnek de Arduino Cookbook’tan çalıntı. Direk aynısını kopyalamışsınız.
Merhabalar Hamza Erturan Bey, normalde referans aldığım yerleri yazıyorum sitede ÅŸu an bulunan kodlar virtualwire’ın standart alıcı verici kodlarıdır(VirtualWire), sadece basit bir örnek olsun baÅŸlangıç yapanların direk çalıştırabileceÄŸi bir kaynak olması amacı ile konulmuÅŸtur. DediÄŸiniz kaynağı diÄŸer yazılarımda belirtmiÅŸtim burada yazmayı unutmuÅŸum. Kendi yazdığımız projeleri sitede yazmaya gayret göstereceÄŸiz. Yorumlarınız için tekrar teÅŸekkürler. Ä°yi çalışmalar.
Tek arduino uno ile bilgisayardan Usb-serial converter kullanarak nasıl haberleştirilebiliniyor acaba? Bilgisayarı verici diye düşünüp yapıp serial monitörle mi gönderecez öyleyse rf modüllerin data ucuna tx mi rx mi bağlamalıyım
Merhaba kk_32, Arduino ile bilgisayarı direk haberleştirebiliyorsunuz Şu yazıdan da http://arduinoturkiye.com/arduino-ile-seri-iletisim-ve-serial-monitor-kullanimi/ bakabilirsiniz. Rf modülleri ne amaçla kullanacağınızı söylerseniz yardımcı olabiliriz. Ayrıca forum.arduinoturkiye.com adresinden de sorularınızı sorabilirsiniz. iyi çalışmalar.
Kısaca rf kit için tek arduino ile bilgisayarı nasıl haberleştirebilirim ?
Şimdiden Teşekkürler
Merhaba Yücel Hocam
sanırım problemimi tam olarak anlatamadım
Benim tek arduinu uno ve lcd ekranım var RF transmit ve receiver modüller almayı düşünmekteyim.
azınızda usb-serial converter kullanarak arduino ile bilgisayarınızı haberleştirebilir demişsiniz.
Amacım bilgisayardan yazdığım karakterleri USB serial kablo ile rf transmiteri bağlamak karşılığında RF receiver bağlı uno nun lcd sinde okumak.(bilgisayara bağlantısı olmadan)
Bu ÅŸekilde haberleÅŸtirebilirmiyim?
Ben bu yapmak istediÄŸinizi daha önce denedim. Usb to tll dönüştürücü ile rf trasnmitteri bilgisayara baÄŸlayıp Arduino’ya baÄŸlı bir reveceiver ile verileri okumaya çalıştım , ama baÅŸarısız oldum. Yabancı forumların çoÄŸunda bunun sebebinin çalışma hızları farkı olduÄŸu söylenmiÅŸ. Arduino bilgisayar ile senkron saÄŸlayamıyormuÅŸ. Teoride mümkün görünse de pratikte ayrıca bir hata ayıklayıcı entegre kullanmadan verileri okumak pek mümkün deÄŸil sonucuna vardım ben.
Necati hocam peki bu dediğinizi bende birkaç yerde okudum
sanırım serial gönderirken düşük hızlı boundrate ler ile deneyin gibi bişiler söylemişler siz deneyebildiniz mi ? 9600 yerine 2400 veya daha düşük
Baudrate 2400 olarak denedim ama sonuçta pek birÅŸey deÄŸiÅŸmedi. Genelde paylaşılan örneklerde ht12e – ht12d decoder/encoder entegreleri kullanılmış. Åžurada ht12e kullanımı ile ilgili bir örnek var: http://ashishrd.blogspot.com/2011/05/building-computer-controlled-wireless.html
Merhabalar Hocam ben bir robot yaptım ve bu robotta Arduino micro kullandım bu robotu rf modülle kontrol etmeye çalışıyorum aynı buradaki gibi bağlantıları yaptım fakat verici modül (arduino uno) veri gönderince arduino micro yani robot restart yapıyor lütfen yardım edin sırf bu proje için 2. arduino aldım
Hocam o sorunu çözdüm fakat bu seferde ben robotta kullandığım arduino ile gelen verileri işleyemiyorum yani w karakteri geliyor fakat robot bundan sonra kafayı yiyor yani gelen karakteri değişkene aktarıyorum değişkende switch case yapısını kullanarak yapamıyorum lütfen yardım edin bu robotu bitirmeme 2 gün kaldı ve sadece 14 yaşındayım
Merhaba,
Verici kısmında send(“hello”); gönderimi saÄŸlıyoruz.
Projemde sensörlerden gelen veri durumuna göre send fonksiyonunda veri göndermeye çalışıyorum. Buna bağlı olarak göndereceğim veriyi bir değişkende toplayıp send fonksiyonu içine yerleştiriyorum. Fakat veri türü hatası alıyorum. veri değişkenini hangi türde tanımlamam gerekiyor?
char veri = “durum1” ;
send(veri);
// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $
#include
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println(“setup”);
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
}
void loop()
{
const char *msg = “durum1”;
digitalWrite(13, true); // Flash a light to show transmitting
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13, false);
delay(200);
}
ilgili sayfa: http://www.open.com.au/mikem/arduino/VirtualWire/
lib: http://www.open.com.au/mikem/arduino/VirtualWire/VirtualWire-1.14.zip
zipin içindeki transmitter örneği
Ömer Bey,
Yazdığınız örneğide inceledim. Fakat burada da msg değişkeninin içine direk ?durum1? tanımını yapmamız gerekiyor. Bunu başka bir değişkene eşitleyemiyorum. Makalede bulunan ile aynı sonuç çıkıyor. Ben sensörden aldığım bilgiler doğrultusunda bir bilgi göndericem. Ve sensörlerin durumuna göre de iletilecek bilgi farklı olacak. Birden fazla sensörüm bulunuyor ve hepsinin durumlarına göre iletilecek bilgi farklılıklar içeriyor.
Not: bir önceki sorumda eksik ilettiysem kusura bakmayın,
void loop()
{
String sensorA = “A100”;
String sensorB = “B500”;
String mesaj = sensorA + sensorB;
const char *msg = mesaj;
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
delay(1000); //1sn bekle
}
void loop()
{
String strData;
char *msg;
strData=”A100,”;
strData=strData+”B500,”;
strData=strData+”C1024″;
strData.toCharArray(msg, strData.length()) ;
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
delay(1000); //1sn bekle
}
Ömer Bey merhaba burası yeri deÄŸil ama bir soru sormak istiyorum.Ben arduino kiti ile üzerinde PSOC1 çipi olan bir devreyi I2C ile haberleÅŸtirmek istiyorum. Arduino wire.h dosyasında slave_receiver klasörünü kullanmaya çalışıyorum.Psoc çipinde I2C programı yazılı fakat bunu arduino’ a ya nasıl uygularım bilmiyorum.Bana yardım edebilir misiniz?
psoc tarafında master mı olacaksınız slave mi? foruma yazarsanız daha fazla kişi yardım edebilir.
merhaba
Bende hakan beyin yorumdaki gibi birden fazla sensorden gelen veriyi aliciya gondermede sorun yasiyor yapmak istedigim proje ise iki ayri portdan okunan deger ile alici tarafinda iki farkli servo hareket ettirme , tek pot ve servoyo kontrol edebiliyor ama ikinci potu isin icine katinca takilip kaldim.
yapmya calisitigim yolda vericiden gonderilen mesaj soyle
xservo=120
yservo =100
xservo=58
yservo=160
.
.
bu kodu alicinin Serial.wirite(Serial.read()) kodu ile alicinin tx ine gonderiyorum ama burdan bu kodu servoya atiyamiyor denedigim yol
Analog.wirite(10,xservo) ama olmuyor
iki cihaz arasında bir iletiÅŸim protokolu geliÅŸtirmen lazım. komutları yorumlayıp servoya gönderirsin…
hocam dediginiz gibi bi iletisim protokulu gelistirerek servolari hareket ettirmeyi basardim devre proteusta hatasiz calisiyor ama gercekte rf alici verici kullanmadan datalari birbirine bagliyoyurm calismiyor fakat alici ile vericinin vcclerini birbirine bagliyinca calisiyor nedenini birturlu anlayamadim rf alici verici kullanarak denedim alicinin datasini birbirine bagliyinca servolar kafayi yiyor neden olabilir baglatilar dogru .
Ä°yi günler bilgisayar mühendiliÄŸi öğrencisiyim bir proje için araÅŸtırma yapıyorum.Bu devredeki menzil max 100 metre olduÄŸu yazıyor.Bu veya buna benzer bir devre ile menzil “1 km” ye çıkarabilirmiyiz ve arduino ile bunu yapabilirmiyiz.Yardımcı olursanız sevinirim.
http://proto-pic.co.uk/2km-long-range-rf-link-kits-w-encoder-and-decoder/
Hocam 1 km lik cihaz için aynı kodlar işimizi görürmü?
bilmiyorum cihazın iletişim protokolü önemli burada
Teşekkür ediyorum.
Bilgisayar Mühendisliği öğrencisiyim proje olarak Arduino ile alış veriş sepeti uygulaması aldım. Arduino ile yeni başlıyorum önceden PİC16F877A kullandım.Projemde arduino ile rakamları nasıl okutabilirim ve bu okuttuklarımı sepetimde nasıl gösterebilirim.Bilgi verirseniz sevinirim.
ürünler için seri barkod okuyucu kullanabilirsin okuduğun barkod seripoorttan arduinoya gelir o kodu ve adeti fiyatı arduinoya bağlayacağın lcd de gösterebilirsin.
Merhaba,
Arduino’da çok yeniyim. Bir proje yapmaya çalışıyorum. http://www.elecfreaks.com/wiki/index.php?title=Color_Sensor_Module linkinden renk algılıyorum ve sonuçlar http://www.elecfreaks.com/1666.html linkindeki fotoÄŸraftaki gibi oluyor. 4 numaralı okla gösterilen deÄŸerler RGB deÄŸerleri, benim bu deÄŸerleri göndermeyi deniyorum, bu örneÄŸi denedim ve ”hello” gönderdim ama benim renk algılama koduyla bu kodu nasıl birleÅŸtirebilirim, karşıda sonuç alamıyorum.
forumdan sorarsanız daha fazla ve çabuk cevap alabilirsiniz
Bu receiver modulünde neden 8 tane pin olduğu konusuna taktım. Acaba saklı yetenekleri mi var ortasındaki bobini döndürünce 315mhz algılamak gibi.
Merhaba sayın site sahibi size bir sorum olucak verici ve alıcı çiftlerinden elimizde 5 takım oldugunu varsayar isek vericilerden bir adetini kullanarak 5 alıcıyı kontrol etme gibi bir şansımız varmıdır var ise nasıldır? şimdiden cevap için teşekkürler.
her modul dinlemede kalacak bir modul koordinator olacak. her modulun bır kimliği olacak protokol yazacaksın mesajların kimden kime gideceğini belirtirsen olur. prtokol örneği: hex olarak yazıyorum 55555500ffttxxccaaaaaaaaaa 55 ler ön işaret ve senkronizasyon 00:mesajbaşı ff:from adres tt:to adres xx: yollayacağın byte adeti 8-10 byte ı geçme, cc:komut, aaaaaa:lar verilerin. her modul kendine ait kımlığı okuduğunda cevabını verir yukarıdaki protokolde fftt parametrelerini ona göre değiştireceksin. havada herzaman aynı anda 2 tane modul haberleşecek gibi planlayacaksın. protoloku geliştirmek için tt: adresinden birini broadcast yaparsın o adresi okuyan moduller hepsi aynı anda bir şey yapar yada gerekli setup ve sistem saati gibi verileri atarsın. birde cdma denen coalition detection mutiple access algoritm koyarsın, çok zor değil o da, havayı dinlersin boş olduğu anda veriyi basarsın eğer 200ms içinde cevap vermezse hedefin random bir sure beklersin mesajını tekrar yollarsın hedef cevap verene kadar denersin. o arada olan boşlukta diğer moduller haberleşir filan. başta söylediğim koordinatöru kullanıp duzenli olarak diğer modullerin hatırını sorarsın sisteminde herzaman koordinator modul yetkili olur bır tek o konusur. kolay gelsin
ACÄ°L BÄ°R PROJEM VAR. ELÄ°MDE udea RX34B2 ALICISI ve RX34B2S VERÄ°CÄ°’SÄ° VAR.
ARDUINO NUN BİR UCUNA BAĞLANMIŞ OLAN BUTONA BASTIĞIMDA, ALICI ARDUINOSUNDAKİ 1 LED YANMASINI İSTİYORUM. ÇOK ACİL LÜTFEN YARDIM EDİN. DAHA ÖNCEDEN ARDUINO İLE ROBOT YAPTIM İLK DEFA RF İLE İŞ YAPIYORUM
merhaba abilerim ben üniversitesi ögrencisiyim ve 2 tane servoyu pot ile 180 er derece döndürdüm hocam şimdi benden rf alıcı verıcı modul ıle kontrol etmemı ıstıyor ve bunu beceremıyorum bır turlu yardımcı olabilirmisinz bu dersi vermem lazım son dersım ve 1 senem uzasın ıstemıyorum şimdiden teşekkür ederim
plc ve arduino arasında nasıl haberleşme kurulur yardımcı olabilir misiniz?
rs232 uzerınden serıal veya rs485 uzerınden modbus kullanılabılır sanırım ama plc nin de bir ıletişim protokolu vardır ozellikle rs485 te bu daha zor olur. ethernet networktende olabilir bazı modellerde fiziki bağlantı dışında veri katmanını da bilmenız gerekir. endustriyel işler planlamasız ve dokumantasyonsuz rastgele olmaz pek.
Ömer hocam rf haberleÅŸmede deÄŸiÅŸken iletmek için hangi komutlar daha baÅŸarılı olur bi yardımcı olabilirmisiniz ben elimde bulunan ivme ölçer deÄŸerlerini karşı tarafa göndermek istiyorum ÅŸimdiden yardımlarınız için teÅŸekkürler…
#include
#include
#define ACC (0xA7>>1)
#define A_TO_READ (6)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void initAcc() {
writeTo(ACC, 0x2D, 1<<3);
writeTo(ACC, 0x31, 0x0B);
writeTo(ACC, 0x2C, 0x09);
}
void getAccelerometerData(int * result) {
int regAddress = 0x32;
byte buff[A_TO_READ];
readFrom(ACC, regAddress, A_TO_READ, buff);
result[0] = (((int)buff[1]) << 8) | buff[0];
result[1] = (((int)buff[3])<< 8) | buff[2];
result[2] = (((int)buff[5]) << 8) | buff[4];
}
void setup()
{
lcd.begin(16, 2);
Wire.begin();
initAcc();
}
void loop()
{
int hx,hy,hz;
int acc[3];
getAccelerometerData(acc);
hx = acc[0];
hy = acc[1];
hz = acc[2];
lcd.setCursor(0, 0);
lcd.print("X=");
lcd.print(hx);
lcd.setCursor(8, 0);
lcd.print("Y=");
lcd.print(hy);
lcd.setCursor(0, 1);
lcd.print("Z=");
lcd.print(hz);
delay(500);
}
void writeTo(int DEVICE, byte address, byte val) {
Wire.beginTransmission(DEVICE);
Wire.write(address);
Wire.write(val);
Wire.endTransmission();
}
void readFrom(int DEVICE, byte address, int num, byte buff[]) {
Wire.beginTransmission(DEVICE);
Wire.write(address);
Wire.endTransmission();
Wire.beginTransmission(DEVICE);
Wire.requestFrom(DEVICE, num);
int i = 0;
while(Wire.available())
{
buff[i] = Wire.read();
i++;
}
Wire.endTransmission();
}
rften yolladığın değerleri string olarak çevirip başlarına xyz gibi tanımlayıcı koy alıcıda da aynı şekilde tanımlayıcıyı gördüğünde ilgili dönüşümü yapsın
x:123,y:456:z:789 gibi bir veri şekli oluşturup atacaksın alıcıda da bunu komple okuyup çözmen lazım. koda bakmadım ne yaptığına ama
anladım ama senin yukarda yayınladığın kodlar iÅŸimi görürmü send üzerinden deÄŸiÅŸken tanımlaya bilirmiyim…. ÅŸimdiden teÅŸekkürler
değişken dediğin şey hafızada binary formatta tutulan bir şey bununu string dönüşümünü yapıp yollaman daha kolay kullanmanı sağlar binay yolladığın zaman bunu birebir karşı tarafın hafızada aynı formatta yazamazsın. diyelim diğer karşı cihaz uno değilde bir pc ve ya android cihaz oldu bunun hafizada nasıl formatlandığı konusunda hiç bir fikrimiz olamaz bu nedenle ya stringe dönüştür yada hepsini tek tek HEX string olarak dönüştürüp atacaksın.
Hocam ilgilendiÄŸiniz için teÅŸekkürler son olarak string dönüştürme hakkında döküman yada adres varmı öğrene bileceÄŸim…
kardeşim az biraz araştırma kültürünüz olsun google daha nasıl bilgi soracağınızı bilmiyorsunuz a şuradan var zilyon tane https://www.google.com.tr/search?q=arduino+converting+number+to+string&ie=utf-8&oe=utf-8&gws_rd=cr&ei=HrahVKmOMcuAU87sg7gL
merhabalar. konu için teşekkür ederim. benim de ilgimi çekti ama anlıyamadığım bu bağlantı için pin tanımlaması gerekmez mi? yani siz 11 ve 12 kullanmışsınız. yazılım da nerden bilicek 11 yada 12 pini kullanmasını gerektiğini. ben bayağı uğraştım ve yapamadım. pic ten sonra arduinoya yeni geçtim. en bilgisizlerin anlayacağı türden yazabilirmisiniz saygılar.
yazının tamamını okuyup önerilen/kullanmanız gereken kütüphaneyi indirip içine baktığınızda virtualwire.cpp kodunun için bu pinlerin tanımlandığını görürsünüz. kütühane kullanımı böyle bir şey oluyor.
vw_setup(2000); //2sn?de bir çalıştırmak için
virtualwire?ı başlatır. bu açıklama 2 sn bir çalıştırmak için mi yoksa data transfer
hızı mı?. sonra kodu sormak için yazmıştım. siz kütüphane kullanımı demişsiniz. yardımcı olmak istemiyorsanız hiç cevap yazmasanız da olurdu. zahmet etmişsiniz. yine de sağolun
yazıyı yazan arkadaş uzun süredir uğramıyor yerine ben cevap verdim bu kodu deneme fırsatım olmadı, yazının altında kodun alındığı kaynaklar belli türkçeleştirme dışında değişiklik yapmıyoruz çoğu zaman. sorunuzda pin11 ve pin12 yi nereden bileceğiz diye sormuştunuz bende üşenmeden girip kutuphanesine baktığımda bu pinlern standart olarak tanımlandığını gördüm ve belirttim. sonradan baktığım başka örneklerin bazılarında set_tx_pin kullanılmış bazılarında kullanılmamıştı, sizin vw_set_tx_pin(12) kullanmanız yerinde olmuş işe yarar. yazmayınca neden çalışmıyor bilemiyeceğim yazmak gerekliymiş demek. vw_setup(2000) demek yaklaşık data transfer hızı demek elinizdeki modül kaliteli ve destekliyorsa 4000 değerinide hem vericide hem alıcıda deneyebilirsiniz. şuradaki örneğide inceleyin hem rx hem tx pinlerini 12 olarak setup da işlenmiş ona dikkat edin yanlışlık olmasın http://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu/?ALLSTEPS
vericide bu kod eksik sanırım “vw_set_tx_pin(12);” ben böyle yapıp çalıştırdım. yalnız 1 kanal çalıştırabildim. 2,5,8 gibi deÄŸiÅŸik kanllada çalıştırmak için ne yapabilirim. saygılar.
şu örnekte http://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu/?ALLSTEPS hem rx pin hem tx pini pin 12 olarak işaretlenmiş dikkat etmek lazım. vw_setup tan önce tx pini set etmek işe yarıyor anlaşılan. kutuphanesi içinde bu pinler zaten tanımlı ama bir sorun var anlaşılan. 433mh rf modullerde kanal duymadım ben siz farklı bir modül mü kullanıyorsunuz yada bir kod çözücü mü eklediniz devreye anlayamadım.
Hocam benim rf ile olan projem vardı onların codlarını yazdım çalışıyor sistem ama haberleşme mesafesinde sıkıntı yaşıyorum bu anten boyutları ne olmalı 17 yazıyor 25 yazıyor 30 yazıyor bi sabit birşey yakalayamadım.
Bord üzerindeyken antensiz haberleÅŸiyordu iyi derce nezaman pcbye aktardım devreyi sıkıntılar yardımlarınız için ÅŸimdiden teÅŸekkürler….
kodları denedim gayet güzel çalışıyor.
Buradan soru sorup işini halleden arkadaşlar adına konuyu açan yücel beye tüm sorulara cevap yazan ömer beye teşekkür ederim.
ömer bey sitede var mı bilmiyorum ama yok ise değişkendönüştürme işlemleri hakkında bir yazı yazarsanız çok sevinirim.
teÅŸekkür ederiz faydalı olduysak ne mutlu bize. foruma bir konu açayım “istek yazıları” diye o zaman oradaki duruma göre sitedeki yazıları geniÅŸletelim hatırlatma için teÅŸekkürler bi ara yazayım o zaman 🙂
bu devreyi anten kullanmadan çalıştırabilir miyiz?
pek belli olmasada anten de bir elektronik devre elemanıdır kullanılmazsa olmaz. antenin uzunluğu bile önemlidir daha uzun veya daha kısa olması herşeyi kötü yönde etkiler. antenin vericidan gelen rf sinyal ile titreşerek sonundaki devrenin bu titreşimi algılşamasını sağlar. anten uzun veya kısa olursa farklı bir rf sinyal frekansına denk geleceği için alıcı veya gönderici devrenin hatalı çalışmasına yada hiç çalışmamasına neden olur. ha diyeceksin cep telefonlarında anten yok bunu açıkla; aslında onların da içinde de bir anten var ve genelde ya pcb ye çiziliyor bu anten yada anten için hesaplanan uzunluk kadar bakır yol özel bir şekilde seramik üzerine sarmallanarak yine anten yapılmış oluyor. antenin upuzun olması şart değil gerekli uzunluk kadar kablonun 1-2cm çapta ve aralıklı olarak sarmal veya helezon şeklinde yapılması da olur ama performansı çok değişir denemeyle en uygun şekil elde edilit. ayrıca antenin elektrik veya toprak hattına tems edip kısa devre olmaması için plastik koruması da olması gerekir.
Merhaba, Arduino Uno R3’e kod yüklerken avrdude: ser_open(): can’t open device “\\.\COM1” hatası alıyorum. Nasıl çözebilirim?
foruma gelin çözenler var
Öncelikle siteyi çok başarılı buldum ellerinize sağlık.
Benim ÅŸu sorum olacak Hocam
Arduino uno r3+wireless proto shield+Xbee modüllerini birbirine bağladım ve 9v batarya ile besliyorum. 2.Xbee modülüm ise Explorer dongle ile bilgisayarıma takılı.
Kablosuz olarak Arduinodan gönderdiÄŸim veriyi bilgisayarımda nasıl okuyabilirim?Seri haberleÅŸmede arduinomu usb ile baÄŸladığımda gönderdiÄŸim verileri XCTU’da okuyabiliyorum fakat bunu kablosuz olarak beceremedim.
Kütüphanemde ekstra bir kod yazılımı mı eklemem gerekiyor?
Teşekkür ederim şimdiden.
sitenin forum kısmından sorarsanız xbee ile uÄŸraÅŸanlar da var daha hızlı cevap alabilirsiniz. prejenizi yaparken nereden faydalandınız? orada bir yardımcı kod olabilir. xbee denince basit rf modulleride tanesi 70-90usd ye satılan xbee diye satıyorlar gerçek zbee ile diÄŸer xbee urunlerın kullanımları çok farklı once bunu bır anlamamız lazım sonra çözümü de deÄŸiÅŸir tabi…
Pekala hocam
Projemi Tubitak bünyesinde bitirme ödevi olarak hazırlıyorum.
Sensörden aldığım veriyi bilgisayarda MATLAB kullanarak grafiksel olarak algılamam gerekiyor.
ÇeÅŸitli sayfalardan forumlardan arduino’nun sitesinden bu modülleri kullanmam gerektiÄŸini düşündüm ki uygulamalar var fakat 2 adet uno r3 kullanılarak yapılmış.
Dedığınız gıbı forumda yardımcı olacak arkadaşlar olabılır.
Teşekkür ederım.
MERHABA ARDUINO RFID MODULUNDEN ALDIĞIM CARD ID sini RF İLE NASIL DİĞER KARTTA GÖNDEREBİLİRİM. VirtualWire kütüphanesi kullanarak send deyip char karakterini gönderebiliyorum fakat kart ID sini gönderemiyorum. Kart IDsi byte array bunu nasıl gönderebilirim.
Serial.print(F(“Card UID:”));
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println();
Serial.print(F(“PICC type: “));
byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.println(mfrc522.PICC_GetTypeName(piccType));
String(val) kullan http://www.arduino.cc/en/Reference/StringConstructor
Merhaba; bende de iki tane arduino var uno ve mega.amacım unyu bilgisayara baÄŸlamak megayı ise belli bir mesafe (50mt) uzaÄŸa götürmek ve ikisi arasında bilgi alışveriÅŸi saÄŸlamak.unodan girdiÄŸim verilerin megaya baÄŸlı iki adet 16×2 lik lcd de görünmesini istiyorum.Modül olarak nrf24l01 modülünü aldım.Sizce doÄŸru yolda mıyım?
bence olur birde forumdan sor ama… uno da nrf çalışırda mega da deÄŸiÅŸiklik gerekirmi bilemedim bak.
VirtualWire.h:14:20: fatal error: wiring.h: No such file or directory
#include
^
compilation terminated.
Derleme sırasında hata oluştu.
Diye bir hata veriyor sanırsam wiring.h dosyası eksik bunu nereden bulabilirim
wiring.h: No such file or directory
#include
^
compilation terminated.
Derleme sırasında hata oluştu.
diye bir hata alıyorum
wiring.h: No such file or directory
#include
^
compilation terminated.
Derleme sırasında hata oluştu.
bunu nasıl çözebilirim
kodun içinde turkçe (şçöığ) kullanmayın, buyuk harf küçük harf kullanımına dikkat edin. foruma gelin oradan sorun…
üniversite final projem için acil yardıma ihtiyacım var mail üzerinden iletişime geçermisiniz ? Teşekkür ederim final projem rf haberleşme.
özel hiç bir projeye destek veremiyoruz işlermiz yoğun. bir uno alın rf433 mhz rx ve tx modullerden alın sitedeki yazılara bakın foruma gelin yaptığınız programı koyun neyi halledemiyorsanız oradan sorun extrem bir şey değil istediğiniz yapan çok var google da tonla ornek var.
VirtualWire.h ile servo.h ikisi birlikte hata veriyor nasıl çözebilirim yardımcı olur musunuz teşekkürler
virtualwire ve servo aynı timer i kullanıyorlar bu nedenle beraber kullanılamaz. bu amaçla yazılmış servotimer2.h kutuphanesini servo.h yerine kullanabilirsiniz. ben denemedim ama bu şekilde olduğu yazıyor şurada http://electronics.stackexchange.com/questions/67967/problems-using-servo-h-and-virtualwire-h-in-arduino
servotimer2.h kutuphanesini once tek olarak deneyin daha sonra projenizde birleÅŸtirirsiniz. sorun olursa foruma gelin…
verdiginiz şemayı uno ve nano kullanarak deniyorum ama derleniyorken şu hatayı veriyor : exit status 1
Error compiling for board Arduino Nano.
digerindede aynısını diyor
exit status 1
Error compiling for board Arduino/Genuino Uno.
kutuphaneyı yuklememişsiniz yazının sounuda anlatıyor zipli dosyaı ındırmenız lazım ancak artık desteklenmiyor ama şu lınkten gereklı dosyaları ındırın ve tekrar deneyın.
http://www.airspayce.com/mikem/arduino/VirtualWire/files.html
teşekürler oldu
slm yaptıgınız örnegi denedim çalıştı sizden bir ricam olcak rfıd uygulaması kartı admin kartı 4 defa okuttugumuzda bir baska kartı eprom kayıt edecek ve dogru kartı okutugumuzda mavi led yanacak yanlış okuttugumuzda kırmızı kart yanacak ayrıcana seri port ekranına kartların ıdsini yazacak diger rfıd uygulamalarına yazdım cevap alamadım yada ilgilenmediler bu konuda yardım edermisiniz ?
rf modul kullanarak rfid den okuttugunuz verılerı kablosuz yolluyorsunuz dıye anlıyorum.
ılerleme olarak okudugunuz kart bılgısınin kaç kez okutuldugunu sayabiliyorsanız bu durumda 4. okumadan sonraki okutulan kartı da eproma yazabılırsınız, böylece proje de bıter, kendınız yazmayı deneyebılırsınız. foruma gelin sorun birde