Arduino ve C# RF Haberleşme ile DC Motor Kontrolü

Arduino ve C# RF Haberleşme ile DC Motor Kontrolü

Arduino ve C# RF Haberleşme dillerini kullanarak 433 MHz RF (Radyo Frekansı) haberleşme üzerinden kablosuz DC motor hız ve yön kontrolü gerçekleştireceğimiz bu kapsamlı rehberimizde; çift devreli (alıcı ve verici) kablosuz sistemlerin çalışma mantığını, C# Windows Forms arayüzü tasarlamayı ve L293D motor sürücü entegresi ile DC motorların RF sinyalleriyle nasıl uzaktan yönetileceğini öğreneceksiniz.

Bu projemizde, radyo frekansı (RF) dalgaları aracılığıyla iki bağımsız Arduino geliştirme kartının birbiriyle kablosuz olarak haberleşmesini sağlayacağız. Sistemde komutları gönderen bir “Verici (Transmitter)” devre ile bu komutları yakalayıp işleyen bir “Alıcı (Receiver)” devre yer alacaktır. Verici devreyi bilgisayarımızla seri port üzerinden kontrol edeceğiz; C# ile yazdığımız Windows Forms uygulamasından gönderdiğimiz yön ve hız (PWM) komutları, verici ünite tarafından RF sinyallerine dönüştürülerek havaya salınacak, alıcı ünite ise bu sinyalleri yakalayıp çözerek motoru kontrol edecektir.

Eğer daha önce C# Windows Forms kullanarak bilgisayar üzerinden seri port haberleşmesi gerçekleştiren bir Arduino projesi geliştirmediyseniz, öncelikle C# ile Arduino Kontrolü ve Haberleşme Rehberi yazımızı incelemenizi tavsiye ederiz.

Proje İçin Gerekli Donanım Bileşenleri

  • 2 adet Arduino Geliştirme Kartı (Arduino Uno, Nano vb.),
  • 1 adet 433 MHz RF Alıcı ve Verici Modül Çifti,
  • 1 adet L293D veya L298N Motor Sürücü Entegresi/Modülü,
  • 1 adet 9V-12V DC Motor,
  • Motor sürücüyü beslemek için harici +9V DC Güç Kaynağı.

433 MHz RF Alıcı ve Verici Modülleri
Bu ekonomik kablosuz modüller, iki mikrodenetleyici arasında düşük veri hızlarında tek yönlü (simplex) kablosuz veri köprüsü kurmak için tasarlanmıştır. Verici (Transmitter) modülü üzerinde; VCC, GND ve Data sinyal pinleri bulunur ve 3.3V ile 12V DC arasındaki voltajlarla çalışabilir. Verici besleme voltajı arttıkça RF yayın gücü ve dolayısıyla haberleşme menzili de doğru orantılı olarak artar. Alıcı (Receiver) modülü üzerinde ise; VCC, GND ve birbirine dahili olarak bağlı 2 adet Data pini bulunur (Data pinlerinden herhangi birini kullanabilirsiniz).

Kablosuz RF iletişim teknolojisi, elektromanyetik dalga yayılımı esasına dayanır ve bu dalgalar belirli frekans bantlarında (genellikle Lisanssız ISM bantlarında) çalışır. Radyo dalgaları 10 kHz ile 3000 GHz frekans spektrumunu kapsamaktadır. RF haberleşme protokolleri; garaj kapısı kumandaları, araç merkezi kilit sistemleri, basit ev otomasyonları ve kablosuz güvenlik alıcıları gibi düşük maliyetli ve karmaşık olmayan projelerde yaygın olarak kullanılır. Ülkemizde ve dünyada, 433 MHz ve 868 MHz gibi halka açık frekans bantlarında çalışan düşük güçlü kablosuz cihazların kullanımı, amatör telsizcilik lisansı veya herhangi bir resmi izin gerektirmemektedir.

L293D Motor Sürücü Entegresi
DC motorların ihtiyaç duyduğu yüksek akımı güvenle yönlendirmek için kullandığımız yarı iletken bir sürücü entegresidir. Arduino’nun standart I/O pinleri doğrudan bir motoru sürmek için yeterli akımı sağlayamaz (pin başına en fazla 40mA limit vardır). Bu nedenle motoru harici bir DC güç kaynağından beslemek ve kontrol sinyallerini L293D üzerinden geçirmek donanım güvenliği için zorunludur.

L293D, iki adet DC motoru birbirinden bağımsız olarak çift yönlü (H-Köprüsü mimarisiyle) sürebilecek kapasitededir. Projemizde tek bir motor kontrol edileceğinden; entegrenin Input1, Input2, Output1, Output2 ve Enable1 (hız kontrol) pinlerini aktif olarak bağlayacağız; diğer boşta kalan motor sürücü pinlerini ise GND hattına çekebiliriz.

L293D Donanım Yapısı

Sistem Devre Bağlantı Şeması

Arduino RF Alıcı Verici Motor Kontrol Şeması

RF haberleşme kodlarını Arduino kartlarına yüklemeden önce, yazılım kütüphaneleri arasına VirtualWire kütüphanesini eklemeniz gerekmektedir. Ancak önemle belirtmek gerekir ki; VirtualWire kütüphanesi resmi geliştiricisi tarafından artık güncellenmemekte ve yerini daha gelişmiş olan RadioHead kütüphanesine bırakmaktadır. Projenin kararlılığı açısından bu uygulamada VirtualWire kütüphanesini kullanacağız.

Projede kullanılan VirtualWire kütüphanesinin arşivlenmiş sürümünü buraya tıklayarak doğrudan bilgisayarınıza indirebilirsiniz. Arduino IDE yazılımına dışarıdan zip formatında kütüphane eklemeyi bilmiyorsanız, hazırladığımız rehber yazımızdan yardım alabilirsiniz:

Arduino Verici (Transmitter) Kaynak Kodları

Verici Arduino, bilgisayarla olan seri port (USB) bağlantısını sürekli izler. C# uygulamasından gelen yön ve hız karakterlerini yakalar ve bunları VirtualWire protokolüyle RF dalgası olarak uzaktaki alıcıya fırlatır:

Arduino Alıcı (Receiver) Kaynak Kodları

Alıcı Arduino, RF modülü üzerinden gelen havadan gelen veri paketlerini sürekli deşifre eder. Doğrulanan veri paketinden çıkan yön ve hız (PWM) bilgilerine göre L293D motor sürücü entegresini sürerek DC motoru çalıştırır:

C# RF Haberleşme Windows Forms Uygulama Yapısı

Geliştirdiğimiz C# Windows Forms uygulaması, verici Arduino’ya seri port üzerinden komut yollayarak tüm kablosuz RF döngüsünü başlatan kullanıcı dostu bir kontrol panelidir:

C# RF Motor Kontrol Arayüzü
C# RF Haberleşme Proje Ekran Görüntüsü

Kullanıcı arayüzünü (GUI) oluşturmak için form tasarımınıza şu temel araçları yerleştirmeniz gerekir:

  • Label (4 adet): Hız ve yön verilerini ekranda anlık doğrulamak için,
  • SerialPort (1 adet): Bilgisayar ile verici Arduino arasındaki seri tüneli yönetmek için,
  • Button (6 adet) ve GroupBox (1 adet): Bağlantı, yön ve hız komutlarını göndermek için.

C# Windows Forms projesinin tam kaynak kodlarını içeren hazır C# proje klasörünü buradan bilgisayarınıza doğrudan indirebilirsiniz.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.