🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    STAMP CATM does not respond (Solved, HTML Get and Send Email)

    Modules
    2
    8
    5.5k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      HappyUser
      last edited by HappyUser

      Hi,
      I have my STAMP CATM connected to my M5StickC : GND to GND , +5 Out to 5V, G36 to RX and G26 to TX.
      Then :
      Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
      delay(300);
      Serial2.println("ATI\r\n");
      Read_Response(5000); // Serial2 read into Receive_buffer
      Serial.println(Receive_buffer);

      But when reading out the Serial2 I get no response at all.
      Any idea?
      Thanks

      1 Reply Last reply Reply Quote 0
      • ajb2k3A
        ajb2k3
        last edited by

        have you got a sim in it?

        UIFlow, so easy an adult can learn it!
        If I don't know it, be patient!
        I've ether not learned it or am too drunk to remember it!
        Author of the WIP UIFlow Handbook!
        M5Black, Go, Stick, Core2, and so much more it cant be fit in here!

        1 Reply Last reply Reply Quote 0
        • H
          HappyUser
          last edited by

          Thank you for your reply
          SIM card is placed according to picture.
          In the mean time I have tried different scenarios with :
          //Serial1.begin(115200, SERIAL_8N1, RXD2, TXD2);
          Serial1.begin(115200, SERIAL_8N1, 26, 0);
          //Serial1.begin(115200, SERIAL_8N1, 0, 26);

          This is based on the following link in which also problems with Serial are mentioned : https://community.m5stack.com/topic/1521/serial2-on-m5stickc/5

          This link appears to provide working serial to serial communication: https://gist.github.com/dj1711572002/0ad8aa8aee618e5f2b7bfa719bc2b736

          But no luck for me.
          I hope anyone got this working.
          Regards

          1 Reply Last reply Reply Quote 0
          • H
            HappyUser
            last edited by

            Well,
            Finally found it :
            This is works : Serial1.begin(115200, SERIAL_8N1, 0, 26); // SIM7080G
            and G26 connected to TX and G0 to RX.
            Now trying to get the modem responding to SIM7080G commands.

            H 1 Reply Last reply Reply Quote 0
            • ajb2k3A
              ajb2k3
              last edited by

              I’ve got one on my desk but haven’t purchased a sim for it yet

              UIFlow, so easy an adult can learn it!
              If I don't know it, be patient!
              I've ether not learned it or am too drunk to remember it!
              Author of the WIP UIFlow Handbook!
              M5Black, Go, Stick, Core2, and so much more it cant be fit in here!

              1 Reply Last reply Reply Quote 0
              • H
                HappyUser @HappyUser
                last edited by

                @happyuser
                A few tips who want to start with this module:
                1] Remove PIN code, makes life much easier
                2] Download the application notes for this module. Both the complete AT instruction set and the note on HTTP application. This document provides clear instructions how to use HTTP, GET, POST etc
                3] I experienced ERROR response on SHCONF command. Googled around, saw numerous hits. It appears that switching off and on power does the trick for me. I did not see a reset AT instruction
                4] I got it all working with these instructions :
                Serial.println("Begin..");
                //pinMode(RXD2, INPUT);
                //pinMode(TXD2, OUTPUT);
                //showLog("Reset Module...");
                //SIM7020
                //DTU.Init(&Serial1,36, 26);
                //Serial1.begin(115200, SERIAL_8N1, RXD2, TXD2);
                //Serial1.begin(115200, SERIAL_8N1, 26, 0);
                Serial1.begin(115200, SERIAL_8N1, 0, 26); // SIM7080G

                delay(300);
                //Serial1.print("ATI\r\n");
                //Serial1.println("AT+CSQ\r\n");
                //Serial1.println("AT+IPR?\r\n");
                Serial1.print("ATZ\r\n");  // Reset to default
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                Serial1.print("AT+IPR=115200\r\n");  // Reset to default
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+CCLK?\r\n");  // Reset to default
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                Serial1.print("AT+SHSSL=1,\"\"\r\n");  // Reset to default
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                
                Serial1.print("AT+CFUN=1\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+CMGF=1\r\n");  // text mode
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                

                // Om http te testen

                Serial1.print("AT+CFUN=0\r\n");  // Disable RF
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                //Serial1.print("AT+CGDCONT=1,\"IP\",\"internet\",,0,0\r\n");  // 
                Serial1.print("AT+CGDCONT=1,\"IP\",\"internet\"\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+CFUN=1\r\n");  // Enable RF
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                Serial1.print("AT+CGATT?\r\n");  // Check PS Service
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+CGNAPN\r\n");  // Query the APN service
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                Serial1.print("AT+CNCFGN=0,1,\"internet\",,0,0\r\n");  // Before activation please
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                Serial1.print("AT+CNACT=0,1\r\n");  // Activate
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                
                Serial1.print("AT+CNACT?\r\n");  // Query the APN service
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                
                Serial1.print("AT+SHCPARA\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+SHCONF=?\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+SHCONF?\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                

                // Serial1.print("AT+SHCONF="URL","https://api.thingspeak.com/update"\r\n"); // Query the APN service
                //Serial1.print("AT+SHCONF="URL","httpbin.org"\r\n"); // Query the APN service
                //Serial1.print("AT+SHCONF="URL","http://34.193.132.77"\r\n"); // Query the APN service

                //SIM7600_Error=1;
                //for (int i=0;i<10;i++)
                  // {
                      //Serial1.print("AT+SHCONF=\"URL\",\"http://www.google.com\"\r\n");  // Query the APN service
                      Serial1.print("AT+SHCONF=\"URL\",\"http://www.httpbin.org\"\r\n");  // Query the APN service
                
                      delay(10);
                      Read_Response(5000);
                      Serial.println(Receive_buffer);
                      delay(2000);
                   //   if (SIM7600_Error=0) {break;}
                  // }
                     
                
                
                Serial1.print("AT+SHCONF=\"BODYLEN\",1024\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+SHCONF=\"HEADERLEN\",350\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                
                
                Serial1.print("AT+SHCONN\r\n");  // Query the APN service
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+SHSTATE?\r\n");  // Query the APN service
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+SHCHEAD\r\n");  // Query the APN service
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                Serial1.print("AT+SHAHEAD=\"User-Agent\",\"curl/7.47.0\"\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);    
                
                Serial1.print("AT+SHAHEAD=\"Cache-control\",\"no-cache\"\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500); 
                
                Serial1.print("AT+SHAHEAD=\"Connection\",\"keep-alive\"\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500); 
                
                Serial1.print("AT+SHAHEAD=\"Accept\",\"*/*\"\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500); 
                
                
                    
                Serial1.print("AT+SHREQ=\"/get?user=jack&password=123\",1\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500); 
                
                
                Serial1.print("AT+SHREAD=0,391\r\n");  // 
                delay(10);
                Read_Response(5000);
                Serial.println(Receive_buffer);
                delay(500);
                
                1 Reply Last reply Reply Quote 1
                • H
                  HappyUser
                  last edited by

                  Okay, Had a lot of <bad language> getting sending email working.
                  Than I realized that powering the module straight from the M5StickC appeared to causes glitches. I have placed a capacitor on top of the 5Volt to the module and now I am able to send emails also. For those that are interested, here is the code (with a lot of overhead no doubt, that works for me ):
                  Serial1.begin(115200, SERIAL_8N1, 0, 26); // SIM7080G

                  delay(300);
                  //Serial1.print("ATI\r\n");
                  //Serial1.println("AT+CSQ\r\n");
                  //Serial1.println("AT+IPR?\r\n");
                  Serial1.print("ATZ\r\n");  // Reset to default
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+CREBOOT\r\n");  // Reset to default
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  

                  /*
                  Serial1.print("AT+CMEE=2\r\n"); // Verbose error printing ??
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  */

                  Serial1.print("AT+IPR=115200\r\n");  // SetTE-TAFixedLocalRate
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+CCLK?\r\n");  // Clock
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  

                  // Upload a file

                  Serial1.print("AT+CFSINIT\r\n");  // Clock
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);   
                  

                  String Command_Str;
                  Command_Str="AT+CFSWFILE=0,"0001.txt",0,";
                  Command_Str=Command_Str+FileSize;
                  Command_Str=Command_Str+",10000\r\n";
                  Serial.println(Command_Str);

                  Serial1.print(Command_Str); 
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);  
                  
                  for (int i=0;i<FileSize;i++) {Serial1.print(jpg_small[i]);}
                  
                  
                  Serial1.print("AT+CFSGFIS=0,\"0001.txt\"\r\n");  // 
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);   
                  
                  
                  Serial1.print("AT+CPIN?\r\n");  // Ccheck SIM
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);  
                  
                  Serial1.print("AT+CSQ\r\n");  // Check signal
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);  
                  
                  
                  Serial1.print("AT+CFUN=0\r\n");  // Set Phone Functionality isable RF
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  //Serial1.print("AT+CGDCONT=1,\"IP\",\"internet\",,0,0\r\n");  // 
                  Serial1.print("AT+CGDCONT=1,\"IP\",\"internet\"\r\n");  //  Define PDP Context
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+CFUN=1\r\n");  // Set Phone Functionality Enable RF
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  Serial1.print("AT+CGATT?\r\n");  // Attach or detach from GPRS service
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+CGNAPN\r\n");  // Get Network APN in CAT-M or NB-IOT Query the APN service
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  Serial1.print("AT+CNCFGN=0,1,\"internet\",,0,0\r\n");  // Before activation please
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  Serial1.print("AT+CNACT=0,1\r\n");  // APP Network Active Activate
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  
                  Serial1.print("AT+CNACT?\r\n");  // APP Network Active Activate Query the APN service
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  Serial1.print("AT+EMAILCID=0\r\n");  // Set parameters of email
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+EMAILTO=30\r\n");  // Set parameters of email time out
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  

                  /*
                  Serial1.print("AT+EMAILSSL=2,0,"email.cer","email.pem"\r\n"); // Set Encrypted mail
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  */
                  // https://randomnerdtutorials.com/esp32-send-email-smtp-server-arduino-ide/

                  Serial1.print("AT+SMTPSRV=\"smtp-mail.outlook.com\",587\r\n");  // Set SMTP server
                  delay(10);
                  Read_Response(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  

                  //SMTP Password: (you need to use a Google App Password, not your Gmail password!)
                  //https://support.google.com/accounts/answer/185833
                  // https://www.hesk.com/knowledgebase/index.php?article=72

                  Serial1.print("AT+SMTPAUTH=1,\"my.email.com\",\"myApppassword\"\r\n");  // Set username and password
                  

                  delay(10);
                  Read_Response(5000);
                  Serial.println(Receive_buffer);
                  delay(500);

                  Serial1.print("AT+SMTPCS=\"ASCII\"\r\n");  // Set Email SSL function
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  Serial1.print("AT+EMAILSSL?\r\n");  // Read Email SSL function
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+EMAILSSL=2,0,\"\",\"\"\r\n");  // Set Email SSL function
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+EMAILSSL?\r\n");  // Read Email SSL function
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  Serial1.print("AT+SMTPFROM=\"my.email@outlook.com\",\"Fakename\"\r\n");  // Set username and password
                  
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                       
                  Serial1.print("AT+SMTPRCPT=0,0,\"Sendto@mac.com\",\"john\"\r\n");  // Set recipient To:
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);
                  
                  
                  Serial1.print("AT+SMTPSUB=\"Test4\"\r\n");  // Set recipient Bcc:
                  delay(10);
                  Read_Response_OK(5000);
                  Serial.println(Receive_buffer);
                  delay(500);   
                  

                  String Email_Body="This is a new Email";
                  int Body_size;
                  Body_size=Email_Body.length();
                  Serial.print("Body size is :");
                  Serial.println(Body_size);

                  Serial1.print("AT+SMTPBODY=19\r\n");  // Set recipient Bcc:
                  delay(10);
                  Read_Response_OK(5000);
                  //Serial.println(Receive_buffer);
                  //delay(500); 
                  
                  Serial1.print(Email_Body);
                  //Serial1.print("\r\n");
                  delay(10);
                  Read_Response(5000);
                  Serial.println(Receive_buffer);
                  delay(500); 
                  

                  char ccc;
                  Serial.println("AT+SMTPSEND");
                  Serial1.print("AT+SMTPSEND\r\n"); //
                  delay(10);
                  while (Serial1.available())
                  {
                  ccc=Serial1.read();
                  Serial.print(ccc);
                  }

                  /*
                  Read_Response(5000); //Geen OK
                  Serial.println(Receive_buffer);
                  delay(500);
                  */
                  Serial.println("And we are done");
                  while (1) {delay(300);}

                  1 Reply Last reply Reply Quote 1
                  • ajb2k3A
                    ajb2k3
                    last edited by

                    Thanks for this, I haven't started on mine as still looking through IOT services

                    UIFlow, so easy an adult can learn it!
                    If I don't know it, be patient!
                    I've ether not learned it or am too drunk to remember it!
                    Author of the WIP UIFlow Handbook!
                    M5Black, Go, Stick, Core2, and so much more it cant be fit in here!

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post