Çözüldü2.85K görüntülenmeLora#esp
0

Merhaba. E32 verici modülü esp32’ye alıcı modülü nano 3in1 pcb’ye taktık. Barometre gibi modülleri vericide kullanınca kütüphaneli kodlar çalışıyor ve haberleşme sağlanıyor ama neo7m gps ile haberleşme sağlayamıyoruz. Verici portunda veri okunuyor ancak iletişim sağlanmıyor. Esp32’de listen komutu hata verdiği için sitedeki gps örneğinden yararlanamadık, HardwareSerial kütüphanesi listen komutunu çalıştırmadı. Gps’i ve Lora’yı esp’nin farklı tx rx girişlerine bağladık listen komutuna ihtiyacımız kalmayabileceğini düşünerek fakat işe yaramadı. Parametre ayarları, bağlantı şemaları ve kodları ekledim. Teşekkürler.

şipariş no: 208245222215

[apcode language="php"]

#include "LoRa_E32.h"<br />#include <SoftwareSerial.h><br />#define M0 7 <br />#define M1 6<br />   /*<br />   Pinler     Arduino Nano    Lora E32 433T20d<br />                  11                3<br />                  10                4<br />*/<br />SoftwareSerial mySerial(10,11);<br />LoRa_E32 e32ttl(&mySerial);<br />     struct Signal {<br />  byte irtifa;<br />  byte random;<br />  byte pitch;<br />  byte roll;<br />  byte yaw;<br />} data;<br />        void setup() {<br />  pinMode(M0,OUTPUT);      <br />  pinMode(M1,OUTPUT);<br />  digitalWrite(M0,0);<br />  digitalWrite(M1,0);<br />  Serial.begin(9600);<br />  e32ttl.begin();<br />  delay(500);<br />}<br />   void loop() {<br />     ResponseStatus rs = e32ttl.sendFixedMessage(0, 2, 23, &data, sizeof(Signal));      <br />  delay(2000);<br />  while (e32ttl.available()  > 1) {                                     <br />    ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));<br />         struct Signal data = *(Signal*) rsc.data;<br />    Serial.print(*(float*)(data.irtifa));<br />         Serial.print("/");<br />         rsc.close();<br />  }<br />}

#include <Wire.h><br /> #include <TinyGPS++.h><br /> #include <HardwareSerial.h><br />#include "LoRa_E32.h"<br />#include "Wire.h"<br />#define M0 32<br />#define M1 33<br />   #define RXD2 16<br />#define TXD2 17<br /> long timer=0;<br /> // OLED display height, in pixels<br /> //On ESP32: GPIO-21(SDA), GPIO-22(SCL)<br />    TinyGPSPlus gps;<br /> HardwareSerial neogps(2);<br />HardwareSerial loraport(1);<br /> LoRa_E32 e32ttl(RX, TX, &loraport, UART_BPS_RATE_9600);<br /> struct Signal {<br />  byte irtifa[10];<br />  byte pitch[10];<br />  byte roll[10];<br />  byte yaw[10];<br />} data;<br /> void setup() {<br />  Serial.begin(9600);<br />  //Begin serial communication Arduino IDE (Serial Monitor)<br />   //Begin serial communication Neo6mGPS<br />  neogps.begin(9600, SERIAL_8N1, RXD2, TXD2);<br />    e32ttl.begin();<br />  delay(500);<br />  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally<br />    }<br /> void loop() {<br />                        if (neogps.available())<br />    {<br />             if (gps.encode(neogps.read()))<br />      {<br />      if (millis() - timer > 500) {<br />        displayInfo();<br />        displayLORA();<br />        timer = millis();<br />}}<br />   if (millis() > 5000 && gps.charsProcessed() < 10)<br />  {<br />    Serial.println(F("No GPS detected: check wiring."));<br />    while(true);<br />  }<br />     }<br />}  <br />         void displayLORA(){<br />  * (float *)(data.irtifa) = gps.altitude.meters();<br />  ResponseStatus rs = e32ttl.sendFixedMessage(0, 1, 7, &data, sizeof(Signal));<br />  Serial.println(rs.getResponseDescription()); <br />ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));<br />    }<br />      void displayInfo()<br />{<br />   Serial.print(F("Location: "));<br />  if (gps.location.isValid())<br />  {<br />    Serial.print(gps.location.lat(), 6);<br />    Serial.print(F(","));<br />    Serial.print(gps.location.lng(), 6);<br />  }<br />  else<br />  {<br />    Serial.print(F("INVALID"));<br />  }<br />  Serial.print(F("  altitude: "));<br />  if (gps.location.isValid()) {<br />    Serial.print(gps.altitude.meters(), 2);<br />   }<br />  else<br />  {<br />    Serial.print(F("INVALID"));<br />  }<br />    Serial.print(F("  Date/Time: "));<br />  if (gps.date.isValid())<br />  {<br />    Serial.print(gps.date.month());<br />    Serial.print(F("/"));<br />    Serial.print(gps.date.day());<br />    Serial.print(F("/"));<br />    Serial.print(gps.date.year());<br />  }<br />  else<br />  {<br />    Serial.print(F("INVALID"));<br />  }<br />   Serial.print(F(" "));<br />  if (gps.time.isValid())<br />  {<br />    if (gps.time.hour() < 10) Serial.print(F("0"));<br />    Serial.print(gps.time.hour());<br />    Serial.print(F(":"));<br />    if (gps.time.minute() < 10) Serial.print(F("0"));<br />    Serial.print(gps.time.minute());<br />    Serial.print(F(":"));<br />    if (gps.time.second() < 10) Serial.print(F("0"));<br />    Serial.print(gps.time.second());<br />    Serial.print(F("."));<br />    if (gps.time.centisecond() < 10) Serial.print(F("0"));<br />    Serial.print(gps.time.centisecond());<br />  }<br />  else<br />  {<br />    Serial.print(F("INVALID"));<br />  }<br />      Serial.println();<br /> }

[/apcode]

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Eylül 6, 2022
0

Cevabınız için teşekkürler. Videodaki koddan yararlanarak ufak değişiklikler yaparak aşağıdaki kodları kullandık fakat haberleşme sağlayamadık.  [apcode language="php"]

//alıcı
#include "LoRa_E32.h"
#include <SoftwareSerial.h>
 SoftwareSerial mySerial (10,11);
 LoRa_E32 e32ttl(&mySerial);
 float lat,lng,irtifa;
 #define M0 7
#define M1 6
 struct Signal {                  
  char type [15] = "selam";
  byte lat [10];
  byte lng [10];
  byte irtifa [10];
} data;
 void setup() {
   pinMode(M0,OUTPUT); 
  pinMode(M1,OUTPUT); 
  digitalWrite(M0,LOW); 
  digitalWrite(M1,0); 
  Serial.begin(115200);
   e32ttl.begin(); 
 delay(500);
}
 void loop() {
  while (e32ttl.available()  > 1) {
    ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
     Serial.print(F("Gelen mesaj lat: "));
    Serial.print(*(float*)(data.lat),6);
    Serial.print(", Lng: ");
    Serial.print(*(float*)(data.lng),10);
    Serial.print(", irtifa: ");
    Serial.print(*(float*)(data.irtifa),4);
     rsc.close();
}
}

//verici
#include <TinyGPSPlus.h>
#include "LoRa_E32.h"
#include <HardwareSerial.h>
#define M0 32
#define M1 33
 HardwareSerial vericiSerial (1);
LoRa_E32 e32ttl (TX,RX,&vericiSerial, UART_BPS_RATE_9600);
static const uint32_t GPSBaud = 9600;
unsigned long kanalBekleme_sure = 0;
int kanalBekleme_bekleme = 5000;
unsigned long kanalBekleme_sure2 = 0;
int kanalBekleme_bekleme2 = 2000;
 TinyGPSPlus gps;
struct Signal {
  char type [15] = "selam";
  byte lat [10];
  byte lng [10];
  byte irtifa [10];
}data;
  void setup() {
pinMode(M0,OUTPUT);
pinMode(M1,OUTPUT);
digitalWrite(M0,LOW);
digitalWrite(M1,0);
Serial.begin(115200);
Serial2.begin(GPSBaud);
e32ttl.begin();
delay (500);
}
 void loop() {
while (Serial2.available()>0){
  kanalBekleme_sure = millis();
  if (gps.encode (Serial2.read()))
  displayInfo();
}
if (millis() > kanalBekleme_sure + kanalBekleme_bekleme) {
  Serial.println (F("No GPS detected: check wiring."));
  while (true);
}
}
void displayInfo()
{
  Serial.print (F("location:"));
 // if (gps.location.isValid())
 // {
    Serial.print(gps.location.lat(),6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(),6);
    Serial.print(F(","));
    Serial.print(F("irtifa:"));
    Serial.print(gps.altitude.meters());
     *(float*)(data.lat) = gps.location.lat();
    *(float*)(data.lng) = gps.location.lng();
    *(float*)(data.irtifa) = gps.altitude.meters();
    if (millis()> kanalBekleme_sure2 + kanalBekleme_bekleme2) {
      kanalBekleme_sure2 = millis();
      ResponseStatus rs = e32ttl.sendFixedMessage(0, 3, 23, &data, sizeof(Signal));
  Serial.println(rs.getResponseDescription()); 
    }

[/apcode]

kayra Düzenlenmiş cevap Ağustos 6, 2022
4 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.