Arduino nRF24L01 ile Joystick Kontrollü Araba

Bir önceki yazımda, nRF24L01 modülünü nasıl daha kolay kullanırız ve nasıl toplu veri göndeririz onu anlatmıştım. O yazıyı yazarken aklıma, daha önce Bluetooth ile kontrol ettiğimiz aracımızı acaba nRF24L01 ve Joystick kullanarak kontrol etsem nasıl olur fikri geldi.

Aracım şase olarak zaten elimin altında duruyordu. O yüzden aracı nasıl yaptığımı bu yazıda anlatmayacağım. Aracın yapımına ve kodlara L298N Motor Sürücü Entegresi Kullanımı yazımdan ulaşabilirsiniz. Ben sadece aracın bağlı olduğu Arduino’ya bir adet modül ekledim. Diğer tarafta ise yine bir Arduino ve bir Joystick Shield kullandım. Joystick shield’in buton pinleri arka tarafında yazıyor, bu yüzden direk onları tanımlayarak başladım, ardından verilerini okuma işlemini gerçekleştirdim. Son olarak bu verileri göndereceğim dizi içerisine atarak gönderme işlemini yaptım.

Alıcı tarafında ise yapılan tek değişiklik motorların hızının gelen verilerdeki joystick verilerine göre değiştirilmesi oldu. O yüzden onu da kolaylıkla anlayacaksınızdır. Tabi joystick shield’den gelen verilerin tamamını okuyarak daha çok çeşitli şeyler yapılabilir ama ben şu an sadece örnek olması bakımından hız kontrolünü gerçekleştirdim.  Sorularınızı yorum olarak belirtirseniz elimden geldiği kadar yardımcı olmaya çalışacağım.

Kodların tamamına Github profilim üzerinden ulaşabilirsiniz.

Verici Modül Kodları:

https://gist.github.com/a74d2b6c892fc1356daa9e69db2d87b6

Alıcı Modül Kodları:

https://gist.github.com/f51be7950b2cc8187e4626151a7840bf

Arduino nRF24l01 Kablosuz Haberleşme

Arduino ile kablosuz haberleşme üzerine çalışmalar yapıyorum ve bir projemde her hangi bir ağa bağlanmadan, sadece 2 cihaz arasında (2 Arduino) haberleşmeyi sağlamam gerekti ve bunun için en uygun modülün nRF24l01 olduğuna karar verdim. Ama yaşadığım başka bir sıkıntı vardı, göndermem gereken verileri sadece karakter olarak gönderebiliyordum.

Bu sorunu çözmek için uzun araştırmalar yaptım. Ama modülün kendi örnekleri ve modül hakkında yazılan blog yazıları hem göndermem gereken mesajı bir ‘integer’ dizi olarak göndermiyor, hem de karmaşık yollar ile çözüme gitmeye çalışıyor ve bu benim işime yaramıyordu. O yüzden, okuması ve kullanması oldukça basit ve tek seferde birden fazla veriyi – tipi (int, float…) önemli değil – bir dizi halinde göndererek 2 modül arasında haberleşmeyi sağlayabileceğimiz bir hale getirdim.

Modülleri, alıcı ve verici için aynı şekilde bağlıyoruz.

Arduino nRF24L01 Modülü Bağlantısı
(Görsel: Turkcell Geleceği Yazanlar)

Bunu için öncelikle gerekli olan RF24 kütüphanesini kurmanız gerekiyor. (Kütüphaneye, Github sayfamdan ulaşabilirsiniz.)

Kodların içerisine gerekli olan açıklama satırlarını eklediğim için ayrıntılı olarak buradan açıklamayacağım.

Kodlara ve kütüphaneye Github profilim üzerinden ulaşabilirsiniz. Yaşadığınız sorunları yorum olarak belirtirseniz elimden geldiği kadar yardımcı olmaya çalışacağım.

Verici Modülünün Kodları:

https://gist.github.com/ea473be9404efc4b1b1eb7165926647a

Alıcı Modülünün Kodları:

https://gist.github.com/2aebd28bb2eda0ed538c02029565b8b3