Merhabalar Arkadaşlar, bu uygulamamızda Arduino ile HM-TRLR-DW-433MHZ RF modülünü kullanarak verici tarafından basılan buton ile alıcı tarafındaki ledin kontrolünü sağlayacağız. Bu RF modülü ile seri data haberleşmesi (uart, rs232, ttl) ile 5KM ve üzerinde mesafelere çıkmak mümkündür. Şehir içinde 1KM, açık alanda 6KM menzilde testleri yapılmıştır. HM-TRLR-D serisi 433/470/868/915 MHz’de çalışan düşük maliyetli, yüksek performanslı bir alıcı vericidir. LoRa/FSK/GFSK/OOK modülasyon çeşitliliği, çoklu arayüz modu (TTL/RS232/RS485), yüksek çıkış gücü, yüksek hassasiyet,  uzun iletim mesafesi ve parametrelerin çoğu komut aracılığıyla ayarlanabilir.  Otomatik olarak veri alıp göndermeyi kontrol edebilirsiniz. Geniş bir çalışma voltajına ve düşük uyku akımına sahiptir.  Kullanıcıların UART baud hızını, çıkış gücünü, veri hızını, frekans seçimini, modülasyon modu seçimini vb. parametreleri ayarlamaları esnektir.  Kablosuz veri iletimi alanında yaygın olarak kullanılabilen kablosuz veri iletim ürünleri tasarlamak için ideal seçimdir. Daha detaylı bilgi için ürün datasheet’ini inceleyebilirsiniz. Modül için gerekli Arduino kütüphanesini indirelim. İndirmiş olduğumuz kütüphanemizi Arduino IDE’ye ekleyelim.

Uygulama Alanları:

  • Uzaktan kumanda, uzaktan ölçüm
  • Erişim kontrolü
  • Veri toplama
  • Akıllı ev aletleri
  • Kablosuz ölçüm cihazı
  • Kimlik sistemi
  • Bebek izleme sistemi

HM-TRLR-D Serisi Pin Açıklaması:

STATUS:  Bağlı değilken (Lojik 1, output 3.3V )

CONFIG: Konfigürasyon modu için Lojik 0 (Low), İletişim modu için Lojik 1 (High) ayarlanmalıdır.

GND: Ground

5V: Güç kaynağı, 3.3V-5.5V DC

RXD: TTL Data receiving

TXD: TTL Data transmission

GND: Ground

A_TX: RS485 A (RS232 TX)

B_RX: RS485 B (RS232 RX)

SLEEP: Veri aktarımı için lojik 0 (Low), uyku modu için lijik 1 (High) olarak ayarlanmalıdır.

RESET: Reset tetikleme girişi, lojik 0 (Low) aktif

Kullanılan Malzemeler:

Verici Bağlantı Şeması:

Verici Arduino Kodu:

#include <HRFMessage.h>
HRFMessage server(&Serial1);
#define buton 4
void setup()
{
pinMode(buton, INPUT);
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
uint8_t buf[HRF_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
int buton1 = digitalRead(buton);
if (buton1 == 1)
{
if (server.recv((uint8_t*)&buf, &len))
{
// Got a message from the client.
// Send a reply back
server.send((uint8_t*)"Led Yak\n", 9);
Serial.print("Alinan: ");
Serial.println((const char*)buf);
}
}
if (buton1 == 0)
{
if (server.recv((uint8_t*)&buf, &len))
{
// Got a message from the client.
// Send a reply back
server.send((uint8_t*)"Led Sondur\n", 12);
Serial.print("Alinan: ");
Serial.println((const char*)buf);
}
}
delay(10);
}

Alıcı Bağlantı Şeması:

Alıcı Arduino Kodu:

#include <HRFMessage.h>
#define led 4
HRFMessage client(&Serial1);
long lastSendTime = 0;
void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
long thisTime = millis();
if (thisTime > lastSendTime + 1000)
{
client.send((uint8_t*)"Robolink\n", 11);
lastSendTime = thisTime;
}
uint8_t buf[HRF_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
if (client.recv((uint8_t*)&buf, &len))
{
if(len==9)
{
Serial.print("Alinan: ");
Serial.println((const char*)buf);
client.send((uint8_t*)"Led Yandi\n", 11);
digitalWrite(led,HIGH);
}
if(len==12)
{ Serial.print("Alinan: ");
Serial.println((const char*)buf);
client.send((uint8_t*)"Led Sondu\n", 11);
digitalWrite(led,LOW);
}
}
}

5 YORUMLAR

  1. Merhaba. Bu modülde bu kısmı biraz değiştirdim buton kısmını filan kaldırıp sürekli veri göndermeyi denedim.
    uint8_t buf[HRF_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (server.recv((uint8_t*)&buf, &len))
    {
    server.send((uint8_t*)”Led Yak\n”, 9);
    Serial.print(“Alinan: “);
    Serial.println((const char*)buf);
    }
    }
    voil loop’un iç kodları sadece bu kadar (verici için)

    alıcı kısımda
    long thisTime = millis();
    if (thisTime > lastSendTime + 1000)
    {
    client.send((uint8_t*)”Robolink\n”, 11);
    lastSendTime = thisTime;
    }
    uint8_t buf[HRF_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (client.recv((uint8_t*)&buf, &len))
    {
    if(len==9)
    {
    Serial.print(“Alinan: “);
    Serial.println((const char*)buf);
    client.send((uint8_t*)”Led Yandi\n”, 11);
    digitalWrite(led,HIGH);
    }
    }
    şeklinde kullandım. Pin bağlantıları aynı şekilde fakat vericide seri ekran boş görülüyor “server.recv((uint8_t*)&buf, &len)” değeri de 0 olarak dönüyor acaba yardımcı olabilir misiniz ?

    • Vericideki if kısmını kaldırınca dönen değer: Alinan: ⸮D şeklinde. Vericide RXD led sürekli (yeşil) yanık (if kaldırdığım için) alıcıda TXD ledi aralıklı olarak düşük güçte (kırmızı) yanıp sönüyor

  2. HOPERF HM-TRLR-D TTL 433 LORA KÜTÜPHANESİ Nİ KURamdim yardımcı olur musunuz teşekkür ederim şimdiden #include cagirmiyor ne yapmalıyım

  3. Akıllı ev sistemlerinde nasıl kullanabilirim bunu örnek: wifi ile haberleşip tuya uygulamasında çalışıp Arduino ile kurulup 16 kanal role açıp kapatmak istiyorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz