LoRa Ürünleri Satın AL

Çözüldü394 görüntülenmeArduinoLora
0

Gönderici loradan gönderdiğim bütün veriler gidiyor fakat alıcıda yazdırdıktan sonra belli bir yerden sonra donma oluyor. Fakat arduinoyu resetlediğimde düzeliyor. B

#include "Arduino.h"<br />#include <math.h><br />#include "LoRa_E32.h"<br />#include <SoftwareSerial.h><br />SoftwareSerial mySerial(10, 11);<br />LoRa_E32 e32ttl(&mySerial);<br /> void printParameters(struct Configuration configuration);<br />void printModuleInformation(struct ModuleInformation moduleInformation);<br /> void setup()<br />{<br />  pinMode(A0, INPUT);<br />  Serial.begin(9600);<br />  while (!Serial);<br />  e32ttl.begin();<br />  Serial.println("GONDERICI");<br /> }<br />double Termistor(int analogOkuma) {<br />  double sicaklik;<br />  sicaklik = log(((10240000 / analogOkuma) - 10000));<br />  sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik)) * sicaklik);<br />  sicaklik = sicaklik - 273.15;<br />  return sicaklik;<br />}<br /> struct paket<br />{<br />  double sayi[10];<br /> };<br /> struct paket veri1;<br />struct paket veri2;<br /> void loop()<br />{<br />  for (int i = 0; i < 10; i++)<br />  {<br />    int deger = analogRead(A0);<br />    double sicaklik = Termistor(deger);<br />    veri1.sayi[i] = sicaklik;<br />    ResponseStatus rs = e32ttl.sendFixedMessage(0, 3, 7, &veri1, sizeof(paket));<br />    delay(1000);<br />    for (int i = 0; i < 10; i++)<br />    {<br />      Serial.println(veri1.sayi[i]);<br />     }<br />  }<br />     for (int i = 0; i < 10; i++)<br />     {<br />       int deger = analogRead(A0);<br />       double sicaklik = Termistor(deger);<br />       veri2.sayi[i] = sicaklik;<br />       ResponseStatus rw = e32ttl.sendFixedMessage(0, 3, 7, &veri2, sizeof(paket));<br />       delay(1000);<br />             for (int i = 0; i < 10; i++)<br />      {<br />        Serial.println(veri2.sayi[i]);<br />       }<br />     }<br />    }<br /> #include "Arduino.h"<br />#include "LoRa_E32.h"<br />#include <SoftwareSerial.h><br />SoftwareSerial mySerial(10, 11);<br />LoRa_E32 e32ttl(&mySerial);<br /> void setup()<br />{<br />  Serial.begin(9600);<br />  while (!Serial);<br />  e32ttl.begin();<br />  Serial.println("ALICI");<br />}<br /> struct paket<br />{<br />   double sayi[10];<br /> };<br /> struct paket veri1;<br />struct paket veri2;<br /> void loop()<br />{<br />  if (e32ttl.available()  > 1) {<br />     for (int i = 0; i < 10; i++) {<br />      ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(paket));<br />      veri1 = *(paket*) rsc.data;<br />      delay(1000);<br />           for (int i = 0; i < 10; i++) {<br />        Serial.println(veri1.sayi[i],1);<br />      }<br />    }

unun sebebi ne olabilir açıklar mısınız. Teşekkür ederim.

Soru yeni cevaplara kapalıdır.
En iyi cevap olarak seçildi
1

Üretici firma ile de konuştum hatta Lora kütüphanesini yazan arkadaş ile de görüştüm. Lora ile tek sefer 58 byte üstü bir veriyi yollamak imkansızmış.

github daki sorum : https://github.com/xreef/LoRa_E32_Series_Library/issues/31

Ama şu var. parça parça yapıp yollayabiliriz. Şöyle ki elimizde 100byte lık bir veri olsun. struct yapımızda data1, data2, data3… data20 kadar gittiğini düşünelim. ilk data1 in içine paket numarası yazılar misal 1 paket biri ifade eder ve ilk gelen paket1 ise data2 den başlayarak bizim ilk 19 değişkenimiz olur. ilk paket gönderildikten sonra yine aynı struct yapısı ile verilerimizi göndeririz bu sefer data1 bizim 2. paketimiz olur öyle öyle bütün verileri atabilirsin. her bir paket gönderimi sırasında toplam gönderilen byte bölü air rate hızı kadar bekleme yapmayı  unutma yoksa veriler çakışır.

Yeni yorum gönderildi

Çok teşekkür ederim mehmet abi. Bu aralar atölye yoğun bir tempoda olduğu için yen görebildim mesajını. Aldığım bilgiler çok değerli oldu çok çok teşekkür ederim.

4 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.