#include "BMP180_wrapper.h"<br />#include "GPS_wrapper.h"<br />#include "MPU6050_wrapper.h"<br />#include <SoftwareSerial.h><br />#include "LoRa_E32.h"<br /> #include <SD.h><br />#include<SPI.h><br /> int chipSelect = 49;<br />File mySensorData;<br /> BMP180_wrapper altimeter;<br />GPS_wrapper gps;<br />MPU6050_wrapper accel;<br /> SoftwareSerial loraserial(9, 10);<br />LoRa_E32 e32ttl(&loraserial);<br /> bool got_base_coordinates = false;<br /> int ahmet = 1980;<br /> struct Signal {<br /> int data1; <br /> /*float data2; <br /> float data3; <br /> float data4; <br /> int data5; <br /> int data6; <br /> float data7; <br /> float data8; <br /> float data9; <br /> float data10; <br /> float data11; <br /> float data12; <br /> int data13; <br /> int data14; <br /> int data15; */<br /> } data;<br /> void setup() {<br /> Serial.begin(9600);<br /> pinMode(chipSelect, OUTPUT);<br /> SD.begin(chipSelect);<br /> pinMode(16, OUTPUT);<br /> if (altimeter.init())<br /> {<br /> Serial.print("altimeter fail.");<br /> while (true);<br /> }<br /> int err = accel.init();<br /> if (err)<br /> {<br /> Serial.print("accel fail.");<br /> Serial.print(err, DEC);<br /> while (true);<br /> }<br /> e32ttl.begin();<br /> }<br /> float maxaltitude = 0;<br /> void loop() {<br /> if (!got_base_coordinates) {<br /> auto gps_data = gps.get_data();<br /> if (gps_data.latitude != 0 && gps_data.longitude != 0) {<br /> gps.BASE_LAT = gps_data.latitude;<br /> gps.BASE_LON = gps_data.longitude;<br /> got_base_coordinates = true;<br /> }<br /> }<br /> auto altimeter_data = altimeter.get_filtered_data();<br /> auto gps_data = gps.get_data();<br /> auto accel_data = accel.get_filtered_data();<br /> Serial.println();<br /> Serial.print(gps_data.satvalue);<br /> Serial.print(" ");<br /> Serial.print(gps_data.hdop);<br /> Serial.print(" ");<br /> Serial.print(gps_data.latitude, 6);<br /> Serial.print(" ");<br /> Serial.print(gps_data.longitude, 6);<br /> Serial.print(" ");<br /> Serial.print(gps_data.distanceKmToBaseCordinates);<br /> Serial.print(" ");<br /> Serial.print(gps_data.compassDegreeToBaseCordinates);<br /> Serial.print(" ");<br /> Serial.print(accel_data.roll, 1);<br /> Serial.print(" ");<br /> Serial.print(accel_data.yaw, 1);<br /> Serial.print(" ");<br /> Serial.print(accel_data.pitch, 1);<br /> Serial.print(" ");<br /> Serial.print(accel_data.acc_x, 1);<br /> Serial.print(" ");<br /> Serial.print(accel_data.acc_y, 1);<br /> Serial.print(" ");<br /> Serial.print(accel_data.acc_z, 1);<br /> Serial.print(" ");<br /> Serial.print(altimeter_data.Altitude, 1);<br /> Serial.print(" ");<br /> Serial.print(altimeter_data.Temperature, 1);<br /> Serial.print(" ");<br /> if (altimeter_data.Altitude > maxaltitude)<br /> {<br /> maxaltitude = altimeter_data.Altitude;<br /> }<br /> Serial.print(maxaltitude, 1);<br /> Serial.print(" ");<br /> mySensorData = SD.open("PTD.txt", FILE_WRITE);<br /> if (mySensorData) {<br /> mySensorData.println();<br /> mySensorData.print(gps_data.satvalue);<br /> mySensorData.print(" ");<br /> mySensorData.print(gps_data.hdop);<br /> mySensorData.print(" ");<br /> mySensorData.print(gps_data.latitude, 6);<br /> mySensorData.print(" ");<br /> mySensorData.print(gps_data.longitude, 6);<br /> mySensorData.print(" ");<br /> mySensorData.print(gps_data.distanceKmToBaseCordinates);<br /> mySensorData.print(" ");<br /> mySensorData.print(gps_data.compassDegreeToBaseCordinates);<br /> mySensorData.print(" ");<br /> mySensorData.print(accel_data.roll, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(accel_data.yaw, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(accel_data.pitch, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(accel_data.acc_x, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(accel_data.acc_y, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(accel_data.acc_z, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(altimeter_data.Altitude, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(altimeter_data.Temperature, 1);<br /> mySensorData.print(" ");<br /> mySensorData.print(maxaltitude, 1);<br /> mySensorData.close(); <br /> }<br /> data.data1 = ahmet;<br /> /*data.data2 = gps_data.hdop;<br /> data.data3 = gps_data.latitude;<br /> data.data4 = gps_data.longitude;<br /> data.data5 = gps_data.distanceKmToBaseCordinates;<br /> data.data6 = gps_data.compassDegreeToBaseCordinates;<br /> data.data7 = accel_data.roll;<br /> data.data8 = accel_data.yaw;<br /> data.data9 = accel_data.pitch;<br /> data.data10 = accel_data.acc_x;<br /> data.data11 = accel_data.acc_y;<br /> data.data12 = accel_data.acc_z;<br /> data.data13 = altimeter_data.Altitude;<br /> data.data14 = altimeter_data.Temperature;<br /> data.data15 = maxaltitude;*/<br /> ResponseStatus rs = e32ttl.sendFixedMessage(0, 2, 6, &data, sizeof(Signal));<br /> Serial.print(rs.getResponseDescription());<br /> delay(2000);<br /> }
Merhaba sizinle iletişime geçmiştim Whatsapp üzerinden şimdi de içerikleri paylaşmaya çalışıyorum.
Gördüğünüz gibi bir adet alıcı ve bir adet vericiyi haberleştirmeye çalışıyorum ve bağlı olan sensörlerden okuduğum verileri göndermeye çalışıyorum. TX kodun seri ekranında gördüğüm değerlerle RX kodun seri ekranında gördüklerim alakasız olduğu için önce verileri anlık gönderemediğimiz kodda hata yaptığımı düşündüm ve bir deneme yapmak için “ahmet = 1980” diye bir veri tanımladım ve sadece bunu göndermeye çalıştım bu seferde RX sistemin seri portunda okuduğum değer “512” idi. Buradan paylaştığım veriler ve fotoğraflar kısıtlı dilerseniz bir canlı görüşmede size herşeyi açıklayabilir ekran paylaşımıyla kodları da daha iyi gösterebilirim.
İlgilendiğiniz için teşekkür ederim. İyi çalışmalar…
struct yapısı yanlış kurulduğu için over flow yani taşma gerçekleşiyor.
struct yapısı şu şekilde oluşturulup sonrasında da alttaki gibi int veya float tipinde değişken tanımlanmalıdır.
//Gönderilecek paket veri hazırlanıyor struct Signal { char type[15] = "Bebek Odası"; byte temp[4]; } data2; *(float*)(data2.temp) = 19.2;
Bütün dataları tek tek signal data 1
signal data 2 olarak mı tanımlamam gerekiyor.
Hepsini tek bir signal içinde tanımlayamazmıyım ?
#include "LoRa_E32.h" #include <SoftwareSerial.h> SoftwareSerial mySerial(9, 10); // Arduino RX <-- e32 TX, Arduino TX --> e32 RX LoRa_E32 e32ttl(&mySerial); struct Signal { int data1; /*float data2; float data3; float data4; int data5; int data6; float data7; float data8; float data9; float data10; float data11; float data12; int data13; int data14; int data15; */ } data; void setup() { Serial.begin(9600); e32ttl.begin(); delay(500); pinMode(4, OUTPUT); pinMode(6, OUTPUT); pinMode(A2, INPUT); digitalWrite(4, LOW); digitalWrite(6, LOW); } void loop() { //Serial.println(analogRead(A2)); while (e32ttl.available() > 1) { Serial.println(); ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal)); struct Signal data = *(Signal*) rsc.data; Serial.print(data.data1); /*Serial.print("*"); Serial.print(data.data2); Serial.print("*"); Serial.print(data.data3, 6); Serial.print("*"); Serial.print(data.data4, 6); Serial.print("*"); Serial.print(data.data5); Serial.print("*"); Serial.print(data.data6); Serial.print("*"); Serial.print(data.data7, 1); Serial.print("*"); Serial.print(data.data8, 1); Serial.print("*"); Serial.print(data.data9, 1); Serial.print("*"); Serial.print(data.data10, 1); Serial.print("*"); Serial.print(data.data11, 1); Serial.print("*"); Serial.print(data.data12, 1); Serial.print("*"); Serial.print(data.data13, 1); Serial.print("*"); Serial.print(data.data14, 1); Serial.print("*"); Serial.print(data.data15, 1);*/ digitalWrite(6, HIGH); digitalWrite(4, HIGH); delay(20); digitalWrite(4, LOW); digitalWrite(6, LOW); rsc.close(); } }
Bu da RX kodum