From 6fb8bfe9fb379101f9ebcb493b01350b5c67df21 Mon Sep 17 00:00:00 2001 From: TinyuChiu Date: Tue, 30 Aug 2022 14:51:20 +0800 Subject: [PATCH] Add portA power control #99 --- examples/Unit/LoRaWAN470/LoRaWAN470.ino | 160 ------------------- examples/Unit/LoRaWAN868/LoRaWAN868.ino | 195 ------------------------ src/AXP192.cpp | 9 ++ src/AXP192.h | 1 + 4 files changed, 10 insertions(+), 355 deletions(-) delete mode 100644 examples/Unit/LoRaWAN470/LoRaWAN470.ino delete mode 100644 examples/Unit/LoRaWAN868/LoRaWAN868.ino diff --git a/examples/Unit/LoRaWAN470/LoRaWAN470.ino b/examples/Unit/LoRaWAN470/LoRaWAN470.ino deleted file mode 100644 index 937ba8d6..00000000 --- a/examples/Unit/LoRaWAN470/LoRaWAN470.ino +++ /dev/null @@ -1,160 +0,0 @@ -/* -******************************************************************************* -* Copyright (c) 2021 by M5Stack -* Equipped with M5Core2 sample source code -* 配套 M5Core2 示例源代码 -* Visit for more information: https://docs.m5stack.com/en/unit/lorawan470 -* 获取更多资料请访问: https://docs.m5stack.com/zh_CN/unit/lorawan470 -* -* Product: LoRaWAN470. -* Date: 2021/8/31 -******************************************************************************* - Please connect to Port C,请连接端口C -*/ -#include "M5Core2.h" -#include "freertos/queue.h" -#include - -M5GFX display; -M5Canvas canvas(&display); - -String waitRevice() { - String recvStr; - do { - recvStr = Serial2.readStringUntil('\n'); - } while (recvStr.length() == 0); - canvas.println(recvStr); - return recvStr; -} - -void sendATCMD(String cmdStr) { - Serial2.print(cmdStr); - delay(100); -} - -int sendATCMDAndRevice(String cmdStr) { - Serial2.print(cmdStr); - delay(100); - waitRevice(); - String recvStr = waitRevice(); - if (recvStr.indexOf("OK") != -1) { - return 0; - } else { - return -1; - } -} - -void setup() { - M5.begin(); - Serial2.begin(115200, SERIAL_8N1, 13, 14); - Serial2.flush(); - delay(100); - display.begin(); - display.setTextSize(2); - canvas.setColorDepth(1); // mono color - canvas.createSprite(display.width(), display.height()); - canvas.setTextSize((float)canvas.width() / 160); - canvas.setTextScroll(true); - - sendATCMD("AT?\r\n"); - delay(100); - Serial2.flush(); - sendATCMDAndRevice("AT+ILOGLVL=0\r\n"); - sendATCMDAndRevice("AT+CSAVE\r\n"); - sendATCMDAndRevice("AT+IREBOOT=0\r\n"); - display.println("LoraWan Rebooting"); - delay(2000); - display.println("LoraWan config"); - //Set Join Mode OTAA. - sendATCMDAndRevice("AT+CJOINMODE=0\r\n"); - sendATCMDAndRevice("AT+CDEVEUI=0037CAE1FC3542B9\r\n"); - sendATCMDAndRevice("AT+CAPPEUI=70B3D57ED003E04E\r\n"); - sendATCMDAndRevice("AT+CAPPKEY=67FA4ED1075A20573BCDD7594C458698\r\n"); - sendATCMDAndRevice("AT+CULDLMODE=2\r\n"); - //Set ClassC mode - sendATCMDAndRevice("AT+CCLASS=2\r\n"); - sendATCMDAndRevice("AT+CWORKMODE=2\r\n"); - - sendATCMDAndRevice("AT+CRXP=0,0,505300000\r\n"); - - // TX Freq - // 486.3 - // 486.5 - // 486.7 - // 486.9 - // 487.1 - // 487.3 - // 487.5 - // 487.7 - //MARK 0000 0100 0000 0000 | 0x0400 - - sendATCMDAndRevice("AT+CFREQBANDMASK=0400\r"); - - // RX Freq - //506.7 (RX1) - //506.9 (RX1) - //507.1 (RX1) - //507.3 (RX1) - //507.5 (RX1) - //507.7 (RX1) - //507.9 (RX1) - //508.1 (RX1) - //505.3 (RX2)| 505300000 - sendATCMDAndRevice("AT+CJOIN=1,0,10,8\r\n"); -} - -enum systemstate { - kIdel = 0, - kJoined, - kSending, - kWaitSend, - kEnd, -}; -int system_fsm = kIdel; - -int loraWanSendNUM = -1; -int loraWanSendCNT = -1; - -void loop() { - String recvStr = waitRevice(); - if (recvStr.indexOf("+CJOIN:") != -1) { - if (recvStr.indexOf("OK") != -1) { - canvas.printf("LoraWan JOIN"); - system_fsm = kJoined; - } else { - canvas.printf("LoraWan JOIN FAIL"); - system_fsm = kIdel; - } - } else if (recvStr.indexOf("OK+RECV") != -1) { - if (system_fsm == kJoined) { - system_fsm = kSending; - } else if (system_fsm == kWaitSend) { - system_fsm = kSending; - char strbuff[128]; - if ((loraWanSendCNT < 5) && (loraWanSendNUM == 8)) { - sprintf(strbuff, "TSET OK CNT: %d", loraWanSendCNT); - canvas.print(strbuff); - } else { - sprintf(strbuff, "FAILD NUM:%d CNT:%d", loraWanSendNUM, loraWanSendCNT); - canvas.print(strbuff); - } - } - } else if (recvStr.indexOf("OK+SEND") != -1) { - String snednum = recvStr.substring(8); - canvas.printf(" [ INFO ] SEND NUM %s \r\n", snednum.c_str()); - loraWanSendNUM = snednum.toInt(); - } else if (recvStr.indexOf("OK+SENT") != -1) { - String snedcnt = recvStr.substring(8); - canvas.printf(" [ INFO ] SEND CNT %s \r\n", snedcnt.c_str()); - - loraWanSendCNT = snedcnt.toInt(); - } - - if (system_fsm == kSending) { - canvas.println("LoraWan Sending"); - sendATCMD("AT+DTRX=1,8,8,4655434b20535443\r\n"); - system_fsm = kWaitSend; - } - canvas.pushSprite(0, 0); - delay(10); -} \ No newline at end of file diff --git a/examples/Unit/LoRaWAN868/LoRaWAN868.ino b/examples/Unit/LoRaWAN868/LoRaWAN868.ino deleted file mode 100644 index 0cf6bb0f..00000000 --- a/examples/Unit/LoRaWAN868/LoRaWAN868.ino +++ /dev/null @@ -1,195 +0,0 @@ -/* -******************************************************************************* -* Copyright (c) 2021 by M5Stack -* Equipped with M5Core2 sample source code -* 配套 M5Core2 示例源代码 -* Visit for more information: https://docs.m5stack.com/en/unit/lorawan868 -* 获取更多资料请访问: https://docs.m5stack.com/zh_CN/unit/lorawan868 -* -* Product: LoRaWAN868. -* Date: 2021/8/31 -******************************************************************************* - Please connect to Port C,请连接端口C -*/ -#include "M5Core2.h" -#include "freertos/queue.h" -#include - -M5GFX display; -M5Canvas canvas(&display); - -String waitRevice() { - String recvStr; - do { - recvStr = Serial2.readStringUntil('\n'); - } while (recvStr.length() == 0); - canvas.println(recvStr); - return recvStr; -} - -uint16_t ypos = 55; - -void drawLineStr(String str, uint16_t color) { - M5.Lcd.setTextColor(color); - M5.Lcd.drawString(str, 10, ypos, 4); - ypos += 32; -} - -void sendATCMD(String cmdStr) { - Serial2.print(cmdStr); - delay(100); -} - -int sendATCMDAndRevice(String cmdStr) { - Serial2.print(cmdStr); - delay(10); - waitRevice(); - String recvStr = waitRevice(); - if (recvStr.indexOf("OK") != -1) { - return 0; - } else { - return -1; - } -} - -void setup() { - M5.begin(); - Serial2.begin(115200, SERIAL_8N1, 13, 14); - Serial2.flush(); - delay(100); - display.begin(); - display.setTextSize(2); - display.println("LoRaWAN868"); - canvas.setColorDepth(1); // mono color - canvas.createSprite(display.width(), display.height()); - canvas.setTextSize((float)canvas.width() / 160); - canvas.setTextScroll(true); - - sendATCMD("AT?\r"); - delay(100); - Serial2.flush(); - sendATCMDAndRevice("AT+ILOGLVL=0\r"); - sendATCMDAndRevice("AT+CSAVE\r"); - sendATCMDAndRevice("AT+IREBOOT=0\r"); - display.println("LoraWan Rebooting"); - delay(2000); - display.println("LoraWan config"); - sendATCMDAndRevice("AT+CJOINMODE=0\r"); - sendATCMDAndRevice("AT+CDEVEUI=00bb9da5b97addf1\r"); - sendATCMDAndRevice("AT+CAPPEUI=70B3D57ED004247E\r"); //70B3D57ED003B699 - sendATCMDAndRevice("AT+CAPPKEY=27DFE264CA33AC1957C005EB48BA4721\r"); - sendATCMDAndRevice("AT+CULDLMODE=2\r"); - sendATCMDAndRevice("AT+CCLASS=2\r"); - sendATCMDAndRevice("AT+CWORKMODE=2\r"); - sendATCMDAndRevice("AT+CNBTRIALS=0,5\r"); - sendATCMDAndRevice("AT+CNBTRIALS=1,5\r"); - - // TX Freq - // 868.1 - SF7BW125 to SF12BW125 - // 868.3 - SF7BW125 to SF12BW125 and SF7BW250 - // 868.5 - SF7BW125 to SF12BW125 - // 867.1 - SF7BW125 to SF12BW125 - // 867.3 - SF7BW125 to SF12BW125 - // 867.5 - SF7BW125 to SF12BW125 - // 867.7 - SF7BW125 to SF12BW125 - // 867.9 - SF7BW125 to SF12BW125 - // 868.8 - FSK - - sendATCMDAndRevice("AT+CFREQBANDMASK=0001\r"); - - //869.525 - SF9BW125 (RX2) | 869525000 - //sendATCMDAndRevice("AT+CRXP=0,0,869525000\r"); - - sendATCMDAndRevice("AT+CSAVE\r"); - - sendATCMDAndRevice("AT+CJOIN=1,0,10,8\r"); -} - -enum systemstate { - kIdel = 0, - kJoined, - kSending, - kWaitSend, - kEnd, -}; -int system_fsm = kIdel; - -int loraWanSendNUM = -1; -int loraWanSendCNT = -1; -int loraWanupLinkCNT = 0; -int loraWanupLinkReviceCNT = 0; - -void loop() { - String recvStr = waitRevice(); - if (recvStr.indexOf("+CJOIN:") != -1) { - if (recvStr.indexOf("OK") != -1) { - canvas.println("[ INFO ] JOIN IN SUCCESSFUL"); - system_fsm = kJoined; - } else { - canvas.println("[ INFO ] JOIN IN FAIL"); - system_fsm = kIdel; - } - } else if (recvStr.indexOf("OK+RECV") != -1) { - if (system_fsm == kJoined) { - system_fsm = kSending; - } else if (system_fsm == kWaitSend) { - system_fsm = kEnd; - char strbuff[128]; - loraWanupLinkReviceCNT++; - - //if(( loraWanSendCNT < 5 )&&( loraWanSendNUM == 8 )) - //{ - // loraWanupLinkReviceCNT ++; - // sprintf(strbuff,"SEND CNT: %d (%d/%d)",loraWanSendCNT,loraWanupLinkReviceCNT,loraWanupLinkCNT); - // M5.Lcd.fillRect(0,183,320,32,TFT_BLACK); - // M5.Lcd.setTextColor(TFT_GREEN); - // M5.Lcd.drawString(strbuff, 10, 183, 4); - // //drawLineStr(strbuff, TFT_GREEN); - // - //} - //else - //{ - // sprintf(strbuff,"FAILD NUM:%d CNT:%d (%d/%d)",loraWanSendNUM,loraWanSendCNT,loraWanupLinkReviceCNT,loraWanupLinkCNT); - // M5.Lcd.fillRect(0,183,320,32,TFT_BLACK); - // M5.Lcd.setTextColor(TFT_RED); - // M5.Lcd.drawString(strbuff, 10, 183, 4); - // drawLineStr(strbuff, TFT_RED); - //} - delay(500); - system_fsm = kSending; - } - } else if (recvStr.indexOf("OK+SEND") != -1) { - String snednum = recvStr.substring(8); - canvas.printf(" [ INFO ] SEND NUM %s \r\n", snednum.c_str()); - loraWanSendNUM = snednum.toInt(); - } else if (recvStr.indexOf("OK+SENT") != -1) { - String snedcnt = recvStr.substring(8); - canvas.printf(" [ INFO ] SEND CNT %s \r\n", snedcnt.c_str()); - loraWanSendCNT = snedcnt.toInt(); - } else if (recvStr.indexOf("ERR+SENT") != -1) { - char strbuff[128]; - String ErrorCodeStr = recvStr.substring(9); - sprintf(strbuff, "ERROR Code:%d (%d/%d)", ErrorCodeStr.toInt(), - loraWanupLinkReviceCNT, loraWanupLinkCNT); - canvas.println(strbuff); - delay(500); - - system_fsm = kSending; - } else if (recvStr.indexOf("+CLINKCHECK:") != -1) { - String checkStr = recvStr.substring(String("+CLINKCHECK:").length()); - - char strbuff[128]; - sprintf(strbuff, "%s (%d/%d)", checkStr.c_str(), loraWanupLinkReviceCNT, - loraWanupLinkCNT); - canvas.println(strbuff); - } - - if (system_fsm == kSending) { - canvas.println("LoraWan Sending"); - sendATCMD("AT+CLINKCHECK=1\r"); - loraWanupLinkCNT++; - system_fsm = kWaitSend; - } - canvas.pushSprite(0, 0); - delay(10); -} \ No newline at end of file diff --git a/src/AXP192.cpp b/src/AXP192.cpp index 8f09c3a6..3ef48f69 100644 --- a/src/AXP192.cpp +++ b/src/AXP192.cpp @@ -60,6 +60,8 @@ void AXP192::begin() { delay(100); // I2C_WriteByteDataAt(0X15,0XFE,0XFF); + SetPeripherialsPower(true); + // axp: check v-bus status if (Read8bit(0x00) & 0x08) { Write1Byte(0x30, Read8bit(0x30) | 0x80); @@ -535,3 +537,10 @@ void AXP192::SetCHGCurrent(uint8_t state) { data = data | (state & 0x0f); Write1Byte(0x33, data); } + +void AXP192::SetPeripherialsPower(uint8_t state) { + if (!state) + Write1Byte(0x10, Read8bit(0x10) & 0XFB); + else if (state) + Write1Byte(0x10, Read8bit(0x10) | 0X02); +} \ No newline at end of file diff --git a/src/AXP192.h b/src/AXP192.h index 99e27dae..e5fe8525 100644 --- a/src/AXP192.h +++ b/src/AXP192.h @@ -97,6 +97,7 @@ class AXP192 { void SetLed(uint8_t state); void SetSpkEnable(uint8_t state); void SetCHGCurrent(uint8_t state); + void SetPeripherialsPower(uint8_t state); private: void Write1Byte(uint8_t Addr, uint8_t Data);