проблема с gsm shield sim900
- Войдите на сайт для отправки комментариев
Втр, 01/03/2016 - 15:58
Нашел на сайте амперки статью про управления светодиодами с помощью смс
#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);
}
}
Так вот. Подключил я шилд к ардуино таким образом.
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
А ответы шилда и проверять выполнение команд кто будет?
Ну так монитор порта вообще ничего не выдаёт.
Подключил по другому.
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 портом, отправляю смс, не работает.
> Ну так монитор порта вообще ничего не выдаёт.
Логика, ау! Общение через софтварный порт идет. Как с него данные на аппаратаный попадут?
в смысле, без компа не обойтись?
Как попадут? По пинам 7, 8, Rx и Tx
У меня похожая история.
Отправка СМС работает в любом случае, а вот приём, только при подключенном USB к компьютеру.
Питание при этом и ардуины и модуля от одного независимого источника (не от USB).
VeD, вы разобрались в чём была проблема у вас?
Самое интересное - не важно аппаратный Serial инициализирован в скетче или нет, главное, что бы USB был подключен к компюмеру.
Как только выдёргиваешь, перестаёт реагировать на звонки и СМС. Именно, реагировать. Т.е. отваливается программный Serial, а модуль SIM800L работает.
Разобрался! Может это особенность пятивольтового шилда?
Если питание подаётся одновременно и на ардуино и на модуль, то AT команды настройки (в void Setap) модуль не успевает схватить.
Обязательно перед AT командами надо поставить задержку (я поставил три секунды).
Был 200 милиампер, поставил 400 милиампер и всё работает
Ну всё у меня работает. Я не знаю как, но работает. Для меня важен результат, со временем может быть узнаю и процесс.