Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

433 MHz RF Verici ve Alıcı Modülü: Arduino Kullanımı

433 MHz RF Verici ve Alıcı Modülü: Arduino Kullanımı
Kısa cevap

433 MHz RF verici ve alıcı modülleri, veriyi genlik kaydırmalı anahtarlama (ASK/OOK) ile tek yönlü gönderen basit kablosuz modüllerdir. FS1000A tipi verici DATA pinine gelen sinyali yayınlar, XY-MK-5V tipi alıcı aynı sinyali DATA pininden geri verir. Yaklaşık 17 cm'lik çeyrek dalga anten menzili belirgin artırır; Arduino'da RadioHead ya da RCSwitch kütüphanesi kullanılır.

İki Arduino arasında birkaç bayt veri göndermek, bir kablosuz zil ya da priz kumandasının kodunu okumak veya bahçedeki bir sensörden sıcaklık almak için en ucuz yol 433 MHz RF modülleridir. Bu yazıda verici ve alıcı modüllerinin nasıl çalıştığını, hangi alıcının seçileceğini, anten boyunun nasıl hesaplandığını, Arduino bağlantısını ve RadioHead ile RCSwitch kütüphanelerinin kullanımını anlatıyoruz.

433 MHz RF modülü nedir?

433 MHz RF modülü, 433 MHz bandında genlik kaydırmalı anahtarlama (ASK, açma-kapama biçimine OOK da denir) ile tek yönlü veri gönderen ya da alan basit bir radyo modülüdür. Verici, DATA pini HIGH olduğunda taşıyıcı dalgayı yayınlar, LOW olduğunda susar. Alıcı da havadaki sinyali yeniden HIGH ve LOW seviyelerine çevirir. Modüllerin kendi işlemcisi yoktur; paketleme ve hata denetimi Arduino'daki kütüphanenin işidir.

433 MHz RF alıcı-verici setinde FS1000A tipi verici ve XY-MK-5V tipi alıcı birlikte gelir. Ürün sayfasına göre alıcı 5V ile çalışır, 4 mA çeker ve -103 dBm hassasiyete sahiptir. Ayrı satılan 433 MHz RF kablosuz vericinin ürün sayfasında çalışma gerilimi 3-12V, veri hızı 10 kbps, menzil antensiz 3 metre ve en fazla 100 metre olarak verilir. Verici modülün pinleri DATA, VCC ve GND; alıcının pinleri VCC, DATA, DATA ve GND'dir. Alıcıdaki iki DATA pini kart üzerinde birleşiktir.

Hangi 433 MHz alıcıyı seçmeliyim?

Kısa mesafe ve deneme için setle gelen alıcı yeterlidir; menzil ve kararlılık önemliyse süperheterodin bir alıcı seçilir. XY-MK-5V tipi alıcılar süper-rejeneratif yapıdadır, çevredeki parazite daha açıktır. Süperheterodin alıcılar yalnızca ayarlı frekansı daha seçici biçimde alır, bu yüzden aynı vericiyle daha uzak mesafeden kararlı veri sağlar. Aşağıdaki değerler ürün sayfalarından alınmıştır:

ModülTürBeslemeHassasiyetNot
FS1000A tipi vericiASK verici3-12V-Gerilim arttıkça çıkış gücü artar
XY-MK-5V tipi alıcıSüper-rejeneratif5V-103 dBmUcuz, kısa mesafe
RXB6Süperheterodin3-5,5V-116 dBm'e kadar3,3V kartlarla da çalışır
RXB14Süperheterodin3,3-5,5V-115 dBmEn fazla 2,4 kbps, küçük boyut

433 MHz RF kablosuz alıcı kolay bir başlangıç sağlar. Daha uzun menzil için RXB6 433 MHz süperheterodin alıcı yaygın bir tercihtir. RXB14'ün veri hızı sınırı 2,4 kbps olduğundan RadioHead'in varsayılan hızı olan 2000 bps ile uyumludur.

433 MHz anten boyu ne kadar olmalı?

433 MHz için çeyrek dalga anten boyu yaklaşık 17,3 cm'dir. Dalga boyu, ışık hızının frekansa bölünmesiyle bulunur: 300.000.000 / 433.920.000 ≈ 0,691 metre. Bunun dörtte biri yaklaşık 17,3 cm eder. Antensiz modülün menzili birkaç metreyle sınırlı kalırken uygun boyda bir tel bu mesafeyi belirgin biçimde artırır.

  • Vericide ve alıcıda ANT yazan noktaya 17,3 cm'lik düz, tek damarlı bir tel lehimleyin.
  • Teli düz ve dik tutun; kıvırmak ya da metal kutuya sokmak menzili düşürür.
  • Verici ile alıcının antenleri aynı yönde (ikisi de dik) olmalıdır.
  • Küçük kutular için 433 MHz helical anten kullanılabilir; ürün sayfasına göre 22 mm boyunda ve 2,2 dBi kazançlıdır.

433 MHz verici ve alıcı Arduino'ya nasıl bağlanır?

Verici ve alıcı iki ayrı Arduino'ya bağlanır: verici DATA pini gönderici Arduino'nun D12 pinine, alıcı DATA pini alıcı Arduino'nun D11 pinine gider. Bu pinler RadioHead kütüphanesinin varsayılan pinleridir.

  1. Verici: VCC'yi 5V'a, GND'yi GND'ye, DATA'yı D12'ye bağlayın.
  2. Alıcı: VCC'yi 5V'a, GND'yi GND'ye, DATA pinlerinden birini D11'e bağlayın.
  3. Her iki modülün ANT noktasına 17,3 cm'lik anten teli lehimleyin.
  4. RadioHead kütüphanesini Arduino IDE'nin kütüphane yöneticisinden kurun.
  5. Gönderici ve alıcı kodlarını ilgili kartlara yükleyin, alıcının seri ekranını 9600 baud hızında açın.
433 MHz RF verici ve alıcı Arduino bağlantı şeması: FS1000A verici DATA pini gönderici Arduino D12, VCC 5V, GND GND; XY-MK-5V alıcı VCC 5V, DATA D11, GND GND; her iki modülün ANT noktasında 17,3 cm anten teli
RadioHead'in varsayılan pinleri kullanılır: verici D12'ye, alıcı D11'e bağlanır. RCSwitch ile kod okurken alıcı DATA hattı D2'ye taşınır.

Alıcı DATA hattı, RCSwitch kütüphanesiyle kumanda kodu okurken D11 yerine D2'ye bağlanır, çünkü RCSwitch kesme pinini kullanır. Vericiyi 12V ile besleyecekseniz DATA pinine Arduino'nun 5V sinyali yine doğrudan verilebilir; yalnızca VCC ve GND değişir.

RadioHead ile veri nasıl gönderilir?

RadioHead'in RH_ASK sürücüsü, 433 MHz modüller üzerinden hata denetimli kısa paketler gönderir; varsayılan ayarı 2000 bps hız, alıcı D11, verici D12'dir. Kütüphane, paket başı eşleme ve sağlama toplamı ekler; bozuk paketleri alıcı tarafında kendiliğinden atar. Arduino Uno'da Timer1'i kullandığı için Servo kütüphanesiyle aynı programda çakışabilir.

// Gönderici (verici DATA = D12)
#include <RH_ASK.h>
#include <SPI.h>   // derleme için gerekli
RH_ASK rf;           // 2000 bps, alıcı D11, verici D12

void setup() { rf.init(); }

void loop() {
  const char *mesaj = "merhaba";
  rf.send((uint8_t *)mesaj, strlen(mesaj));
  rf.waitPacketSent();
  delay(1000);
}

// Alıcı (alıcı DATA = D11)
#include <RH_ASK.h>
#include <SPI.h>
RH_ASK rf;

void setup() { Serial.begin(9600); rf.init(); }

void loop() {
  uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);
  if (rf.recv(buf, &len)) {
    Serial.write(buf, len);
    Serial.println();
  }
}

Bir paketin en fazla birkaç düzine bayt olması önerilir; uzun veriyi parçalara bölün. Modüller tek yönlü olduğu için gönderici paketin ulaşıp ulaşmadığını bilmez. Önemli komutları birkaç kez tekrarlayın ya da çift yönlü bir çözüm seçin. Çift yönlü ve teslim onaylı haberleşme için nRF24L01 modülü, kilometre düzeyinde menzil için LoRa modülleri daha uygundur.

RCSwitch ile kumanda kodu nasıl okunur?

RCSwitch kütüphanesi, sabit kodlu 433 MHz kumandaların gönderdiği kodu çözüp sayı, bit uzunluğu ve protokol numarası olarak verir. Alıcı DATA pini Arduino Uno'nun D2 pinine bağlanır ve enableReceive(0) ile kesme 0 (D2) dinlenir. Kumandanın düğmesine bastığınızda seri ekranda kodu görürsünüz:

#include <RCSwitch.h>
RCSwitch rc;

void setup() {
  Serial.begin(9600);
  rc.enableReceive(0);   // Uno: kesme 0 = D2
}

void loop() {
  if (rc.available()) {
    Serial.print(rc.getReceivedValue());
    Serial.print(" / ");
    Serial.print(rc.getReceivedBitlength());
    Serial.print(" bit / protokol ");
    Serial.println(rc.getReceivedProtocol());
    rc.resetAvailable();
  }
}

Okunan kodu tekrar göndermek için verici tarafında rc.enableTransmit(10) ile verici pinini (bu örnekte D10) seçip rc.send(kod, bitUzunlugu) çağırırsınız. Bu yöntem yalnızca sabit kodlu kumandalarda işe yarar. 4 kanallı RF kumanda seti gibi sabit kodlu setler bu yöntemi denemek için uygundur. Garaj kapısı ve araç kumandalarının çoğu her basışta değişen kayan kod (rolling code) kullanır; bu kumandalar kopyalanamaz. Yalnızca size ait cihazların kodlarıyla çalışın. Kızılötesi kumandalarla karşılaştırma için IR sensör ve kumanda yazımıza bakabilirsiniz; diğer modüller kablosuz haberleşme kategorisinde yer alır.

Sık sorulan sorular

433 MHz RF modülün menzili ne kadardır?

433 MHz RF modülün menzili anten, besleme gerilimi, alıcı türü ve ortama bağlıdır. Verici ürün sayfasında antensiz 3 metre, uygun koşullarda en fazla 100 metre olarak verilir. Ev içinde duvarlar mesafeyi ciddi biçimde kısaltır. 17,3 cm anten, vericiyi daha yüksek gerilimle beslemek ve süperheterodin alıcı kullanmak menzili artıran üç temel adımdır.

Bir modülle hem gönderip hem alabilir miyim?

Hayır, FS1000A tipi verici yalnızca gönderir, XY-MK-5V tipi alıcı yalnızca alır. İki yönlü haberleşme için her iki tarafa da bir verici ve bir alıcı koymanız gerekir; aynı frekansta oldukları için aynı anda konuşmamaları gerekir. Bu düzen kurulabilir ama karmaşıktır. Teslim onayı ve iki yönlü veri gerekiyorsa nRF24L01 ya da LoRa gibi alıcı-verici modüller daha uygundur.

Her 433 MHz kumanda kopyalanabilir mi?

Hayır, yalnızca sabit kodlu kumandalar okunup tekrar gönderilebilir. Basit priz, zil ve oyuncak kumandalarının çoğu sabit kod kullanır ve RCSwitch ile okunur. Garaj kapıları, alarm sistemleri ve araç kumandaları ise her basışta değişen kayan kod kullanır, bu yüzden kopyalanan kod işe yaramaz. Başkasına ait sistemlerin kodlarını okumak ya da göndermek hukuka aykırı olabilir.

433 MHz ve 315 MHz modüller birlikte çalışır mı?

Hayır, verici ve alıcı aynı frekansta olmalıdır; 315 MHz verici ile 433 MHz alıcı haberleşmez. Modüller görünüşte çok benzer, frekans genellikle kristalin ya da kartın üzerinde yazar. Kumanda kodu okuyacaksanız kumandanın frekansını da kontrol edin. Türkiye'de yaygın kumandaların büyük kısmı 433 MHz bandını kullanır, ancak her ürün için etiketine bakmak gerekir.

433 MHz modül ESP32 ile kullanılabilir mi?

Evet, 433 MHz modüller ESP32 ile de kullanılabilir; RadioHead ve RCSwitch ESP32'yi destekler. Dikkat edilecek nokta alıcının çıkış seviyesidir: 5V ile beslenen alıcı DATA pininde 5V verir, ESP32 girişi ise 3,3V'tur. 3,3V ile çalışabilen RXB6 gibi bir alıcı seçmek ya da sinyali bölücüyle düşürmek bu sorunu çözer. Verici tarafı 3,3V sinyalle sürülebilir.

Özet

  • 433 MHz RF modüller, ASK/OOK ile tek yönlü veri gönderen basit ve ucuz verici-alıcı çiftleridir.
  • Verici DATA pini D12'ye, alıcı DATA pini D11'e bağlanır; ikisi de 5V ve GND ile beslenir.
  • Çeyrek dalga anten boyu yaklaşık 17,3 cm'dir ve menzili en çok etkileyen etkendir.
  • RadioHead hata denetimli paket gönderir; RCSwitch sabit kodlu kumandaların kodunu D2 üzerinden okur.
  • Kayan kodlu kumandalar kopyalanamaz; yalnızca size ait cihazlarla çalışın.

Bu yazıdaki ürünler

Diğer yazılar