Как отправлять и получать SMS с помощью GSM-модема

Попробуйте наш инструмент устранения неполадок





В этой статье мы узнаем, как отправлять и получать SMS с помощью GSM-модема, который управляется Arduino. Давайте посмотрим, что такое GSM-модем, как его связать с Arduino, как отправить SMS с настройкой.

Мы также собираемся изучить, каких приложений можно достичь с помощью GSM-модема, кроме отправки текстового сообщения человеком.



Что такое GSM-модем?

GSM - это глобальная система мобильной связи. Это стандарт, разработанный ETSI (Европейский институт стандартов электросвязи), который описал протоколы для связи 2G.

Это первый цифровой протокол мобильной связи, оптимизированный для полнодуплексной голосовой связи. В двух словах, полнодуплексная связь означает, что обе стороны могут отправлять / получать данные (или голос) одновременно.



Протокол GSM также позволяет передавать пакетные данные, такие как GPRS и EDGE.

GSM-модем SIM800:

GSM-модем - это оборудование, которое принимает действующую SIM-карту (модуль идентификации абонента), в основном подойдет любая SIM-карта, которая поддерживает протокол GSM и с сетевой подпиской.

Это как мобильный телефон без экрана и клавиатуры. Он имеет четыре контакта ввода / вывода в зависимости от выбранной вами модели.

Два для TX и RX (передача и прием), еще два контакта для VCC и GND, которые у всех общие.

Он также состоит из порта RS232 для последовательной связи между модемом и компьютером, однако мы не собираемся использовать его в этом проекте.

Он имеет стандартный разъем питания постоянного тока, который может питаться от внешних источников питания, таких как адаптеры напряжения.

Он имеет рабочее напряжение от 5 до 12 В на разъеме постоянного тока, в зависимости от модели. Он имеет 3 светодиодных индикатора: питание, состояние и сеть.

Светодиодный индикатор питания указывает на наличие питания, светодиодный индикатор состояния показывает, работает ли GSM-модем, светодиодный индикатор сети указывает на установление мобильной сети.

Первоначально светодиод сети мигает каждую секунду при поиске сети, после установления мобильной сети он мигает каждые 3 секунды.

Вам нужно нажать кнопку питания в течение 2-3 секунд, чтобы активировать модем GSM, как только вы это сделаете, он подключится к мобильной сети.

Чтобы убедиться, что ваш GSM-модем работает, просто позвоните по номеру, по которому вы вставили SIM-карту. Вы должны получить гудок обратного вызова. Если это так, значит, ваш модуль работает нормально.

Мы собираемся использовать GSM-модем SIM800, который поддерживает четыре диапазона частот 850/900/1800/1900 МГц. Если у вас есть модем SIM900, не беспокойтесь, программа и схема совместимы в этом проекте.

Теперь вы получили некоторое представление о модеме GSM, а теперь давайте узнаем, как подключить его к Arduino.

Принципиальная электрическая схема:

Как вы можете заключить из схемы, подключение схемы очень простое. Вам просто нужно 3 штыря штекера на гнездо. Кабель USB является обязательным в этом проекте, так как мы собираемся общаться через последовательный монитор.

Всегда подключайте GSM-модем к внешнему адаптеру. Мощность от Arduino недостаточна для GSM-модема, это может даже привести к перегрузке регулятора напряжения Arduino.

Это все про аппаратную часть. Теперь перейдем к кодированию.

Программа:

//-------------Program developed by R.Girish---------------//
#include
#define rxPin 9 // gsm TX------> arduino 9
#define txPin 8 //gsm RX--------> arduino 8
SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin)
char text[150]
String message=''
int x
void setup()
{
Serial.begin(9600)
while (!Serial){}
mySerial.begin(9600)
delay(1000)
Serial.println('Write your message (with dot at end):')
}
void loop()
{
x=0
while( Serial.available()>0 )
{
text[x] = Serial.read()
message += text[x]
x++
if (text[x-1]==46)
{
Serial.println('Your message is sending......')
SendTextMessage()
ShowSerialData()
delay(1000)
Serial.println('r')
Serial.println('Success')
message=''
x=0
}}}
void SendTextMessage()
{
mySerial.print('AT+CMGF=1r')
delay(1000)
mySerial.print('AT+CMGS='+91xxxxxxxxxx'r') // Replace x with your 10 digit phone number
delay(1000)
mySerial.println(message)
mySerial.print('r')
delay(1000)
mySerial.println((char)26)
mySerial.println()
}
void ShowSerialData()
{
while(mySerial.available()!=0)
Serial.write(mySerial.read())
}
//-------------Program developed by R.Girish---------------//

Не забывайте точки (.) В каждом конце сообщения. , иначе он не отправит сообщение на указанный в программе номер. Замените x своим 10 цифровым номером телефона в программе. Убедитесь, что на вашей SIM-карте есть действующий тарифный план SMS.

Если вы не из Индии, измените код страны в программе.

Например:

Для Великобритании: +44
Для США: +1
Для Канады: +1
Для России: +7

Вы также можете автоматизировать сообщение, отправляемое GSM-модемом, путем соответствующего кодирования Arduino. Вы можете получать автоматические сообщения на свой телефон, такие как: предупреждение о краже, предупреждение о пожаре, предупреждение о погоде в вашем районе и т. Д.

Вы даже можете подключиться к Интернету с помощью GPRS в GSM-модеме, но это тема другой статьи.

В одной из следующих статей мы узнаем Как получать SMS с помощью GSM-модема и Arduino

Если у вас есть дополнительные вопросы о том, как отправлять SMS с помощью GSM-модема, не стесняйтесь спрашивать в разделе комментариев.

Как получать SMS с помощью GSM-модема

В приведенном выше обсуждении мы узнали, как отправить текстовое сообщение с помощью GSM-модема, а также обсудили основы работы с GSM-модемом.

В этом разделе мы обсудим, как получать SMS через последовательный монитор Arduino IDE. Мы собираемся не только получать SMS, но и отправлять текстовые сообщения, нажимая разные клавиши. На мгновение нажатие «s» отправит предварительное текстовое сообщение, нажатие «r» - получение SMS в реальном времени.

Вот авторский прототип:

Как это устроено

Схема для приема SMS с использованием режима GSM очень проста, вам просто нужно 3 контакта штекера к гнезду заголовка. TX модема GSM подключается к контакту № 9 Arduino, а RX модема GSM подключается к контакту № 8 Arduino, а также между GSM и Arduino имеется соединение «земля-земля».

Всегда используйте внешний источник питания для GSM-модема, не подключайте 5 В постоянного тока от Arduino к GSM-модему, так как существует большая вероятность перегрузки регулятора напряжения Arduino.

Не забудьте внедрить в свою подписку на SMS средство для снижения скорости SMS или что-то подобное, чтобы сократить расходы на SMS.

В противном случае после отправки нескольких SMS-сообщений баланс вашего счета останется пустым, поскольку после каждого отправленного SMS-сообщения ваш оператор сотовой связи не будет получать подтверждения, так как SIM-карта находится в модеме GSM.

Единственное подтверждение, которое вы получаете, - это предупреждающее SMS о вашей пустой учетной записи, поэтому будьте осторожны с вашими расходами. Теперь перейдем к кодированию этого проекта.

Программа:

//-----------------Program developed by R.Girish-------------//
#include
SoftwareSerial gsm(9,8)
void setup()
{
gsm.begin(9600) // Setting the baud rate of GSM Module
Serial.begin(9600) // Setting the baud rate of Serial Monitor (Arduino)
delay(100)
}
void loop()
{
if (Serial.available()>0)
switch(Serial.read())
{
case 's':
Send()
break
case 'r':
Recieve()
break
case 'S':
Send()
break
case 'R':
Recieve()
break
}
if (gsm.available()>0)
Serial.write(gsm.read())
}
void Send()
{
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx'r') // Replace x with mobile number
delay(1000)
gsm.println('Hello I am GSM modem!!!')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void Recieve()
{
gsm.println('AT+CNMI=2,2,0,0,0') // AT Command to receive a live SMS
delay(1000)
}
//-----------------Program developed by R.Girish-------------//

Ввод телефонных номеров

Введите телефонный номер получателя «xxxxxxxxxxx» в программе с кодом вашей страны в начале.

Введите текст, который вы хотите отправить в программе, в кавычках: gsm.println ('Hello I am GSM modem !!!') // Текст SMS, который вы хотите отправить

Скомпилируйте программу и загрузите в Arduino.

Вставьте SIM-карту и подключите GSM-модем к внешнему источнику питания и нажмите кнопку питания в течение 3 секунд (в зависимости от модели), подождите от 10 до 20 секунд, чтобы установить мобильную сеть, светодиодный индикатор сети должен мигать каждые 3 секунды. Если все изложенное выше выполнено, мы готовы перейти к следующему шагу.

Теперь откройте монитор последовательного порта и нажмите «r», модем GSM готов к приему SMS. Теперь отправьте текстовое сообщение с любого мобильного телефона на номер SIM-карты, которая вставлена ​​в GSM-модем.
Текстовое сообщение должно появиться на мониторе последовательного порта, как показано ниже:

«Hello world» - это сообщение, отправляемое на GSM-модем, и также отображается номер, с которого отправлено текстовое сообщение.

Теперь позвольте отправить SMS на заранее введенный номер в программе с заранее введенным сообщением. Нажмите «s», и вы увидите что-то подобное, изображенное ниже: Отправленное SMS-сообщение: «Здравствуйте, я GSM-модем».

Теперь вы знаете, как отправлять и получать SMS с помощью GSM-модема.




Предыдущая статья: Схема контроллера двигателя Bluetooth Далее: Как разработать схему индукционного нагревателя