Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/202: Рейтинг темы: голосов - 202, средняя оценка - 4.82
4 / 4 / 0
Регистрация: 01.06.2013
Сообщений: 153
1

Подключение модуля SIM900

25.01.2016, 22:02. Показов 36468. Ответов 94
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть у кого опыт работы с gsm модулем? Купил модуль SIM900 http://ru.aliexpress.com/item/... 300.QgBwpu . Хочу перекинуться AT-командами через комп. Кое-как нашел ноги для подачи питания. Светодиод POWER светится. Вставил симкарту, убрав с нее пинкод, нашел ноги rx tx, подключил к меге как положено, rx к tx и наоборот. Теперь есть там на sim900 кнопка сбоку платы POWER KEY, зажав ее на 3 секунды симка должна выйти на коннект, а уменя только (когда держу POWER KEY нажатой), светится статус светодиод D5 и D6 моргает.. Отпускаю power key - оба гаснут и всё, хотя поидее должно через 30 сек произойти соединение с сетью. И в терминале на AT команды не отвечает..

Добавлено через 15 минут
Попробовал подать 3.3В, светодиоды моргали по-другому, возможно это правильнее чем было, но связи также нет, при попытке дозвониться - просто молчание, соединения нет. в терминале отсылаю АТ на всех бодах..

Добавлено через 10 часов 36 минут
сегодня коекак разобрался и теперь могу звонить и отправлять смс с модуля, но на команду AT модуль по-прежнему не отвечает..
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2016, 22:02
Ответы с готовыми решениями:

Подключение модуля SIM900
Здравствуйте, столкнулся с проблемой купил модуль, а он как-то неправильно работает Для...

Подключение релейного модуля к Ардуино
помогите схемой подключением к Arduino не магу понять схему.

Подключение модуля телеметрии к ардуино
Использую модуль телеметрии модель rf7020 Собственно вопрос: как подключить один модуль к ардуино...

Подключение модуля с SIM900 к ПК
Есть GSM/GPRS модуль на базе SIM900 и USB преобразователь на базе CP2102 с выводами RXD, TXD, GND,...

94
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
28.01.2016, 07:51 2
kondusov, питание должно быть на него отдельное, от ардуины ему мало...питание 5V..а вообще заявлено 4.7V
А по поводу AT команд пробуйте это...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial(10,11); 
 
void setup()
{
  Serial.begin(19200);
  //Serial.println(“Begin”);
  mySerial.begin(19200);
 
}
 
void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
У меня работает на 9600 все прекрасно...
1
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
08.02.2016, 21:17 3
Приветствую, обладаю такой же штуковиной, подключал к ардуино уно rx tx перетыкал по разному, пробовал на всех скоростях посылать "АТ", но ответа не получал. При этом ардуина находилась в состоянии с замкнутым reset и ground. Сейчас подцепил провода rx и tx от gsm модуля на информационные провода usb (плата запитана отдельно ), новых устройств не появлется. Есль на плате штыри и перемычки - у меня свободны d0 и d1, а соседнии две замкнуты, gnd&vcc и gnd&4.1v не замкнуты. Подскажите за что отвечают перемычки которые 3 рядом, за что отвечаю перемычки gnd&vcc и gnd&4.1v? Как подключить сие чудо? Как определить скорость прошивки модуля? как удостовериться что ардуино работает в режиме UART моста?
0
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
09.02.2016, 09:39 4
VoltDeMar, доброго времени суток, прикрепляю фото рабочего модуля...
Перемычки отвечают за передачу данных на пины - либо же вы отправляете на стандартные 0 и 1 RX и TX, либо же сами переопределяете на какие пины будет интерфейс переопределен..

У ардуиники мега есть еще особенность - на 7,8 пинах и помоему какие то ниже не помню висят прерывания , поэтому я цеплял к 10 и 11 пинам соответственно RX и TX
по скетчу выше я тестил на скорости 19200, но все отлично работало и на 9600, перемычки я переставлял так чтобы D7 и D8 оставались свободными, хотя собственно разницы нет, если вы задаете программно пины через которые будет модуль общаться с ардуинкой...
Еще такая штука - в терминале где выбор скорости есть еще опция выбора конца строки и тд...поставьте - ОБА - конец строки + возврат каретки, мб поэтому у вас команда AT не принимается модулем
Надо было писать AT\r\n если вы ничего не меняли в настройках терминала...

Ну и по картинке видно что у меня TX - это белый провод в модуле на 0 пине идет в 10 пин на ардуинке - это RX, серый - на 1м пине RX идет на 11 пин ардуины это TX...
+ Я ничего не замыкал - у меня нет в этом надобности - все было в стоке - подал питание, нажал кнопочку PWRKEY на пару секунд, увидел что модуль завелся, замигали светодиоды...
Миниатюры
Подключение модуля SIM900  
1
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
09.02.2016, 21:37 5
Добился отклика при помощи вышеуказанногокода, но ответы приходят не корректные, например в ответ на AT+GSN : ATM95ю. Как то переключается кодировка или есть другая причина этого?
0
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
10.02.2016, 05:54 6
VoltDeMar, скорость в терминале поменяйте на ту, которая у вас в исходниках - они совпадать должны
1
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
10.02.2016, 18:42 7
У меня совпадали скорости при проверке, изменил в коде на 9600, теперь не коректный отклик приходит на обоих скоростях (9600):щьыщяыN, (19200):ATM95ю. Есть идеи о причине?
0
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
10.02.2016, 19:42 8
VoltDeMar, возможно что внутри самого модуля зашита скорость иная, ее надо прописать в таком случае туда ручками...например от так при инииализации
C++
1
2
3
4
5
6
7
void setup()
{
  Serial.begin(19200);
  //Serial.println(“Begin”);
  mySerial.begin(19200);
  mySerial.print("AT+IPR=19200\r\n")
}
Когда у вас приходят кракозябры в порту, явно это признак того, что со скоростью что то не так...
1
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
13.02.2016, 22:15 9
Я напаял ножки модулю gprs и сделал полноценный сендвич, с каким кодом мне нужно запускать это?
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 22
14.02.2016, 21:32 10
дабы не плодить темы... Вот такую штуку http://ru.aliexpress.com/item/... 60536.html к nano кто нибудь подключал? RT TX подключаю к портам нано tx rx. Код для скетча аналогичный тому, что в теме, или там все по другому?
0
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
14.02.2016, 21:57 11
VoltDeMar, sersahar, это просто тестовый код для проверки...
он проверяет ответ на команды переданные в com и перенаправленные на модуль..
а на каких именно пинах у вас будет сидеть, это вам решать)
Если бутербродом полноценным, то есть вот такая тема

http://wiki.amperka.ru/%D0%B1%... prs-shield

или же

http://yetisecret.com/icomsat-sim900-to-arduino/
http://podrugomu.com/node/1379
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 22
14.02.2016, 22:27 12
скорость на портах (модуля и монитора порта) должна быть разная? или может быть одинаковая? на нано rt и tx это
SoftwareSerial mySerial(1,2)? или я могу на любой цифровой выход повесить?
0
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
16.02.2016, 15:42 13
sersahar, скорость обязательно одинаковая...
по поводу Нано я вам не скажу потому как с ней не работал
А вообще вы можете повесить на пины без прерываний, либо же напрямую в тем на которых подвисано rx и tx
0
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
16.02.2016, 20:35 14
KorPaEv, я заливаю разные скетчи на ардуино но получить корректный отклик не удается, может существуют какие то ньюансы или способы проверить верность настроек и работоспособность плат?

Добавлено через 1 час 10 минут
Поделитесь опытом подключения по UART
0
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
20.02.2016, 17:50 15
Вот с таким скетчем :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <SoftwareSerial.h>
SoftwareSerial mySerial(1, 2); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  mySerial.println("AT");
}
 
void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
у меня выводит респонсы из набора символов кирилицей, шлю AT набор символов меняется, такое ощущение что дело в кодировке, посоветуйте направление поиска решения.
0
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
21.02.2016, 07:42 16
VoltDeMar, выходит у вас даже при инициализации дуни и передачи AT команды в порт выводится что-то типа яяяяяяяяяяя или ъъъъъъъ....надо пробовать задать кодировку на сомом модуле, есть AT команда, либо же у вас на самом модуле стоит по умолчанию скорость (прошита так сказать) иная, ее тоже можно задать AT командой, насколько помню вот так

mySerial.println("AT+IPR=115200");

Добавлено через 6 минут
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Поделитесь опытом подключения по UART
по поводу подключения напрямую модуля я очень долго сам мучался, в итоге все оказалось проще, дело было в кабеле, тут методом проб придется - я брал разные кабели com-uart-usb и пробовал, питание соответственно не больше 5V но и не меньше 4 должно быть, при правильном подключении модуля, если замкнуть RT и TX модуль отвечать сам на себя, грубо говоря послав команду AT он ее и вернет - таким образом можо проверить работает ли кабель по UART, далее уже цепляете кабель как полагается и например подключаясь в путти к вашему порту на котором висит uart шлете команды, должен приходить ответ от модуля
но лучше путти не использовать там с кодировкой гемор, я пользовался программой terminal
http://digitalchip.ru/terminal... com-portom
1
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
21.02.2016, 13:06 17
Цитата Сообщение от KorPaEv Посмотреть сообщение
выходит у вас даже при инициализации дуни и передачи AT команды в порт выводится что-то типа яяяяяяяяяяя или ъъъъъъъ....
У меня выходит л–цgh moon!
л–цgh moon!
Много раз, а потом начинается
ял–цgя mooя! ял–цgя mooя!ял–цgя mooя!ял–цgя mooя!, причем именно так как указано - сначало столбцом, потом в строку. Я хочу понять закономерность, почему вообще у меня много раз выводиться эта строка? её же нет в цикле, может модуль её возвращает мне искаженной?

Добавлено через 2 часа 8 минут
Если меняю местами в объявлении серийного порта номера пинов SoftwareSerial mySerial(2,1); то сообщение Goodnight moon! выводится корректно и один раз. Как это вообще может быть взаимосвязано?

Добавлено через 10 минут
Причем, поведение с кракозябрами продолжается даже если отключить питание платы GSM или переставить перемычки серийного порта. Объясните пожалуйста в чем суть?

Добавлено через 10 минут
И без платы тоже.

Добавлено через 11 минут
Обнаружил причину происходящего, перезадал софтсериалпорт на другие пины, но отклика от платы получить не удается. Товарищи, заплачу за помощь в разумных пределах
0
13 / 13 / 2
Регистрация: 11.08.2015
Сообщений: 39
22.02.2016, 05:55 18
В общем имеется GSM-модуль как на фото во вложении. Для общения с ним с компа использую СОМ-TTL шнурок (см фото), ардуина с ним общается через Rx-Tx. Особых проблем в общением не было, хотя заработал тоже не сразу. Оказывается модуль чувствителен к регистру: команду "АТ" не воспринимает вообще, а вот на "аt" сразу откликается. И остальные команды тоже почему-то, некоторые воспринимаются только заглавными, а некоторые только строчными. Это выяснять нужно в терминалке, на Ардуине мозг можно будет сломать - почему не работает )
Миниатюры
Подключение модуля SIM900   Подключение модуля SIM900  
1
57 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 235
22.02.2016, 09:42 19
VoltDeMar, давайте попорядку...
смотрите - у вас при инициализации в порт уходит Goodnight moon!
естественно у вас эта штука циклится, попросту из за этих строк

C++
1
2
3
4
if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
столбцом у вас приходит так как в инициализации написано
Serial.println("Goodnight moon!");
тут все верно - отправил в порт строку и перешел на новую строку, далее срабатывает цикл, у вас в порт модуля ушла та же самая Goodnighgt moon!
она циклится и постоянно уходит в порт модуля где и коверкается в кракозябру..

теперь попорядку..
1 - подключайте как я вам говорил на порты без прерываний - например 10, 11, перемычки на модуле стоят на картинке из моего самого верхнего поста, где 10 это TX, 11 это RX, соответственно на модуле 0 - это RX - там подписано, 1 - TX
Они всегда работают в перекрестье, поэтому когда вы написали что поменяли местами объявление пинов ничего кроме Goodnight moon вам не упало именно в com port
2 - Попробуйте сменить скорость в setup на 9600 как на ком порту, так и на порту модуля + смените в окне терминала так же на 9600 + рядом вывод всего что есть - там конец строки + новая строка, тогда при вводе команд не придется писать ручками \r\n
3 - Уберите все эти goodnight moon, у вас тупо ошибка программно выходит со скоростью что то напутано, т.к модуль пытается что то вернуть все же...поэтому ничего в ком порт посылать не нужно при инициализации кроме тестовой АТ команды..пробуйте работать только с ней, как только в setup пройдет тестовая команда и в терминале увидите отклик ОК значит все успешно можете ручками тестить остальные команды
4 - как написал dako попробуйте дописать еще эту строку в setup

C++
1
mySerial.println("at");
Добавлено через 7 минут
VoltDeMar,

в итоге получится такой скетч

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // TX, RX
void setup() 
{
  Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
  mySerial.begin(9600);  //Скорость порта для связи Arduino с GSM модулем
  Serial.println("Try send AT: ");
  mySerial.println("AT");
  Serial.println("Try send at: ");
  mySerial.println("at");
}
 
void loop() 
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
+ я еще не обратил внимание у вас же ардуино uno, там прерывания на других пинах висят поэтому на юнке можно цеплять на 7, 8 пинах

C++
1
SoftwareSerial mySerial(7, 8); // TX, RX
Добавлено через 5 минут
+ не плохо бы почитать сопутствующие темки
0
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
22.02.2016, 10:07 20
Цитата Сообщение от KorPaEv Посмотреть сообщение
она циклится и постоянно уходит в порт модуля где и коверкается в кракозябру..
почему она коверкается?
Цитата Сообщение от KorPaEv Посмотреть сообщение
порты без прерываний
а какие прерывания на портах Ардуино?
Цитата Сообщение от KorPaEv Посмотреть сообщение
перемычки на модуле стоят на картинке из моего самого верхнего поста
там не очень понятно как перемычка стоит, поперек на центральной линии? Я в спецификации прочел что они в доль ставяться и переключают между HardwareSerial и SoftwareSerial, мне в этом случае Software нужен или Hardware ?
Цитата Сообщение от KorPaEv Посмотреть сообщение
там конец строки + новая строка, тогда при вводе команд не придется писать ручками \r\n
у меня на протяжении тестирования стоит NL & CR

Итак в итоге у меня из 0 и 1 пинов Ардуино идут проводники в 0 и1 модуля крест накрест, перемычки на модуле GSM справа вдоль (SoftwareSerial). Посылаю at или AT на разных скоростях, ответа от модуля не получаю

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7,8); // RX, TX
void setup() {
  Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером 
  mySerial.begin(9600);//Скорость порта для связи Arduino с GSM модулем
  Serial.println("at");
}
 
void loop() {
  //if (mySerial.available())
   // Serial.write(mySerial.read());
  if (Serial.available())
    Serial.write(Serial.read());
}
Добавлено через 7 минут
C Вашим скетчем тоже выводиться только
Try send AT:
Try send at:
0
22.02.2016, 10:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2016, 10:07
Помогаю со студенческими работами здесь

Сервер для sim900 модуля
Работать должен так: -модуль отсылает даные -время от времени програма из ПК подключается к...

SIM900 - подключение клавиатуры и дисплея
Кто знает, как подключить клавиатуру и дисплей к SIM900 ?

Sim900 vs SIM900 GSM/GPRS MINIMUM SYSTEM MODULE
Каково ваше мнение, стоит ли переплачивать за модуль 100% стоимости(MINIMUM SYSTEM MODULE примерно...

Настроить работу модуля sim900 с wvdial через UART
Всем доброго. Проблема такая: Подключаю к UART`у модуль sim900 (GSM/GPRS), через терминал (при...

Подключение модуля *.cs
Есть созданный проект(консольное приложение), как мне подключить модуль 1.cs что бы я мог...

Подключение модуля.
добрый день. возникла потребность подключить модуль TDBF, установил, все ОК, но возникла проблема,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru