- Çalışma Açıklaması:
- Gerekli Bileşenler:
- Devre şeması:
- NRF24L01 + Kablosuz Alıcı-Verici Modülü ile Çalışma:
- Arduino'ları Programlamak:
- İşleme Programı:
- Test yapmak:
Personel ve gizli verileri paylaşmak için bir Yerel Ağ oluşturmak, modern dünyamızda sıradan bir insan için neredeyse imkansız hale geldi. Bunun temel nedeni, Whatsapp, Facebook, Hangout gibi tüm yaygın sohbet yöntemlerinin ve neredeyse her şeyin bir internet bağlantısı içermesidir.
Ya verileri İnternet ortamı olmadan paylaşabilirsek ?
Evinizdeki veya iş yerinizdeki insanlarla ağ paketi veya İnternet Bağlantısı olmadan iletişim kurmanız ne kadar havalı olurdu ?
Ya sohbet ekranımızı kendi hayal gücümüzle özelleştirebilseydik ?
Tüm bunlar bir mikro denetleyici ve bir Kablosuz iletim ortamı ile mümkündür. NRF24L01 Projesini kullanan bu Arduino Sohbet Odası, yerel bölgenizde düşük maliyetli bir Sohbet Odası kurma konusunda size rehberlik edecektir.
Öyleyse atlayalım ve nasıl çalıştığını görelim.
Çalışma Açıklaması:
Temel olarak, bu şeyin çalışmasını sağlamak için bir çift Arduino kartına ve ucuz kablosuz modüle ihtiyacımız olacak. Burada kullanacağımız kablosuz modüller nRF24L01'dir. Bu modülleri seçmenin nedeni, bunların Zigbee'nin halefleri olması ve kurulum bağlantısı ile çalışmanın kolay olmasıdır. Ayrıca bu modüller, frekans atlamalı yayılma spektrumu ve şok patlama seçenekleriyle 2,4 GHz (ISM bandı) üzerinde çalışır, bu da bizi parazit problemlerinden rahatlatır.
Arduino ve NRF24L01, birbirleriyle konuşabilmeleri için Seri bir iletişim kurmak için birbirine bağlanmıştır. NRF24L01 yarı çift yönlü alıcı-verici modüllerdir, dolayısıyla veri gönderip alabilirler. Veriler kullanıcıdan toplanır ve iletilir, bu veriler herhangi bir (veya belirli bir) modül tarafından alınabilir ve ekranda görüntülenebilir.
Fakat!!!!! Arduino'nun Hata Ayıklama ekranını kullanarak sohbet edecek miyiz? Tabii ki değil. 'İşleme' yardımı ile kendi sohbet ekranımızı oluşturup özelleştireceğiz. Processing, UART kullanarak Arduino ile iletişim kurabilen bir yazılımdır. Java Runtime bulunan herhangi bir bilgisayarda çalışabilen İşleme dili ile bir.exe dosyası oluşturacağız. Sohbet etmek için Arduino'muzu takmamız ve bu.exe dosyasını açmamız ve Booooom !! Kendi Özelleştirilmiş tamamen ücretsiz sohbet odamızdayız.
Bu proje sadece Sohbet odasına iki üye eklemekle sınırlıdır, Ancak nRF24L01'de 6 Boru Hattı vardır ve bu nedenle sohbet odamızda maksimum 6 üye olabilir. Bu kömür odası, nRF24L01 Modüllerine bağlı olarak 100 metre aralığında çalışabilir.
Öyleyse alışverişe gidelim !!!!
Gerekli Bileşenler:
- Arduino (herhangi bir versiyon veya model) - 2Nos
- nRF24L01 + Kablosuz Alıcı-Verici Modülü - 2Nos
- 3.3 Voltaj Regülatörü - 2Nos. (Zorunlu değil)
- Bağlantı telleri
- Faiz (Lolz)
Devre şeması:
NRF24L01 ile Arduino Mega:
NRF24L01 ile Arduino Nano:
Projemiz herhangi bir karmaşık bağlantı içermiyor. Bir Arduino Mega ve bir Arduino Nano kullandım ve nRF24L01 ile bağlantıları yukarıda gösterilmektedir. Herhangi bir Arduino Modelini kullanabilirsiniz.
NRF24L01 + Kablosuz Alıcı-Verici Modülü ile Çalışma:
Bununla birlikte, nRF24L01'inin gürültüsüz çalışmasını sağlamak için aşağıdaki hususları göz önünde bulundurmak isteyebiliriz. Bu nRF24L01 + üzerinde uzun süredir çalışıyorum ve aşağıdaki noktaların duvara çarpmanıza yardımcı olabileceğini öğrendim.
1. Piyasadaki nRF24L01 + modüllerinin çoğu sahtedir. Ebay ve Amazon'da bulabildiğimiz ucuz olanlar en kötüsü (Endişelenmeyin, birkaç ince ayar ile onları çalıştırabiliriz)
2. Asıl sorun, sizin kodunuz değil güç kaynağıdır. Çevrimiçi kodların çoğu düzgün çalışacak, kişisel olarak test ettiğim bir çalışma kodum var, İhtiyacınız olursa bana bildirin.
3. NRF24L01 + olarak basılan modüller aslında Si24Ri (Evet bir Çin ürünü) olduğundan dikkat edin.
4. Klon ve sahte modüller daha fazla güç tüketir, dolayısıyla güç devrenizi nRF24L01 + veri sayfasına dayalı olarak geliştirmeyin, çünkü Si24Ri yaklaşık 250 mA yüksek akım tüketimine sahip olacaktır.
5. Voltaj dalgalanmalarına ve akım dalgalanmalarına karşı dikkatli olun, bu modüller çok hassastır ve kolayca yanabilir. (;-(şimdiye kadar 2 modül kızartılmış)
6. Modülün Vcc ve Gnd'sine çift kapasitör (10 uF ve 0.1 uF) eklemek, beslemenizi saf hale getirmenize yardımcı olur ve bu, modüllerin çoğu için işe yarar.
Yine de sorun yaşıyorsanız, yorum bölümüne bildirin veya bunu okuyun.
Arduino'ları Programlamak:
Hem Arduino Nano hem de Mega için program, CE ve CS pinlerindeki değişiklik için benzer olacaktır. Programı küçük parçalara ayırarak anlatacağım.
Arduino ve nRF24L01, SPI aracılığıyla iletişim kurduğundan, SPI kitaplığı için çağrıda bulunduk. RF modüllerimizin çalışması için Maniacbug RF24 kütüphanemizi de dahil ettik. Dosyayı buradan indirin ve IDE'nize ekleyin.
#Dahil etmek
NRF modüllerimiz sırasıyla 8. ve 10. pinlere CE ve CS'ye bağlanır.
RF24 myRadio (8, 10);
Biz denilen bir yapısal veri paketi oluşturmak paket . Değişken metin , verileri yayında iletmek için kullanılacaktır.
struct paketi {karakter metni; // Yayınlanacak metin}; typedef struct paketi Paketi; Paket verileri;
In boşluk kurulum () fonksiyonu, biz baud 9600 hızı ve kurulum MİN güç tüketimi ve 250kbps hızında 115 bizim modülleri başlatmak. Bu değerlerle daha sonra oynayabilirsiniz.
geçersiz kurulum () {Serial.begin (9600); gecikme (1000); //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // WIFI sinyallerinin üzerindeki 115 bant myRadio.setPALevel (RF24_PA_MIN); // MIN güç düşük öfke myRadio.setDataRate (RF24_250KBPS); // Minimum hız}
Modül, Veri Seri arabellek yoluyla alınırsa iletim modunda çalışacak şekilde yapılmıştır, aksi takdirde canlı verileri arayan alıcı modunda olacaktır. Kullanıcıdan gelen veriler bir char Array içinde depolanır ve bunları iletmek için WriteData () ' ya gönderilir.
void loop () {while (Serial.available ()> 0) // Kullanıcıdan değerler al {val = Serial.peek (); if (index <19) // Bir dizi boyutundan küçük {inChar = Serial.read (); // inData = inChar karakterini okuyun; // İndeksi depolayın ++; // Bir sonraki yazılacak yeri artır inData = '\ 0'; // Dizeyi boş sonlandırın} if (val == '#') {strcpy (data.text, inData); WriteData (); // Modülü İletim moduna geçirirken (index! = 0) {inData = ''; indeks--; }}} ReadData (); // Modül Alma modunu koy}
void WriteData () işlevi veriyi 0xF0F0F0F0AA adresine yazar, bu adres diğer modülde yazı borusu olarak kullanılır.
void WriteData () {myRadio.stopListening (); // Almayı Durdur ve aktarımı başlat myRadio.openWritingPipe (0xF0F0F0F066); // Bu 40 bitlik adrese veri gönderir myRadio.write (& data, sizeof (data)); gecikme (300); }
void ReadData () işlevi veriyi bu adrese 0xF0F0F0F066 üzerine yazar, bu adres diğer modülde okuma kanalı olarak kullanılır.
void ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Okunacak kanal, 40 bit Adres myRadio.startListening (); // Transminting'i durdur ve Reveicing if (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
İşte bu, programlama bölümümüz bitti. Burada birkaç şeyi anlayamıyorsanız, aşağıdaki Kod bölümünde verilen iki Arduino programına bakın, işleri daha iyi açıklamak için yorum satırları ekledim.
İşleme Programı:
'İşleme', sanatçılar tarafından Grafik tasarımı için kullanılan açık kaynaklı bir yazılımdır. Bu yazılım, yazılım ve Android uygulamaları geliştirmek için kullanılır. Geliştirilmesi oldukça kolaydır ve Android Geliştirme IDE'sine çok benzer. Dolayısıyla açıklamayı kısalttım.
Her iki Sohbet Ekranı için İşlem Kodu burada verilmiştir:
- Sohbet Ekranı 1 İşlem Kodu
- Sohbet Ekranı 2 İşlem Kodu
Arduino'ları kurduktan sonra bunları indirmek ve bilgisayarınızda açmak için üzerlerine sağ tıklayın ve 'Bağlantıyı farklı kaydet..' üzerine tıklayın. Bu *.pde dosyalarını açmak için 'İşleme' yazılımını kurmanız ve ardından Sohbet Kutularını açmak için 'Çalıştır' yapmanız gerekir. Yorum bölümü sorgulara açıktır. Verici ve Alıcı modülü için İşleme taslağı aynıdır.
Aşağıdaki kod bölümünde "port = new Serial (this, Serial.list (), 9600); // 4. PORT'u 9600 baud hızında okur" hangi porttan verinin alınacağına karar verdiği için önemlidir.
geçersiz kurulum () {size (510,500); port = new Serial (this, Serial.list (), 9600); // 4. PORT'u 9600 baudrate println'de okur (Serial.list ()); arkaplan (0); }
Burada Arduino'mdan 4. porttan veri okudum.
Örneğin, COM COM COM COM COM'a sahipseniz
Daha sonra yukarıdaki kod, COM'dan veri okuyacaktır.
Test yapmak:
İşleme ve Arduino taslağımız hazır olduğundan, programı Arduino'ya yükleyin ve Dizüstü Bilgisayarınıza takılı bırakın. Processing taslağınızı açın ve yazmaya başlayın ve "Enter" tuşuna basın, mesajınız alınan metni diğer bilgisayara bağlı başka bir Processing uygulamasında gösterecek olan diğer Arduino'ya iletilecektir. Tam gösteri için aşağıdaki Videoya daha fazla bakın.
Öyleyse, bu ucuz Arduino Sohbet Odasını kullanarak, herhangi bir İnternet bağlantısı olmadan yerel bölgenizdeki arkadaşlarınız ve ailenizle bu şekilde konuşabilirsiniz.