Çözüldü4.22K görüntülenmeLorabmp183 Lora
0

Hocam merhabalar, BMP183 ile irtifa verisi alıp Lora ile göndermek istiyorum. Ancak irtifa verisini olması imkansız değerler alıyorum (30332m gibi…). Sensörde problem yok, aynı kütüphaneyle Lora olmadan çalışıyor. İşin içine Lora girdiğinde sıkıntı yaşanıyor. Veriyi diğer Loraya göndermede sorun yaşamıyorum ancak aldığım veri yanlış. Sebebi ne olabilir? Cevabınız için şimdiden teşekkür ederim. Imu+GPS veya Basınç+GPS gibi verilerin gönderilmesi hakkında video veya yazı da gelirse çok seviniriz.

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Temmuz 29, 2021
0

Sensör çalıştırma kodynu setup’a eklediğimde düzeldi teşekkür ederim.

“SENSORS_PRESSURE_SEALEVELHPA” değerinde bir problem yokmuş o kütüphanedeki gibi olmalı.

Bir sorum daha var aslında, gpsten aldığımız konum verilerini de bu şekilde iletebilir miyiz lat ve lon değerleri virgülden sonra daha fazla karakter içeriyor farklı bir şey yapmamız gerekir mi?

Mehmet En iyi cevap olarak seçildi Temmuz 29, 2021
1

mrb, Enes hocam,

kullandığın kütüphanenin örneği ile kıyasladığımda sensörün çalıştırma kısmının senin kodda olmadığını gördüm.

/* Initialise the sensor */
  if(!bmp.begin())
  {
    /* There was a problem detecting the BMP183 ... check your connections */
    Serial.print("Ooops, no BMP183 detected ... Check your wiring!");
    while(1);
  }

birde kütüphane “SENSORS_PRESSURE_SEALEVELHPA” değeri için yaklaşık 1013.25 mbar değerini kullanılır demiş ama kütüphanenin içini incelediğimde “float sealevelPressure = 101325″ değerini kullanmış acaba senin söylediğin değeri 30332m 100 e bölürsek doğru bir değeri bulmuş oluyor mu?

sana zahmet şu print sonuçlarını da buraya ekler misin.

Serial.print("Sea level pressure: "); 
    Serial.print(SENSORS_PRESSURE_SEALEVELHPA);
    Serial.println(" millibar/hPa");
         Serial.print("Altitude:    "); 
    Serial.print(bmp.getAltitude(seaLevelPressure)); 
    Serial.println(" m");
    Serial.println("");

senin verici loop döngünden sonra float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Mehmet Cevaplanan soru Temmuz 27, 2021
0

Bu verici

#include "LoRa_E32.h"
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP183.h>
#include <SoftwareSerial.h>
  SoftwareSerial mySerial(4, 5); // Arduino RX <-- e32 TX, Arduino TX --> e32 RX
LoRa_E32 e32ttl(&mySerial);
  #define BMP183_CLK  13
#define BMP183_SDO  12  
#define BMP183_SDI  11 
#define BMP183_CS   10
 float sensorValue;
  Adafruit_BMP183 bmp = Adafruit_BMP183(BMP183_CLK, BMP183_SDO, BMP183_SDI, BMP183_CS);
 struct Signal {
  byte yukseklik[4];
} data;
   void setup() {
  Serial.begin(9600);
  e32ttl.begin();
  delay(500);
}
 void loop() {
 float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; // should be ~1000
     Serial.print("Altitude:    "); 
    Serial.print(bmp.getAltitude(seaLevelPressure)); 
    Serial.println(" m");
    Serial.println("");
sensorValue=bmp.getAltitude(seaLevelPressure);
   struct Signal  {
   byte yukseklik[4];
  } data2;
   (*(float*)(data2.yukseklik)) = sensorValue;
   ResponseStatus rs = e32ttl.sendFixedMessage(0, 2, 2, &data2, sizeof(Signal));
  Serial.println(rs.getResponseDescription());
    delay(500);
 }

Bu alıcı

#include "LoRa_E32.h"
#include <SoftwareSerial.h>
  SoftwareSerial mySerial(4, 5); // Arduino RX <-- e32 TX, Arduino TX --> e32 RX
LoRa_E32 e32ttl(&mySerial);
  struct Signal {
  byte yukseklik[4];
} data;
  void setup() {
 Serial.begin(9600);
  e32ttl.begin();
  delay(500);
 }
 void loop() {
  while (e32ttl.available()  > 1) {
    ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
    Serial.print("Yukseklik: ");
    Serial.println(*(float*)(data.yukseklik));
    rsc.close();
  } 
 }

Enes Ertürk Durumu yayınlanmak üzere'ye değiştirildi Temmuz 26, 2021
0

Lora için yazdığın kodu atar mısın? Struct yapısı yüzündendir yüksek ihtimalle.

ismail Dinçer Cevaplanan soru Temmuz 25, 2021