Lora – Nano Geliştirme Kiti V3 (Siyah Versiyon 3)
Bu yazıda Lora haberleşme tekniğinin kullanımını kolaylaştırmak amacıyla tasarlanan, Lora-Nano Geliştirme kitimizin üçüncü versiyonunu sizlere tanıtacağız. Ayrıca temel olarak E22-900T22D lora modülleri ile noktadan noktaya haberleşmenin nasıl gerçekleştirilebileceğini göstereceğiz.

Siyah renkteki Lora-Nano Versiyon 3 modülümüzün yeşil renkteki versiyon 2’den donanım olarak tek farkı, E22 loranın AUX bacağının Arduino Nano’nun D4 pinine bağlanmış olmasıdır.

Bunun dışındaki özellikleri Versiyon 2 ile aynıdır. Versiyon 2’de olduğu gibi Versiyon 3 üzerinde de yine harici besleme için bir Vin girişi bulunmaktadır. Ayrıca Arduino nanonun bütün bacaklarına harici olarak ulaşabilmeyi sağlayan 2×15’lik dişi bir header mevcuttur.


E22’nin söz konusu AUX bacağı, gönderme veya alma işlemi için modülün hazır olup olmadığını anlamamızı sağlayan, opsiyonel bir özelliktir. Eğer modül hazır durumdaysa AUX high durumunda yani 3.3 volt seviyesindedir. Modül herhangi bir dahili süreçle meşgulse AUX bu defa low durumunda yani 0 volt seviyesindedir.


Şimdi Lora-Nano geliştirme kiti ile basit bir haberleşmenin nasıl gerçekleştirilebileceğine değinelim. Öncelikle geliştirme kitimizi kullanarak E22 lora modülünün konfigürasyonunun nasıl yapılabileceğini inceleyelim. Bilgisayarımız ile E22 Lora modülü arasındaki köprü görevini kit üzerindeki Arduino Nano gerçekleştiriyor. Bu amaçla Arduino nano’ya basit bir konfigürasyon kodu yüklüyoruz.
Arduino Nano Konfigürasyon Kodu
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 8); // RX, TX (V3)
#define M0 7
#define M1 6
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, HIGH);
}
void loop() {
if (Serial.available()) {
mySerial.write(Serial.read());
}
if (mySerial.available()) {
Serial.write(mySerial.read());
}
}
Bu kodun loop döngüsünü incelersek aslında programın yaptığı şeyin basit bir aracılık olduğunu görebiliriz. Yani bilgisayardan gelen verilerin E22’ye ve E22’den gelen verilerin ise bilgisayara ulaşmasını sağladığını söyleyebiliriz. Bu sayede rf-setting programını kullanarak E22 lora’nın mevcut parametre değerlerini okumak ve değiştirmek mümkün.

RF-Setting programını aşağıdaki linkten indirebilirsiniz.
https://arkis.com.tr/dosyalar/lora/RF_SettingE22-E90SLV2.0.zip
RF-setting programı ilk açıldığında arayüz Çince geliyor. English butonuna basarak arayüzü İngilizceye çeviriyoruz. Konfigürasyon kodu yüklü olan kitimiz USB ile bağlı olduğu bilgisayarda hangi com portunu kullanıyorsa onu seçip open butonuna basıyoruz. Tabi open butonuna basmadan önce başka bir programla bu com portunun meşgul edilmediğinden emin olmamız gerekiyor. İlgili com portu açıldıktan sonra sonra get butonuna basarak e22 loranın halihazırdaki parametrelerini ekranımıza yüklüyoruz.

Bu aşamada eğer “module no response” hatası ile karşılaşılıyorsa yani, Arduino nano’nun portunu open ile açılabildik, ancak e22 lora modülüne ulaşamıyor isek, bu durumda sıkça karşılaşılan iki meseleden bahsetmek faydalı olacaktır.

İlk ihtimal konfigürasyon kodunun yüklenmemiş olması durumudur. Problem buysa konfigürasyon kodunu yüklediğimizden emin olmamız yeterli olacaktır. İkincisi ise Arduino Nano’nun kullandığı CH340 entegresinin sürücüsü ile alakalı bir sorun olabilir.

Bazı işletim sistemlerindeki sürücüler bu aşamada sorun çıkartabiliyor. Bu durumda ise aşağıdaki linkte sunulan sürücü yüklenerek problem halledilebilir.
https://www.wch-ic.com/downloads/file/65.html?time=2023-03-16%2022:57:59
E22’nin daha önce ayarında herhangi bir değişiklik yapılmadıysa, fabrika ayarları üzerinde sadece trans mod. ve address parametrelerinde değişiklik yapıyoruz. Trans mod.’u fixed olarak belirliyoruz çünkü belirli sadece bir adrese sahip bir alıcıya veri göndermeyi planlıyoruz. Adres olarak bu uygulama için vericiye 1 değerini veriyoruz. Adres değeri 0 ile 65535 değerleri arasında istediğimiz herhangi bir sayı ile ifade edilebilir. Alıcı için ise yine bu uygulamaya ait olmak üzere 2 değerini veriyoruz. Diğer bütün parametrelerin vericininkiler ile aynı olmasına dikkat ediyoruz.


Channel (yani kanal) parametresi ile aslında haberleşmeyi gerçekleştirdiğimiz frekansı ayarlamış oluyoruz. Bu ayarlama için üreticinin sunduğu basit bir formül var. Frekans = 850.125 Mhz + kanal x 1 MHz. Yani ekranda görüldüğü gibi kanalımız (yani Channel parametresi) 18 olduğu zaman çalışma frekansımızı 850.125 MHz + 18 MHz yani 868.125 MHz olarak ayarlamış oluyoruz. Bu formüle göre hesap ederek 850.125 MHz ile 930.125 MHz arasında 81 farklı kanal seçmek mümkün.

Çok sık unutulduğu için tekrar hatırlatmak istiyoruz: Bu parametre ayarları yapılırken Arduino nano içinde konfigürasyon kodu yüklü olmalı. Konfigürasyonu rf-setting programı ile gerçekleştirdikten sonra set param butonuna basıp ayarlarımızı e22 içerisine kaydetmeyi unutmuyoruz. Eğer en başa dönüp yeniden fabrika ayarlarından başlamak isterseniz param reset butonuna basmanız yeterli.
RF-setting programını kapattıktan sonra verici olarak kullanmak istediğimiz modüle verici kodunu, alıcı olarak kullanmak istediğimiz modüle ise alıcı kodunu Arduino geliştirme ortamı ile yüklüyoruz.
Arduino Nano Verici Kodları
//Verici
#include <LoRa_E22.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 8);
LoRa_E22 E22(&mySerial);
#define M0 7
#define M1 6
struct veriler {
char deger[15];
} data;
void setup() {
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
Serial.begin(9600);
E22.begin();
delay(500);
}
void loop() {
sprintf(data.deger,"Merhaba");
ResponseStatus rs = E22.sendFixedMessage(0, 2, 18, &data, sizeof(veriler));
Serial.println(rs.getResponseDescription());
delay(1000);
}
Arduino Nano Alıcı Kodları
//Alici
#include <LoRa_E22.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9,8);
LoRa_E22 E22(&mySerial);
#define M0 7
#define M1 6
struct veriler {
char deger[15];
} data;
void setup() {
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
Serial.begin(9600);
E22.begin();
delay(500);
}
void loop() {
while (E22.available() > 1) {
ResponseStructContainer rsc = E22.receiveMessage(sizeof(veriler));
struct veriler data = *(veriler*)rsc.data;
Serial.print("Gelen Mesaj: ");
Serial.println(data.deger);
rsc.close();
}
}
Göndericinin her bir saniyede bir gönderdiği “merhaba” mesajını alıcı modülünün bağlı bulunduğu seri portu istediğiniz herhangi bir terminal programı ile açarak izleyebiliriz.
