Arduino projelerinin çoğunda kablosuz olarak bir yerden, başka bir yere veri aktarmak isteriz. Bu veriler kimi zaman diğer Arduino’ya bağlı parçaları kontrol etmek için, kimi zaman da karşı taraftaki Arduino’dan sensör verilerini almak için kullanılır. Arduino, tek başına kablosuz veri aktarımı için yeterli değildir. Arduino, kablosuz veri aktarımı için kablosuz haberleşme modüllerine ihtiyaç duymaktadır.
Arduino ile çalışan çeşitli kablosuz haberleşme modülleri vardır. Eğitimimizde bu modüllerden kullanımı kolay ve fiyatı düşük olan, nRF24L01 modülünü kullanacağız. nRF24L01 modülü Arduino ile daha önce öğrendiğimiz SPI protokolünü kullanarak haberleşmektedir. Modülün PCB ve harici antenli modelleri bulunmaktadır. İki model de 2.4 GHz’de haberleşmektedir, fakat harici antene sahip modülün haberleşme mesafesi PCB antene sahip modülden daha fazladır.
PCB Antenli nRF24L01 | Harici Antenli nRF24L01 |
Pin bağlantıları
Modül 3.3 Volt ile çalıştığı için, modülün VCC pini Arduino’nun 3.3 Volt çıkışına takılmalıdır. Yanlışlıkla modülün 5 Volt hattına takılması, modüle zarar verebilir. Bu uygulamada Arduino Uno kullandığımız için, modülün SPI pinlerini Arduino’nun SPI pinlerine bağlamalıyız. Bazı nRF24L01’lerde modül üzerinde pin isimleri yazmamaktadır. Aşağıdaki görselde nRF24L01 modülünün pin bağlantıları gösterilmiştir.
Aşağıdaki tabloda nRF24L01 modülü ile Arduino arasında kurulacak bağlantılar gösterilmiştir.
nRF24L01 Haberleşme Modülü | Arduino UNO |
VCC | 3.3 V |
GND | GND |
CS | 7 |
CE | 8 |
MOSI | 11 |
MISO | 12 |
SCK | 13 |
Projelerimizde nRF24L01 modüllerinden birisi alıcı (receiver) diğeri ise verici (transmitter) görevinde kullanılacaktır. Modülün alıcı veya verici olması, kablo bağlantılarını değiştirmemektedir. Hangi modülün alıcı, hangi modülün verici olacağına, Arduino içerisindeki kod karar vermektedir. Projenin ihtiyacına göre haberleşme modülü çift yönlü haberleşme yapmak için, hem alıcı hem de verici (transceiver) olarak kullanılabilir.
Not: Tüm kablo bağlantılarının hatasız bir şekilde yapılmasına rağmen, bazen modüller birbiri arasındaki haberleşmeyi sağlayamamaktadır. Böyle bir durumda modüllerin VCC (3.3V) ve GND pinleri arasına 3.3 uF ile 10 uF arasında bir kapasite koyarak tekrar deneyin.
Arduino yazılımı
nRF24L01 kablosuz haberleşme modülü, Arduino için “nRF24L01p.h” isimli kütüphaneye sahiptir. Arduino kodunu yazmadan önce bu kütüphaneyi indirip, Arduino projemize dâhil etmeliyiz. Kütüphaneyi indirmek için tıklayın.
Not: Arduino kütüphaneleri dosya klasörü ile birlikte Arduino’nun yüklü olduğu dizindeki “libraries” klasörü içerisine kopyalanmalıdır.
Kütüphane projeye eklendikten sonra ilk olarak CS ve CE pinlerinin programa tanımlanmalıdır. Modül, SPI ile haberleştiği için SPI.begin() fonksiyonu ile SPI protokolü başlatılmalıdır. İki haberleşme modülünün birbiri arasında iletişime geçebilmesi için, modüllerin aynı kanal üzerinden haberleşmesi gerekir. “alici.channel(KanalID)” fonksiyonu ile haberleşme kanalı seçilir. Protokol ayarlamaları yapıldıktan sonra iki modül aralarında haberleşmeye hazır hale gelir.