Çözüldü4.43K görüntülenmeArduinoE22900T22D LoRa alıcı verici
0

herkse merhaba. 5 loradan ısı nem verisi almak istiyorum. 1 alıcı dan veri almak tamam. alıcı kısmında çoklu loradan veri almayı başaramadım. hangi loradan veri geldiğini alıcıda nasıl ayırt edeceğim. esp32 kullanıyorum bununla ilgili bir kod varsa lütfen paylaşırmısınız..

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Ağustos 1, 2022
0

multiple lora video mu izlemenizi öneririm

Mehmet En iyi cevap olarak seçildi Ağustos 1, 2022
0

devre fotoğralarını ve parametre ayar ekranlarınıda ekle

Mehmet Cevaplanan soru Temmuz 1, 2022
0

mehmet bey iyi günler. bu kod lar çalışmadı

couger star Cevaplanan soru Haziran 29, 2022
0

////VERİCİ

#include "LoRa_E22.h"
#include <HardwareSerial.h>
#define M0 32 //3in1 PCB mizde pin 7
#define M1 33 //3in1 PCB mizde pin 6
#define RX 25 //3in1 PCB mizde pin RX
#define TX 35  //3in1 PCB mizde pin TX
#include <Wire.h>
#include "ClosedCube_HDC1080.h"
  ClosedCube_HDC1080 hdc1080; 
  HardwareSerial fixajSerial(1);                            //Serial biri seçiyoruz.
LoRa_E22 e22(TX, RX, &fixajSerial, UART_BPS_RATE_9600);
  struct Signal {
  char type[80]= "CiHAZ ODASI" ;
  byte temp[4];
  byte nem[4];
   byte id[1];
} data;
  void setup() {
  pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, LOW);
  digitalWrite(M1, LOW);
    Serial.begin(9600);
  hdc1080.begin(0x40);
  delay(500);
  e22.begin();
  delay(500);
  }
  void loop() {
          delay(1000);
    *(float*)(data.temp) = hdc1080.readTemperature();
  *(float*)(data.nem) = hdc1080.readHumidity();
 *(float*)(data.id) = 02;
  ResponseStatus rs = e22.sendFixedMessage(0, 2, 18, &data, sizeof(Signal));
  Serial.println(rs.getResponseDescription());
    Serial.println(*(float*)(data.temp));
  Serial.println(*(float*)(data.nem));
  Serial.println(*(float*)(data.id));
  }

couger star Cevaplanan soru Haziran 29, 2022
0

//// ALICI 
#include "LoRa_E22.h"
#include <SoftwareSerial.h>
  //SoftwareSerial mySerial(A0, A1);
SoftwareSerial fixSerial(10, 11); // RX, TX 
/*
   Pinler     Arduino MEGA Lora E32 433T20d
                  A8                3
                  A9                4
*/
#define DS3231_ADDRESS 0x68
#define M0 7
#define M1 6 
LoRa_E22 e22(&fixSerial);
#include <Wire.h>  
#include "TWILiquidCrystal.h"                    
//#include <LiquidCrystal_I2C.h> 
uint8_t m_addr = 55;
LiquidCrystal lcd(m_addr);
int sayici=0;
byte zero = 0x00;
       //******************************************************
byte karakter0[8] = { 0x00, 0x0E, 0x11, 0x10, 0x11, 0x0E, 0x04, 0x00 };    // ç
byte karakter2[8] = { 0x0C, 0x12, 0x12, 0x0C, 0x00, 0x00, 0x00, 0x00 };    // Derece
byte karakter1[8] = { 0x0A, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00 };    // ö
byte karakter3[8] = { 0x1F, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1F };    // kare
byte karakter4[8] = { 0xE, 0x11, 0x10, 0x10, 0x10, 0x11, 0xE, 0x4 };    // Ç
byte karakter5[8] = { 0xE,0x0,0xE,0x11,0xF,0x1,0xE,0x0 };    // ğ
byte karakter6[8] = { 0x0,0x0,0xC,0x4,0x4,0x4,0xE,0x0};    // ı
byte karakter7[8] = { 0xE,0x0,0xF,0x10,0x13,0x11,0xF,0x0 };    // Ğ
byte karakter8[8] = { 0xF,0x10,0x10,0xE,0x1,0x1,0x1E,0x4 };    // Ş
byte karakter9[8] = {0xE,0xE,0x4,0x5,0xE,0x14,0x6,0x1B };  //adam
//********************************************************
//LiquidCrystal_I2C lcd(0x25,20,4);  
struct Signal {
  char type[80];
  byte temp[4];
  byte nem[4];
  byte id[4];
} data;
  void setup() {
  Wire.begin();
   pinMode(M0, OUTPUT);
  pinMode(M1, OUTPUT);
  digitalWrite(M0, LOW);
  digitalWrite(M1, LOW);
  Serial.begin(9600);
  e22.begin();
  delay(800);
  lcd.begin(40, 4);
     lcd.clear();
  lcd.createChar(0, karakter0);
  lcd.createChar(2, karakter2);
  lcd.createChar(1, karakter1);
  lcd.createChar(3, karakter3);
  lcd.createChar(4, karakter4);
  lcd.createChar(5, karakter5);
  lcd.createChar(6, karakter6);
  lcd.createChar(7, karakter7);
  lcd.createChar(8, karakter8);
  lcd.createChar(9, karakter9); 
  //lcd.backlight();                
lcd.setContrast(5);
  //lcd.saveContrast(20);
  lcd.setBrightness(250);
  //lcd.saveBrightness(250);
  lcd.setCursor(10, 1);
  lcd.println("  ISI TAKiP");
  Serial.begin(9600);
  delay(1500);
  lcd.clear();
 }
 void loop() {
       //atecihaz();
  // mg2022();
  // atedepo();
   //kalibre();
   //savdepo(); 
    while (e22.available()  > 1) {
    // Gelen mesaj okunuyor
     ResponseStructContainer rsc = e22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
  delay(1000);
   Serial.println(*(float*)(data.id));  
    if (*(float*)(data.id)=1){
  atecihaz();
    } 
  if (*(float*)(data.id)=2){
  mg2022();
  }
    if (*(float*)(data.id)==3)
  atedepo();
   if (*(float*)(data.id)==4)
  kalibre();
      if (*(float*)(data.id)==5)
  savdepo();
}
}
  void atecihaz() {
  while (e22.available()  > 1) {
    // Gelen mesaj okunuyor
    ResponseStructContainer rsc = e22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
         lcd.setCursor(2,0);           
    lcd.print("ATE");
    if (*(float*)(data.temp) == 125.00){
lcd.setCursor(0,1);           
    lcd.print("--.--");
    lcd.write(byte(2));lcd.print("C");
    }
    else    
    lcd.setCursor(0,1);           
    lcd.print(*(float*)(data.temp));lcd.write(byte(2));lcd.print("C");
    lcd.setCursor(0,2);           
    lcd.print("% ");           
    lcd.print(*(float*)(data.nem));
    Serial.println(*(float*)(data.temp));
    Serial.println(*(float*)(data.nem));
    Serial.flush();
    rsc.close();
  Serial.flush();
  }
  }
  void mg2022() {
while (e22.available()  > 1) {
    // Gelen mesaj okunuyor
    ResponseStructContainer rsc = e22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
         lcd.setCursor(8,0);           
   // lcd.print("Yer: ");
    //lcd.setCursor(8,0);           
    lcd.print("MG2022");
     //Serial.print("Yer: ");
    //Serial.println(data.type);
    lcd.setCursor(8,1);           
    //lcd.print("ISI: ");
    //lcd.setCursor(6,2);           
    lcd.print(*(float*)(data.temp));lcd.write(byte(2));lcd.print("C");
    lcd.setCursor(8,2);           
    //lcd.print("NEM: ");
    //lcd.setCursor(6,3);
    lcd.print("% ");           
    lcd.print(*(float*)(data.nem));
         Serial.flush();
    rsc.close();
  Serial.flush();
}     
}
 void atedepo() {
while (e22.available()  > 1) {
    // Gelen mesaj okunuyor
    ResponseStructContainer rsc = e22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
         lcd.setCursor(16,0);           
   // lcd.print("Yer: ");
    //lcd.setCursor(8,0);           
    lcd.print("ATE DEP");
     //Serial.print("Yer: ");
    //Serial.println(data.type);
    lcd.setCursor(16,1);           
    //lcd.print("ISI: ");
    //lcd.setCursor(6,2);           
    lcd.print(*(float*)(data.temp));lcd.write(byte(2));lcd.print("C");
    lcd.setCursor(16,2);           
    //lcd.print("NEM: ");
    //lcd.setCursor(6,3);
    lcd.print("% ");           
    lcd.print(*(float*)(data.nem));
         Serial.flush();
    rsc.close();
  Serial.flush();
}
}
 void kalibre() {
while (e22.available()  > 1) {
    // Gelen mesaj okunuyor
    ResponseStructContainer rsc = e22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
         lcd.setCursor(24,0);           
   // lcd.print("Yer: ");
    //lcd.setCursor(8,0);           
    lcd.print("KALBRE");
     //Serial.print("Yer: ");
    //Serial.println(data.type);
    lcd.setCursor(24,1);           
    //lcd.print("ISI: ");
    //lcd.setCursor(6,2);           
    lcd.print(*(float*)(data.temp));lcd.write(byte(2));lcd.print("C");
    lcd.setCursor(24,2);           
    //lcd.print("NEM: ");
    //lcd.setCursor(6,3);
    lcd.print("% ");           
    lcd.print(*(float*)(data.nem));
         Serial.flush();
    rsc.close();
  Serial.flush();
}  
}
 void savdepo() {
 while (e22.available()  > 1) {
    // Gelen mesaj okunuyor
    ResponseStructContainer rsc = e22.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
         lcd.setCursor(32,0);           
   // lcd.print("Yer: ");
    //lcd.setCursor(8,0);           
    lcd.print("SAVS DEP");
     //Serial.print("Yer: ");
    //Serial.println(data.type);
    lcd.setCursor(32,1);           
    //lcd.print("ISI: ");
    //lcd.setCursor(6,2);           
    lcd.print(*(float*)(data.temp));lcd.write(byte(2));lcd.print("C");
    lcd.setCursor(32,2);           
    //lcd.print("NEM: ");
    //lcd.setCursor(6,3);
    lcd.print("% ");           
    lcd.print(*(float*)(data.nem));
         Serial.flush();
    rsc.close();
  Serial.flush();
}
}

couger star Düzenlenmiş cevap Haziran 29, 2022
0

bu e32 yi e22 ile değiştirebilirmiyim acaba

couger star Cevaplanan soru Haziran 27, 2022
0

özür dilerim yanlış anlaşıldım herhalde. ben 5 farklı noktaya değil 5 farklı noktadan veri almak istiyorum benim alıcı kısmında sorunum var. birde yanlışlıkla lora E22 yerine E32 satın almışım e22 ile e32 haberleşebilirmi. bir fak gördüm frekansla ilgili e22 de 868.125 oluyor e32 de 868.000.

couger star Cevaplanan soru Haziran 27, 2022
0

sipariş numarasını paylaştığınız için teşekkürler.

5 farklı noktaya yollayacağınız veriyi bir array oluşturup sırayla çağırarak tarama usulu verileri alabilirsiniz. örnek uygulama şu https://fixaj.com/lora-modulunun-temelleri/

ayırt etmek için ise struct yapısına id diye bir değişken tanıplayıp her ısı ve sıcaklık verisini gönderen noktada oraya farklı bir ide yaz.

Mehmet Cevaplanan soru Haziran 27, 2022
0

Sipariş Kodu : 206277526216

Sipariş Kodu : 207915751418

couger star Cevaplanan soru Haziran 27, 2022