Arduino Nano & nRF24L01 ile Walkie-Talkie

Zekeriya AY
7 min readMar 22, 2022

--

Yazıda walkie-talkie yani bas-konuş özellikli telsiz yapımını, gerekli malzemeleri, kodları ve benim nasıl yaptığımı, yapamadığımı içerir.

Bu proje Eylül 2020'de yapılıp anlatımı kişisel blog sitemden Medium’a Mart 2022'de taşınmıştır. Youtube videosu da halen çekilememiştir 😅

Resim 0 · Telsizin Ön Yüzü

🛠 Kullanılan Malzemeler

  • 2 adet Arduino NanoBoyutundan ötürü Nano tercih ettim. Uno, Mega veya Nano kullanmak size kalmış. Mega kullanıcaksanız bağlantılarda birkaç değişiklik oluyor unutmayın! (Anlatımda bundan bahsediyorum.)
  • 2 adet nRF24L01 PA LNA 2.4GHz Alıcı-Verici ModülAntenli versiyonunu kullandım. İki versiyonun da bağlantıları aynı. Antensiz versiyonu açık alanda ortalama 100 metre, kapalı alanda ise ortalama 10–20 metre mesafede çalışıyormuş(Söylenene göre…). Antenli versiyonu ise ortalama 10 kat arttırıyor. Mesafe testinin videosu 🙏Yardım Aldığım Kaynaklar’da mevcut. VCC’yi 3.3V’a bağlayın yoksa bozuluyor veya adaptör ile 5V’da kullanın. Ben adaptörle 5V da kullandım. Adaptörsüz kullanıcaksanız modüle kondansatör lehimlemeniz gerekiyor. 🙏Yardım Aldığım Kaynaklar’da hangi pinlere bağlandığıyla ilgili link var.
  • 2 adet nRF24L01 Wireless Modül Adaptörü Bu adaptör 5V ile çalışmayı sağlıyor. Antenli yada antensiz olsun ikisinde de kullanmanızı öneririm. Paraziti de azaltıyormuş(!)
  • 2 adet MAX4466 Elektret Mikrofon 5V veya 3.3V’da kullanabilirsiniz ama 3.3V’da daha temiz ses elde ettim.
  • 2 adet 8R 0.5W 83DB 36x5mm Hoparlör Ses seviyesi olarak yeterliydi. Arduino’nun besleyebileceği boyutta her hoparlörün de çalışacağını düşünüyorum.
  • 2 adet ButonBenim kullandığım butonun tuş kısmı biraz uzun ve çapı küçük. Daha geniş boyutlarda buton daha rahat kullanımı olabilir. 2 bacaklı herhangi buton da çalışacakdır.
  • 2 adet 10K DirençKahve-Siyah-Turuncu-Altın
  • Jumper Kablo — Dişi-Erkek, Erkek-Erkek
  • 2 adet Breadboard — Devreyi kurup test etmek için kullandım. Çeşit olsun diye farklı boyutlarda aldım. Orta boy, devre için yeterli alanı sağlıyor. Büyük Boy Breadboard, Orta Boy Breadboard
  • PertinaksBreadboard üzerindeki testlerden sonra devreyi lehim ile sabit halde kullanmak için aldım. Jumper kablolar ortada cirit atmamış oluyor. İlk pertinaks alma ve kullanma deneyimim olacağından dolayı riske atmayıp 2 adet almıştım ama 1 tanesi(12x18cm) yetti.
  • HavyaEğer pertinaks üzerine lehimleme yapmayacaksanız sadece hoparlör kablolarını lehimlemek için kullandım. Daha ince havya ucu ile lehim daha kolay yapılabilirdi.
  • Lehim Teli1.2mm kalınlığında tel kullandım ama daha ince (0.75mm vb.) tel ile lehim işlemi daha kolay olabilir diye düşünüyorum. Yakın pinleri lehimlerken bir yandan lehim teli bir yandan kablo bir yandan havya ucu biraz zorladı.
  • Silikon Tabancası — Devrede hareketli parçaları sabitlemek ve devreye çıplak elle teması engellemek için dışını balonlu naylonla(patlatılan poşetler) kaplamak için kullandım. Hoparlör sarkık durmaması için de kullandım.
  • Kablo Soymak için Aletler — Kablo soyma pensesi yerine yan keski ve pense kullandım ama soyma pensesi olsa çok daha kolay olurdu.

📥 Kütüphanelerin ve Kodların İndirilmesi

RF24, RF24Audio kütüphanelerini ve telsiz için gereken kodları aşağıdaki bağlantılardan indirin.

📤 Kütüphanelerin IDE’ye Eklenmesi

İndirilen .zip dosyalarını aşağıdaki yol ile ekleyin.

⚠️ Sadece RF24 ve RF24Audio dosyaları kütüphane dosyalarıdır.

Arduino IDE > Taslak > library ekle > .ZIP Kitaplığı Ekle…

📤 Kodların Arduino’ya Yüklenmesi

Bu aşamaya şuan ihtiyaç yok ancak devre bağlantılarını yaptıktan sonra kodları burada anlatıldığı gibi yüklemeniz için eklendi.

  • İndirilen Arduino-Walkie-Talkie-main.zip dosyasının içindeki yüklemek istediğiniz .ino uzantılı Arduino kodunu IDE ile açın.
  • Arduino’yu bilgisayara takın.
Araçlar > Kart  // Kullandığınız Arduino türünü seçin 
Araçlar > Port // Kartın takılı olduğu portu seçin

Portlarda kartınız gözükmüyorsa — CH340 çipli klon arduino sürücüleri nasıl yüklenir?

Doğru kartı ve portu seçtiğinizden eminseniz iki Arduino’ya da kodları yükleyebilirsiniz.

Yükleme sırasında sorun çıktı ise;

Araçlar > Islemci // Diğer seçeneklere bi’ bak
ATmega328P(Old Bootloader) seçtiğimde sorun geçmişti.

🗺️ Devre Kurulumu ve Test Edilmesi

Sıra aldığımız malzemeleri birleştirip test etmeye geldi.

📡 nRF24L01 Bağlantısı ve Testi

nRF24L01 modülü ve kullanacağımız adaptörün pin dizilimini aşağıdaki resimlerden ulaşabilirsiniz.

Resim 1 · nRF24L01 Modül Adaptörü
Resim 2 · nRF24L01 Modülün Pin Çıkışları

Adaptör kullanmadan yapılan bağlantı aşağıda gösteriliyor. Adaptör kullanarak yapılan bağlantıda tek değişiklik VCC’yi 3.3V yerine 5V’a bağlamanız.

Boş olan pin, kullanılmayan IRQ pini.

Resim 3 · Modülün Adaptörsüz Bağlantısı

Aşağıdaki pin dizilimleri Nano/Uno içindir. Mega için farklı pinler kullanılıyor. 🙏Yardım Aldığım Kaynaklar’da o bağlantıları bulabilirsiniz.

Pin Şeması

Arduino-Walkie-Talkie-main.zip dosyasındaki receiver.ino kodunu bir Arduino’ya, transmitter.ino kodunu diğer Arduino’ya yükleyin.

İki kodu da farklı Arduinolara yükledikten sonra alıcı kodunu yüklediğiniz Arduino’nun “Seri Port Ekranı”nda Hello Ardu yazısını görüyorsanız bağlantılar doğrudur demektir.

🔊 Hoparlör Bağlantısı ve Testi

Resim 4 · Hoparlör Bağlantı Şeması

Hoparlör üzerinde kırmızı kablo(+) D10 pinine, siyah kablo(-) GND pinine bağladım.

Arduino-Walkie-Talkie-main.zip dosyasındaki speaker.ino kodunu Arduino’ya yükleyip hoparlör bağlantılarını melodi sesleriyle test edebilirsiniz.

🔘 Buton Bağlantısı ve Testi

Resim 5 · Buton Bağlantı Şeması

Arduino-Walkie-Talkie-main.zip dosyasındaki button.ino kodunu Arduino’ya yükleyin.

Kodu yükledikten sonra “Seri Port Ekranı”nda butona bastığınızda sayaç sayıları artıyorsa sıradaki ve son bağlantıya geçebilirsiniz.

🎤 Mikrofon Bağlantısı ve Testi

Resim 6 · Mikrofon Bağlantı Şeması

5V’a da bağlayabilirsiniz. Ancak 3.3V’da daha temiz ses elde ettiğim için 3.3V kullandım.

Arduino-Walkie-Talkie-main.zip dosyasındaki microphone.ino kodunu Arduino’ya yükleyin.

Kodu çalıştırdıktan sonra “Seri Port Ekran”nda mikrofona konuştuğunuz zaman Volt değerlerinin değiştiğini göreceksiniz. Eğer değişim olmuyorsa bağlantıları kontrol edin.

🗺️ Tüm Bağlantı Şeması

Resim 7 · Tüm Bağlantı Şeması

Resim 7'de devrenin son hali var. Şemaları çizdiğimiz programda nRF24L01 antenli versiyonu veya adaptörü olmadığı için şemada antensiz ve adaptörsüz halini görüyorsunuz. Bağlantılarda herhangi bir farklılık yok.

Eğer adaptör kullanıcaksanız adaptörün VCC girişini 3.3V yerine 5V’a bağlayın. Adaptörsüz kullanımlarda modüle kondansatör lehimlemeniz gerektiğini unutmayın.

📤 Ana Kodun Arduino’ya Yüklenmesi

İndirilen Arduino-Walkie-Talkie-main.zip dosyasının içindeki main.ino kodunu iki Arduino’ya 📤 Kodların Arduino’ya Yüklenmesinde anlatıldığı gibi yükleyin.

Sorunsuz yüklendiyse butona basıp konuşmaya başlayabilirsiniz.

📦 Lehim ile Sabit Devre Kurulumu

Devremizi breadboard üzerine kurduk, kodları yükleyip çalıştırdık. Sırada lehim ile pertinaks üzerine sabit devreyi kurma aşamasına geldik.

Bu aşama zorunlu değildir. İsterseniz breadboard üzerinde kullanabilirsiniz ancak pertinaks üzerinde kablo karmaşası olmadan daha kullanışlı olduğu için bu aşamayı yaptım. Ayrıca pertinaks üzerinde sabit devrede mikrofonda gürültü daha da azaldı. Sanırım jumper kablolar daha az, daha kısa olduğu için parazit azaldı.

Resim 8 · Devrenin Önden Görünümü
Resim 9 · Devrenin Arkadan Antensiz Görünümü
Resim 10 · Devrenin Arkadan Antenli Görünümü

Alıcı-verici modülü sabitlemek için altına sıcak silikon sıktım. Yoksa hareket ettiğinde pinlerde temassızlık oluyor ve telsiz bağlantıları kesiliyordu.

Resim 11 · Devrenin Yandan Görünümü

Devrenin arkasındaki pinlere dokununca devre bozulabiliyor. Bu yüzden arkasına ve önüne patlatılan poşetlerden kesip sıcak silikonla yapıştırdım. Böylece devrelere temas etmemiş oluyoruz.

Resim 12 · Devrenin Arkadan Paketli Görünümü
Resim 13 · Telsizlerin Önden Görünümü
Resim 14 · Telsizlerin Arkadan Görünümü Görünümü

🧪 Demo / Test

Projenin değerlendirmesine geçmeden önce mikrofon ses testini örnek olması açısından Youtube’a yükledim. Projeyi yapacak olanlara fikir verebilir.

🖋️ Sonuç Nasıl Oldu?

Sonuçtan büyük ölçekte memnunum. Birkaç tecrübe edindim.

Pertinaks üzerine lehimlerken Arduino’yu direk lehimledim. Bunu yapmak yerine dişi-erkek pin header lehimleyip Arduino’yu bu headerlara takmak daha iyi olur. Böylece gerektiğinde Arduino’yu kolayca çıkartılıp yenisi takılabilir veya başka şeylerde kullanabilirsiniz.

  • İlk uzun lehim deneyimim(~140dk video kaydı 🙃) olduğundan dolayı mı bilmiyorum ama daha ince lehim teli, daha ince havya ucu ve lehim pastası kullansam lehim işlemleri daha kolay olabilirdi.
  • Kabloları soymak için kablo soyma pensesi kullanmak daha kısa sürmesine ve daha düzenli olmasını sağlar. Pense ve yan keski kullanarak biraz zor oldu.
  • Telsiz çalışırken iki taraf da butona basılı tutup konuşmaya çalışınca iki taraf da duymadığı gibi bug’a girmesine neden oluyor. Böyle durumlarda Arduino üzerindeki reset butona basıp kodların tekrar çalıştırılmasını sağlayarak bug sorunu o anlık çözebiliyoruz. Yani bir taraf konuşurken diğer taraf da dinlemesini bilmeli 🙃

--

--