GSM модуль NEOWAY M590. Звонки и отправка SMS с помощью arduino

GSM модуль NEOWAY M590

В одном из устройств, которое должно работать автономно, появилась необходимость периодически отправлять уведомления – уровень заряда аккумулятора, а так же информацию о нескольких датчиках. Поскольку девайс будет находиться в таком месте, где нет интернета и на расстоянии в несколько десятков километров от пользователя, было решено использовать в качестве уведомлений – отправку смс. Покопавшись на сайте aliexpress, я нашел давольно много различных GSM модулей, которые способны отправлять смски. Но как и водится, выбор пал на самый дешевый — GSM модуль NEOWAY M590. У этого модуля есть много различных вариаций исполнения, но смысл работы и набор возможностей везде примерно одинаковый.

Описание GSM модуля NEOWAY M590

В первую очередь, с чем я стал разбираться – это отправка смс-сообщений, но параллельно получилось совершать и звонки с помощью модуля NEOWAY M590. Провозиться пришлось довольно приличное время, чтобы вообще хоть как-то запустить модуль. Основная сложность заключается в том, что для стабильной работы M590, требуется отдельный от arduino источник питания. Оказывается gsm модуль очень «прожорливый» и если верить даташиту, способен потреблять до 2х ампер тока при пиковых нагрузках – при подключении к сети и в момент отправки смс или звонке. Обычный блок питания от мобильной зарядки на 5в подключать напрямую нельзя, это может спалить модуль, он питается от напряжения в диапазоне от 3.7 до 4.2 вольт. Чтобы победить проблему с питанием можно использовать блок питания на 1-1,5 ампера и 5в, только подключать не напрямую, а через выпрямительный диод, который понизит напряжение. Так же не будет лишним впаять конденсатор, чтобы побороть пиковые скачки нагрузки модуля. Я использовал блок питания на 1А и конденсатор 680мфд, после этого M590 стал работать стабильно.
Так же для стабильной работы, при подключении NEOWAY M590 к arduino нужно не забыть соединить минусы блока питания и ардуино.
И еще один момент, который стоит отметить: практически в каждом модуле M590 имеется пин, который необходимо замыкать на землю для старта самого модуля. Даже если светодиод на плате моргает, это не всегда сигнализирует об успешном запуске. На плате, которую я использовал такой пин называется BOOT. В других вариантах исполнения он может быть подписан буквой K.
Ниже на картинке нарисована распиновка модуля.

Распиновка GSM модуля NEOWAY M590

Подключение GSM модуля NEOWAY M590 к arduino

Схема подключения очень простая. Хоть на модуле и находится 14 пинов, потребуется всего несколько: питание, boot, rxd и txd. Обмен данными с ардуино осуществляется через пины rx и tx – UART.

Схема подключения GSM модуля NEOWAY M590 к ардуино

Модуль запитан и подключен, остается только написать несколько строк код. Скетч получается простым, поскольку общение с модулем происходит через serial port. Нужно только в даташите на модуль, найти на какой скорости происходит обмен данными. В моем модуле по умолчанию скорость 115200.
Для управления модулем, все что нужно, это отправка AT команд, их можно легко найти в сети. В коде будет использоваться всего несколько, которые мне были нужны.

Скетч arduino для отправки sms

Ниже приведен код с подробными комментариями:

#include <SoftwareSerial.h> // библиотека, для работы с Serial

SoftwareSerial gsm_module(8, 7); // RX, TX

// функция для отправки смс
void sms_send(String text, String phone){
	// отправляем команду о начале отправки смс
	gsm_module.println("AT+CMGS=\"" + phone + "\"");
	delay(500);
	// указываем, какой текст отправить
	gsm_module.print(text);
	delay(500);
	// отправляем символ конца сообщения
	gsm_module.print((char)26);
	delay(500);
}

void setup() {
	// указываем, на какой скоросте будет происходить 
	// обмен данными с модулем
	gsm_module.begin(115200);

	//включаем АОН
	gsm_module.println("AT+CLIP=1");  
	delay(500);
	//режим кодировки СМС - обычный. Для английских символов
	gsm_module.println("AT+CMGF=1");  
	delay(500);
	//режим кодировки текста
	gsm_module .println("AT+CSCS=\"GSM\"");  
	delay(500);


	// ждем, пока модуль будет готов к работе
	while(1){ 
	  gsm_module.println("AT+CPAS");
	  if (gsm_module.find("0")) break;
	  delay(100);  
	}

	// отправляем смс на номер +71234567890 с текстом "test sms"
	sms_send(String("test sms"), String("+71234567890"));  
}

void loop() {
	//
}
 

Скетч arduino для звонка

Ниже приведен код с подробными комментариями:

#include <SoftwareSerial.h> // библиотека, для работы с Serial

SoftwareSerial gsm_module(8, 7); // RX, TX

void setup() {
	// монитор порта
	Serial.begin(115200);
	// указываем, на какой скоросте будет происходить 
	// обмен данными с модулем
	gsm_module.begin(115200);

	//включаем АОН
	gsm_module.println("AT+CLIP=1");  
	delay(500);
	//режим кодировки СМС - обычный. Для английских символов
	gsm_module.println("AT+CMGF=1");  
	delay(500);
	//режим кодировки текста
	gsm_module .println("AT+CSCS=\"GSM\"");  
	delay(500);


	// ждем, пока модуль будет готов к работе
	while(1){ 
		gsm_module.println("AT+CPAS");
		if (gsm_module.find("0")) break;
		delay(100);  
	}

	// отправляем команду для звонка на номер +71234567890
	gsm_module.println("ATD+71234567890;");
	delay(500);
	// проверяем результат
	if (gsm_module.find("OK")) {		
		Serial.println("ok");
	}else {
		Serial.println("error");
	}
}

void loop() {
	//
}
 

Послесловие

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


Рассказать друзьям:


Оценить:
(3 оценок, среднее: 5,00 из 5)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code