Не включается шилд SIM900
- 1
- 2
- 3
- 4
- 5
- следующая ›
- последняя »
- Войдите на сайт для отправки комментариев
Вс, 13/12/2015 - 14:59
Добрый день!
Приобрёл тут недавно шилд SIM900.
Напаял контакты.
Всталяю шилд в ардуино (загорается PWR) и пытаюсь выполнить пример - просто включть (подаю на 3 сек на 9-й пин единицу).
Шилд вообще не реагирует.
При попытке нажать на кнопку на шилде - загорается "NetLight" и моргает "Status". Но 1-2 секунды. Потом они гаснут.
Подскажите где почитать? По поиску ("sim900 не включается") нахожу лишь ваш сайт. Но там шилд другой немного. Или я совсем не то делаю?
припаять отсутствующий резистор R13 - 4.7 К
а кнопку надо удерживать 2 -3 сек
Спасибо за совет. Попробую.
А это косяк китайцев на фабрике (конкретная партия такая) или его все паяют?
без понятия, этот резистор нужен для включения с ардуино
http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0
Ещё раз спасибо за ответ.
Но подскажите, где в http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0 вы нашли упоминание о резисторе r13?
сам вычислил по схеме, приложенной там ниже, просто у меня такой же, и с такой пробюлемой был, млжно и перемычку поставить, так как на плате уже есть резистор в 4.7 К, а по схеме 10К
Я вот такой кусочек нашёл.
Но, как я понимаю, без этого резистора netlight вообще бы не загорался.
Или я не верно читаю?
там не один кусочек, и с этой схемой не совпадает полностью, так как это китайский полуклон
Питание модуля какое? при включении он много потребляет, если маленький ток ИП, то он и будет выключаться.
Я лошара.
Я попытался от ардуинки запитать...
А его отдельно от 5 другого блока питания можно питать? Или нужна общая земля?
можно в разъем питания подавать 12в переключив черный переключатель , но земля между ардуино и модулем должна быть обязательно, модуль от 5в потребляет около 2А
То есть взять отдельный БП не выйдет. Верно?
А если запитать от БП ПК?
спокойно можно питать от отдельного БП, только при подключении модуля все равно земля нужна вместе с TX и RX
Вообщето кнопка включения замыкается на землю...у меня так
Да, получилось!
Закоротил R13.
Новая проблема - шилд в сети (есть гудок).
А вот как с ним общаться - без понятия.
Пробовал такой скетч:
01
#include <SoftwareSerial.h>
02
03
//заводим Serial-соединение с GPRS-Shield на 7 и 8 цифровых входах
04
SoftwareSerial gprsSerial(7, 8);
05
06
void
setup
()
07
{
08
// GPRS Shield общается по умолчанию на скорости 19200 бод
09
gprsSerial.begin(19200);
10
}
11
12
//в строке curStr будем хранить текущую строку, которую передает нам плата
13
String currStr =
""
;
14
int
updateTime = 0;
15
16
void
loop
()
17
{
18
touch();
19
20
if
(!gprsSerial.available())
21
return
;
22
23
// Считываем очередной символ с платы
24
char
currSymb = gprsSerial.read();
25
26
if
(
'\r'
== currSymb) {
27
// Получен символ перевода строки, это значит, что текущее
28
// сообщение от платы завершено и мы можем на него отреагировать.
29
// Если текущая строка - это RING, то значит, нам кто-то звонит
30
if
(!currStr.compareTo(
"RING"
)) {
31
//кокетничаем 3 секунды, чтобы дать услышать звонящему гудок
32
delay(3000);
33
//посылаем команду на поднятие трубки
34
gprsSerial.println(
"ATA"
);
35
}
36
currStr =
""
;
37
}
else
if
(currSymb !=
'\n'
) {
38
// Дополняем текущую команду новым сиволом
39
// При этом игнорируем второй символ в последовательности переноса
40
// строки: \r\n
41
currStr += String(currSymb);
42
}
43
}
44
45
/*
46
* Функция провоцирует поддержание коммуникации с платой даже если
47
* та была перезагружена без перезагрузки Arduino
48
*/
49
void
touch()
50
{
51
if
(millis() >= updateTime) {
52
gprsSerial.println(
"AT"
);
53
updateTime += 5000;
54
}
55
}
Гудок есть, а трубку он не берёт.
Код взял отсюда: 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
У меня просто модем, я через уарт-переходник с терминала его запускал
Вот как тут http://alex-exe.ru/radio/wireless/gsm-sim900-firmwar-all-in-one/
А мне хотелось бы заставить работать с ардуино.
Доброго времени суток!
Может я чего-то неправильно делаю?
Подключил SIM900 напрямую от БП компьютера.
Соединил програмный сериал к 7,8 портам sim900.
Земля общая.
Пытаюсь отправить AT команду. В ответ тишина.
Но sim900 в сети!
Иногда он "выбрасывает" произвольный русский символ в момент сброса звонка оператором, если звонишь на SIM900.
Код вот такой:
01
#include <SoftwareSerial.h>
02
03
SoftwareSerial GPRS(7, 8);
04
unsigned
char
buffer[64];
// массив данных поступает в буфер через последовательный порт
05
int
count=0;
// счетчик массива буфера
06
void
setup
()
07
{
08
GPRS.begin(9600);
// скорость передачи GPRS
09
Serial
.begin(19200);
// скорость передачи UART
10
11
}
12
13
void
loop
()
14
{
15
if
(GPRS.available())
// если данные идут из softwareserial => данные поступают из модуля GSM
16
{
17
while
(GPRS.available())
// чтение данных в массив символов
18
{
19
buffer[count++]=GPRS.read();
// записи данных в массив
20
if
(count == 64)
break
;
21
}
22
Serial
.write(buffer,count);
// если не заканчивается передача данных,
23
// то записать в буфер аппаратного последовательного порта
24
clearBufferArray();
// вызвать функцию clearBufferArray для очистки данных массива
25
count = 0;
// сброс счетчика цикла
26
27
}
28
if
(
Serial
.available())
// если данные есть в аппаратном UART => данные поступают от ПК
29
GPRS.write(
Serial
.read());
// запись в модуль GSM
30
}
31
void
clearBufferArray()
// очистка буфера
32
{
33
for
(
int
i=0; i<64; i++) { buffer[i]=NULL;}
// очистка индексов массива
34
}
Пробовали сериал на ту-же скорость установить? Как определяете, что модуль в сети?
Какую Ардуино используете?
Спасибо Вам, доргой друг!
Проблема решена.
Оказался глюк.
Нужно было продержать мою новую (свежекупленную) симку в телефоне или в модуле во включенном состоянии не менее 15 минут.
После этого всё заработало.
Примеры брал отсюда: http://tronixstuff.com/2014/01/08/tutorial-arduino-and-sim900-gsm-modules/
Вот, например, набор номера:
01
#include <SoftwareSerial.h>
02
SoftwareSerial SIM900(7, 8);
// configure software serial port
03
04
void
setup
()
05
{
06
SIM900.begin(19200);
07
SIM900power();
08
delay(20000);
// give time to log on to network.
09
}
10
11
void
SIM900power()
12
// software equivalent of pressing the GSM shield "power" button
13
{
14
digitalWrite(9, HIGH);
15
delay(1000);
16
digitalWrite(9, LOW);
17
delay(5000);
18
}
19
20
void
callSomeone()
21
{
22
SIM900.println(
"ATD + +12128675309;"
);
// dial US (212) 8675309
23
delay(100);
24
SIM900.println();
25
delay(30000);
// wait for 30 seconds...
26
SIM900.println(
"ATH"
);
// hang up
27
}
28
29
void
loop
()
30
{
31
callSomeone();
// call someone
32
SIM900power();
// power off GSM shield
33
do
{}
while
(1);
// do nothing
34
}
Скажите что и куда припаивали для управления включением? R13 - 4.7 К
Между R13 и 9м пином?
да, можно и перемычку поставить вместо R13, к 9 пину уже есть там дорожка
Этого будет достаточно? никаких резисторов?
отмечено красным
да, закоротить и все
Спасибо.
Я уже был готов мудрить с 4N27, либо реле на питание...
Читал, что на некоторых GSM Shield имеется пин контроля питания, что бы можно было определить включен ли он.
Как снять состояние Status LED?
команда "AT" и отслеживать ответ "OK" :)
Спасибо.
Читал что у Амперки специально имеется пин, с него считать гараздо быстрее чем по сериалу общаться с шилдом, таймаут нужно учитывать, что бы не ждать бесконечно, сложнее, короче говоря.
через команду убиваешь двух зайцев, 1 - включен , 2 - не завис
Привет!
Я не стал пока ничего напаивать.
Я закоротил, все работает корректно.
Вопрос к бывалым - стоит ли пользоваться библиотекой SIM900, есть ли какие-то подводные камни или ограничения(грабли)?
Подкупает что не придется писать адский парсинг SMS и т.д.
если хотите чему то научиться например "String" , то откажитесь от библиотеки, а парсинг смс составляет 5-6 строк
Основная поблема получить законченный ответ в виде строки, именно той команды, которую отправил.
Ведь используя HS обрабатывая, например, SMS можно получить сообщение о входящем звонке и вот тут начинаются коллизии.
можно в разъем питания подавать 12в переключив черный переключатель , но земля между ардуино и модулем должна быть обязательно, модуль от 5в потребляет около 2А
у меня такой же шилд. вы уверены что можно туда 12в? откуда инфа? страшно сжечь, 3 месяца ждал модуль.
ПС. Вот нашел по вашей ссылке :
Power select - select the power supply for GPRS shield(external power or 5v of arduino)
Power jack - connected to external 4.8~5VDC power supply
если точно такой же то можно, там стоит стабилизатор MIC29302WU, который по дш работает до 26 вольт, но конденсатор стоит на 16 вольт, так что 5 - 12 в нормально
проверьте есть ли у вас такой стабилизатор
Меня интересует перезагрузка модуля.
Имеется пин под номером 6, который промаркирован RST.
Но вот что на него подавать(как долго HIGH), нигде не нашел описания, может кто подскажет?
вывод 16 а не 6 на самом модуле sim900
учитесь читать даташиты
Да уж, в ногу самого чипа я вряд ли сумею впаяться :)
За информацию спасибо.
Да уж, в ногу самого чипа я вряд ли сумею впаяться :)
За информацию спасибо.
у меня, если подать на 6 пин (шилда, а не чипа sim900) HIGH , происходит reset.
у меня, если подать на 6 пин (шилда, а не чипа sim900) HIGH , происходит reset.
отлично, буду у себя проверять.
хотелось бы понять сброс идет полный, прямо как отключить питание и включить, необходимо по новой текстовый режим выставлять и т.д?
если точно такой же то можно, там стоит стабилизатор MIC29302WU, который по дш работает до 26 вольт, но конденсатор стоит на 16 вольт, так что 5 - 12 в нормально
проверьте есть ли у вас такой стабилизатор
спасибо за инфу, посмотрел, стаб есть. Имеется 9В БП 1А, подал на шилд - все гуд.
хотелось бы понять сброс идет полный, прямо как отключить питание и включить, необходимо по новой текстовый режим выставлять и т.д?
конечно нужно, ведь же сброс прошел:)
так что лучше выключение питания через 9 пин, и включение с инициализацией, например
01
void
gsmpowerup() {
02
digitalWrite( gprs_sw_pin, LOW );
03
delay(1000);
04
digitalWrite( gprs_sw_pin, HIGH );
05
delay(2000);
06
digitalWrite( gprs_sw_pin, LOW );
07
delay(3000);
08
gprs.println(
"AT+CMGF=1\r"
);
09
delay(100);
10
gprs.println(
"AT+CSCS=\"GSM\""
);
11
delay(100);
12
gprs.println(
"AT+IFC=1,1"
);
13
delay(100);
14
gprs.println(
"AT+CNMI=1,2,2,1,0"
);
15
delay(100);
16
}
Мне тоже пришло такое чудо, пока не паял R13, вручную включаю, но не могу добится ответа на AT, хоть убейся.
Скоро тресну от злости. Подключаю через ардуино HardwareSerial.
Диодики моргают, что в сети зарегестрирован.
UPD: закоротил R13, теперь чип включается от ардуины, как положено, но на всякие АТ-команды ни ответа ни привета :(
вы заняли hw serial, и как смотрите, подключайте через Software serial , а через hw serial управляйте, или возьмите usb - uart переходник
У меня 4 порта харварных. ардуина мега 2560.
она умеет работать как переходник, достаточно повесить на TX и RX девайс и замкуть на 2560 RST+GND
Собственно, HSP8266 так работает. И на Serial1 и Serial3 HSP8266 со скетчем работает. А вот этот шилд не хочет, на него можно звонить, он моргает диодиками все работает вроде, а вот ответа из порта нет на всех скоростях.
Такое ощущуние, что криво напаяли что-то, но схемы этого клона у меня нету. ноги на SIM900 (TX и RX) и с чем не "звонятся". Наверное, это не верно, но я не видя схемы, не могу понять.
перемычки j11 и j12 переключают на каких выходах будет tx и rx
Это единственное, что "звонится" :) а вот дальше с перемеычек, не понятно, как на ноги к чипу приходит. По-идее, сам чип 2v8, а с ардуинки приходит 5v, наверное есть согласование сигнала.
Это единственное, что "звонится" :) а вот дальше с перемеычек, не понятно, как на ноги к чипу приходит. По-идее, сам чип 2v8, а с ардуинки приходит 5v, наверное есть согласование сигнала.
да, есть согласование уровней на транзисторах, попробуйте через переходник usb - uart скорость 19200
и залейте проверочный скетч отсюда
http://www.seeedstudio.com/wiki/GPRS_Shield_V1.0
Делал я уже это. повторил на всякий случай.
Меня вот что смущает, те ризисторы, что идут к ногам SIM900 RX и TX имеют маркировку 433 (R9 например ) и мультиметр не показывает на них сопротивление. Кажется, мне прислали что-то отстойное :(
433 это 43 кОм, тестер правильно установите для замера :)
ВЫставил правильно, резисторы исправны. Нашел, что сигнал доходит то транзисторов A2SHB на ногу drain, чтобы это ни значило. Дальше без осцилоскопа и не проверить. Грусть и печаль :(