проблема с gsm shield sim900

VeD
Offline
Зарегистрирован: 21.02.2016

Нашел на сайте амперки статью про управления светодиодами с помощью смс

#include <SoftwareSerial.h>
 
SoftwareSerial gprsSerial(7, 8);
 
//для зелёного светодиода будем использовать второй цифровой вход,
//а для жёлтого - третий
int greenPin = 2;
int yellowPin = 3;
 
void setup()
{
    gprsSerial.begin(19200);
    pinMode(greenPin, OUTPUT);
    pinMode(yellowPin, OUTPUT);
 
    // Настраиваем приём сообщений с других устройств
    // Между командами даём время на их обработку
    gprsSerial.print("AT+CMGF=1\r");
    delay(300);
    gprsSerial.print("AT+IFC=1, 1\r");
    delay(300);
    gprsSerial.print("AT+CPBS=\"SM\"\r");
    delay(300);
    gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
    delay(500);
}
 
String currStr = "";
// Переменная принимает значение True, если текущая строка является сообщением
boolean isStringMessage = false;
 
void loop()
{
    if (!gprsSerial.available())
        return;
 
    char currSymb = gprsSerial.read();    
    if ('\r' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("Green on")) {
                digitalWrite(greenPin, HIGH);
            } else if (!currStr.compareTo("Green off")) {
                digitalWrite(greenPin, LOW);
            } else if (!currStr.compareTo("Yellow on")) {
                digitalWrite(yellowPin, HIGH);
            } else if (!currStr.compareTo("Yellow off")) {
                digitalWrite(yellowPin, LOW);
            }
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\n' != currSymb) {
        currStr += String(currSymb);
    }
}

 

VeD
Offline
Зарегистрирован: 21.02.2016

Так вот. Подключил я шилд к ардуино таким образом.

Rx к 7 пину на ардуино

Tx к 8 пину на ардуино

VIN к VCC5 шилда 

И GND к GNG

перемычки поставил на D8 и D 7

ЗАтем подключил диоды, один к третьему порту, в другой ко второму порту на ардуино, короткие  ножки обоих вывел на GND 

Отправляю смс, диоды не загораются. 

 

Вот ссылка на статью http://wiki.amperka.ru/%D0%B1%D0%B5%D1%81%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F-%D1%81%D0%B2%D1%8F%D0%B7%D1%8C:gprs-shield

Radjah
Offline
Зарегистрирован: 06.08.2014

А ответы шилда и проверять выполнение команд кто будет?

VeD
Offline
Зарегистрирован: 21.02.2016

Ну так монитор порта вообще ничего не выдаёт. 

Подключил по другому.

6 к 6

7 к 7

8 к 8

rx к rx

tx к tx

gnd к gnd

Затем вставил диоды на на breadbord, подсоеденил к коротким ногам резисторы на 220 кОМ, к которым воткнул 2 перемычки, одну перемычку я вывел на gnd Shield, а другую в gnd на arduino. К длинным ногам я подключил 4 перемычки, 2 вывел на 2 и 3 пин в плату ардуино и 2 вывел на 2 и 3 пин в плату Shild.

Залил скетч. Отправил смс, всё работает.

Выдернул с usb компа, воткнул в зарядное от телефона с usb портом, отправляю смс, не работает.

 

Radjah
Offline
Зарегистрирован: 06.08.2014

> Ну так монитор порта вообще ничего не выдаёт.

Логика, ау! Общение через софтварный порт идет. Как с него данные на аппаратаный попадут?

VeD
Offline
Зарегистрирован: 21.02.2016

в смысле, без компа не обойтись?

VeD
Offline
Зарегистрирован: 21.02.2016

Как попадут? По пинам 7, 8, Rx и Tx

Astor30
Offline
Зарегистрирован: 06.04.2016

У меня похожая история.

Отправка СМС работает в любом случае, а вот приём, только при подключенном USB к компьютеру.

Питание при этом и ардуины и модуля от одного независимого источника (не от USB).

VeD, вы разобрались в чём была проблема у вас?

Astor30
Offline
Зарегистрирован: 06.04.2016

Самое интересное - не важно аппаратный Serial инициализирован в скетче или нет, главное, что бы USB был подключен к компюмеру.

Как только выдёргиваешь, перестаёт реагировать на звонки и СМС. Именно, реагировать. Т.е. отваливается программный Serial, а модуль SIM800L работает.

Astor30
Offline
Зарегистрирован: 06.04.2016

Разобрался! Может это особенность пятивольтового шилда?

Если питание подаётся одновременно и на ардуино и на модуль, то AT команды настройки (в void Setap) модуль  не успевает схватить.

Обязательно перед AT командами надо поставить задержку (я поставил три секунды).

VeD
Offline
Зарегистрирован: 21.02.2016

Был 200 милиампер, поставил 400 милиампер и всё работает

VeD
Offline
Зарегистрирован: 21.02.2016

Ну всё у меня работает. Я не знаю как, но работает. Для меня важен результат, со временем может быть узнаю и процесс.