Модуль SIM800L на Arduino nano

Я пытаюсь заставить модуль Arduino nano и SIM800L работать вместе. Я снабдил модуль рекомендуемым внешним напряжением 4,0 В (в документации указано 3,6 В - 4,2 В), преобразованным через LM2596. Исходный источник - 5В 3А.

Светодиод на SIM800L мигает один раз в секунду, как указано в документации, когда он находится в отключенном состоянии.

Схема выглядит следующим образом:

                  Antena
                   \_/
                    |
Arduino    SIM800L  |  External 4.0V
             NET ---/
             VCC ----- +4.0V
D2 --------- RST
D3 --------- RX
D4 --------- TX
             GND ----- GND

Я уже пробовал 3 различные библиотеки для AT-связи, а также отправку необработанных AT-команд с использованием записи в serial вручную. Я также попробовал другой модуль SIM800L, потому что думал, что модуль неисправен.

Вот дамп от последовательной связи:

[551135] ### TinyGSM Version: 0.10.9
[551139] ### TinyGSM Compiled Module:  TinyGsmClientSIM800
AT
��AT
�AT
H�j���[552012] ### Unhandled: Hj
AT
AT-���[552317] ### Unhandled: AT-
AT
��AT
��AT
�Z5
[553228] ### Unhandled: Z5
AT
␚)O���[553532] ### Unhandled: ␚)O
AT
AT���[553836] ### Unhandled: AT
AT
��AT
��AT
�)OK��[554748] ### Unhandled: )OK
AT
���[555053] ### Unhandled: 5
AT
���AT
��AT
��AT
�j�H�[556266] ### Unhandled: jH
AT
CC����[556570] ### Unhandled: CC
AT
AT���[556875] ### Unhandled: AT
AT
��AT
AT
���[557787] ### Unhandled: T
AT
�H����[558091] ### Unhandled: H
AT
AT���[558395] ### Unhandled: AT
AT
��AT
��AT
AT
jRO���[559610] ### Unhandled: jRO
AT
AT���[559915] ### Unhandled: AT
AT
��AT
��AT
AT
�
OK��[561128] ### Unhandled: OK
Failed to initialize SIM800L

Как вы можете видеть, модуль пытается договориться о baudrate. По умолчанию я использую скорость 9600, как указано в документации. Когда я использую другой baudrate, модуль вообще не реагирует.

Кажется, модуль отвечает, а иногда даже правильно. Ответ на команду AT должен быть в порядке.

Знаете ли вы, как мне успешно согласовать скорость и установить надежную последовательную связь с модулем? Пропускаю ли я какие-либо электрические компоненты в своей цепи, такие как конденсатор или резистор? Я попытался использовать конденсатор 35V / 3300μF, но без какой-либо разницы. Я думаю, что мой источник энергии достаточно силен.

Исходный код выглядит следующим образом:

#define PIN_GSM_RST             2
#define PIN_GSM_TX              3
#define PIN_GSM_RX              4
#define GSM_BAUDRATE            9600

#define TINY_GSM_MODEM_SIM800
#define TINY_GSM_DEBUG          Serial
#define TINY_GSM_USE_GPRS       true
#define TINY_GSM_USE_WIFI       false

#include <Arduino.h>
#include <SoftwareSerial.h>
#include <TinyGsmClient.h>
#include <StreamDebugger.h>

SoftwareSerial serial_SIM800L(PIN_GSM_RX, PIN_GSM_TX);
StreamDebugger debugger(serial_SIM800L, Serial);
TinyGsm modem(debugger);
TinyGsmClient client(modem);

void setup() {
    Serial.begin(9600);
    delay(1000);

    Serial.println(F("Serial initialized"));

    serial_SIM800L.begin(GSM_BAUDRATE);
    delay(5000);

    while (!modem.init()) {
        Serial.println("Failed to initialize SIM800L");
    }
}

void loop() {
    //
}

, 👍1

Обсуждение

Вы подключили GND Arduino к GND SIM800L? Я не вижу связи в схемах., @Peter Paul Kiefer

@PeterPaulKiefer Нет, я только подключил SIM800L к земле внешнего источника. Может быть, в этом и проблема?, @Richardds

Все напряжения, поступающие от arduino к SIM800L, должны иметь эталонный GND. Вам нужен общий потенциал. Если у вас их нет, Arduino не сможет взаимодействовать с модулем. GND всех модулей и внешних источников питания должен быть подключен. Только если вы используете отдельную цепь, например, за relais, GND не должен быть подключен., @Peter Paul Kiefer

Еще одна вещь. Nano - это обычно 5-вольтовая плата. Вы уверены, что контакты SIM800L устойчивы к 5 вольтам? Если вы подключите GND, они могут столкнуться с 5V. Это может убить их, если они не будут терпимы к 5V., @Peter Paul Kiefer

Максимальное рабочее напряжение SIM800L составляет 4,2 В. Если напряжение выше 4,4 В, модуль выключается. Какую схему использовать, чтобы модуль не подвергался воздействию 5 В через GND?, @Richardds

Вероятно, переключатель уровня; или если у вас есть контроллер 3,3 Вольта (Arduino Due, Micro, 3.3V Nano). Поскольку вы не знакомы с электроникой (я предполагаю), ищите проекты arduino с SIM800L в Интернете. И не доверяйте всем видео, которые говорят, что лучше использовать SIM 800L с 5V Arduinos. Вам может быть интересно следующее: https://lastminuteengineers.com/sim800l-gsm-module-arduino-tutorial/, @Peter Paul Kiefer

В конце концов я использовал LM2596 для преобразования 5V в 4V. Я уже пробовал переключать уровень резистора. Многие статьи, которые я нашел, просто не использовали внешнее питание, но падение напряжения диода, поэтому можно было использовать вывод платы 5 В, и я этого не понимал. Ваше предложение о подключении GNDS сработало. Спасибо., @Richardds

Не за что. Просто чтобы упомянуть об этом: контакты Arduino, подключенные к SIM-модулю, имеют напряжение 5 Вольт. Если ваша версия модуля имеет внутреннюю защиту для этих контактов, все в порядке. Но если контакты соединены без сдвига уровня, модуль может работать какое-то время, но есть большая вероятность, что он будет уничтожен. Твое здоровье., @Peter Paul Kiefer


1 ответ


Лучший ответ:

1

Спасибо @PeterPaulKiefer вот ответ.

Внешнее питание для модуля SIM800L GND pin должно быть подключено как к модулю SIM800L GND pin, так и к Arduino nano GND pin. (например, между RST и R2 pin на Arduino nano)

Для того чтобы функция вызова работала, вам также необходимо использовать конденсатор на контактах SIM800L VCC и GND. Я использовал 35В, 3300 мкФ.

Схема:

                  Antena
                   \_/
                    |
Arduino    SIM800L  |  External 4.0V
             NET ---/
             VCC ----- +4.0V
 D2 --------- RST   |
 D3 ---------  RX  === Capacitor (35V, 3300µF)
 D4 ---------  TX   |
GND --------- GND ----- GND
,