E70 433NW30S

Yepyeni bir modül, tam istediğiniz özellikler ve uygun fiyat. E70 LoRa modülleri ile 200 noktaya kadar aynı anda veri transferi yapabileceksiniz ve bekleme, tarama usülüne gerek kalmadan veri kayıpsız veri transferi yapabileceksiniz.

Parametre ayarlarını da vermek oldukça kolay bu modül de. AT komutları ile istediğiniz parametre ayarını herhangi bir usb dönüştürücüye ihtiyaç duymadan yapabileceksiniz.

İndirme Dosyaları

Satın Alma

Örnek Kodlar:

Merkez , Coordinatör Kodları

Kodun açıklamasını okumadan yükleme:

/*!
Bu deneme uygulamasında E70 Lora modülünün parametre ayarlarını değişebilir
ve deneme amaçlı 2 modül arasında haberleşme sağlayabilirsinizi.

deneme amaçlı mesajlaşma atılırken RSSI değeri de gelecektir.
RSSI: Sintal gücünü göstermektedir. maximum e70 için 235 dir.

Bu kod Alıcı, Coordinator (Merkez) Tarafındaki ESP32 ye yüklenmelidir.

Mehmet YILDIZ 2023
https://fixaj.com/

*/

#include <HardwareSerial.h>
#define M0 32  //  3in1 PCB mizde pin 7
#define M1 33  //  3in1 PCB mizde pin 6
#define RX 27  //  Lora nın 3. pini RX in ESP32 de hangi pine bağlı olduğu
#define TX 35  //  Lora nın 4. pini TX in ESP32 de hangi pine bağlı olduğu

bool Ayarmode = true;  //true yapılınca lora modülünün parametre ayarları değişerek işe başlar
                       //false a getirilirse ayar vermeden direk mesajlajmayı başlatır.
                       //tavsiyem true da kalmasıdır. Her başlangıçta modülün parametre ayarlarınıda
                       //kontrol etmiş olursunuz bu şekilde.

HardwareSerial fixajSerial(1);

unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 3000;
bool ayarMod = false;
byte e = 0;

struct Signal {
  char type[30];
  byte temp[4];
} mesaj;

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    ;  // wait for serial port to connect. Needed for native USB
  }

  fixajSerial.begin(115200, SERIAL_8N1, TX, RX);
  while (!fixajSerial) {
    ;  // wait for serial port to connect. Needed for native USB
  }

  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, 0);  //  coordinator mode m0=0, m1=0  |  normal mode m0=1, m1=0
  digitalWrite(M1, 0);
  pinMode(14, OUTPUT);  //led boşuna yanmasın diye, esp32 bug

  Serial.println("Fixaj.com baslat...TEST OKUMA Merkez");
  delay(100);

  /*
  burada mantık şu önce mevcut ayarları getiriyor..
  sonra istenilen şekilde parametre ayarları yeniden veriliyor..
  sonra yeni ayarları ekrana yazdırıyor, verdiğiniz ayarlar sağlıklı şekilde kaydedilmiş mi
  kontrol edesiniz diye. Sonrasında Loop içerisinde mesajlaşma ve dinleme başlıyor.
  */
  mevcutAyarlar();
  ayarDegis();

  // RESET();       //E70 parametre ayarlarını sıfırlar.
}

void loop() {

  if (millis() > kanalBekleme_sure + kanalBekleme_bekleme) {
    kanalBekleme_sure = millis();
    e++;
    strcpy(mesaj.type, "Sanliurfa Merkez");
    *((int *)mesaj.temp) = e;
    gonder(&mesaj);

    Serial.println("Mesaj Gönderildi");
  }

  while (fixajSerial.available()) {
    receive(&mesaj);
    Serial.print("type: ");
    Serial.println(mesaj.type);
    Serial.print("değer: ");
    Serial.println(*((int *)mesaj.temp));

    Serial.print("RSSI: ");
    char rssi[1];
    fixajSerial.readBytes(rssi, 1);
    Serial.println(rssi[0], DEC);
  }
}

/*
ayarDegis fonksiyonu parametre ayarlarını nasıl değiştireceğinizi 
gösterir. Örnek olarak bazı ayarlar yapılmıştır.
*/

void ayarDegis() {
  if (Ayarmode) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+WMCFG=0");  // 0 coordinatör, 1 Node, 4 default
    delay(100);
    fixajSerial.println("AT+PIDCFG=1453");  //ağ şifresi
    delay(100);
    fixajSerial.println("AT+CNCFG=128");  //the channels are only 0,1,2,3,4,5,6 and 128.
    delay(100);
    fixajSerial.println("AT+TFOCFG=3");  // 0 boardcast gibi, 1 data+long adres, 3 data+ RSSI
    delay(100);
    fixajSerial.println("AT+TFICFG=0");  //0 input broadcast, 1 short adres + data, 2 long adres + data
    delay(100);
    fixajSerial.println("AT+RSCFG=60");  //Node ağa bağlanmazsa yeniden başlat
    delay(100);
    fixajSerial.println("AT+IOCFG=1");  //push pull 0 yaparsanız enerji verimlili adına ledleri kapatır.
    delay(100);
    fixajSerial.println("AT+PWCFG=1");  //iletim gücü 30dbm, 0 yapılınca maximum ama uzun kullandım modüle zararlı
    delay(100);
    fixajSerial.println("AT+TLCFG=3");  //güç tüketim modu maximum, default 2
    delay(100);
    fixajSerial.println("AT+RSTART");

    while (fixajSerial.available()) {
      Serial.write(fixajSerial.read());
    }

    Serial.println("Ayarlar degisti, Mevcut Ayarlar Getiriliyor..");
    delay(3000);
    mevcutAyarlar();
  }
}

/*
mevcutAyarlar fonksiyonu E70 modülünün üstünde kayıtlı olan mevcut ayarlarını
ekrana yazdırır.
*/
void mevcutAyarlar() { 
    // Ayarlar ekranına giriş
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");
    delay(100);

    const char *ayarlar[] = { "AT+CNCFG=?",
                              "AT+WMCFG=?",
                              "AT+PWCFG=?",
                              "AT+TFOCFG=?",
                              "AT+TFICFG=?",
                              "AT+TMCFG=?",
                              "AT+PIDCFG=?",
                              "AT+DMCFG=?",
                              "AT+RSCFG=?",
                              "AT+UBCFG=?",
                              "AT+UPCFG=?",
                              "AT+IOCFG=?",
                              "AT+VER",
                              "AT+TLCFG=?",
                              "AT+DINFO=SELFS",
                              "AT+DINFO=SELFE" };

    const char *ayarlartr[] = { "Frekans Seçenekleri [Kanal]: 0,1,2,3,4,5,6 and 128 (her frekans 14s de olmayabilir) ,",
                                "Mod: 0- coordinatör, 1- Node, 4- default, ",
                                "Sinyal Gücü: 0- En yğksek [31.5 dbm ] Önerilen 1 olması [30dbm]",
                                "Gelen verinin Formatı:0-data, 1- data+ID adres, 3- data+RSSI, 5- Data+ID Adres+RSSI",
                                "Giden Verinin Formatı: 0- Broadcast, 2- ID adres+data",
                                "Gönderim Modu: 0- LORA, 1- GFSK, 0 olmalı",
                                "Ag sifresi 0-65535 arasi",
                                "Uyku modu aralığı 0-60 arası",
                                "Eğer node her hangi bir ağa bağlanmaz ise kendini belirli süre sonra resetlesin (süre 60 dan büyük olmalı)",
                                "Baud rate: 7-115200",
                                "Parity",
                                "0-push pull 1-open drain",
                                "Modülün Versiyonu",
                                "concurrency performans 0-low 1,2,3-highest (aynı anda veri gönderen nokta çok ise high yapın, enerji tüketimi artar)",
                                "Ağ daki sırası, bir ağa bağlı ise",
                                "Uzun adres yada id Adres bu adres her çipe özeldir değişmez" };

    for (int i = 0; i < sizeof(ayarlar) / sizeof(ayarlar[0]); i++) {

      fixajSerial.println(ayarlar[i]);
      delay(10);

      while (fixajSerial.available()) {
        Serial.write(fixajSerial.read());
      }

      Serial.println(ayarlartr[i]);
      Serial.println("");
    }

    fixajSerial.println("AT+EXIT");
    delay(2); 
}

void RESET() {
  if (Ayarmode) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+DFCFG");  // Fabrika ayarları geri getir
    delay(100);

    Serial.println("Reset Atildi, Mevcut Ayarlar Getiriliyor..");
    delay(3000);
    mevcutAyarlar();
  }
}

void gonder(Signal *mdata) {
  fixajSerial.write((uint8_t *)mdata, sizeof(Signal));
}

bool receive(Signal *mdata) {
  return (fixajSerial.readBytes((uint8_t *)mdata, sizeof(Signal)) == sizeof(Signal));
}

Node modül kodları

Node kısmının açıklama kısmını okumadan kodu yükleme:

/*!
Bu deneme uygulamasında E70 Lora modülünün parametre ayarlarını değişebilir
ve deneme amaçlı 2 modül arasında haberleşme sağlayabilirsinizi.

deneme amaçlı mesajlaşma atılırken RSSI değeri de gelecektir.
RSSI: Sintal gücünü göstermektedir. maximum e70 için 235 dir.

Bu kod gönderici (node) Tarafındaki ESP32 ye yüklenmelidir.

Mehmet YILDIZ 2023
https://fixaj.com/

*/

#include <HardwareSerial.h>
#define M0 32  //  3in1 PCB mizde pin 7
#define M1 33  //  3in1 PCB mizde pin 6
#define RX 27  //  Lora nın 3. pini RX in ESP32 de hangi pine bağlı olduğu
#define TX 35  //  Lora nın 4. pini TX in ESP32 de hangi pine bağlı olduğu

bool Ayarmode = true;  //true yapılınca lora modülünün parametre ayarları değişerek işe başlar
                       //false a getirilirse ayar vermeden direk mesajlajmayı başlatır.
                       //tavsiyem true da kalmasıdır. Her başlangıçta modülün parametre ayarlarınıda
                       //kontrol etmiş olursunuz bu şekilde.

HardwareSerial fixajSerial(1);

unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 3000;

unsigned long kanalBekleme_sure_RESTART = 0;
unsigned long kanalBekleme_bekleme_RESTART = 60000;  //node ağa 60sn içinde bağlanamazsa
                                                     //esp kendine reset atıyor. Birnevi watchdog gibi
bool ayarMod = false;
byte e = 0;

struct Signal {
  char type[30];
  byte temp[4];
} mesaj;

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    ;  // wait for serial port to connect. Needed for native USB
  }

  fixajSerial.begin(115200, SERIAL_8N1, TX, RX);
  while (!fixajSerial) {
    ;  // wait for serial port to connect. Needed for native USB
  }

  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, 1);  //  coordinator mode m0=0, m1=0  |  normal mode m0=1, m1=0
  digitalWrite(M1, 0);
  pinMode(14, OUTPUT);  //led boşuna yanmasın diye, esp32 bug

  Serial.println("Fixaj.com baslat...TEST OKUMA Node");
  delay(100);

  /*
  burada mantık şu önce mevcut ayarları getiriyor..
  sonra istenilen şekilde parametre ayarları yeniden veriliyor..
  sonra yeni ayarları ekrana yazdırıyor, verdiğiniz ayarlar sağlıklı şekilde kaydedilmiş mi
  kontrol edesiniz diye. Sonrasında Loop içerisinde mesajlaşma ve dinleme başlıyor.
  */
  mevcutAyarlar();
  ayarDegis();

  // RESET();       //E70 parametre ayarlarını sıfırlar.
}

void loop() {

  if (millis() > kanalBekleme_sure + kanalBekleme_bekleme) {
    kanalBekleme_sure = millis();
    e++;
    strcpy(mesaj.type, "Sanliurfa node 1");
    *((int *)mesaj.temp) = e;
    gonder(&mesaj);

    Serial.println("Mesaj Gönderildi");
  }

  while (fixajSerial.available()) {
    receive(&mesaj);
    Serial.print("type: ");
    Serial.println(mesaj.type);
    Serial.print("değer: ");
    Serial.println(*((int *)mesaj.temp));

    Serial.print("RSSI: ");
    char rssi[1];
    fixajSerial.readBytes(rssi, 1);
    Serial.println(rssi[0], DEC);
    kanalBekleme_sure_RESTART = millis();  // yeniden başlatmayı durdur
  }

  //bazen node lar ağa bağlanamıyor 60sn sonra esp hard reset yapıcak.

  if (millis() > kanalBekleme_sure_RESTART + kanalBekleme_bekleme_RESTART) {
    kanalBekleme_sure_RESTART = millis();

    // Restart ESP
    ESP.restart();

    Serial.println("ESP Yeniden Baslatiliyor...");
  }
}

/*
ayarDegis fonksiyonu parametre ayarlarını nasıl değiştireceğinizi 
gösterir. Örnek olarak bazı ayarlar yapılmıştır.
*/

void ayarDegis() {
  if (Ayarmode) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+WMCFG=1");  // 0 coordinatör, 1 Node, 4 default
    delay(100);
    fixajSerial.println("AT+PIDCFG=1453");  //ağ şifresi
    delay(100);
    fixajSerial.println("AT+CNCFG=128");  //the channels are only 0,1,2,3,4,5,6 and 128.
    delay(100);
    fixajSerial.println("AT+TFOCFG=3");  // 0 boardcast gibi, 1 data+long adres, 3 data+ RSSI
    delay(100);
    fixajSerial.println("AT+TFICFG=0");  //0 input broadcast, 1 short adres + data, 2 long adres + data
    delay(100);
    fixajSerial.println("AT+RSCFG=100");  //Node ağa bağlanmazsa yeniden başlat (80-60=20sn sonra)
    delay(100);
    fixajSerial.println("AT+IOCFG=1");  //push pull 0 yaparsanız enerji verimlili adına ledleri kapatır.
    delay(100);
    fixajSerial.println("AT+PWCFG=1");  //iletim gücü 30dbm, 0 yapılınca maximum ama uzun kullandım modüle zararlı
    delay(100);
    fixajSerial.println("AT+TLCFG=3");  //güç tüketim modu maximum, default 2
    delay(100);
    fixajSerial.println("AT+RSTART");

    while (fixajSerial.available()) {
      Serial.write(fixajSerial.read());
    }

    Serial.println("Ayarlar degisti, Mevcut Ayarlar Getiriliyor..");
    delay(3000);
    mevcutAyarlar();
  }
}

/*
mevcutAyarlar fonksiyonu E70 modülünün üstünde kayıtlı olan mevcut ayarlarını
ekrana yazdırır.
*/
void mevcutAyarlar() {
  // Ayarlar ekranına giriş
  fixajSerial.print("++");
  delay(100);
  fixajSerial.print("+++");
  delay(100);

  const char *ayarlar[] = { "AT+CNCFG=?",
                            "AT+WMCFG=?",
                            "AT+PWCFG=?",
                            "AT+TFOCFG=?",
                            "AT+TFICFG=?",
                            "AT+TMCFG=?",
                            "AT+PIDCFG=?",
                            "AT+DMCFG=?",
                            "AT+RSCFG=?",
                            "AT+UBCFG=?",
                            "AT+UPCFG=?",
                            "AT+IOCFG=?",
                            "AT+VER",
                            "AT+TLCFG=?",
                            "AT+DINFO=SELFS",
                            "AT+DINFO=SELFE" };

  const char *ayarlartr[] = { "Frekans Seçenekleri [Kanal]: 0,1,2,3,4,5,6 and 128 (her frekans 14s de olmayabilir) ,",
                              "Mod: 0- coordinatör, 1- Node, 4- default, ",
                              "Sinyal Gücü: 0- En yğksek [31.5 dbm ] Önerilen 1 olması [30dbm]",
                              "Gelen verinin Formatı:0-data, 1- data+ID adres, 3- data+RSSI, 5- Data+ID Adres+RSSI",
                              "Giden Verinin Formatı: 0- Broadcast, 2- ID adres+data",
                              "Gönderim Modu: 0- LORA, 1- GFSK, 0 olmalı",
                              "Ag sifresi 0-65535 arasi",
                              "Uyku modu aralığı 0-60 arası",
                              "Eğer node her hangi bir ağa bağlanmaz ise kendini belirli süre sonra resetlesin (süre 60 dan büyük olmalı)",
                              "Baud rate: 7-115200",
                              "Parity",
                              "0-push pull 1-open drain",
                              "Modülün Versiyonu",
                              "concurrency performans 0-low 1,2,3-highest (aynı anda veri gönderen nokta çok ise high yapın, enerji tüketimi artar)",
                              "Ağ daki sırası, bir ağa bağlı ise",
                              "Uzun adres yada id Adres bu adres her çipe özeldir değişmez" };

  for (int i = 0; i < sizeof(ayarlar) / sizeof(ayarlar[0]); i++) {

    fixajSerial.println(ayarlar[i]);
    delay(10);

    while (fixajSerial.available()) {
      Serial.write(fixajSerial.read());
    }

    Serial.println(ayarlartr[i]);
    Serial.println("");
  }

  fixajSerial.println("AT+EXIT");
  delay(2);
}

void RESET() {
  if (Ayarmode) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+DFCFG");  // Fabrika ayarları geri getir
    delay(100);

    Serial.println("Reset Atildi, Mevcut Ayarlar Getiriliyor..");
    delay(3000);
    mevcutAyarlar();
  }
}

void gonder(Signal *mdata) {
  fixajSerial.write((uint8_t *)mdata, sizeof(Signal));
}

bool receive(Signal *mdata) {
  return (fixajSerial.readBytes((uint8_t *)mdata, sizeof(Signal)) == sizeof(Signal));
}

SONUÇ:

Bir Adrese Mesaj

Merkez Noktası Kodu:

#include <HardwareSerial.h>
#define M0 32  //  3in1 PCB mizde pin 7
#define M1 33  //  3in1 PCB mizde pin 6
#define RX 27  //  Lora nın 3. pini RX in ESP32 de hangi pine bağlı olduğu
#define TX 35  //  Lora nın 4. pini TX in ESP32 de hangi pine bağlı olduğu

HardwareSerial fixajSerial(1);

unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 3000;
bool ayarMod = false;
byte e = 0; 
byte dizi2[] = { 0x00, 0x12, 0x4b, 0x00, 0x23, 0x61, 0xfe, 0x19 }; //kendi idi ni yaz Node un.

struct Signal {
  char type[30];
  byte temp[4];
  char adres[8];
  byte rssi[1];
} mesaj;

void setup() {
  Serial.begin(115200);
  fixajSerial.begin(115200, SERIAL_8N1, TX, RX);
  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, 0);  //  coordinator mode m0=0, m1=0  |  normal mode m0=1, m1=0
  digitalWrite(M1, 0);
  pinMode(14, OUTPUT);
  Serial.println("Fixaj.com baslat...");
  delay(2000);

  ayarMod = false;
   ayarDegis();  //ayarDegis ve mevcutAyarlar metodunu aynı anda çağırmayınız.
  // mevcutAyarlar();
}

void loop() {

  if (ayarMod) {

    if (Serial.available()) {
      fixajSerial.write(Serial.read());
    }

    if (fixajSerial.available()) {
      Serial.write(fixajSerial.read());
    }

  } else {

    if (millis() > kanalBekleme_sure + kanalBekleme_bekleme) {
      kanalBekleme_sure = millis();
      e++;
      strcpy(mesaj.type, "Sanliurfa Merkez");
      *(int *)(mesaj.temp) = e;
      gonder(&mesaj);
    }

    while (fixajSerial.available()) {
      receive(&mesaj);
      Serial.print("type: ");
      Serial.println(mesaj.type);
      Serial.print("değer: ");
      Serial.println(*(int *)(mesaj.temp));
      Serial.print("adres: ");
      for (byte i : mesaj.adres) {
        Serial.print(i, HEX);
        Serial.print(' ');
      }
      Serial.print("rssi: ");
      Serial.println(mesaj.rssi[0], DEC);

      /*

      Serial.print("RSSI: ");
      char rssi[1];
      fixajSerial.readBytes(rssi, 1);
      Serial.println(rssi[0], DEC);

      Serial.print("Adres: ");
      char adr[8];
      fixajSerial.readBytes(adr, 8);
      Serial.println(adr);

     
      delay(100);
      while (fixajSerial.available()) {
        Serial.write(fixajSerial.read());
      }
      */



      if (memcmp(mesaj.adres, dizi2, sizeof(mesaj.adres)) == 0) {
        Serial.println("Diziler ayni");

        strcpy(mesaj.type, "Sanliurfa adrese mesaj");
        *(int *)(mesaj.temp) = 63;
        for (byte i : mesaj.adres) {
          fixajSerial.write(i);
        }
        gonder(&mesaj);
      } else {
        Serial.println("Diziler farkli");
      }
    }
  }
}


void gonder(Signal *mdata) {
  fixajSerial.write((uint8_t *)mdata, sizeof(Signal));
}

bool receive(Signal *mdata) {
  return (fixajSerial.readBytes((uint8_t *)mdata, sizeof(Signal)) == sizeof(Signal));
}

/*
ayarDegis fonksiyonu parametre ayarlarını nasıl değiştireceğinizi 
gösterir. Örnek olarak bazı ayarlar yapılmıştır.
*/

void ayarDegis() {
  if (ayarMod) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+WMCFG=0");  // 0 coordinatör, 1 Node, 4 default
    delay(100);
    fixajSerial.println("AT+PIDCFG=1453");  //ağ şifresi
    delay(100);
    fixajSerial.println("AT+CNCFG=128");  //the channels are only 0,1,2,3,4,5,6 and 128.
    delay(100);
    fixajSerial.println("AT+TFOCFG=5");  // 0 boardcast gibi, 1 data+long adres, 3 data+ RSSI
    delay(100);
    fixajSerial.println("AT+TFICFG=2");  //0 input broadcast, 1 short adres + data, 2 long adres + data
    delay(100);
    fixajSerial.println("AT+PWCFG=1");
    delay(100);
    fixajSerial.println("AT+RSTART");
  }
}

/*
mevcutAyarlar fonksiyonu E70 modülünün üstünde kayıtlı olan mevcut ayarlarını
ekrana yazdırır.
*/

void mevcutAyarlar() {
  if (ayarMod) {
    // Ayarlar ekranına giriş
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");
    delay(100);

    const char *ayarlar[] = { "AT+CNCFG=?", "AT+WMCFG=?", "AT+PWCFG=?", "AT+TFOCFG=?", "AT+TFICFG=?",
                              "AT+TMCFG=?", "AT+PIDCFG=?", "AT+DMCFG=?", "AT+RSCFG=?", "AT+UBCFG=?",
                              "AT+UPCFG=?", "AT+IOCFG=?", "AT+VER", "AT+TLCFG=?", "AT+DMCFG=?",
                              "AT+DINFO=SELFS", "AT+DINFO=SELFE" };

    const char *ayarlartr[] = { "Frekans: 0,1,2,3,4,5,6 and 128 ,",
                                "Mod: 0 coordinatör, 1 Node, 4 default, ",
                                "Sinyal Gücü: 0-En yüksek 1,2,3, ",
                                "AT+TFOCFG=?", "AT+TFICFG=?",
                                "AT+TMCFG=?", "AT+PIDCFG=?", "AT+DMCFG=?", "AT+RSCFG=?", "AT+UBCFG=?",
                                "AT+UPCFG=?", "AT+IOCFG=?", "AT+VER", "AT+TLCFG=?", "AT+DMCFG=?",
                                "AT+DINFO=SELFS", "AT+DINFO=SELFE" };

    for (int i = 0; i < sizeof(ayarlar) / sizeof(ayarlar[0]); i++) {

      fixajSerial.println(ayarlar[i]);
      delay(10);

      while (fixajSerial.available()) {
        Serial.write(fixajSerial.read());
      }
      //Serial.println(ayarlartr[i]);
      // Serial.println("");
    }
  }
  fixajSerial.println("AT+EXIT");
  delay(2);
}

Node Gönderici Kısım Kodu:

#include <HardwareSerial.h>
#define M0 32  //  3in1 PCB mizde pin 7
#define M1 33  //  3in1 PCB mizde pin 6
#define RX 27  //  Lora nın 3. pini RX in ESP32 de hangi pine bağlı olduğu
#define TX 35  //  Lora nın 4. pini TX in ESP32 de hangi pine bağlı olduğu

HardwareSerial fixajSerial(1);

unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 3000;
bool ayarMod = false;
byte e = 0;

struct Signal {
  char type[30];
  byte temp[4];
} mesaj;

void setup() {
  Serial.begin(115200);
  fixajSerial.begin(115200, SERIAL_8N1, TX, RX);
  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, 1);  //  coordinator mode m0=0, m1=0  |  normal mode m0=1, m1=0
  digitalWrite(M1, 0);
  pinMode(14, OUTPUT);
  Serial.println("Fixaj.com baslat...");
  delay(2000);

  ayarMod = false;
   ayarDegis();  //ayarDegis ve mevcutAyarlar metodunu aynı anda çağırmayınız.
 // mevcutAyarlar();
}

void loop() {

  if (ayarMod) {

    if (Serial.available()) {
      fixajSerial.write(Serial.read());
    }

    if (fixajSerial.available()) {
      Serial.write(fixajSerial.read());
    }

  } else {

    if (millis() > kanalBekleme_sure + kanalBekleme_bekleme) {
      kanalBekleme_sure = millis();
      e++;
      strcpy(mesaj.type, "Sanliurfa node 1");
      *(int *)(mesaj.temp) = e;
      gonder(&mesaj);
    }

    while (fixajSerial.available()) {
      receive(&mesaj);
      Serial.print("type: ");
      Serial.println(mesaj.type);
      Serial.print("değer: ");
      Serial.println(*(int *)(mesaj.temp));

      Serial.print("RSSI: ");
      char rssi[1];
      fixajSerial.readBytes(rssi, 1);
      Serial.println(rssi[0], DEC);
    }
  }
}

void gonder(Signal *mdata) {
  fixajSerial.write((uint8_t *)mdata, sizeof(Signal));
}

bool receive(Signal *mdata) {
  return (fixajSerial.readBytes((uint8_t *)mdata, sizeof(Signal)) == sizeof(Signal));
}

/*
ayarDegis fonksiyonu parametre ayarlarını nasıl değiştireceğinizi 
gösterir. Örnek olarak bazı ayarlar yapılmıştır.
*/

void ayarDegis() {
  if (ayarMod) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+WMCFG=1");  // 0 coordinatör, 1 Node, 4 default
    delay(100);
    fixajSerial.println("AT+PIDCFG=1453");  //ağ şifresi
    delay(100);
    fixajSerial.println("AT+CNCFG=128");  //the channels are only 0,1,2,3,4,5,6 and 128.
    delay(100);
    fixajSerial.println("AT+TFOCFG=0");  // 0 boardcast gibi, 1 data+long adres, 3 data+ RSSI
    delay(100);
    fixajSerial.println("AT+TFICFG=0");  //0 input broadcast, 1 short adres + data, 2 long adres + data
    delay(100);
    fixajSerial.println("AT+PWCFG=1");
    delay(100);
    fixajSerial.println("AT+RSCFG=80");
    delay(100);
    fixajSerial.println("AT+RSTART");
  }
}

/*
mevcutAyarlar fonksiyonu E70 modülünün üstünde kayıtlı olan mevcut ayarlarını
ekrana yazdırır.
*/


void mevcutAyarlar() {
  if (ayarMod) {
    // Ayarlar ekranına giriş
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");
    delay(100);

    const char *ayarlar[] = { "AT+CNCFG=?", "AT+WMCFG=?", "AT+PWCFG=?", "AT+TFOCFG=?", "AT+TFICFG=?",
                              "AT+TMCFG=?", "AT+PIDCFG=?", "AT+DMCFG=?", "AT+RSCFG=?", "AT+UBCFG=?",
                              "AT+UPCFG=?", "AT+IOCFG=?", "AT+VER", "AT+TLCFG=?", "AT+DMCFG=?",
                              "AT+DINFO=SELFS", "AT+DINFO=SELFE" };

    const char *ayarlartr[] = { "Frekans: 0,1,2,3,4,5,6 and 128 ,",
                                "Mod: 0 coordinatör, 1 Node, 4 default, ",
                                "Sinyal Gücü: 0-En yüksek 1,2,3, ",
                                "AT+TFOCFG=?", "AT+TFICFG=?",
                                "AT+TMCFG=?", "AT+PIDCFG=?", "AT+DMCFG=?", "AT+RSCFG=?", "AT+UBCFG=?",
                                "AT+UPCFG=?", "AT+IOCFG=?", "AT+VER", "AT+TLCFG=?", "AT+DMCFG=?",
                                "AT+DINFO=SELFS", "AT+DINFO=SELFE" };

    for (int i = 0; i < sizeof(ayarlar) / sizeof(ayarlar[0]); i++) {

      fixajSerial.println(ayarlar[i]);
      delay(10);

      while (fixajSerial.available()) {
        Serial.write(fixajSerial.read());
      }
      //Serial.println(ayarlartr[i]);
      // Serial.println("");
    }

    fixajSerial.println("AT+EXIT");
    delay(2);
  }
}
/*
void mevcutAyarlar() {
  if (ayarMod) {
    fixajSerial.print("++");
    delay(100);
    fixajSerial.print("+++");  // Ayarlar ekranına giriş
    delay(100);
    fixajSerial.println("AT+CNCFG=?");  //hangi frekanas
    delay(100);
    fixajSerial.println("AT+WMCFG=?");  //MODE 0-COOR 1- NORMAL
    delay(100);
    fixajSerial.println("AT+PWCFG=?");  //GÜÇ
    delay(100);
    fixajSerial.println("AT+TFOCFG=?");  //OUTPUT FORMAT
    delay(100);
    fixajSerial.println("AT+TFICFG=?");  //INPUT FORMAT
    delay(100);
    fixajSerial.println("AT+TMCFG=?");  //LONG RAGE OR GFSK
    delay(100);
    fixajSerial.println("AT+PIDCFG=?");  //NET İD
    delay(100);
    fixajSerial.println("AT+DMCFG=?");
    delay(100);
    fixajSerial.println("AT+RSCFG=?");  //OTO RESET SÜRESİ
    delay(100);
    fixajSerial.println("AT+UBCFG=?");  //BAUD RATE 7- 115200
    delay(100);
    fixajSerial.println("AT+UPCFG=?");  //ODD OR EVEN PARİTY
    delay(100);
    fixajSerial.println("AT+IOCFG=?");  //PUSH PULL OR OPEN DRAİN
    delay(100);
    fixajSerial.println("AT+VER");  //VERSİYON
    delay(100);
    fixajSerial.println("AT+TLCFG=?");  //CONCURRENCY
    delay(100);
    fixajSerial.println("AT+DMCFG=?");
    delay(100);
    fixajSerial.println("AT+DINFO=SELFS");
    delay(100);
    fixajSerial.println("AT+DINFO=SELFE");
    delay(100);
    fixajSerial.println("AT+EXIT");
    delay(2);
  }
}

*/