Arduino

Arduino ile RF Habeşleşme Nasıl Yapılır ?

Arduino ile RF Habeşleşme Nasıl Yapılır ?

Merhabalar arkadaşlar sizlerde biliyorsunuz ki her zaman ve her yerde kablolu haberleşme malesef mümkün olmuyor yada zorluk yaratıyor bu gibi durumlarda kablosuz iletişim ihtiyacımız doğuyor kablosuz iletişim formlarına bakınca wi-fi , rf, ir gibi çok çeşitli protokoller çıkmakta. Bu protokolleri tek tek inceleyip karar vermek tabi ki de sizlere kalmış bir konu ancak içlerinden en basit performanslı ve hızlı olan yöntem halen RF yani Radio Frequency yöntemi..

Radyo frekans konusundan bahsedecek olursak Kaynağımızdan oluşturduğumuz veriyi vericiye iletiriz verici bu veriyi yüksek frekanslı elektromanyetik dalgalara çevirip atmosfere yayar Alıcı ise bu havadaki dalgaları yakalayıp iletmek istediğimiz kaynağa veri haline dönüştürüp iletir.

Peki Neden ben neden Wi-fi gibi bir ileri teknoloji varken rf tercih ediyorum RF iletişim mesafesi diğer iletişim formlarına göre çok daha yüksektir kapalı ortamda duvarlardan etkilenme durumu Wi-fi kadar yüksek değildir bu kadar güçlü olmasına rağmen çok ucuzdur. kurulumu çok daha basittir. Bu nedenle ideal bir protokoldür.

Arduino ile RF Haberleşme için Wikipedia Dökümanından bir parça

Yayıncılıkta sesgörüntü ve data gibi bilgiler daha yüksek frekanslı bir elektromanyetik dalga yardımıyla yayınlanırlar. Yüksek frekanslı dalgaya radyo frekans denilir. Bu dalga RF kısaltmasıyla gösterilir. (RF yardımıyla taşınan bilgi de ses ise AF, görüntü ise VF kısaltmasıyla gösterilir.) RF bir vericide oluşturulur. Radyo frekans üreten devrelere osilatör denilir. Bu sinyal modüle edildikten, mikser ve yükselteçlerden geçtikten sonra yayınlanır; yani alıcılara gönderilir. Yayın olabilir. Genellikle, antenden yayınlanan RF dalga olarak, kablodaki RF ise sinyal olarak nitelendirilir.

1. Yer vericileri ile yapılan karasal yayıncılık,

2. Yayın uydularıyla yapılan uydu yayıncılığı (DBS)

3. Kablo yardımıyla yapılan kablo yayıncılığı

Devamını Wikipedia’dan okuyabilirsiniz.

Evet arkadaşlar RF hakkında genel bilgilendirme için şimdilik bu kadarı yeterli diye düşünüyorum ve Uygulamamızı daha iyi anlamamız için Uygulamamızda kullanacağımız parçaları anlatacağım sonrada bağlantıları yapıp aletimizi çalıştıracağız.

M

Malzemeler

1x RF Verici
1x RF Alıcı
2x Arduino

Donanımı Tanıyalım

Arduino ile RF Verici Modül

RF Verici modül
RF Verici modül

Bu küçük modül, bir vericidir. Göründüğü gibi gerçekten çok basit bir bileşendir. Modülün kalbi 433.xx MHz işlemi için ayarlanmış testere rezonatördür. Bir anahtarlama transistörü ve birkaç pasif bileşen var, hepsi bu.

DATA girişine bir YÜKSEK mantık uygulandığında, osilatör 433.xx MHz’de sabit bir RF çıkış taşıyıcı dalgası üretmeye Başlar ve DATA girişi DÜŞÜK mantığa alındığında osilatör durur. Bu teknik, kısaca ayrıntılı olarak ele alacağımız Genlik Kaydırma Anahtarlaması olarak bilinir.

RF Verici Bacakları

RF Verici Çıkış Bakacaları
RF Verici Çıkış Bakacaları

DATA : İletimi Açar Kapatır.
VCC  :Vericiye besleme yapacağımız bacaktır.Beslemeye 3.5V ila 12V arasında herhangi bir pozitif DC gerilim uygulanabilir. RF çıkışının besleme voltajı ile orantılı olduğunu, yani Gerilim ne kadar yüksek olursa, vericimizin o kadar güçlü olacağını unutmayın.
GND :  bir topraklama pinidir.
Antenna : harici anten için bir pinidir. Bu pine 17.3 Cm ölçüsünde bir Bakır tel lehimlerseniz sinyal gücünü ortalama 3-4 kat artacaktır.

RF alıcı Modül

Rf Alıcı Modül
Rf Alıcı Modül

Bu alıcı modülüdür. Karmaşık görünse de, verici modülü kadar basittir. Vericiden alınan taşıyıcı dalgayı yükseltmek için bir RF ayarlı devre ve bir çift OP Amperden oluşur. Amplifiye edilmiş sinyal ayrıca , kod çözücünün daha çözülmüş verinin gürültü ve parazitlerden arınmasını sağlayan bir dijital bit akışına “kilitlenmesini” sağlayan bir PLL’ye ( Faz Kilit Döngüsü ) aktarılır.

RF Alıcı Bacakları

RF Alıcı Modül Bacak çıkışları
RF Alıcı Modül Bacak çıkışları

VCC  : Alıcı için güç sağlarbeslemesidir.. Vericiden farklı olarak, alıcı için besleme gerilimi 5V olmalıdır.
DATA  : Veri alma durumunu belirler. Bu bacaklar içeriden birbirine bağlıdır, böylece veri çıkışı için birini kullanabilirsiniz.
GND : Topraklama Pinidir.
Antenna : Harici anten için bir pinidir. Bu pine 17.3 Cm ölçüsünde bir Bakır tel lehimlerseniz sinyal gücünü ortalama 3-4 kat artacaktır.

Genlik Kaydırma Anahtarlaması

Yukarıda bahsettiğimiz gibi, dijital verileri radyo frekansı üzerinden göndermek için, bu modüller Genlik Kaydırma anahtarlaması veya ASK adlı bir teknik kullanır . Genlik Kayması Anahtarlamasın da, gelen dalgaya yanıt olarak taşıyıcı dalganın genliği (433MHz sinyali) değiştirilir.

Bu konuda AM radyoya aşina iseniz tahmin edebileceğiniz analog genlik modülasyonu tekniğine çok benzer. Bazen ikili genlik kaydırmalı anahtarlama olarak adlandırılır, çünkü yalnızca iki düzeyimiz vardır. Bunu bir AÇMA / KAPAMA anahtarı olarak düşünebilirsiniz.

  • Dijital 1 için – Bu, taşıyıcıyı tam güçte çalıştırır.
  • Dijital 0 için – Bu, taşıyıcıyı tamamen keser.

Genlik modülasyonu şöyle görünür:

Genlik Modülasyonu
Genlik Modülasyonu

Genlik Kayması anahtarlamanın uygulanması çok basittir. Kod çözücü devresini tasarlamakta oldukça basittir. Ayrıca ASK, FSK (Frekans Kaydırma Anahtarlaması) gibi diğer modülasyon tekniklerinden daha az bant genişliğine ihtiyaç duyar. Bununla birlikte dezavantajı, ASK’nin diğer radyo cihazlarından gelen parazitlere ve arka plan gürültüsüne duyarlı olmasıdır. Ancak veri iletiminizi nispeten düşük bir hızda tuttuğunuz sürece, çoğu ortamda güvenilir bir şekilde çalışabilir.

Bağlantı Şeması

Alıcı Bağlantısı

Rf Alıcı Bağlantı Şeması
Arduino ile Rf Alıcı Bağlantı Şeması

Verici Bağlantısı

Verici Bağlantı Şeması
Arduino rf Verici Bağlantı Şeması

Evet Arkadaşlar radyo frekansları ve nasıl çalıştığı hakkında yüzeysel bilgilerimizi aldık modüllerimizi tanıdık Bağlantılarımızı gerçekleştirdik. Şimdi artık hazırsanız Modüllerimize hayat verecek kodlama aşamasına geçebiliriz.

Arduino ile RF Haberleşme Kodlama

Kodlamaya başlamaya hazırı ancak ondan önce ufak bir aşamamız kaldı Oda Arduino idemize Rf modülümüzün Libini Yüklemek Sizler için Aşağıya Linkini Ekliyorum Tıklayıp indirebilirsiniz.

Eğer Arduino kütüphanesi eklemeyi bilmiyorsanız Aşağıdaki Linke Tıklayarak Öğrenebilirsiniz.

Evet Şimdi Libimizi İndirdik Artık Kodlama Aşamasın Başlamanın Tam Zamanı !!

Deneyimiz de, vericiden alıcıya basit bir kısa mesaj göndereceğiz. Modüllerin nasıl kullanılacağını anlamanız da faydalı olacaktır ve daha pratik deneyler ve projeler için temel oluşturması için gerekli diye düşünüyorum.

Arduino ile RF Verici Kodlaması

RadioHead ASK kütüphanesini ekleyerek işe başladık. RF vericimiz ve alıcımız SPI arabirimiyle bağlı olduğu için SPI Kütüphanelerini de kodumuza Dahil Ettik.

#include <RH_ASK.h>
#include <SPI.h>

Ardından, RadioHead ASK kitaplığıyla ilgili özel işlevlere erişmek için bir ASK Objesi oluşturmamız gerekiyor.

RH_ASK rf_driver;

Kurulum işlevinde Kütüphanemizi başlatmamız gerekir.

rf_driver.init();

Döngü fonksiyonun da,  msg adlı bir karakter dizisi oluşturduk.Daha iyi performans için mesajınızın herhangi bir şey olabileceğini, ancak 27 karakteri geçmemesi gerektiğini unutmayın.  Alıcı kodunda bu sayıya ihtiyacınız olacağından, içindeki karakter sayısını saydığınızdan emin olun. Biz 17 Karakter girdik.

const char *msg = "Elektronik Atolyem";

Mesajımızı daha sonra bir send()fonksiyon kullanılarak iletmek istediğimizi belirttik . Send() Fonksiyonunun İki parametresi vardır: ilki veri dizisidir ve ikincisi gönderilecek bayt sayısıdır (verinin uzunluğu).  waitPacketSent()Fonksiyonu ile önceki herhangi bir iletim paketi var ise , aktarım bitene kadar beklemesini sağladık. Bundan sonra taslak, alıcımıza her şeyi alması için zaman vermek için bir saniye bekledik.

rf_driver.send((uint8_t *)msg, strlen(msg));
rf_driver.waitPacketSent();
delay(1000);

Kodların Tamamı;


#include <RH_ASK.h>
// Kutuphanemizi EKledik
#include <SPI.h> 
 

RH_ASK rf_driver;
 
void setup()
{
    // Ask Objemizi Tanımladık
    rf_driver.init();
}
 
void loop()
{
    const char *msg = "Elektronik Atolyem";
    rf_driver.send((uint8_t *)msg, strlen(msg));
    rf_driver.waitPacketSent();
    delay(1000);
}

Arduino ile RF Alıcı Kodlaması

Tıpkı Verici de yaptığımız gibi alıcıya da Radiohead ve SPI Kütüphanelerini eklemeliyiz.

#include <RH_ASK.h>
#include <SPI.h> 
RH_ASK rf_driver;

Alıcımıza Herhangi bir ekran bağlamadığımız için Mesajı görüntülemek için projemize Serial Monitörü dahil ettik aynı zamanda kütüphanemizide başlattık

rf_driver.init();
Serial.begin(9600);

İletilen mesajla Aynı boyutta bir dizi oluşturduk Yani bizim için 17 karakterli bir dizi yeterli gelecektir.

uint8_t buf[17];
uint8_t buflen = sizeof(buf);

Sonrasında recv() Fonksiyonunu çağırarak alıcımızı aktif ediyoruz. Eğer bir mesaj aldıysa Diziye aktarılır ve serial monitörde mesajımızı görürüz.

if (rf_driver.recv(buf, &buflen))
{
  Serial.print("Message Received: ");
  Serial.println((char*)buf);         
}

Kodun Tamamı;

#include <RH_ASK.h>
#include <SPI.h> 
 
RH_ASK rf_driver;
 
void setup()
{
    rf_driver.init();
    Serial.begin(9600);
}
 
void loop()
{
    uint8_t buf[11];
    uint8_t buflen = sizeof(buf);
    if (rf_driver.recv(buf, &buflen))
    {
      
      Serial.print("Message Received: ");
      Serial.println((char*)buf);         
    }
}

Eğer Herşeyi doğru yaptıysak Serial Monitörde “Elektronik Atolyem” yazısını göreceksiniz :)

Anten Yapımı

Artık Projemizi yaptık Gayet sağlıklı bir şekilde çalıştığını gördük ancak Biz ELektronikçilere standartlar hiç bir zaman yeterli gelmez Bu nedenle yukarıda anlattığım gibi mesafenizi artırmak için ek anten yapmamız gerekebilir entenin yapımızı için bazı küçük hesaplamalar var size onlardan bahsedeceğim.

Bir frekans dalga boyu aşağıdaki gibi hesaplanır:

Havada, iletim hızı, kesin olarak 299.792.458 m / s olan ışık hızına eşittir. Yani, 433 MHz bandı için dalga boyu:

Anten Hesaplama
Anten Hesaplama
Anten Hesaplama 2
Anten Hesaplama

İşte Arkadaşlar Bir projemizi daha tamamladık Umarım beğenmişsinizdir İyi Çalışmalar.

Etiketler

Onur NP

Arduino Stm32 gibi Mikrodenetleyici PLC Otomasyon sistemleri ve Genel elektronik projeleri üzerine örnek paylaşımlar yapmaktayım Endüstriyel ve Kişisel proejelerinize Ücretli olarak destek verebilirim.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Call Now ButtonAra
Kapalı
Kapalı