Merhaba ben deprem alarm sistemine LoRa haberleşmesi dahil etmeye çalışıyorum. Amacım sensörde buzzer çalması değil, hareketi sezen sensörün LoRa ile haberleşerek başka bir arduinoya bilgi göndermesi ve orda buzzer çalıştırmak. Fakat sadece “Success” yazıyor serial monitorde nasıl yapmam gerektiğini anlamadım. Gönderdiğim data paketlerini göstermiyor ve gösterse bile buzzera ilk sensördeki lede giden frekansla aynı akım nasıl gönderebilirim bilmiyorum yardımcı olabilirseniz sevinirim
/ VERİCİ
#include <Arduino.h>
#include <TinyMPU6050.h>
#include <SoftwareSerial.h>
#include “LoRa_E32.h”
SoftwareSerial mySerial(10, 11);
LoRa_E32 e32ttl(&mySerial);
#define M0 7
#define M1 6
struct Signal {
char type[15];
} data;
float pos_offset = 10;
float neg_offset = -10;
long angle_x, angle_y, angle_z, offset_x, offset_y, offset_z;
MPU6050 mpu (Wire);
void setup() {
// Initialization
mpu.Initialize();
// Calibration
Serial.begin(9600);
Serial.println(“=====================================”);
Serial.println(“Starting calibration…”);
Serial.println(“Calibration complete!”);
Serial.println(“Offsets:”);
Serial.print("AccX Offset = ");
// Serial.println(mpu.GetAccXOffset());
Serial.print("AccY Offset = ");
//Serial.println(mpu.GetAccYOffset());
Serial.print("AccZ Offset = ");
//Serial.println(mpu.GetAccZOffset());
Serial.print("GyroX Offset = ");
Serial.println(mpu.GetGyroXOffset());
Serial.print("GyroY Offset = ");
Serial.println(mpu.GetGyroYOffset());
Serial.print("GyroZ Offset = ");
Serial.println(mpu.GetGyroZOffset());
pinMode(13,OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(13, LOW);
digitalWrite(9, LOW);
delay(1000);
for(int i=0; i<200;i++){
mpu.Execute();
offset_x = mpu.GetAngX();
offset_y = mpu.GetAngY();
offset_z = mpu.GetAngZ();
}
Serial.print("offset_x = ");
Serial.print(offset_x);
Serial.print(" / offsetY = ");
Serial.print(offset_y);
Serial.print(" / offsetZ = ");
Serial.println(offset_z);
Serial.begin(9600);
mySerial.begin(9600);
pinMode(M0, OUTPUT);
pinMode(M1, OUTPUT);
//digitalWrite(M0, LOW); // E22 Modülleri için Aktif edin
digitalWrite(M0, HIGH); // E32 Modülleri için Aktif edin
digitalWrite(M1, HIGH);
e32ttl.begin();
delay(500);
}
void loop() {
for(int i=0; i<5;i++){
mpu.Execute();
angle_x = mpu.GetAngX();
angle_y = mpu.GetAngY();
angle_z = mpu.GetAngZ();
}
Serial.print("AngX = ");
Serial.print(angle_x - offset_x);
Serial.print(" / AngY = ");
Serial.print(angle_y - offset_y);
Serial.print(" / AngZ = ");
Serial.println(angle_z - offset_z);
if ( pos_offset < angle_x - offset_x || neg_offset > angle_x - offset_x || pos_offset < angle_y - offset_y || neg_offset > angle_y - offset_y || pos_offset < angle_z - offset_z || neg_offset > angle_z - offset_z){
for(int i=0; i<50; i++){
digitalWrite(13,HIGH);
digitalWrite(9,LOW);
delay(50);
digitalWrite(13,LOW);
digitalWrite(9,LOW);
delay(50);
}
delay(5000);
mpu.Execute();
offset_x = mpu.GetAngX();
offset_y = mpu.GetAngY();
offset_z = mpu.GetAngZ();
}
while (e32ttl.available() > 1) {
// Gelen mesaj okunuyor
ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
struct Signal data = *(Signal*) rsc.data;
Serial.print("Gelen Messaj: ");
Serial.println(data.type);
rsc.close();
//Gönderilecek paket veri hazırlanıyor
struct Signal {
char type[15] = "Muhtemel Deprem Uyarısı";
}data2;
ResponseStatus rs = e32ttl.sendFixedMessage(0, 2, 23, &data2, sizeof(Signal));
Serial.println(rs.getResponseDescription());
delay(2000);
}
}
// ALICI
#include “LoRa_E32.h”
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
/*
Pinler Arduino Nano Lora E32 433T20d
11 3
10 4
*/
LoRa_E32 e32ttl(&mySerial);
struct Signal {
char type[15] = “Noyan”;
} data;
void setup() {
Serial.begin(9600);
e32ttl.begin();
delay(500);
}
void loop() {
ResponseStatus rs = e32ttl.sendFixedMessage(0, 1, 23, &data, sizeof(Signal));
Serial.println(rs.getResponseDescription());
delay(2000);
while (e32ttl.available() > 1) {
ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
struct Signal data = *(Signal*) rsc.data;
Serial.print("Dikkat!: ");
Serial.println(data.type);
rsc.close();
}
}