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.
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?
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;
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(); } }
Lora için yazdığın kodu atar mısın? Struct yapısı yüzündendir yüksek ihtimalle.