GSM-GPRS shield Tinysine SIM900

Описание

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

  • SMS
  • голосовые вызовы
  • передача данных по GPRS. 3G, а тем более 4G на этом шилде недоступен. А оно нам надо? GPRS на данный момент есть почти везде, а вот покрытие сетями 3G оставляет желать лучшего. Тем более пропкскной способности GPRS хватает для удаленного управления arduino-проектами, передачи фото с камер и т.д.

Плата выполнена в форм-факторе, позволяющем использовать ее почти со всеми известными платами arduino. Более того, если вы физически не можете подключить данную плату к arduino, как например к arduino nano, всегда остается возможность использовать подключение платы отдельными проводами.

Плата разработана на основе GSM/GPRS чипаSIMCOM SIM900 и определяется в GSM-сети как мобильный телефон.

Характеритики и спецификации

  • Поддерживает работу в диапазонах 850/900/1800/1900 MHz;
  • Управление AT-командами. Стандарт: GSM 07.07 & 07.05. Поддерживает расширенные AT-команды от SIMCOM;
  • Поддержка SMS в ASCII и HEX форматах;
  • Встроеная реализация стека TCP/UDP;
  • Разъемы для подключения динамика и микрофона 3.5мм;
  • Возможность посылать и принимать DTMF-сигналы;
  • SIM-карта стандартного формата;
  • Разъем для подключения внешней антенны;
  • Транслирует с Arduino 12 GPIO, 2 PWM и ADC пина;
  • Низкое энергопотребление потребление в режиме ожидание - 1.5 мАч;
  • Диапазон рабочих температур: от -40°C до +85 °C.

Подключение к Arduino

Устанавливаем SIM-карту в слот, подключаем плату к Arduino и подаем питание. В источниках в интернете неоднократно сказано, что для работы необходимо внешнее питание 9V 2A. Но у меня зарабтало без этого, с питанием от USB.

После запуска на GSM плате будут гореть один или несколько светодиодов.

LEDсостояниеОписание
Красный(P)горитПитание подается на GSM-модуль
Красный(P)погашенОтсутствует питание
Зеленый(S)горитПитание подается на SIM900
Зеленый(S)погашенОтсутствует питание SIM900
Синий(N)погашенSIM900 не запущен
Синий(N)64ms On/800ms OffSIM900 не зарегистрировался в сети
Синий(N)64ms On/3000ms OffSIM900 зарегистрировался в сети
Синий(N)64ms On/300ms OffИдет передача GPRS

Arduino Uno

Самый простой вариант. Достаточно просто установить шилд на Arduino Uno.

Arduino Leonardo

Arduino Mega 2560

В процессе поиска библиотеки в сети и перебрав их около 10 различных версий столкнулся с проблемой - практически ни одна не хочет работать с Arduino Mega 2560 REV3 - в процессе компиляции появлялись различные ошибки. В конце концов на гитхабе была найдена библиотека, хорошо работающая с данной связкой. Библиотеку можно взять на github.ru или смоего сайта.

  1. Соединяем средние пины (RX/TX) на GSM-плате с пинами TX1(18) и RX1(19) на Arduino Mega.
  2. Файл GSM.h. Находим 4 и 5 строки
    #define UNO
    //#define MEGA
    

    и меняем на

    //#define UNO
    #define MEGA
    
  3. Необязательно. Файл GSM.h. Крайне рекомендую закоментировать строчку #define DEBUG_ON во избежание получения на экран огромного количества мусора.
  4. Файл HWSerial.h. Находим 1 строку
    //#define MEGA
    

    и раскомментируем ее

    #define MEGA
    

Подключение по проводам

При внешнем подключении, например к Arduino Nano, можно можно использовать всего 5 проводов:

  • D0, D1 - Используется только при HW положении джамперов для Serial-подключения;
  • D7, D8 - Используется только при SW положении джамперов для Serial-подключения;
  • D9 - Используется для программного управления питанием;
  • 5V, GND - Используется для подачи питания на шилд.

Код

Обращу внимание, что примеры в указаной выше библиотеке не всегда на 100% рабочие. Описание функций и примеры их работы можно увидеть в файле README, поставляемом с библиотекой.

В примере ниже мы получаем SMS и отправляем его обратно на тот же номер.

SMS_TEST.ino
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
 
SMSGSM sms;
 
char position;
char phone_num[20];    //Строка с номером телефона
char sms_text[100];    //Текст сообщения
 
int numdata;
 
boolean started=false;
char n[20];
 
void setup()
{
     // Инициалируем консоль
     Serial.begin(9600);
     Serial.println("GSM Shield testing.");
     //Инициализируем GSM-модуль на 2400bps
     if (gsm.begin(2400)) 
	 {
	 	 Serial.println("\nstatus=READY");
		 started=true;
     } 
	 else
	 {
	  	 Serial.println("\nstatus=IDLE");
	 }
};
 
void loop()
{
	//Получаем количество SMS в очереди
	position = sms.IsSMSPresent(SMS_UNREAD);
	if (position) 	// Если очередь не пустая
	{
		// читаем SMS
		sms.GetSMS(position, phone_num, sms_text, 100);
		//и выводим его в консоль
		Serial.println("DEBUG SMS phone number: ");
		Serial.println(phone_num);
		Serial.println("\r\nSMS text: ");
		Serial.println(sms_text);
    	//И отправляем сообщение обратно.
		if (sms.SendSMS(phone_num, sms_text)) Serial.println("\nSMS sent OK");
	}
};

Ссылки

gsm-gprs_shield_tinysine_sim900.txt · Последние изменения: 2015/07/30 17:40 — ansealk
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика