Çözüldü1.92K görüntülenmeLoraLora
0

//VERİCİ

#include “LoRa_E22.h”
#include<SoftwareSerial.h>
SoftwareSerial mySerial(10,11);
LoRa_E22 E22(&mySerial);
#define M0 7
#define M1 6
#include <SFE_BMP180.h> // Basınç Sensör kütüphanesi
#include <Wire.h> // I2C kütüphanesi
#include<MPU6050_tockn.h>
#include<Wire.h>
#include <Adafruit_BMP085.h>
#define LedPin 8

Adafruit_BMP085 bmp;

MPU6050 mpu6050(Wire);
long timer =0;
const int MPU = 0x68;

float old_x = 0;
float old_y = 0;
float prev_angle_x = 0;
float prev_angle_y = 0;

unsigned long previousMillis =0;
int interval=30;

SFE_BMP180 pressure; //sensör adı tanımlama

double baseline; // Basınç değeri
float Xk1=0;
float Xk2=0;
float Xk3=0;
float Xk4=0;
float Xk5=0;
float Xk6=0;
float Xk7=0;
float Pk1=1;
float Pk2 =1;
float Pk3=1;
float Pk4=1;
float Pk5=1;
float Pk6=1;
float Pk7=1;
float Rvalue1=0.1;
float Rvalue2=0.1;
float Rvalue3=0.1;
float Rvalue4=0.1;
float Rvalue5=0.1;
float Rvalue6=0.1;
float Rvalue7=0.1;
float Xk8=0;
float Xk9=0;
float Xk10=0;
float Xk11=0;
float Xk12=0;
float Xk13=0;
float Xk14=0;
float Xk15=0;
float Xk16=0;
float Xk17=0;
float Xk18=0;
float Pk8=1;
float Pk9 =1;
float Pk10=1;
float Pk11=1;
float Pk12=1;
float Pk13=1;
float Pk14=1;
float Pk15=1;
float Pk16=1;
float Pk17=1;
float Pk18=1;
float Rvalue8=0.1;
float Rvalue9=0.1;
float Rvalue10=0.1;
float Rvalue11=0.1;
float Rvalue12=0.1;
float Rvalue13=0.1;
float Rvalue14=0.1;
float Rvalue15=0.1;
float Rvalue16=0.1;
float Rvalue17=0.1;
float Rvalue18=0.1;
float Xk=0;
float Pk=1;
float Rvalue=0.1;
float Xk19=0;
float Pk19=1;
float Rvalue19=0.1;
float Xk20=0;
float Pk20=1;
float Rvalue20=0.1;
float Xk21=0;
float Pk21=1;
float Rvalue21=0.1;
float Xk22=0;
float Pk22=1;
float Rvalue22=0.1;
float xhiz;
float yhiz;
float zhiz;
double getPressure()
{
char status;
double T,P,p0,a;
status = pressure.startTemperature();
if (status != 0)
{
delay(status);
status = pressure.getTemperature(T);
if (status != 0)
{
status = pressure.startPressure(3);
if (status != 0)
{
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
return(P);
}
else Serial.println(“Basınç ölçümünde hata alındı\n”);
}
else Serial.println(“Basınç Ölçümü başlatılamadı\n”);
}
else Serial.println(“Sıcaklık değeri alınamadı\n”);
}
else Serial.println(“Sıcaklık ölçümü başlatılamadı\n”);
}
float KalmanBasinc(float OlcumBasinc){
float KK20;
KK20=Pk20/(Pk20+Rvalue20);
Xk20=Xk20+(KK20*(OlcumBasinc-Xk20));
Pk20=(1-KK20)*Pk20;
return(Xk20);
}

float KalmanYukseklik(float OlcumYukseklik){
float KK21;
KK21=Pk21/(Pk21+Rvalue21);
Xk21=Xk21+(KK21*(OlcumYukseklik-Xk21));
Pk21=(1-KK21)*Pk21;
return(Xk21);
}

float KalmanAci_x(float OlcumAci_x){
float KK13;
KK13=Pk13/(Pk13+Rvalue13);
Xk13=Xk13+(KK13*(OlcumAci_x-Xk13));
Pk13=(1-KK13)*Pk13;
return(Xk13);
}
float KalmanAci_y(float OlcumAci_y){
float KK3;
KK3=Pk3/(Pk3+Rvalue3);
Xk3=Xk3+(KK3*(OlcumAci_y-Xk3));
Pk3=(1-KK3)*Pk3;
return(Xk3);
}
float KalmanAci_z(float OlcumAci_z){
float KK4;
KK4=Pk4/(Pk4+Rvalue4);
Xk4=Xk4+(KK4*(OlcumAci_z-Xk4));
Pk4=(1-KK4)*Pk4;
return(Xk4);
}
//İvme verileri =========================================
float KalmanIvme_x(float OlcumIvme_x){
float KK8;
KK8=Pk8/(Pk8+Rvalue8);
Xk8=Xk8+(KK8*(OlcumIvme_x-Xk8));
Pk8=(1-KK8)*Pk8;
return(Xk8);
}
float KalmanIvme_y(float OlcumIvme_y){
float KK9;
KK9=Pk9/(Pk9+Rvalue9);
Xk9=Xk9+(KK9*(OlcumIvme_y-Xk9));
Pk9=(1-KK9)*Pk9;
return(Xk9);
}

float KalmanIvme_z(float OlcumIvme_z){
float KK10;
KK10=Pk10/(Pk10+Rvalue10);
Xk10=Xk10+(KK10*(OlcumIvme_z-Xk10));
Pk10=(1-KK10)*Pk10;
return(Xk10);
}

//Hız Verileri ==============================================
float KalmanHiz_x(float OlcumHiz_x){
float KK16;
KK16=Pk16/(Pk16+Rvalue16);
Xk16=Xk16+(KK16*(OlcumHiz_x-Xk16));
Pk16=(1-KK16)*Pk16;
return(Xk16);
}

float KalmanHiz_y(float OlcumHiz_y){
float KK17;
KK17=Pk17/(Pk17+Rvalue17);
Xk17=Xk17+(KK17*(OlcumHiz_y-Xk17));
Pk17=(1-KK17)*Pk17;
return(Xk17);
}
float KalmanHiz_z(float OlcumHiz_z){
float KK18;
KK18=Pk18/(Pk18+Rvalue18);
Xk18=Xk18+(KK18*(OlcumHiz_z-Xk18));
Pk18=(1-KK18)*Pk18;
return(Xk18);
}

struct veriler{ //GÖNDERECEĞEMİZ VERİLERİ TANIMLIYORUZ.
byte deger1;
byte deger2;
byte deger3;
byte deger4;
byte deger5;
byte deger6;
byte deger7;
byte deger8;
}data;

void setup() {
Serial.begin(9600);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);

E22.begin();
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6b);
Wire.write(0x00);
Wire.endTransmission(true);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
if (pressure.begin()){
Serial.println(“BMP180 Bağlanıldı”);
}
}

void loop() {

baseline = getPressure();

/*Serial.print(“Basınç: “);
Serial.print(baseline);
Serial.println(” mb”);*/
float KalmanDeger_20=0;
float OlcumBasinc[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
float s = baseline;
float OlcumS[] = {s};
OlcumBasinc[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_20=(KalmanBasinc(OlcumBasinc[sayac]));
if(sayac >=15)
{
Serial.print(” Basınç KalmanDegeri = “);
Serial.println(KalmanDeger_20);
}
delay(10);

}
double a,P;

P = getPressure();
a = pressure.altitude(P,baseline);

float KalmanDeger_21=0;
float OlcumYukseklik[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
float s = a;
float OlcumS[] = {s};
OlcumYukseklik[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_21=(KalmanYukseklik(OlcumYukseklik[sayac]));
if(sayac >=15)
{
Serial.print(” Yükseklik KalmanDegeri = “);
Serial.println(KalmanDeger_21);
}
delay(10);
delete(OlcumYukseklik);

}
float KalmanDeger_13 = 0;
mpu6050.update();
float OlcumAci_x[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
mpu6050.update();
float a = mpu6050.getAngleX();
float OlcumS[] = {a};
OlcumAci_x[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_13=(KalmanAci_x(OlcumAci_x[sayac]));
if(sayac >=15)
{
Serial.print(” X Eğim KalmanDegeri = “);
Serial.println(KalmanDeger_13);
}
delay(10);

}
float KalmanDeger_14 = 0;
mpu6050.update();
float OlcumAci_y[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
mpu6050.update();
float a = mpu6050.getAngleY();
float OlcumS[] = {a};
OlcumAci_y[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_14=(KalmanAci_y(OlcumAci_y[sayac]));
if(sayac >=15)
{
Serial.print(“Y Eğim KalmanDegeri = “);
Serial.println(KalmanDeger_14);
}
delay(10);

}
float KalmanDeger_15 = 0;
mpu6050.update();
float OlcumAci_z[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
mpu6050.update();
float a = mpu6050.getAngleZ();
float OlcumS[] = {a};
OlcumAci_z[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_15=(KalmanAci_z(OlcumAci_z[sayac]));
if(sayac >=15)
{
Serial.print(” Z Eğim KalmanDegeri = “);
Serial.println(KalmanDeger_15);
}
delay(10);

}
float KalmanDeger_2=0;
mpu6050.update();
float OlcumIvme_x[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
mpu6050.update();
float a = mpu6050.getAccX();
float OlcumS[] = {a};
OlcumIvme_x[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_2=(KalmanIvme_x(OlcumIvme_x[sayac]));
if(sayac >=15)
{
Serial.print(” X İvme KalmanDegeri = “);
Serial.println(KalmanDeger_2);
}
delay(10);

}
float KalmanDeger_3=0;
mpu6050.update();
float OlcumIvme_y[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
mpu6050.update();
float a = mpu6050.getAccY();
float OlcumS[] = {a};
OlcumIvme_y[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_3=(KalmanIvme_y(OlcumIvme_y[sayac]));
if(sayac >=15)
{
Serial.print(” Y İvme KalmanDegeri = “);
Serial.println(KalmanDeger_3);
}
delay(10);

}
float KalmanDeger_4=0;
mpu6050.update();
float OlcumIvme_z[17];
for(int sayac=0 ; sayac <16 ; sayac++)
{
mpu6050.update();
float a = mpu6050.getAccZ();
float OlcumS[] = {a};
OlcumIvme_z[sayac] = OlcumS[0];
}
for(int sayac = 0 ; sayac < 16 ; sayac++)
{
KalmanDeger_4=(KalmanIvme_z(OlcumIvme_z[sayac]));
if(sayac >=15)
{
Serial.print(” Z İvme KalmanDegeri = “);
Serial.println(KalmanDeger_4);
}
delay(10);

}

data.deger1 = KalmanDeger_20;
data.deger2 = KalmanDeger_21;
data.deger3 = KalmanDeger_13;
data.deger4 = KalmanDeger_14;
data.deger5 = KalmanDeger_15;
data.deger6 = KalmanDeger_2;
data.deger7 = KalmanDeger_3;
data.deger8 = KalmanDeger_4;

ResponseStatus rs = E22.sendFixedMessage(0,1,18,&data,sizeof(veriler));//LORA E22’nin haberleşmesi için gerekli kısımlar.
Serial.println(rs.getResponseDescription());

delay(20);

}

//ALICI

#include “LoRa_E22.h”
#include<SoftwareSerial.h>
SoftwareSerial mySerial(10,11);
LoRa_E22 E22(&mySerial);
#define M0 7
#define M1 6

struct veriler{ //GÖNDERECEĞEMİZ VERİLERİ TANIMLIYORUZ.
byte deger1;
byte deger2;
byte deger3;
byte deger4;
byte deger5;
byte deger6;
byte deger7;
byte deger8;

}data;

void setup() {

pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
digitalWrite(M0, LOW);
digitalWrite(M1, LOW);
Serial.begin(9600);
E22.begin();
delay(500);

}

void loop() {
Serial.print(E22.available());
while(E22.available() >1)
{
//GELEN MESAJLARI OKUYOR
ResponseStructContainer rsc = E22.receiveMessage(sizeof(veriler));
struct veriler data = *(veriler*) rsc.data;
//GELEN VERİLERİ YAZIYOR.
Serial.println(“Gelen Mesaj : “);
Serial.println(“============BMP180===========”);
Serial.print(“Basınç Kalman Değeri: “);
Serial.println(*(float*)data.deger1);
Serial.print(“Yükseklik Kalman Değeri: “);
Serial.println(*(float*)data.deger2);
Serial.println(“============MPU6050===========”);
Serial.print(“X Açı Kalman Değeri: “);
Serial.println(*(float*)data.deger3);
Serial.print(“Y Açı Kalman Değeri: “);
Serial.println(*(float*)data.deger4);
Serial.print(“Z Açı Kalman Değeri: “);
Serial.println(*(float*)data.deger5);
Serial.print(“X İvme Kalman Değeri: “);
Serial.println(*(float*)data.deger6);
Serial.print(“Y İvme Kalman Değeri: “);
Serial.println(*(float*)data.deger7);
Serial.print(“Z İvme Kalman Değeri: “);
Serial.println(*(float*)data.deger8);
Serial.print(“X Hız Kalman Değeri: “);
Serial.println(*(float*)data.deger9);
Serial.print(“Y Hız Kalman Değeri: “);
Serial.println(*(float*)data.deger10);
Serial.print(“Z Hız Kalman Değeri: “);
Serial.println(*(float*)data.deger11);

rsc.close();
delay(500);
}
}

ALICI PORT EKRANINDAN SÜREKLİ 0 DEĞERİ ALIYORUZ.VERİCİ PORTU EKRANINIMIZDANDA SADECE 1 KERE VERİ GÖNDERİYOR.SORUNU BULAMADIK YARDIMCI OLURSANIZ MİNNETTAR OLURUZ.

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Haziran 5, 2022