Closed Mohamedx7 closed 3 years ago
I'm using TTGO T BEAM V1 board first, when I run GPS code it runs perfectly but when I add LoRa to the code to send to another TTGO T BEAM board it shows 0.00 for both latitude and longitude .... any help??
`#include
SSD1306 display(0x3c, 21, 22); String rssi = "RSSI --"; String packSize = "--"; String packet ;
UBLOX_GPS_OBJECT();
AXP20X_Class axp;
bool axp192_found = false;
char buff[5][256]; uint64_t gpsSec = 0;
void scanI2Cdevice(void) { byte err, addr; int nDevices = 0; for (addr = 1; addr < 127; addr++) { Wire.beginTransmission(addr); err = Wire.endTransmission(); if (err == 0) { Serial.print("I2C device found at address 0x"); if (addr < 16) Serial.print("0"); Serial.print(addr, HEX); Serial.println(" !"); nDevices++;
if (addr == AXP192_SLAVE_ADDRESS) { axp192_found = true; Serial.println("axp192 PMU found"); } } else if (err == 4) { Serial.print("Unknow error at address 0x"); if (addr < 16) Serial.print("0"); Serial.println(addr, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n");
}
void setup() {
pinMode(16,OUTPUT); pinMode(2,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED delay(50); digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high
while (!Serial); Serial.println(); Serial.println("LoRa Sender Test");
SPI.begin(SCK,MISO,MOSI,SS); LoRa.setPins(SS,RST,DI0); if (!LoRa.begin(868E6)) { Serial.println("Starting LoRa failed!"); while (1); } //LoRa.onReceive(cbk); // LoRa.receive(); Serial.println("init ok"); display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_10);
delay(1500);
Serial.begin(115200);
delay(5000);
Wire.begin(I2C_SDA, I2C_SCL);
scanI2Cdevice();
if (axp192_found) { if (!axp.begin(Wire, AXP192_SLAVE_ADDRESS)) { Serial.println("AXP192 Begin PASS"); // power on ESP32 & GPS axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); axp.setDCDC1Voltage(3300); //esp32 core VDD 3v3 axp.setLDO3Voltage(3300); //GPS VDD 3v3
Serial.printf("DCDC1: %s\n", axp.isDCDC1Enable() ? "ENABLE" : "DISABLE"); Serial.printf("DCDC2: %s\n", axp.isDCDC2Enable() ? "ENABLE" : "DISABLE"); Serial.printf("LDO2: %s\n", axp.isLDO2Enable() ? "ENABLE" : "DISABLE"); Serial.printf("LDO3: %s\n", axp.isLDO3Enable() ? "ENABLE" : "DISABLE"); Serial.printf("DCDC3: %s\n", axp.isDCDC3Enable() ? "ENABLE" : "DISABLE"); Serial.printf("Exten: %s\n", axp.isExtenEnable() ? "ENABLE" : "DISABLE"); // Set mode of blue onboard LED (OFF, ON, Blinking 1Hz, Blinking 4 Hz) // axp.setChgLEDMode(AXP20X_LED_OFF); //axp.setChgLEDMode(AXP20X_LED_LOW_LEVEL); axp.setChgLEDMode(AXP20X_LED_BLINK_1HZ); //axp.setChgLEDMode(AXP20X_LED_BLINK_4HZ); } else { Serial.println("AXP192 Begin FAIL"); }
} else { Serial.println("AXP192 not found"); }
Serial1.begin(GPS_BAUD_RATE, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_10);
void loop() {
display.clear(); display.setTextAlignment(TEXT_ALIGN_LEFT); display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Latitude: "); display.drawString(60, 0, String(gps.location.lat()));
display.drawString(0, 10, "Longitude: "); display.drawString(60, 10, String (gps.location.lng()));
display.drawString(0, 20, "satellites: "); display.drawString(60, 20, String(gps.satellites.value()));
display.drawString(0, 30, "UTC: ");
display.drawString(60, 30, String(gps.time.hour())); display.drawString(70, 30, " : ");
display.drawString(80, 30, String (gps.time.minute())); display.drawString(90, 30, " : ");
display.drawString(100, 30, String (gps.time.second())); display.drawString(0, 30, " : ");
display.drawString(7, 50, " Designed by Mohamed");
display.display();
// send packet LoRa.beginPacket();
LoRa.print("Latitude:"); LoRa.print(gps.location.lat());
LoRa.print("\nLongitude:"); LoRa.print(gps.location.lng());
LoRa.print("\nsatellites: "); LoRa.print(gps.satellites.value());
//LoRa.print("counter "); //LoRa.print(counter);
LoRa.endPacket();
// put your main code here, to run repeatedly static uint64_t gpsMap = 0;
while (Serial1.available()) gps.encode(Serial1.read());
if (millis() > 5000 && gps.charsProcessed() < 10) { snprintf(buff[0], sizeof(buff[0]), "T-Beam GPS"); snprintf(buff[1], sizeof(buff[1]), "No GPS detected"); Serial.println(buff[1]); return; } if (!gps.location.isValid()) { if (millis() - gpsMap > 1000) { snprintf(buff[0], sizeof(buff[0]), "T-Beam GPS"); snprintf(buff[1], sizeof(buff[1]), "Positioning(%llu)", gpsSec++); Serial.println(buff[1]); gpsMap = millis(); } } else { if (millis() - gpsMap > 1000) { snprintf(buff[0], sizeof(buff[0]), "UTC:%d:%d:%d", gps.time.hour(), gps.time.minute(), gps.time.second()); snprintf(buff[1], sizeof(buff[1]), "LNG:%.4f", gps.location.lng()); snprintf(buff[2], sizeof(buff[2]), "LAT:%.4f", gps.location.lat()); snprintf(buff[3], sizeof(buff[3]), "satellites:%u", gps.satellites.value()); Serial.println(buff[0]); Serial.println(buff[1]); Serial.println(buff[2]); Serial.println(buff[3]); gpsMap = millis(); } } }`
Please use 3 back ticks wrapping your code.
Like this at the start on a single line: ```c++ at the end of the code block on a new line: ```
thank you for replying to me .... it worked
I'm using TTGO T BEAM V1 board first, when I run GPS code it runs perfectly but when I add LoRa to the code to send to another TTGO T BEAM board it shows 0.00 for both latitude and longitude .... any help??
`#include
include
include <TinyGPS++.h>
include "SSD1306.h"
include "images.h"
include
include
define SCK 5 // GPIO5 -- SX1278's SCK
define MISO 19 // GPIO19 -- SX1278's MISnO
define MOSI 27 // GPIO27 -- SX1278's MOSI
define SS 18 // GPIO18 -- SX1278's CS
define RST 14 // GPIO14 -- SX1278's RESET
define DI0 26 // GPIO26 -- SX1278's IRQ(Interrupt Request)
define BAND 868E6
SSD1306 display(0x3c, 21, 22); String rssi = "RSSI --"; String packSize = "--"; String packet ;
define UBLOX_GPS_OBJECT() TinyGPSPlus gps
define GPS_BAUD_RATE 9600
define GPS_RX_PIN 34
define GPS_TX_PIN 12
define I2C_SDA 21
define I2C_SCL 22
define AXP192_SLAVE_ADDRESS 0x34
UBLOX_GPS_OBJECT();
AXP20X_Class axp;
bool axp192_found = false;
char buff[5][256]; uint64_t gpsSec = 0;
void scanI2Cdevice(void) { byte err, addr; int nDevices = 0; for (addr = 1; addr < 127; addr++) { Wire.beginTransmission(addr); err = Wire.endTransmission(); if (err == 0) { Serial.print("I2C device found at address 0x"); if (addr < 16) Serial.print("0"); Serial.print(addr, HEX); Serial.println(" !"); nDevices++;
}
void setup() {
pinMode(16,OUTPUT); pinMode(2,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED delay(50); digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high
while (!Serial); Serial.println(); Serial.println("LoRa Sender Test");
SPI.begin(SCK,MISO,MOSI,SS); LoRa.setPins(SS,RST,DI0); if (!LoRa.begin(868E6)) { Serial.println("Starting LoRa failed!"); while (1); } //LoRa.onReceive(cbk); // LoRa.receive(); Serial.println("init ok"); display.init(); display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
delay(1500);
Serial.begin(115200);
delay(5000);
Wire.begin(I2C_SDA, I2C_SCL);
scanI2Cdevice();
if (axp192_found) { if (!axp.begin(Wire, AXP192_SLAVE_ADDRESS)) { Serial.println("AXP192 Begin PASS"); // power on ESP32 & GPS axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); axp.setDCDC1Voltage(3300); //esp32 core VDD 3v3 axp.setLDO3Voltage(3300); //GPS VDD 3v3
} else { Serial.println("AXP192 not found"); }
Serial1.begin(GPS_BAUD_RATE, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
display.init(); display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
delay(1500);
}
void loop() {
display.clear(); display.setTextAlignment(TEXT_ALIGN_LEFT); display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Latitude: "); display.drawString(60, 0, String(gps.location.lat()));
display.drawString(0, 10, "Longitude: "); display.drawString(60, 10, String (gps.location.lng()));
display.drawString(0, 20, "satellites: "); display.drawString(60, 20, String(gps.satellites.value()));
display.drawString(0, 30, "UTC: ");
display.drawString(60, 30, String(gps.time.hour())); display.drawString(70, 30, " : ");
display.drawString(80, 30, String (gps.time.minute())); display.drawString(90, 30, " : ");
display.drawString(100, 30, String (gps.time.second())); display.drawString(0, 30, " : ");
display.drawString(7, 50, " Designed by Mohamed");
display.display();
// send packet LoRa.beginPacket();
LoRa.print("Latitude:"); LoRa.print(gps.location.lat());
LoRa.print("\nLongitude:"); LoRa.print(gps.location.lng());
LoRa.print("\nsatellites: "); LoRa.print(gps.satellites.value());
//LoRa.print("counter "); //LoRa.print(counter);
LoRa.endPacket();
// put your main code here, to run repeatedly static uint64_t gpsMap = 0;
while (Serial1.available()) gps.encode(Serial1.read());
if (millis() > 5000 && gps.charsProcessed() < 10) { snprintf(buff[0], sizeof(buff[0]), "T-Beam GPS"); snprintf(buff[1], sizeof(buff[1]), "No GPS detected"); Serial.println(buff[1]); return; } if (!gps.location.isValid()) { if (millis() - gpsMap > 1000) { snprintf(buff[0], sizeof(buff[0]), "T-Beam GPS"); snprintf(buff[1], sizeof(buff[1]), "Positioning(%llu)", gpsSec++); Serial.println(buff[1]); gpsMap = millis(); } } else { if (millis() - gpsMap > 1000) { snprintf(buff[0], sizeof(buff[0]), "UTC:%d:%d:%d", gps.time.hour(), gps.time.minute(), gps.time.second()); snprintf(buff[1], sizeof(buff[1]), "LNG:%.4f", gps.location.lng()); snprintf(buff[2], sizeof(buff[2]), "LAT:%.4f", gps.location.lat()); snprintf(buff[3], sizeof(buff[3]), "satellites:%u", gps.satellites.value()); Serial.println(buff[0]); Serial.println(buff[1]); Serial.println(buff[2]); Serial.println(buff[3]); gpsMap = millis(); } } }`