No Image

Sim800l даташит на русском

СОДЕРЖАНИЕ
1 540 просмотров
12 декабря 2019
Дата: 6 Октября 2016. Автор: Алексей

Далее собираем все в кучу. Ммм, а как!?

Вот схемка, вид сверху.

Бинго! Далее кидаем AT+COPS? и если в ответ получили своего оператора, то для закрепления позвоните себе набрав команду ATD89161234567;. Точка с запятой обязательно! Если модуль дозвонился, то значит он работает с нашими сетями. Я тестил на пчелайне. Если я сейчас скажу что на этом все, то меня закидают яйцами и помидорами, а этого не хочу))) Значит давайте соберем из этого что-нибудь полезное. Например сигнализацию. Прикрутим модуль к МК и будем следить за состояние пару ножек. Как только на ножке появится изменения, то тут же пошлем SMS с оповещением об данном изменении. В роли МК будет выступать ATmegs32a. На ноги PB2 и PB3 прикрутим кнопки. Кнопки имеют общий GND, а для подтяжки используем встроенные резисторы. Для работы с модулем напишем пару функций, а именно инициализации и передачи SMS. Чтож, поехали.

Для начала сконфигурим проект при помощи генератора кода axlib. Для этого выберем МК ATmega32, внешний кварц на 7372800

(такой кварц нужен для уменьшения ошибок при передаче по UART)

Для разработки IoT устройств приходится использовать различные GSM модули. К сожалению, NB IoT или LoraWAN чипы на данный момент стоят минимум в три раза дороже, поэтому в большинстве проектов их использование неоправданно, пока не снизится стоимость.

Модуль хорошо документирован. Документация здесь. Сайт кривой. Скачать документацию официально не просто. 🙁 Поэтому используем прямую ссылку, не требующую регистрации, на всю необходимую документацию и прошивки для SIM800C. Прямая ссылка на документацию и инструменты прошивки для SIM800x. Документация по схемотехнике.

На Aliexpress есть несколько вариантов модулей SIM800C. Ссылка здесь. В данном примере я рассмотрю вариант с разведенным на плате конвертером уровней TTL 5V

В принципе, можно использовать более дешевый вариант модуля SIM800L, адаптировав уровень TTL под 5V Arduino с помощью резисторного делителя напряжения, либо заказав плату двунаправленного TTL конвертера уровней 5V 3V ценой в районе 0,5 $ и добавив DC-DC down-step модуль для снижения напряжения с 5V до 3,7 V по цене 0,3 $ но в совокупности цена получится примерно такой-же, экономии не будет.

Однако надо понимать, что при добавлении двунаправленного TTL конвертера уровней на него надо подать опорное напряжение равное уровню допустимого напряжения на входе SIM800, а это

2,9 V, а не 3,3 V, которых взять негде, поскольку выход VDD_EXT с чипа SIM800 не выведен.

Батарею можно напрямую подключить к пину Vbat. На этом входе можно замерять напряжение на чипе. Оно составляет 3,7 V, встроенный преобразователь напряжения работает нормально, хоть и схема проще, чем у самого дешевого DC-DC step down конвертера.

Схема платы SIM800C

В datasheet модуля указан максимальный уровень логической единицы на входе RX — 3,1 В (при минимальном 2,1 В). Для конвертации TTL уровней на плате SIM800C разведен конвертер. В принипе достаточно было конвертер поставить только на RX вход, поскольку микроконтроллеры Arduino/ESP8266/ESP32 чувствительны к низкому входному напряжению TTL с SIM800C.

Схема двунаправленного конвертера уровней довольно стандартная и обеспечивает приведение напряжения логической 1 на SIM800 к уровню VDD_EXT. Это напряжение снимается с SIM800 и по datasheet соотвествует 2,8 V.

Напряжение на выходе VDD_EXT чипа SIM800

Соотвественно, на входе модуля SIM800 преобразователь уровней обеспечивает напряжение логической 1 не выше 2,9 V при максимальном значении.

Поскольку двунаправленного преобразования на RX не требуется, в теории, можно было бы использовать дешевый резистивный делитель, как указано в статье по подключению модуля SIM800L. Подробная схемотехника подключения этого модуля к ESP32 и код программы в моей статье.

Резистивный делитель при подключении входов SIM800 напрямую к Arduino

Вероятно, в данном случае использовали более дорогую схему согласования уровней, чтобы гарантировать, что пользователь неосторожными действиями не сожжет RX порт чипа SIM800. В случае резистивного делителя это можно сделать попутав Rx и Tx. Ну и важно для полноценного согласования уровней SIM800 с микроконтроллером 5-ти вольтовой логики, когда уровень логический единицы может быть высоким, так что микроконтроллер не будет воспринимать уровень логической единицы на выходе Tx.

Замечу, что при использовании дешевого модуля SIM800C/L без конвертера уровней, даже при подключении его напрямую к ESP8266/ESP32 с уровнем логики 3,3 V вместо максимальных 3,1 V, указанных в datasheet, можно вывести SIM800 из строя. По крайней мере у меня один модуль SIM800L перестал реагировать на RX. Видимо, внутри чипа нет защитных диодов, либо они не справились даже с такой небольшой разницей в напряжении.

Читайте также:  Вакуумный аспиратор для носа на пылесос

Поэтому при подключении модуля SIM800 без конвертера уровней к ESP8266/ESP32 тоже нужно добавить хотя-бы резистивный делитель на вход RXD.

Напряжение питания модуля SIM800 (VBAT) 3,4 — 4,5 V, рекомендуемое 4 V при максимальном токе до 2А. Модуль достаточно прожорлив, поэтому его нельзя запитывать от платы Arduino и от маломощных USB зарядок, дажы не вывести их из строя.

На плате уже разведен фильтр для подавления импульсных помех для обеспечения стабильной работы модуля, однако, как показывает опыт, этого фильтра недостаточно при работе от простых блоков питания.

Слот SIM карты, в отличие от недорогого модуля SIM800L, подключен к чипу с защитой диодной сборкой SMF05C. Она предохраняет чип SIM-карты и SIM800C от статического электричества.

Недостатки платы SIM800C

Не могу сказать, что модуль SIM800C разработан удачно. Замечания такие:

  • Расстояние между гребенками не кратно 2,54 мм, поэтому модуль не встает в breadboard макетные платы. Этой проблемы нет даже у дешевой платы SIM800L. Она встает в макетную плату без проблем. Это очень большой косяк разработчиков.
  • Для понижения напряжения с 5V до 3,7V используется схема с двумя диодами. Как говорится в статье, падение напряжения на диодах в обычном режиме работы порядка 0,6 — 1,2V и SIM800 достаточно напряжения для работы. Однако при пиковых значениях токов падение напряжения возрастает и на чипе напряжение может быть ниже 3,3 V. В результате, например, при запуске, когда энергопотребление высокое, модуль может многократно перегружаться. Поэтому я рекомендую запитывать модуль через вход VBAT подав напряжение 3,8 V c DC-DC конвертера напряжения (DC-DC stepdown converter) или от батареи.

Распиновка платы модуля SIM800C

  • 5V: power supply pin, the only input DC5V, used to power the board.
  • V_TTL: access control board microcontroller core target voltage of 5V / 3.3V (according to its own microcontroller is much to distinguish kernel V), this pin is used to convert the GSM module board TXD and RXD for the corresponding TTL logic. Описание пространное. На этот пин нужно подать 5V при подключении к платам с уровнем логики 5V (например, Arduino) и 3,3V при подключении GSM модуля к ESP8266/ESP32.
  • GND: power supply ground
  • TXD: send pin serial port module, TTL level (not directly connected to RS232 level)
  • RXD : receive pin serial port module, TTL level (not directly connected to RS232 level)
  • DTR: Data Terminal Ready
  • SPKP: Core Audio output pin
  • SPKN: Core Audio output pin
  • MICN: Core Audio input
  • MICP: Core Audio input
  • RI: Ring core pin tips
  • VRTC: RTC pin external battery
  • GND: power supply ground
  • PWR: This pin can turn down or turn off the module. Этот пин должен быть замкнут на GND на время не менее 1 с для включения модуля. Чтобы модуль стартовал сразу при включении — PWR закорачивают на GND.
  • GND: power supply ground
  • VBAT: lithium battery input pin, 3.3v-4.4v

Схема соединения SIM800C c USB-to-TTL конвертером

Перед использованием модуля SIM800C с микроконтроллерами стоит проверить его работоспособность соединив с конвертером USB to TTL.

Таблица соединения SIM800C с USB-to-TTL converter

SIM800C pin USB-to-TTL converter БП +5 V Примечания
TXD RXD
RXD TXD
GND GND GND
+5V +5V Блок питания на пиковы ток не менее 1 А.
V_TTL +5V
PWX GND Закоротить пин PWX на GND, чтобы модуль стартовал сразу при включении питания.

Лучше подавать сначала питание на модуль GSM, а затем уже подключать USB к PC, но это не критично.

Схема соединения SIM800С с ESP32

На картинке нужно добавить соединение между PWX и GND! Детальная схема подключения SIM800L к ESP32 с примером кода в статье.

Схема подключения модуля SIM800C к ESP32

Тестирование SIM800

  • Запускаем Arduino IDE.
  • В настройках порта (Tools -> Port) выбираем порт на котором работает USB-to-TTL конвертер.
  • Переходим в Tools -> Serial Monitor (Ctrl-Shift-M).
  • Выбираем скорость 115200. Где-то проскакивает, что у чипа работает автоопределение скорости. По моим тестам — не работает. 🙂
  • Набираем AT и ввод. Документация по AT коммандам SIM800 здесь.
  • Если модуль рабочий и корректно подключен, то появится хотя-бы ответ «OK». Если модуль определил SIM-ку и зарегистрировался в сети оператора, то будет развернутая информация.
  • Отправляем команду: AT+COPS=?
    После нескольких секунд ожидания появится ответ, вроде: +COPS: (2,»Bee Line GSM»,»BeeLine»,»25099″),(1,»MTS»,»MTS»,»25001″),(1,»MOTIV»,»MOTIV»,»25020″),(1,»MegaFon»,»MegaFon»,»25002″),,(0-4),(0-2). Модуль «видит» ближайшие соты. Уже хорошо.
  • Проверим статус PIN кода на SIM карте командой:
    AT+CPIN? Если появился ERROR — что-то не так.
  • Запускаем команду: AT+CMEE=2. Эта команда при выводе сообщения об ошибке предоставляет максимально детальную информацию. Сохраняем командой: AT&W.
  • Поворяем комунду AT+CPIN? Появляется детальный код ошибки. Например, в моем случае: +CME ERROR: SIM not inserted.
  • Проверяем установку SIM карты. SIM слот распаянный на модуле «без защиты от дурака», т.е. позволяет вставить SIM-ку любым способом, без привычных ограничений как на сотовом телефоне или в других типах слотов. На SIM слоте мелко есть пиктограмма правильной установки карты.
  • Повторяем команду AT+COPS=? Ответ изменился. Появились строчки «Call Ready» и «SMS Ready», значит карта определилась нормально и зарегистрировалась в сети оператора:
  • Отправляем команду AT+CSQ для получения уровня сигнала. Первая цифра в ответе должна быть отлична от нуля. Например, +CSQ: 23,0.
  • Проверяем регистрацию в сети оператора командой AT+CREG? Правильный ответ: +CREG: 0,1
Читайте также:  Дизайн веранды в загородном доме фото

Ошибка +CSQ: 0,0

Если команда получения уровня сигнала AT+CSQ возвращает +CSQ: 0,0, то наверняка будут проблемы с регистрацией в сети. Команда AT+CREG? вернет +CREG: 0,2 вместо +CREG: 0,1. Какие действия для разрешения ошибки:

  • Проверяем в другом устройстве, что SIM-ка корректно регистрируется в сети.
  • Вставляем в SIM800 в соответствии с пиктограммой на слоте и проверяем командой AT+CPIN, что SIM карта определилась корректно.
  • Командой AT+CBAND? проверяем, что SIM800 настроен на все диапазоны частот. На моем модуле, когда он нормально регистрируется в сети Билайна, результат: DCS_MODE,ALL_BANDS.
  • Основной момент на который обратить внимание. Не зависимо от того, какой ток держит блок питания или DC-DC step-down модуль, хоть 3A и вы в этом лично убеждались, попробуйте запустить SIM800 от батареи. Возьмите аккумулятор от мобильного телефона на 3,7 В или Li-Ion элемент 18650 на 3,7 V и присоедините плюс батареи к пину V_BAT , а минус — на GND.
  • Спустя некорое время проверяем уровень сигнала AT+CSQ. Скорее всего проблема с регистрацией разрешится.

Все GSM модули, не важно, дорогой SIM800 или дешевый M590 КРАЙНЕ чувствительны к качеству блока питания. И дело не только в токе, но и в пульсациях. Я запитывал SIM800C от разных БП с макисмальными токами до 2,1 A и он нормально включался, отвечал на AT команды, но не регистрировался в сети. После подключения на батарею TR 18650 сеть сразу нашлась.

Ниже приведены вырезки из design guide для модулей SIM800 и M590. Они почти сходятся в блоке фильтрации. Нужно ставить керамические конденсаторы на 10 pF и 33 pF (у M590 на 100 pF) для сглаживания высокочастотных пульсаций и электролитические хотя-бы на 100 uF, а лучше на 1000 uF.

Фильтры на блок питания для SIM800 Фильтры на блок питания для Neoway M590

Отправка SMS через SIM800

Для теста работы пытаемся отправить SMS. Для начала отправляем команду: AT+CMGF=1. Если возник ERROR — скорее всего не прошла регистрация SIM-ки в сети.

AT команда Ответ Примечания
AT+CMGF=1 OK Переводим в текстовый режим отправки сообщений.
AT+CSCS=»GSM» OK Устаналиваем charset:
«GSM» GSM 7 bit default alphabet (3GPP TS 23.038);
«UCS2» 16-bit universal multiple-octet coded character set (ISO/IEC10646); UCS2 character strings are converted to hexadecimal numbers from 0000 to FFFF; e.g. «004100620063» equals three 16-bit characters with decimal values 65, 98 and 99
«IRA» International reference alphabet (ITU-T T.50)
«HEX» Character strings consist only of hexadecimal bers from 00 to FF;
«PCCP» PC character set Code «PCDN» PC Danish/Norwegian character set «8859-1» ISO 8859 Latin 1 character set
AT+CSCS? +CSCS: «GSM» Проверяем, что нужная кодовая таблица установилась корректно.
AT+CMGS=»+796019xxxxx» > Номер телефона вводить обязательно с +, иначе будет сообщение об ошибке: +CMS ERROR: invalid input value.
После запуска команды появится запрос на ввод текста сообщения, которое должно быть завершено отправкой CTRL-z (0x1A или (char)26). К сожалению, Arduino Serial Monitor не позволяет отправить этот код, так что только программно.

Передача данных по TCP

Далее привожу AT команды для установки tcp соединения через GPRS.

AT команда Ответ Примечания
AT+CPIN? +CPIN: READY
OK
Проверка SIM PIN
AT+CSQ +CSQ: 23,0
OK
Проверка уровня сигнала. Первая цифра — уровень сигнала :
0 — 115 dBm or less
1 -111 dBm
2…30 -110… -54 dBm
31 -52 dBm or greater
99 — not known or not detectable
Вторая цифра — количество ошибок в канале. 0 — хорошо.
AT+CREG? +CREG: 0,1
OK
Первая цифра :
0 — Disable network registration unsolicited result code
1 — Enable network registration unsolicited result code +CREG:
2 — Enable network registration unsolicited result code with location information
Вторая цифра :
0 — Not registered, MT is not currently searching a new operator to register to
1 — Registered, home network — правильный вариант
2 — Not registered, but MT is currently searching a new operator to register to
3 — Registration denied
4 — Unknown
5 — Registered, roaming
AT+CGATT? +CGATT: 1
OK
Статус GPRS Service-а :
0 — Detached
1 — Attached — правильный вариант
AT+CIPSHUT SHUT OK Deactivate GPRS PDP Context. В доке разработчик эта команда не указана, но без неё у меня не проходила команда установки APN.
AT+CSTT=
«internet.beeline.ru»,»beeline»,»beeline»
OK Устанавливаем APN. В примере — для оператора «Билайн».
AT+CSTT? +CSTT:
«internet.beeline.ru»,»beeline»,»beeline»
Проверяем, что APN сохранился.
AT+CIICR OK Переводим в режим беспроводного соединения (GPRS or CSD).
AT+CIFSR 100.89.139.161 Получаем выделенный оператором динамический IP адрес.
AT+CIPSTART=
«TCP»,»116.228.221.51″,»8500″
OK Установка тестового TCP соединения с каким-то китайским тестовым сервером.
Читайте также:  Podvorje ru личный кабинет

Отправка данных по HTTP

AT+SAPBR=3,1,»CONTYPE»,»GPRS»
AT+SAPBR=3,1,»APN»,»internet.beeline.ru»
AT+SAPBR=3,1,»USER»,»beeline»
AT+SAPBR=3,1,»PWD»,»beeline»
AT+SAPBR=1,1 — Устанавливаем GPRS соединение
AT+HTTPINIT — Инициализация http сервиса
AT+HTTPPARA=»CID»,1 — Установка CID параметра для http сессии
AT+HTTPPARA=»URL»,»http://www.ya.ru» — адрес web сервера
AT+HTTPACTION=0 — GET запрос.
-> +HTTPACTION: 0,302,0 — 302 код ошибки — Found.

Fritzing part for SIM800C

Поскольку не нашел нужного fritzing part для SIM800C, пришлось нарисовать. Файл здесь.

  • Цена: 8.4$
  • Перейти в магазин

«Мне надо дистанционно открывать дверь. Вернее, отключать магнит, который держит дверь. » Вот такая неожиданная просьба, причем речь изначально шла о gsm модеме, не то чтобы я знал все подробности, но на вопрос как сделать простейший выключатель решил ответить обзором. Буквально 5-7 строчек кода и все дела.

Как и где модуль покупался я уже не помню, но специально нашел самую низкую цену при высоком рейтинге продавца.





Чем примечательна именно данная версия модема:
1. В отличие от первой версии питается от 5В и не требует никаких dc-dc преобразователей, которые, между прочим тоже стоят денег — все выполнено непосредственно на плате. А как результат меньше устройств, меньше проводов, меньше соединений.
2. Отличная внешняя антенна
3. Маленькие размеры 40х28 мм
4. Отверстия под крепление. Не всегда и не везде их делают
5. Антенну будет очень удобно крепить в корпус, судите сами, разъем крепим на корпусе, на него навинчиваем антенну, не обязательно штатную, и проводом подключаем модем.

По конструктиву все, дальше я это чудо загуглил на предмет кто-что с ним делал и скачал библиотеку SIM908IDE100, которая мне понравилась, но справедливости ради должен отметить, что она единственная которую я смотрел.
Подключение:
5В модуля на 5В ардуино
GND на GND
TXD на 2 вывод ардуино
RXD на 3 вывод ардуино
VDD не задействован
RST не задействован

После подключения библиотеки открыл пример:

Собрал все воедино и прошил

Вот пара моментов, на которые можно обратить внимание:
gsm.readSMS(smsbuffer, 160, n, 20)
smsbuffer — массив символов формата char с смс сообщением
n — номер телефона
соответственно, чтобы не выводить свой номер телефона в терминал я закомментировал строку // Serial.println(n);
Если модем поймал сеть, то светодиодный индикатор на модеме мигает примерно раз в 3 секунды, на после прошивки в терминале вы увидите надпись status=READY
Далее я отправил на номер сим карты в модеме (кстати не забудьте ее поставить!) смс с текстом «Hello»

Попробовал раскомментировать следующие строки, вбил свой номер и отправил смс уже себе на телефон

Одним словом все работает замечательно, теперь к открытию двери путем отправки смс. Собственно ничего сложного, для проверки будем использовать светодиод на 13 контакте ардуино (будем им мигать через смс) и добавляем пару строчек кода.

Не спешите кидать тапки, потом я спросил у программиста КАК?! сделать лучше.

Принципиальная разница между первым и вторым вариантом в том, что после консультации со знающим человеком наступает просветление))) А если по нормальному, то смс заканчивается символом /r, я этого естественно не знал, поэтому сравнивал только 2 или 3 символа массива, остальная часть не учитывалась. Т.е. если послать Onnnn и On — результат будет идентичный, в последней версии этого недостатка нет.

Комментировать
1 540 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector