Модуль SIM800C не подключается к Arduino

rustam
Offline
Зарегистрирован: 25.01.2015

Купил модуль SIM800C. 

Подключил к Arduino Pro Mini (Leonardo)

Pin 0 (RX) -> TX

Pin 1 (TX) -> RX

VCC -> 5v

GND -> GND

Написал простой скетч

#include <SoftwareSerial.h>
SoftwareSerial GSMport(0, 1); // RX, TX

String ReadGSM() {  //функция чтения данных от GSM модуля
  int c;
  String v;
  while (GSMport.available()) {  //сохраняем входную строку в переменную v
    c = GSMport.read();
    v += char(c);
    delay(10);
  }
  return v;
}

void setup() {
  delay(3000); //дадим время на инициализацию GSM модулю
  Serial.begin(9600);  //скорость порта
  GSMport.begin(9600);
  int d = 500;
  int ATsCount = 8;
  String ATs[] = {  //массив АТ команд
    "AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"",  //Установка настроек подключения
    "AT+SAPBR=3,1,\"APN\",\"internet.tele2.ru\"",
    "AT+SAPBR=3,1,\"USER\",\"tele2\"",
    "AT+SAPBR=3,1,\"PWD\",\"tele2\"",
    "AT+SAPBR=1,1",  //Устанавливаем GPRS соединение
    "AT+SAPBR=2,1", //полученный IP адрес
    "AT+HTTPINIT",  //Инициализация http сервиса
    "AT+HTTPPARA=\"CID\",1"  //Установка CID параметра для http сессии
    int ATsDelays[] = {6, 1, 1, 1, 3, 3, 1}; //массив задержек
    Serial.println("GPRG init start");
    for (int i = 0; i < ATsCount; i++) {
       Serial.println(ATs[i]);  //посылаем в монитор порта
       GSMport.println(ATs[i]);  //посылаем в GSM модуль
       delay(d * ATsDelays[i]);
       Serial.println(ReadGSM());  //показываем ответ от GSM модуля
       delay(d);
   }
  Serial.println("GPRG init complete");
  };
}
void loop() {
}

Serial.println(ReadGSM());  //показываем ответ от GSM модуля

Должна показать ответ но ответа нет. 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Не знаю, в курсе ли вы, но HardwareSerial тоже использует Pin 0 (RX) & Pin 1 (TX) . А когда два медведя лезут в одно гнездо - что бывает?

rustam
Offline
Зарегистрирован: 25.01.2015

Переподключил на 5 и 4

Переписал скетч. 

Но это не помогло. 

Пробовал подключать через FTDI232 и посылать команды в терминал ответа не было

Может быть что именно SIM800C не поддерживает Serial Port?

На официальном сайте в документациях его нет в списках

b707
Offline
Зарегистрирован: 26.05.2017

rustam пишет:

Может быть что именно SIM800C не поддерживает Serial Port?

не может.

Не пишите скетчи, сначала подключите можем напрямую к компу и добейтесь от него ответа хотя бы на команду "AT" Обратите внимание на питание модема - серия SIM800/900 очень критична к напряжению и току, требует до 2А по даташиту и от ардуины и USB могут не работать.

rustam
Offline
Зарегистрирован: 25.01.2015

Блок питания на 5V 2.5A не помог.  

rustam
Offline
Зарегистрирован: 25.01.2015

Может резисторы на 470 Ом поставить на RX TX?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Схему показывайте или фотографию. Ибо это гадание на кофейной гуще.

Вот у этого 800C вообще есть RS232 для коннекта к компьютеру: https://ru.aliexpress.com/item/SIM800-Development-Board-Module-Support-G...

А у вашего, может, даже TTL level shifter-a нет и вы ему запалили входы-выходы ардуиновскими 5V.

rustam
Offline
Зарегистрирован: 25.01.2015

rustam
Offline
Зарегистрирован: 25.01.2015

На 1 и 2 (UART_TXD, UART_RXD) Pin правда подавалюсь 5V,  как проверить заполил я 1 и 2 выходы? 

Есть еще 23 и 22 попробую, на них. Инструкция ниже 

 

rustam
Offline
Зарегистрирован: 25.01.2015

Подключил по схеме 3.3V не работает 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Как проверить конкретно этот модем - я не знаю, если честно. Но, кроме возможности спалить ему выводы, еще есть такое понятие, как скорость порта... Подбирали вы ее или нет - никому неведомо. 

rustam
Offline
Зарегистрирован: 25.01.2015

Да подбирал, по документации поддерживает от 2400 до 115200

b707
Offline
Зарегистрирован: 26.05.2017

rustam пишет:

Да подбирал, по документации поддерживает от 2400 до 115200

это модем. Но у вас в скетче я вижу SoftwareSerial - ставьте скорость не выше 38400

rustam
Offline
Зарегистрирован: 25.01.2015

Ок учту если победю :)

SherKhaN
Offline
Зарегистрирован: 10.08.2017

у  SIM800C есть пин boot в противоположном ряду (который у ТС не подключен), если его замкнуть на землю, то замигает светодиод с интервалом раз в секунду, и пойдет активность в терминале среды Arduino IDE. У SIM800L такого пина нет. Заводится после подачи питания.

PS: вчера только получил этот модуль. Пока не победил: после замыкания boot на землю светодиод раз 7 мигает и перестает :( В интернетах глухо. У всех L версия (у нее меньше флэха и еще какие-то различия), там несколько иначе. Буду курить ман.

 

Pingui
Pingui аватар
Offline
Зарегистрирован: 30.05.2017

У меня точно-такая же проблема уже пару дней ищу ответ на этот вопрос, помогите)

Penumbra
Offline
Зарегистрирован: 06.08.2017

напряжение питания 3.4 - 4.2 В  при друго м он не заведется

напряжение  логической 1 на вхоте РХ/ТХ не более 2.8 вольта иначе модуль автоматически отключится или тупо не ответит на запрос

SIM800C  имеет встроенню флеш 24 или 32мб.  SIM800L  имеет встроенню флеш 24 или 16мб

SIM800L   и SIM800C   построеннны на разных процессорах MT6260 /MT6261 -основные отличия как для простого юзера  это SIM800L    есть CSD  а у SIM800C   нету

Penumbra
Offline
Зарегистрирован: 06.08.2017

rustam пишет:

Да подбирал, по документации поддерживает от 2400 до 115200

скорость работы уарт модуля  по умолчанию AT+IPR=0

тоесть, модуль нефига вам не пошлет пока вы ему не пошлете на любой скорости комманду AT или ATZ, после чего моуль автоматически подстроит скорость под вашу

rustam
Offline
Зарегистрирован: 25.01.2015

Рад что тема ожила. 
Питание пробывал в данном диапозоне, не помогло. 

Penumbra а у вас есть опыт работы с SIM800C?

SherKhaN
Offline
Зарегистрирован: 10.08.2017

Penumbra пишет:

напряжение питания 3.4 - 4.2 В  при друго м он не заведется

Спасибо! В моем случае так и произошло. Выставил 3.99- модуль завелся (продолжал мигать светодиодом более 7 раз).

Но есть 2 проблемы:

1) если вставлена  симка, и подаем питание, то модуль снова мигает 7 раз и вырубается. Если же симку вставлять после того, как взбодрили модуль замуканием пина BOOT на землю, то светодиод мигает постоянно. Это как минимум странно.

2) Модуль НЕ регится в сети (не выводится инфа по AT+COPS?), причем выводит список доступных операторов по  AT+COPS=?

Penumbra
Offline
Зарегистрирован: 06.08.2017

SherKhaN пишет:

Penumbra пишет:

напряжение питания 3.4 - 4.2 В  при друго м он не заведется

Спасибо! В моем случае так и произошло. Выставил 3.99- модуль завелся (продолжал мигать светодиодом более 7 раз).

Но есть 2 проблемы:

1) если вставлена  симка, и подаем питание, то модуль снова мигает 7 раз и вырубается. Если же симку вставлять после того, как взбодрили модуль замуканием пина BOOT на землю, то светодиод мигает постоянно. Это как минимум странно.

2) Модуль НЕ регится в сети (не выводится инфа по AT+COPS?), причем выводит список доступных операторов по  AT+COPS=?

1проверьте питание, самое большое потребление идет в момент инициализации симки и поиска оператора, блок питания должен без просадки напряжения выдержать  ток в 1А, если используете китайский дс-дс преобразователь то после него, по питанию модуля, поставьте конденсатор в 470- 1000 мкф, чтоб при кратковременных просадках модуль не вырубался, эти модули очень чувствительны к питанию

симку вынимать и вставлять на "горячую" нерекомендуется- можно спалить модуль или симку. когда вы вставили симку после включения то он всеравно ее не увидит пока вы не перегрузите модуль хотябы коммандой at+cfun=1,1

SherKhaN
Offline
Зарегистрирован: 10.08.2017

У коллеги есть 800L, так у него от этого же блока питания все заводится (вот сейчас прям тестим). Хотя как Вы правильно подметили- модули то разные. Да, кстати, изначально напряжение на DC-DC было 4.29, мой С не работал, а L коллеги работал. 

После DC-DC кондера нет, я надеялся на то, что на самой плате впаян тантальчик на 470мкФ, и что он спасет. 

А блок питания я попробую другой, вдруг в самом деле у меня из-за просадки все проблемы.

 

PS: специально купил (на свою голову) версию C, всё думал сравнить с тем, что у коллеги ...сравнил блин :))))

И как я понял у него не только CSD (который по сути и не особо нужен), но и  блютуза нет. В мануалах пишется, что необходима софтверная поддержка. Апгрейд, как я понял.

А вообще есть смысл брать версию C ? Вероятно как 99% интернета нужно купить L  и не париться. Размер флэхи 24МБ в C версии не сильно пригодится вероятно.

Я понимаю, что из дешевых модулей только L и С, остальные ведь на Али дороже. Тот же H.

Вот что удалось АТ командами вытянуть о моем модуле:

Revision:1418B05SIM800C24_BT

SIM800 R14.18

Хотя вероятно блютуз еще поднять нужно командульками. Но пока не до добра, тут бы хоть как-то взлетело.

Penumbra
Offline
Зарегистрирован: 06.08.2017

SherKhaN пишет:

А вообще есть смысл брать версию C ? Вероятно как 99% интернета нужно купить L  и не париться. Размер флэхи 24МБ в C версии не сильно пригодится вероятно.

все зависит от того для чего он вам нужен, более 90% пользователей этих модулей используют их в 3х случаях:

1 отправка/ получение СМС для управления  с телефона  какойто хуе.. херней
2 отправна по GPRS  на левые сайты температуру с датчиков
3 позвонить кому нибуть с ардуинки и сидеть тупо с этого ржать

и только 5% мучают остальные функции модуля,  так сто для п1-3 пункта достаточно самого дешевого модуля

SherKhaN
Offline
Зарегистрирован: 10.08.2017

Поменял блок питания. Поставил тот, который 2.5А при зарядке планшета дает не просаживаясь ниже 5В, и кабель проверенный. При первом же старте все заработало, стало редкое мигание светодиода и при попытке позвонить на номер шли длинные гудки, лишний раз подтверждая нормальную регистрацию  в сети. Но после вытыкания питания и повторного запуска снова отсутствие регистрации.

Следующим экспериментом проверил Li-Ion акум снять с мобилы (напряжение 3.8 без нагрузки было на нем), что бы без DC-DC. Но чуда не произошло :(

Итог: одна успешная регистрация в сети была. Модуль стало быть исправный. Вот только гораздо капризнее, чем L версия. Не факт, что запущу. 

Планы: уже дома, где есть электролиты и паяльники, подключу от лабораторного БП, навешу по питанию керамику и электролит тыши на полторы мкФ, проверю. Если не взлетит, то ф топку! Пойду на Али за L версией.

Если есть еще идеи как запустить- прошу озвучить.

 

Penumbra
Offline
Зарегистрирован: 06.08.2017

подключить модуль блоком питания от планшета, подключить usb-ttl к модулю , запустить терминальную программу типа  гипертерминала или putty и смотреть что модуль выдает в терминал, включить вывод информации об ошибках коммандой AT+CMEE=1 и AT&W сохранить

если модуль выдает еррор 604 или unknow error  то его надо перепрошить
 

возможно 39й пин (PWRKEY)  дернуть на gnd  в течении 1сек

чтоб модуль работал долго и правильно  то его надо правильно выключать с помощью AT+CPOWD=1 или 0

SherKhaN
Offline
Зарегистрирован: 10.08.2017

Penumbra пишет:

возможно 39й пин (PWRKEY)  дернуть на gnd  в течении 1сек

39й пин у меня как раз таки идет на пин BOOT на гребенке, без замыкания на GND модуль вообще не запускается (в отличии от верчии L).

Penumbra пишет:

чтоб модуль работал долго и правильно  то его надо правильно выключать с помощью AT+CPOWD=1 или 0

навело на мысль: я после удачного старта (выше писал) с мощным БП я дермул модуль по питанию, и больше успешных регистраций не было.

 

Попробую дома залогировать вывод ошибок в Putty, отпишусь.

SherKhaN
Offline
Зарегистрирован: 10.08.2017

В общем так: комманды AT+CMEE=1 и AT&W воспользоваться не удалось- устройство успевает уйти в защиту пока я в терминальное окно копипастю эти команды.

Но есть и положительные новости: после напайки 470мкФ на питание возле платы устройство стало нормально работать (последние 5-10 включений как часы), правда первые два включения было плохо. Вероятно еще кондер не прогрелся (шутка).

И еще одна положительная новость- удалось активировать блютуз и даже спарить его с мобилой. 

PS: уж слишком капризный этот модуль. Куплю все равно семе 800L.  А еще в C версии нету FM радио, а в L есть.

 

 

abt06
Offline
Зарегистрирован: 13.07.2013

800C успешно отправил из UNO sms при условии, что RX TX  подключены к ногам 10 и 11 как прописано в файле GSM.cpp

#define _GSM_TXPIN_ 10
#define _GSM_RXPIN_ 11
 
Думаю если поменять ноги в файле то и на штатных ногах поедет успешно.
 
 
b707
Offline
Зарегистрирован: 26.05.2017

abt06 пишет:

800C успешно отправил из UNO sms при условии, что RX TX  подключены к ногам 10 и 11 как прописано в файле GSM.cpp

#define _GSM_TXPIN_ 10
#define _GSM_RXPIN_ 11
 
Думаю если поменять ноги в файле то и на штатных ногах поедет успешно.
 
 

что такое "штатные ноги" и почему вас не устраивает 10 и 11?

abt06
Offline
Зарегистрирован: 13.07.2013

штатные 0 и 1 для UNO.

я прокомментил тему потому что прочитал ее , не нашел ответ в ней. нашел решение сам и поделился решением. 

b707
Offline
Зарегистрирован: 26.05.2017

abt06 пишет:

штатные 0 и 1 для UNO.

я прокомментил тему потому что прочитал ее , не нашел ответ в ней. нашел решение сам и поделился решением. 

на "штатных ногах" 0 и 1 как раз скорее всего не "поедет", потому что 0 и 1 заняты портом USB/

Секешфехервар
Offline
Зарегистрирован: 06.09.2018

В итоге поехала 800с ?

rustam
Offline
Зарегистрирован: 25.01.2015

У меня нет.

Секешфехервар
Offline
Зарегистрирован: 06.09.2018

Rustam скажите пожалуйста а вы пин ttl куда нибудь подключали?

Секешфехервар
Offline
Зарегистрирован: 06.09.2018

Просто на ваших фотографиях вижу 4 провода питание и рх тх... А в левом углу платки стоят два N канальных полевика оба сидят стоками через10 К на пин ttl а вот что мне непонятно на исток приходят к ним RX а на второй TX затвор получается притянут к плюсу ? Вобщем давайте ка тему поднимать .

Секешфехервар
Offline
Зарегистрирован: 06.09.2018

Затворы притянуты напрямую к 40 пину vdd external по даташиту всё устроено совсем иначе похоже узкоглазые что то напутали...

Секешфехервар
Offline
Зарегистрирован: 06.09.2018

Короче если я правильно понял нужно поменять местами drain и sourse на одном полевике.