diff --git a/docs/LilyGo_TBeam_V1.1.pdf b/docs/LilyGo_TBeam_V1.1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1e5e6252d4e9c881f699f8e8c32bfe16fde49097 Binary files /dev/null and b/docs/LilyGo_TBeam_V1.1.pdf differ diff --git a/docs/dimensions.webp b/docs/dimensions.webp new file mode 100644 index 0000000000000000000000000000000000000000..7ff044c08b4b21ce00444354d478d3050a5a853d Binary files /dev/null and b/docs/dimensions.webp differ diff --git a/src/config.h.sample b/src/config.h.sample new file mode 100644 index 0000000000000000000000000000000000000000..c6f45b771592ecf29c680b1215d648a42dc14204 --- /dev/null +++ b/src/config.h.sample @@ -0,0 +1,8 @@ + +//char DevEUIString[] = "0102030405060708"; +//char AppEUIString[] = "70B3D50A0B0C0D0E"; +//char AppKeyString[] = "00112233445566778899AABBCCDDEEFF"; + +#define TTN_DEVEUI { 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01 }; // LSB / little-endian / "byte order reversed" +#define TTN_APPEUI { 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0xD5, 0xB3, 0x70 }; // LSB / little-endian / "byte order reversed" +#define TTN_APPKEY { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; // MSB / big-endian / "byte order same as string" diff --git a/src/main.cpp b/src/main.cpp index 9e5569fa81166d686263e0d4e0681d5cf6808bac..cf9ab95b564886220666d526405008cfd6374d09 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,7 +12,6 @@ public: cLoRaWAN(){}; protected: - // you'll need to provide implementations for each of the following. virtual bool GetOtaaProvisioningInfo(Arduino_LoRaWAN::OtaaProvisioningInfo *) override; virtual void NetSaveFCntUp(uint32_t uFCntUp) override; virtual void NetSaveFCntDown(uint32_t uFCntDown) override; @@ -54,13 +53,12 @@ void cLoRaWAN::NetSaveSessionInfo( } const cLoRaWAN::lmic_pinmap pinMap = { - .nss = 18, - .rxtx = cLoRaWAN::lmic_pinmap::LMIC_UNUSED_PIN, - .rst = 23, - .dio = { 26, 33, 32 }, + .nss = 18, + .rxtx = cLoRaWAN::lmic_pinmap::LMIC_UNUSED_PIN, + .rst = 23, + .dio = {26, 33, cLoRaWAN::lmic_pinmap::LMIC_UNUSED_PIN}, }; - AXP20X_Class axp; HardwareSerial GPS(1); TinyGPSPlus gps; @@ -80,53 +78,70 @@ void setupPower() { Serial.println("AXP192 Begin FAIL"); } - axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); - axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); - axp.setPowerOutPut(AXP192_DCDC2, AXP202_ON); - axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON); - axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); + axp.setPowerOutPut(AXP192_DCDC1, AXP202_OFF); // OLED, etc.: off + axp.setPowerOutPut(AXP192_DCDC2, AXP202_OFF); // N/C: off + axp.setPowerOutPut(AXP192_DCDC3, AXP202_ON); // ESP32: on + axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); // LORA: on + axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); // GPS: on + axp.setDCDC3Voltage(3300); // ESP32: 3.3V + axp.setLDO2Voltage(3300); // LORA: 3.3V + axp.setLDO3Voltage(3300); // GPS: 3.3V axp.setChgLEDMode(AXP20X_LED_OFF); } void setupGps() { - GPS.begin(9600, SERIAL_8N1, 34, 12); //17-TX 18-RX + GPS.begin(9600, SERIAL_8N1, 34, 12); // IO34: RX, IO12: TX } void printStatus() { axp.setChgLEDMode(AXP20X_LED_LOW_LEVEL); while (GPS.available()) + { gps.encode(GPS.read()); + } Serial.println("**********************"); Serial.println("--- Power ---"); + Serial.printf("DCDC1/OLED Status : %s\n", axp.isDCDC1Enable() ? "enabled" : "disabled"); + Serial.printf("DCDC1/OLED Voltage : %g V\n", (float)axp.getDCDC1Voltage() / 1000); + Serial.printf("DCDC2/N/C Status : %s\n", axp.isDCDC2Enable() ? "enabled" : "disabled"); + Serial.printf("DCDC2/N/C Voltage : %g V\n", (float)axp.getDCDC2Voltage() / 1000); + Serial.printf("DCDC3/ESP32 Status : %s\n", axp.isDCDC3Enable() ? "enabled" : "disabled"); + Serial.printf("DCDC3/ESP32 Voltage : %g V\n", (float)axp.getDCDC3Voltage() / 1000); + Serial.printf("LDO2/LoRa Status : %s\n", axp.isLDO2Enable() ? "enabled" : "disabled"); + Serial.printf("LDO2/LoRa Voltage : %g V\n", (float)axp.getLDO2Voltage() / 1000); + Serial.printf("LDO3/GPS Status : %s\n", axp.isLDO3Enable() ? "enabled" : "disabled"); + Serial.printf("LDO3/GPS Voltage : %g V\n", (float)axp.getLDO3Voltage() / 1000); + Serial.println("--- Battery ---"); Serial.printf("Battery Connected: %s\n", axp.isBatteryConnect() ? "true" : "false"); if (axp.isBatteryConnect()) { - Serial.printf("Battery Charging Enabled: %s\n", axp.isChargeingEnable() ? "true" : "false"); - Serial.printf("Battery Charging: %s\n", axp.isChargeing() ? "true" : "false"); - Serial.printf("Battery Voltage: %.2f V\n", axp.getBattVoltage() / 1000); - Serial.printf("Battery Percentage: %d %%\n", axp.getBattPercentage()); - Serial.printf("Battery Charge Current: %g mA\n", axp.getSettingChargeCurrent()); + Serial.printf("Battery Percentage : %d %%\n", axp.getBattPercentage()); + Serial.printf("Battery Voltage : %g V\n", axp.getBattVoltage() / 1000); + Serial.printf("Charging Enabled : %s\n", axp.isChargeingEnable() ? "true" : "false"); + Serial.printf("Battery Charging : %s\n", axp.isChargeing() ? "true" : "false"); + Serial.printf("Set Charge Current : %g mA\n", axp.getSettingChargeCurrent()); } - Serial.printf("Chip Temp: %.1f C°\n", axp.getTemp() / 10); + Serial.println("--- Chip ---"); + Serial.printf("Chip Temp : %.1f C°\n", axp.getTemp() / 10); Serial.println("--- GPS ---"); - Serial.print("Latitude : "); + Serial.print("Latitude : "); Serial.println(gps.location.lat(), 5); - Serial.print("Longitude : "); + Serial.print("Longitude : "); Serial.println(gps.location.lng(), 4); - Serial.print("Satellites: "); + Serial.print("Satellites : "); Serial.println(gps.satellites.value()); - Serial.print("Altitude : "); + Serial.print("Altitude : "); Serial.print(gps.altitude.feet() / 3.2808); Serial.println("M"); - Serial.print("Time : "); + Serial.print("Time : "); Serial.print(gps.time.hour()); Serial.print(":"); Serial.print(gps.time.minute()); Serial.print(":"); Serial.println(gps.time.second()); - Serial.print("Speed : "); + Serial.print("Speed : "); Serial.println(gps.speed.kmph()); Serial.println("**********************"); axp.setChgLEDMode(AXP20X_LED_OFF);