Skip to content

ProMake GSM M66

Description

The ProMake GSM M66 helps to add wireless connectivity to your project using TTL UART interface. It is built with Quad Band GSM/GPRS engine that is optimized for data/SMS and is designed for low-power IoT use-cases that operate in harsh conditions. With stable performance, this small cost-effective module can realize SMS and data transmission in a pretty low power consumption

APPLICATIONS

A wide range of communication protocols and connectivity options, packed in the compact size module, driven by the simple AT command interface via the UART bus, makes this module a complete solution for a wide range of M2M applications, such as:

  • mobile Internet terminals
  • automatic meter reading (AMR)
  • remote monitoring automation and control (RMAC)
  • surveillance and security
  • road pricing
  • asset tracking
  • wireless points of service(POS)

and similar applications, which rely on a cellular network connection.

Features

  • Supportes 850/900/1800/1900MHz frequency bands
  • Power consumption as low as 1.3mA
  • Embedded internet service protocols, multiple sockets and IP addresses
  • UART interface, for connecting host MCU
  • LEDs for indicating the module operating status
  • On-board SIM Connector
  • Dedicated on-board button for PWRKEY
  • Breadboard-friendly

Important Notes

  • you need a proper GSM Antenna to start working with this module
  • Caution: Since GSM is impulse type transmitting power, and the average current is very low, but the instantaneous current can reach more than 1.5A, so the external power supply is used in the use of GSM expansion board. USB port can only provide 5V@500mA, which cannot meet output of instantaneous power supply.

Resource

Module Pinout

Software

Developement using Arduino

To set up the hardware, Insert your sim card and easily plug this module into:

  • Module3 slot of your ProMake® Arduino Nano Kit

or

  • Module2 slot of your ProMake® Arduino Uno Shield

or

  • Use your breadboard to connect the Power and UART lines.

Make sure you have provided your development kit with proper power source that can provide the module with 2A current draw it needs during TX priod.

To start coding you need to install:

  • "NeoSWSerial" (by SlashDevin)

in your Arduino® IDE.

#include <NeoSWSerial.h>

#if 1 //KIT
#define GSM_TX_PIN 4
#define GSM_RX_PIN 5
#define GSM_PWR_PIN 6
#else //SHIELD
#define GSM_TX_PIN 4
#define GSM_RX_PIN 7
#define GSM_PWR_PIN 9
#endif

//Create software serial object
NeoSWSerial serialGSM(GSM_TX_PIN,GSM_RX_PIN);

void gsm_send_serial(String command) {
  Serial.println("Send ->: " + command);
  serialGSM.println(command);
  long wtimer = millis();
  while (wtimer + 3000 > millis()) {
    while (serialGSM.available()) {
      Serial.write(serialGSM.read());
    }
  }
  Serial.println();
}

void setup() {
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  //Begin serial communication with Arduino and GSM Module
  serialGSM.begin(9600);

  Serial.println("Powering Up ...");
  pinMode(GSM_PWR_PIN,OUTPUT);
  //GSM POWER ON
  digitalWrite(GSM_PWR_PIN,LOW);
  delay(1000);
  digitalWrite(GSM_PWR_PIN,HIGH);

  Serial.println("Initializing...");
  delay(5000);

  serialGSM.println("AT"); //Once the handshake test is successful, it will back to OK
  delay(300);
  updateSerial();
  delay(1000);
  updateSerial();
  delay(1000);
  updateSerial();
  delay(1000);
  updateSerial();
  delay(1000);
  updateSerial();

  Serial.println("Sending SMS...");               //Show this message on serial monitor
  gsm_send_serial("AT+CMGF=1");                   //Set the module to SMS mode
  delay(100);

  gsm_send_serial("AT+CSMP=17,168,2,25");  //Set SMS Text Mode Parameters
  delay(100);

  gsm_send_serial("AT+CSCS=\"UCS2\""); //Select TE Character Set
  delay(100);

  serialGSM.print("AT+CMGS=\"+981234567890\"\r");  //Your phone number don't forget to include your country code, example +212123456789"
  serialGSM.print("GSM modem is working");       //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
  serialGSM.print((char)0x1A);// (required according to the datasheet)
  serialGSM.println();

  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
}

void loop() {
  // put your main code here, to run repeatedly:
  updateSerial();
}

void updateSerial()
{
  while(serialGSM.available()) 
  {
    Serial.write(serialGSM.read());//Forward what Software Serial received to Serial Port
  }
}

Developement using Raspberry