Selamlar, Adafruit Ultimate GPS kullanarak GPS verisini LORA ile aktarmaya çalışıyorum. Tahminimce iki cihazın UART bağlantıları çakışıyor. Kodda sırasıyla Lora ile alakalı yerleri çalıştırdığımda void setup kısmında yer alan e32ttl.begin() ; satırını yazdığım anda GPS çalışmayı bırakıyor. Hatta hiç UART bağlantısı yokmuş gibi davranıyor. Kodları aşağıda paylaşıyorum.
Kod tamamıyla veri göndermek için hazır halde değildir! sadece e32tll.begin(); çalıştığı anda Adafruit UART bağlantısı yokmuş gibi davranıyor.
//***************GPS******************************<br />#include <Adafruit_GPS.h><br />#include <SoftwareSerial.h><br />SoftwareSerial mySerial(7, 8);<br />Adafruit_GPS GPS(&mySerial);<br />#define GPSECHO true<br />//***************LORA*****************************<br />#include "LoRa_E32.h"<br />SoftwareSerial mylora(2, 3);<br />LoRa_E32 e32ttl(&mylora);<br />struct Signal {<br /> char type[15] = "Fixaj.com";<br /> byte temp[4];<br />} data;<br />//************************************************<br />void setup()<br />{<br /> //***************GPS******************************<br /> Serial.begin(115200);<br /> delay(5000);<br /> Serial.println("Adafruit GPS library basic parsing test!");<br /> GPS.begin(9600);<br /> GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);<br /> GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); <br /> GPS.sendCommand(PGCMD_ANTENNA);<br /> delay(1000);<br /> mySerial.println(PMTK_Q_RELEASE);<br /> //***************LORA******************************<br /> e32ttl.begin();<br /> }<br /> uint32_t timer = millis();<br />void loop() <br />{<br /> //***************GPS******************************<br /> char c = GPS.read();<br /> if ((c) && (GPSECHO))<br /> Serial.write(c);<br /> if (GPS.newNMEAreceived()) {<br /> if (!GPS.parse(GPS.lastNMEA())) <br /> return; <br /> }<br /> if (millis() - timer > 2000) {<br /> timer = millis(); // reset the timer<br /> Serial.print("\nTime: ");<br /> if (GPS.hour < 10) { Serial.print('0'); }<br /> Serial.print(GPS.hour, DEC); Serial.print(':');<br /> if (GPS.minute < 10) { Serial.print('0'); }<br /> Serial.print(GPS.minute, DEC); Serial.print(':');<br /> if (GPS.seconds < 10) { Serial.print('0'); }<br /> Serial.print(GPS.seconds, DEC); Serial.print('.');<br /> if (GPS.milliseconds < 10) {<br /> Serial.print("00");<br /> } else if (GPS.milliseconds > 9 && GPS.milliseconds < 100) {<br /> Serial.print("0");<br /> }<br /> Serial.println(GPS.milliseconds);<br /> Serial.print("Date: ");<br /> Serial.print(GPS.day, DEC); Serial.print('/');<br /> Serial.print(GPS.month, DEC); Serial.print("/20");<br /> Serial.println(GPS.year, DEC);<br /> Serial.print("Fix: "); Serial.print((int)GPS.fix);<br /> Serial.print(" quality: "); Serial.println((int)GPS.fixquality);<br /> if (GPS.fix) {<br /> Serial.print("Location: ");<br /> Serial.print(GPS.latitude, 4); Serial.print(GPS.lat);<br /> Serial.print(", ");<br /> Serial.print(GPS.longitude, 4); Serial.println(GPS.lon);<br /> Serial.print("Speed (knots): "); Serial.println(GPS.speed);<br /> Serial.print("Angle: "); Serial.println(GPS.angle);<br /> Serial.print("Altitude: "); Serial.println(GPS.altitude);<br /> Serial.print("Satellites: "); Serial.println((int)GPS.satellites);<br /> }<br /> }<br /> //***************LORA******************************<br />// ResponseStatus rs = e32ttl.sendFixedMessage(0, 44, 23, &data, sizeof(Signal));<br />// Serial.println(rs.getResponseDescription());<br />// <br />// delay(2000);<br />// <br />// while (e32ttl.available() > 1) {<br />// ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));<br />// struct Signal data = *(Signal*) rsc.data;<br />// Serial.print("Yer: ");<br />// Serial.println(data.type);<br />// Serial.print("Ortam Sıcaklığı: ");<br />// Serial.println(*(float*)(data.temp));<br />// rsc.close();<br />// }<br /> }
//adres 63 e yollar bu godların yüklendiği kartın adresi 44 olmalı kanalı ise 23!!!!!!!!!!!!!<br />#include "LoRa_E32.h"<br />#include <SoftwareSerial.h><br />SoftwareSerial mySerial(2, 3); // Arduino RX <-- e32 TX, Arduino TX --> e32 RX<br />LoRa_E32 e32ttl(&mySerial);<br /> struct Signal {<br /> char type[15];<br /> byte temp[4];<br />} data;<br /> void setup() {<br /> Serial.begin(9600);<br /> e32ttl.begin();<br /> delay(500);<br />}<br /> void loop() {<br /> while (e32ttl.available() > 1) {<br /> // Gelen mesaj okunuyor<br /> ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));<br /> struct Signal data = *(Signal*) rsc.data;<br /> Serial.print("Gelen Messaj: ");<br /> Serial.println(data.type);<br /> rsc.close();<br /> //Gönderilecek paket veri hazırlanıyor<br /> struct Signal {<br /> char type[15] = "Bebek Odası";<br /> byte temp[4];<br /> } data2;<br /> *(float*)(data2.temp) = 19.2;<br /> ResponseStatus rs = e32ttl.sendFixedMessage(0, 63, 23, &data2, sizeof(Signal));<br /> Serial.println(rs.getResponseDescription());<br /> }<br /> }
Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Ağustos 1, 2022
kodu düzgün görüntüleyemiyorum. yüksek ihtimal listen komudu kullanmamışsınızdır. sitemizdeki yazılara ve örnek sorulara bakmanızı tavsiye ederim.
Lora Modülü ile GPS kullanımı. İrtifa bilgilerinin okunup gönderilmesi
Mehmet En iyi cevap olarak seçildi Ağustos 1, 2022