Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Hardware
  3. Arduino 32u4 (MEGA) with built in GSM for $18

Arduino 32u4 (MEGA) with built in GSM for $18

Scheduled Pinned Locked Moved Hardware
6 Posts 2 Posters 2.6k Views 1 Watching
  • 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.
  • alowhumA Offline
    alowhumA Offline
    alowhum
    Plugin Developer
    wrote on last edited by alowhum
    #1

    Another very nice llittle board by Elecrow:

    https://www.aliexpress.com/item/Elecrow-ATMEGA-32u4-A9G-GPRS-GSM-GPS-Board-Quad-band-3-Interfaces-GPRS-Class-10-DIY/32852490453.html

    And here is a version with 4 built in relays:
    http://www.aliexpress.com/item/Elecrow-Leonardo-GPRS-GSM-IOT-Board-with-SIM800C-Relay-Switches-Wireless-Projects-DIY-Kit-Integrated-Board/32829726566.html

    Would it be possible to connect an NRF24 to the left-over pins I wonder.

    Here's the wiki page for the board with relays:
    https://www.elecrow.com/wiki/index.php?title=Leonardo_GPRS/GSM_IOT_Board_v1.0

    1 Reply Last reply
    0
    • alowhumA Offline
      alowhumA Offline
      alowhum
      Plugin Developer
      wrote on last edited by alowhum
      #2

      I bought the board with the relays as a basis for a smart lock.

      I can't get it to work though, as I'm getting a TSP:FAIL, so a transport fail error.

      First I connected directly to the 3.3v output of the board. No dice.

      Now I'm using a 3.3v regulator board (powerled is on) and an eByte red NRF24L01 module, which are great. But still the same error.

      That leaves a problem with the data connection.

      • Pins 13 through 10 are available normally.
      • I had to route the CE pin to pin 7
      • I have not connected the IRQ pin.

      I thought I'd check:

      • Should I connect the IRQ pin to something? I don't think I have a real IRQ pin on the board available.
      • Is there something about Arduino Leonardo that is different?

      Ah, as far as I can tell the Leonardo is.. different.

      I can try and connect via the ICS pins? Unfortunately they are of a smaller size on this board.

      And I may need to use an extra RF24 library?

      1 Reply Last reply
      0
      • alowhumA Offline
        alowhumA Offline
        alowhum
        Plugin Developer
        wrote on last edited by
        #3

        By connecting the ICSP pins following this reference I got further!

        2010 !TSM:FPAR:NO REPLY
        2010 TSM:FPAR
        2011 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
        4013 !TSM:FPAR:NO REPLY
        4013 TSM:FPAR
        4014 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
        6016 !TSM:FPAR:NO REPLY
        6016 TSM:FPAR
        6017 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
        8019 !TSM:FPAR:FAIL
        8019 TSM:FAIL:CNT=1
        8019 TSM:FAIL:DIS
        8019 TSF:TDI:TSL
        10001 MCO:BGN:STP

        I now have this in my code:

        #define MY_RF24_CE_PIN 7
        #define MY_RF24_CS_PIN 6
        

        And connected the MOSI, MISO and SCK pins of the NRF24 module to the MOSI, MISO and SCK pins of the ICSP header.

        1 Reply Last reply
        0
        • alowhumA Offline
          alowhumA Offline
          alowhum
          Plugin Developer
          wrote on last edited by alowhum
          #4

          It seems to connect!

          Here's some quick test code. It doesn't toggle the switches yet, it's just a connection test.

          This is how I've connected the pins:

          NRF24 adapter board -> Electrow GSM relay board
          ---------- -> --------
          5V -> 5V
          GND -> GND
          CE -> Pin 7
          CSN -> Pin 6
          SCK -> middle pin on the inside of the board
          MO -> Middle pin on the outside of the board (right behind the RST button)
          MI -> On the corner pin closest to the middle of the board.
          IRQ-> Not connected

          /*
           * Author: Elecrow Keen
           * Date:6/30/2017
           * IDE V1.8.2 
           * Email:keen@elecrow.com    
           * Function: SMS control relay
           * Please note:
              When the the board receive "R1O" by SMS, the relay 1 will be open and the "R1C" that it will be close. 
              
              "R1O"/""R1C" means:
                R ->  Relay
                1 ->  Relay 1 
                O ->  Open
                C ->  Close
                
              It also used Relay2,Relay3 and Relay4.
           */
          
          #define DEBUG true    //Open the debug information 
          
          // Define Node ID
          #define MY_NODE_ID 15
          #define MY_PARENT_NODE_ID 0
          #define MY_PARENT_NODE_IS_STATIC
          
          //
          // SETTINGS
          //
          
          // Enable and select the attached radio type
          #define MY_RADIO_RF24                               // This is a common and simple radio used with MySensors. Downside is that it uses the same frequency space as WiFi.
          //#define MY_RADIO_NRF5_ESB                         // This is a new type of device that is arduino and radio all in one. Currently not suitable for beginners yet.
          //#define MY_RADIO_RFM69                            // This is an open source radio on the 433mhz frequency. Great range and built-in encryption, but more expensive and little more difficult to connect.
          //#define MY_RADIO_RFM95                            // This is a LoRaWan radio, which can have a range of 10km.
          
          // MySensors: Choose your desired radio power level. High power can cause issues on cheap Chinese NRF24 radio's.
          //#define MY_RF24_PA_LEVEL RF24_PA_MIN
          //#define MY_RF24_PA_LEVEL RF24_PA_LOW
          #define MY_RF24_PA_LEVEL RF24_PA_HIGH
          //#define MY_RF24_PA_LEVEL RF24_PA_MAX
          
          // Mysensors security
          //#define MY_ENCRYPTION_SIMPLE_PASSWD "changeme"    // Be aware, the length of the password has an effect on memory use.
          //#define MY_SIGNING_SOFT_RANDOMSEED_PIN A7         // Setting a pin to pickup random electromagnetic noise helps make encryption more secure.
          
          // Mysensors advanced settings
          #define MY_TRANSPORT_WAIT_READY_MS 10000            // Try connecting for 10 seconds. Otherwise just continue.
          //#define MY_RF24_CHANNEL 100                       // In EU the default channel 76 overlaps with wifi, so you could try using channel 100. But you will have to set this up on every device, and also on the controller.
          //#define MY_RF24_DATARATE RF24_1MBPS               // Slower datarate makes the network more stable?
          //#define MY_NODE_ID 10                             // Giving a node a manual ID can in rare cases fix connection issues.
          //#define MY_PARENT_NODE_ID 0                       // Fixating the ID of the gatewaynode can in rare cases fix connection issues.
          //#define MY_PARENT_NODE_IS_STATIC                  // Used together with setting the parent node ID. Daking the controller ID static can in rare cases fix connection issues.
          #define MY_SPLASH_SCREEN_DISABLED                   // Saves a little memory.
          //#define MY_DISABLE_RAM_ROUTING_TABLE_FEATURE      // Saves a little memory.
          
          // Enable MySensors debug output to the serial monitor, so you can check if the radio is working ok.
          #define MY_DEBUG 
          
          // MySensors devices form a mesh network by passing along messages for each other. Do you want this node to also be a repeater?
          //#define MY_REPEATER_FEATURE                         // Add or remove the two slashes at the beginning of this line to select if you want this sensor to act as a repeater for other sensors. If this node is on battery power, you probably shouldn't enable this.
          //#define MY_RX_MESSAGE_BUFFER_FEATURE
          
          #define MY_RF24_CE_PIN 7
          #define MY_RF24_CS_PIN 6
          
          
          // LIBRARIES (in the Arduino IDE go to Sketch -> Include Library -> Manage Libraries to add these if you don't have them installed yet.)
          #include <MySensors.h>                              // MySensors library                  
          
          
          
           // the number of the Relay pin
          const int Relay1 = 2;
          const int Relay2 = 3;
          const int Relay3 = 4;
          const int Relay4 = 5;
          /*
          R1O means open  relay 1
          R1C means close relay 1
          The same as others 
          */
          String R1O = "R1O";
          String R1C = "R1C";
          String R2O = "R2O";
          String R2C = "R2C";
          String R3O = "R3O";
          String R3C = "R3C";
          String R4O = "R4O";
          String R4C = "R4C";
          
          char target[] ="CMTI";  
          int sms_no;
          String get_message = "";   
          
          void presentation()
          {
            // Send the sketch version information to the gateway and Controller
            sendSketchInfo(F("Elecrow SMS"), F("0.2"));
            
            // Register all sensors to gateway (they will be created as child devices): 
            present(1, S_BINARY);
          }
          
          
          
          void setup() {
          
                delay (2000);
                Serial.begin(19200); 
                Serial1.begin(19200);
                for(int i=2;i<6;i++){ // initialize the Relay pins status:
                  pinMode(i,OUTPUT);
                  digitalWrite(i,LOW);
                }
                //Power on the SIM800C
                
                pinMode(9,OUTPUT);
                digitalWrite(9,HIGH);
                delay(3000);
                digitalWrite(9,LOW);
                delay(1000);
                
                sendData("AT",2000,DEBUG);
                sendData("AT+CMGF=1",1000,DEBUG);        //Set the SMS in text mode
          } 
          
          void loop() { 
                 if(Serial1.available()>0){
                  Serial.write(Serial1.read());
                      
                    if(Serial1.find(target)){                  //If receive a new SMS
                       sms_no = Serial1.parseInt();            //Get the SMS ID        
                       get_message = "AT+CMGR="+(String)sms_no; //The command of the content of the SMS
                       Serial.println("******************** Print the relay status *********************" );
                       Data_handling(get_message,500,DEBUG);    //Get the content of the SMS 
                       Serial.println("*****************************END*********************************" );
                   } 
                   
               }
               while(Serial1.read() >= 0){}                     // Clear serial buffer   
          }
          
          void Data_handling(String command, const int timeout, boolean debug)  //data handling function
          {
              String response = "";    
              Serial1.println(command); 
              long int time = millis();
              while( (time+timeout) > millis()){
                while(Serial1.available()){       
                  response += (char)Serial1.read(); 
                }  
              }    
             if (response.indexOf(R1O)>=0) {
              digitalWrite(Relay1,HIGH);
              if(debug){
              Serial.println("Open Relay 1");
              }
              }
             else if (response.indexOf(R1C)>=0) {
              digitalWrite(Relay1,LOW);
              if(debug){
              Serial.println("Close Relay 1");
              }
             }
             else if(response.indexOf(R2O)>=0) {
              digitalWrite(Relay2,HIGH);
              if(debug){
              Serial.println("Open Relay 2");
              }
             }
             else if(response.indexOf(R2C)>=0) {
              digitalWrite(Relay2,LOW);
              if(debug){
              Serial.println("Close Relay 2");
              }
             }
             else if (response.indexOf(R3O)>=0) {
              digitalWrite(Relay3,HIGH);
              if(debug){
              Serial.println("Open Relay 3");
              }
             }
             else if(response.indexOf(R3C)>=0) {
              digitalWrite(Relay3,LOW);
              if(debug){
              Serial.println("Close Relay 3");
              }
             }
             else if(response.indexOf(R4O)>=0) {
              digitalWrite(Relay4,HIGH);
              if(debug){
              Serial.println("Open Relay 4");
              }
             }
             else if(response.indexOf(R4C)>=0) {
              digitalWrite(Relay4,LOW);
              if(debug){
              Serial.println("Close Relay 4");
              }
             }else
             Serial.println("....Error message....");
          }
          
          void sendData(String command, const int timeout, boolean debug)  //Send command function
          {
              String response = "";    
              Serial1.println(command); 
              long int time = millis();
              while( (time+timeout) > millis()){
                while(Serial1.available()){       
                  response += (char)Serial1.read(); 
                }  
              }    
              if(debug){
                Serial.print(response);
              }    
          }
          
          1 Reply Last reply
          0
          • S Offline
            S Offline
            shabba
            wrote on last edited by
            #5

            How are you getting on with it? What spare pins are you using etc?
            Have one sitting on my desk making me feel guilty for not hooking it up!

            1 Reply Last reply
            0
            • alowhumA Offline
              alowhumA Offline
              alowhum
              Plugin Developer
              wrote on last edited by
              #6

              All that is mentioned in my posts above?

              1 Reply Last reply
              0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              14

              Online

              12.0k

              Users

              11.2k

              Topics

              113.4k

              Posts


              Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • MySensors
              • OpenHardware.io
              • Categories
              • Recent
              • Tags
              • Popular