123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #include "M5Stack.h"
- #include "TFTTerminal.h"
- #include "freertos/queue.h"
- TFT_eSprite TerminalBuff = TFT_eSprite(&M5.Lcd);
- TFTTerminal terminal(&TerminalBuff);
- String waitRevice() {
- String recvStr;
- do {
- recvStr = Serial2.readStringUntil('\n');
- } while (recvStr.length() == 0);
- Serial.println(recvStr);
- terminal.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, 16, 17);
- Serial2.flush();
- delay(100);
- M5.Lcd.fillRect(0, 0, 320, 240, TFT_BLACK);
- M5.Lcd.fillRect(0, 0, 320, 40, TFT_WHITE);
- M5.Lcd.setTextColor(TFT_BLACK);
- M5.Lcd.setTextDatum(TC_DATUM);
- M5.Lcd.drawString("Unit-LoraWan(915) TEST", 160, 10, 4);
- M5.Lcd.setTextDatum(TL_DATUM);
- M5.Lcd.setTextColor(TFT_WHITE);
- TerminalBuff.createSprite(240, 200);
- terminal.setGeometry(20, 55, 300, 200);
- terminal.setFontsize(1);
- 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");
- terminal.println("LoraWan Rebooting");
- delay(2000);
- terminal.println("LoraWan config");
- // Set Join Mode OTAA
- sendATCMDAndRevice("AT+CJOINMODE=0\r\n");
- sendATCMDAndRevice("AT+CDEVEUI=d896e0ff00000240\r\n");
- sendATCMDAndRevice("AT+CAPPEUI=0000000000000001\r\n");
- sendATCMDAndRevice("AT+CAPPKEY=98929b92f09e2daf676d646d0f61d250\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,923300000\r\n");
- // TX Freq
- // 902.3
- // 902.5
- // 902.7
- // 902.9
- // 903.1
- // 903.3
- // 903.5
- // 903.7
- // MARK 0000 0000 0000 0001 | 0x001
- sendATCMDAndRevice("AT+CFREQBANDMASK=0001\r\n");
- // RX Freq
- // 923.3 - (RX1)
- // 923.9 - (RX1)
- // 924.5 - (RX1)
- // 925.1 - (RX1)
- // 925.7 - (RX1)
- // 926.3 - (RX1)
- // 926.9 - (RX1)
- // 927.5 - (RX1)
- // 923.3 - (RX2) | 923300000
- 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) {
- Serial.println("[ INFO ] JOIN IN SUCCESSFUL");
- terminal.println("LoraWan JOIN");
- system_fsm = kJoined;
- } else {
- Serial.println("[ INFO ] JOIN IN FAIL");
- terminal.println("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);
- terminal.println(strbuff);
- } else {
- sprintf(strbuff, "FAILD NUM:%d CNT:%d", loraWanSendNUM,
- loraWanSendCNT);
- terminal.println(strbuff);
- }
- }
- } else if (recvStr.indexOf("OK+SEND") != -1) {
- String snednum = recvStr.substring(8);
- // Serial.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);
- // Serial.printf(" [ INFO ] SEND CNT %s \r\n",snedcnt.c_str());
- loraWanSendCNT = snedcnt.toInt();
- }
- if (system_fsm == kSending) {
- terminal.println("LoraWan Sending");
- sendATCMD("AT+DTRX=1,15,8,4655434b20535443\r\n");
- system_fsm = kWaitSend;
- }
- // if (M5.BtnA.wasPressed())
- // {
- // sendATCMDAndRevice("AT+CLINKCHECK=1\r\n");
- // delay(100);
- // }
- // if (M5.BtnB.wasPressed())
- // {
- // sendATCMDAndRevice("AT+DTRX=1,15,8,4655434b20535443\r\n");
- // delay(100);
- // }
- // if (M5.BtnC.wasPressed())
- // {
- // sendATCMDAndRevice("AT+DRX?\r\n");
- // delay(100);
- // }
- delay(10);
- M5.update();
- }
|