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]
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]