First, i'm great fun about your work
i watch your youtube channel too
my problem is: i have a struct with many variables for reading my sensors which is mpu6050, bmp280 and gps neo-6m. i send this struct to my receptor with a delay 750ms, but i want at last 200ms or 250ms. And when i decreasing 750ms to 700ms the lora receptor show weird numbers and "ovf" which i think it is overflow.
i google a lot but not sucefull, i hope you can help me, please.
here is my transmisson code:
"//Incluindo bibliotecas
include // Incluindo biblioteca dos sensores
include // Biblioteca do acelerômetro (MPU6050)
include // Biblioteca do barômetro (BMP280)
include // Biblioteca do I2C
include "EBYTE.h" // Biblioteca do LoRa Ebyte
include // Biblioteca do gps
include // Biblioteca para serial
//Definição de variáveis constantes
define SEALEVELPRESSURE_HPA 1015.50 // Define um nivel de pressão atmosferica conhecida. SEMPRE PRECISA DE AJUSTE
//Definição de pinagem
//LoRa Ebyte
define RX_LORA 3
define TX_LORA 1
define PIN_M0 4
define PIN_M1 0
define PIN_AX 2
//GPS
define RX_GPS 16
define TX_GPS 17
//Variaveis Globais
unsigned char Chan; // Seleciona a frequência de transmissão
struct DATA { // Struct contendo todas as informações que serão enviadas pela telemetria
float temperatura; // É média da temperatura do mpu com o bmp
float MPU[6]; // Guarda os dados de Accel(x,y,z) e Gyro(x,y,z) nessa ordem
float BMP[2]; // Guarda os dados de pressão e de altura nessa ordem
float GPS[3]; // Guarda os dados de latitudi, longitudi e velocidade no plano xy
uint8_t Inicializacao[5]; // Guarda o status de inicialização dos sensores CE_ER, MPU, BMP, GPS, Ebyte ; nesta ordem respectivamente
};DATA MyData;
//Cria a serial e o objeto transceptor, passando o serial e os pinos
HardwareSerial SerialGPS(2);
HardwareSerial SerialLORA(0);
EBYTE Transceiver(&SerialLORA, PIN_M0, PIN_M1, PIN_AX);
//Criação de classes e objetos
Adafruit_MPU6050 mpu;
Adafruit_BMP280 bmp;
TinyGPSPlus gps;
//Protótipo de função
void Iniciar_Sensores(); // Inicializa os sensores
void Config_Sensores(); // Configura os parâmetros de funcionamento dos sensores
void Catch_Values(); // Captura apenas os valores dos sensores
void Iniciar_Sensores() {
MyData.Inicializacao[0] = 1; // Se o circuito foi energizado e o ESP funciona recebe o valor de 1
if(mpu.begin(0x68)) MyData.Inicializacao[1] = 1; // Se o mpu não inicializar corretamente recebe 0
else MyData.Inicializacao[1] = 0; // Se o mpu inicializar corretamente recebe 1
if(bmp.begin(0x76)) MyData.Inicializacao[2] = 1; // Se o bmp não inicializar corretamente recebe 0
else MyData.Inicializacao[2] = 0; // Se o bmp inicializar corretamente recebe 1
if(bmp.begin(0x76)) MyData.Inicializacao[3] = 1; // Se o gps não inicializar corretamente recebe 0
else MyData.Inicializacao[3] = 0; // Se o gps inicializar corretamente recebe 1
Transceiver.init(); // Inicializa o LoRa Ebyte
}
void Config_Sensores() {
//Configura os parâmetros do MPU6050
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_44_HZ);
//Configura os parâmetros do BMP280
/
//Configura os parâmetros do LoRa Ebyte
Chan = 0;
Transceiver.SetChannel(Chan);
Transceiver.SaveParameters(PERMANENT);
Transceiver.PrintParameters();
/
}
void Catch_Values() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
i'm from Brazil, so yeah the comemnts is in portuguese kk
here is my reception code:
"// Biblioteca
include "EBYTE.h"
// Definição de constantes
define PIN_RX 16
define PIN_TX 17
define PIN_M0 4
define PIN_M1 0
define PIN_AX 2
// Variáveis Globais
unsigned char Chan; // Seleciona a frequência de transmissão
unsigned char flag1 = 0; // Flag 1 de identificação para exibir o status de inicialização
unsigned short count = 0; // Contagem do tempo
struct DATA { // Struct contendo todas as informações que serão enviadas pela telemetria
float temperatura; // É média da temperatura do mpu com o bmp
float MPU[6]; // Guarda os dados de Accel(x,y,z) e Gyro(x,y,z) nessa ordem
float BMP[2]; // Guarda os dados de pressão e de altura nessa ordem
float GPS[3]; // Guarda os dados de latitudi, longitudi e velocidade no plano xy
uint8_t Inicializacao[5]; // Guarda o status de inicialização dos sensores CE_ER, MPU, BMP, GPS, Ebyte ; nesta ordem respectivamente
}; DATA MyData;
//Cria o objeto transceptor, passando o serial e os pinos
EBYTE Transceiver(&Serial2, PIN_M0, PIN_M1, PIN_AX);
First, i'm great fun about your work i watch your youtube channel too
my problem is: i have a struct with many variables for reading my sensors which is mpu6050, bmp280 and gps neo-6m. i send this struct to my receptor with a delay 750ms, but i want at last 200ms or 250ms. And when i decreasing 750ms to 700ms the lora receptor show weird numbers and "ovf" which i think it is overflow.
i google a lot but not sucefull, i hope you can help me, please.
here is my transmisson code: "//Incluindo bibliotecas
include // Incluindo biblioteca dos sensores
include // Biblioteca do acelerômetro (MPU6050)
include // Biblioteca do barômetro (BMP280)
include // Biblioteca do I2C
include "EBYTE.h" // Biblioteca do LoRa Ebyte
include // Biblioteca do gps
include // Biblioteca para serial
//Definição de variáveis constantes
define SEALEVELPRESSURE_HPA 1015.50 // Define um nivel de pressão atmosferica conhecida. SEMPRE PRECISA DE AJUSTE
//Definição de pinagem //LoRa Ebyte
define RX_LORA 3
define TX_LORA 1
define PIN_M0 4
define PIN_M1 0
define PIN_AX 2
//GPS
define RX_GPS 16
define TX_GPS 17
//Variaveis Globais unsigned char Chan; // Seleciona a frequência de transmissão struct DATA { // Struct contendo todas as informações que serão enviadas pela telemetria float temperatura; // É média da temperatura do mpu com o bmp float MPU[6]; // Guarda os dados de Accel(x,y,z) e Gyro(x,y,z) nessa ordem float BMP[2]; // Guarda os dados de pressão e de altura nessa ordem float GPS[3]; // Guarda os dados de latitudi, longitudi e velocidade no plano xy uint8_t Inicializacao[5]; // Guarda o status de inicialização dos sensores CE_ER, MPU, BMP, GPS, Ebyte ; nesta ordem respectivamente };DATA MyData;
//Cria a serial e o objeto transceptor, passando o serial e os pinos HardwareSerial SerialGPS(2); HardwareSerial SerialLORA(0); EBYTE Transceiver(&SerialLORA, PIN_M0, PIN_M1, PIN_AX);
//Criação de classes e objetos Adafruit_MPU6050 mpu; Adafruit_BMP280 bmp; TinyGPSPlus gps;
//Protótipo de função void Iniciar_Sensores(); // Inicializa os sensores void Config_Sensores(); // Configura os parâmetros de funcionamento dos sensores void Catch_Values(); // Captura apenas os valores dos sensores
void setup() { SerialGPS.begin(9600, SERIAL_8N1, RX_GPS, TX_GPS); SerialLORA.begin(9600); delay(100);
Iniciar_Sensores(); Config_Sensores();
delay(100); }
void loop() { Catch_Values(); Transceiver.SendStruct(&MyData, sizeof(MyData)); delay(750); }
void Iniciar_Sensores() { MyData.Inicializacao[0] = 1; // Se o circuito foi energizado e o ESP funciona recebe o valor de 1
if(mpu.begin(0x68)) MyData.Inicializacao[1] = 1; // Se o mpu não inicializar corretamente recebe 0 else MyData.Inicializacao[1] = 0; // Se o mpu inicializar corretamente recebe 1
if(bmp.begin(0x76)) MyData.Inicializacao[2] = 1; // Se o bmp não inicializar corretamente recebe 0 else MyData.Inicializacao[2] = 0; // Se o bmp inicializar corretamente recebe 1
if(bmp.begin(0x76)) MyData.Inicializacao[3] = 1; // Se o gps não inicializar corretamente recebe 0 else MyData.Inicializacao[3] = 0; // Se o gps inicializar corretamente recebe 1
Transceiver.init(); // Inicializa o LoRa Ebyte
}
void Config_Sensores() { //Configura os parâmetros do MPU6050 mpu.setAccelerometerRange(MPU6050_RANGE_16_G); mpu.setGyroRange(MPU6050_RANGE_500_DEG); mpu.setFilterBandwidth(MPU6050_BAND_44_HZ);
//Configura os parâmetros do BMP280 / //Configura os parâmetros do LoRa Ebyte Chan = 0; Transceiver.SetChannel(Chan); Transceiver.SaveParameters(PERMANENT); Transceiver.PrintParameters(); / }
void Catch_Values() { sensors_event_t a, g, temp; mpu.getEvent(&a, &g, &temp);
MyData.temperatura = (temp.temperature + bmp.readTemperature())/2.00; MyData.MPU[0] = a.acceleration.x; MyData.MPU[1] = a.acceleration.y; MyData.MPU[2] = a.acceleration.z; MyData.MPU[3] = g.gyro.x; MyData.MPU[4] = g.gyro.y; MyData.MPU[5] = g.gyro.z;
MyData.BMP[0] = bmp.readPressure(); MyData.BMP[1] = bmp.readAltitude(SEALEVELPRESSURE_HPA);
while(SerialGPS.available() > 0) gps.encode(SerialGPS.read());
if(gps.location.isValid()) { MyData.GPS[0] = gps.location.lat(); MyData.GPS[1] = gps.location.lng(); } if(gps.speed.isValid()) MyData.GPS[2] = gps.speed.mps(); }"
i'm from Brazil, so yeah the comemnts is in portuguese kk
here is my reception code: "// Biblioteca
include "EBYTE.h"
// Definição de constantes
define PIN_RX 16
define PIN_TX 17
define PIN_M0 4
define PIN_M1 0
define PIN_AX 2
// Variáveis Globais unsigned char Chan; // Seleciona a frequência de transmissão unsigned char flag1 = 0; // Flag 1 de identificação para exibir o status de inicialização unsigned short count = 0; // Contagem do tempo struct DATA { // Struct contendo todas as informações que serão enviadas pela telemetria
float temperatura; // É média da temperatura do mpu com o bmp float MPU[6]; // Guarda os dados de Accel(x,y,z) e Gyro(x,y,z) nessa ordem float BMP[2]; // Guarda os dados de pressão e de altura nessa ordem float GPS[3]; // Guarda os dados de latitudi, longitudi e velocidade no plano xy uint8_t Inicializacao[5]; // Guarda o status de inicialização dos sensores CE_ER, MPU, BMP, GPS, Ebyte ; nesta ordem respectivamente }; DATA MyData;
//Cria o objeto transceptor, passando o serial e os pinos EBYTE Transceiver(&Serial2, PIN_M0, PIN_M1, PIN_AX);
void setup() { Serial.begin(9600); Serial2.begin(9600); delay(100); / //Configura os parâmetros do LoRa Ebyte Chan = 0; Transceiver.SetChannel(Chan); Transceiver.SaveParameters(PERMANENT); Transceiver.PrintParameters(); / Transceiver.init(); delay(100); }
void loop() { if (Serial2.available()) { Transceiver.GetStruct(&MyData, sizeof(MyData));
} else { Serial.println("Searching: "); }
count++; delay(750); }"