Подключение NB-IoT модуля SIM7020E к ESP32

При разработке NB-IoT устройств основной акцент на пониженное энергопотребление. Ранее рассмотренный популярный чип SIM800 поребляет в пике до 2А и годится лишь для IoT устройств работающих от сети. Зато он минимум раза в три дешевле SIM7020E. SIM7020 потребляет в пике до 500 мА, что тоже немало, но современные батареи уже в состоянии переносить такую нагрузку за приемлемые деньги.

Энергопотребление SIM7020E

Стоит обратить внимание на тот момент, что напряжение питания модуля выбрано оптимально.

Модуль можно напрямую запитать от литиевой батареи большой емкости SB-D02 (ER34615) напряжением 3.6V. При этом чип ESP32 поддерживает диапазон напряжений 2.3 — 3.6V при токе до 500 мА, поэтому для этой «сладкой парочки» не нужно городить дополнительный обвес для понижения напряжения, на который будет расходоваться энергия батареи.

Вместе с тем модуль может работать от напряжения 3V батареи CR17450 и от этого-же напряжения может работать ESP32, т.е. опять-же можно сэкономить на цепи питания.

Тестовая схема

При сборке тестовой схемы с питанием SIM7020 от электросети использовались следующие компоненты:

  • SIM7020E developer board (цвет морской волны). Самый приемлемый по цене вариант представлен в этом магазине. Это плата скорее всего была сделана для SIM800 серии и туда впаяли чип SIM7020E, поскольку он аналогичен. Поэтому наличие редко испольуемых в IoT голосовых пинов. Стоит в районе 13 USD с доставкой. Варианты в других магазинах будут подороже.
  • SIM7020E developer board (красная). Более продвинутый вариант платы. Стоит 13,9 USD без доставки. На плате разведены пины к выходам чипа нужным именно при IoT разработке. Доступен в этом магазине.
  • MH ET Live Mini ESP32 — очень удобная плата. Старший брат Wemos D1 Mini ESP8266. Доступна в разных магазинах. Я брал по цене чуть меньше 5 USD с доставкой.
  • Блок питания 3.3V 700 мА. Компактный: 20х30 мм. Брал здесь по цене 0,75 USD с доставкой.

Красный модуль выглядит так:

SIM7020E с www.electrodragon.com

Остановлюсь подробнее на модуле для разработчика SIM7020E. Выглядит модуль так:

SIM7020E модуль для разработчика

Прелесть этой красоты в самодостаточности: 🙂

  • Поддержка диапазонов: B1 / B3 (МТС, Билайн, Теле2) / B5 / B8 (Мегафон) / B20 (МТС, Билайн, Теле2) / B28
  • Встроенный DC-DC step-down конвертер: 4.5 — 15 V.
  • Полноценная цепь питания со всеми необходимыми емкостями в соответствии с hardware design разработчика, компании Simcom.
  • Конвертер TTL уровней для RX/TX.
  • Возможность подключения внешней антенны.
  • Компактный размер: 28х35 мм.
  • Расстояние между «гребенками» кратно 2,54 мм, так что плата встает в девелоперскую плату для макетирования.

Схема идентичного модуля разработчика для чипа SIM800:

Схема модуля разработчика SIM7020E

Китайцы по запросу высылают эту схему. Она очень близка, но не та. Например, на плате хорошо виден танталовый конденсатор на 1000 uF, на схеме-же он отсутствует.

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

Схема DC-DC stepdown конвертера для SIM7020

Схема подключения девелоперского модуля SIM7020E к ESP32 следующая:

Схема соединения SIM7020E с ESP32 (Wemos D1 Mini)
Схема соединения SIM7020E с ESP32 (Wemos D1 Mini)
  • Я предпочитаю использовать hardware serial порт Serial2 ESP32.
  • NB-IoT SIM7020E запитывал от вышеописанного БП на 3.3V 700 mA.
  • Микроконтроллер ESP32 запитан от USB порта ПК.

Важный момент на котором нужно остановится подробнее — включение модуля. На SIM800 можно было закоротить пин PWR на землю и модуль стартовал при включении питания. В случае с SIM7020E этот вариант не работает.

SIM7020E стартует только при замыкании пина PWR на землю в течении минимум 800 мс. Если не сделать старт модуля таким образом, то при отправке AT команд модуль не отвечает.

В простейшем случае для запуска ставится кнопка. При разработке реальной схемотехники нужно задействовать один из выходов микроконтроллера для управления стартом модуля. Схема простого ключа для запуска SIM7020E приведена на схеме.

Отмечу такой момент. Если на модуле выполнить команду выключения питания AT+CPOWD=1, то модуль выключается, индикатор NET перестает моргать. Для вывода его из «выключенного» состояния можно:

  • Послать правильную последовательнось уровней на GPIO (на схеме использован GPIO18).
  • Или отправить любую AT команду и модуль «просыпается».

Программный код для SIM7020E под ESP32

Для отправки AT команд и получения результата написал простой код.

#include <HardwareSerial.h>
#define RXD2 16
#define TXD2 17
#define PWRKEY 18

void setup() {
  Serial.begin(115200);
  Serial.println("Initialize GSM modem...");
  Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);
  //Serial.println(F("Configuring to 9600 baud"));
  //Serial2.println("AT+IPR=9600"); // Set baud rate
  delay(500); // Short pause to let the command run
  //Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2); // Switch to 9600
  Serial.println("Serial GSM Txd is on GPIO" + String(TXD2));
  Serial.println("Serial GSM Rxd is on GPIO" + String(RXD2));

  pinMode(PWRKEY, OUTPUT);
  digitalWrite(PWRKEY, LOW);
  //powerOn();
}

// Power on the module. Inverse = true for a transistor key.
void powerOn() 
{
  digitalWrite(PWRKEY, HIGH);
  delay(2000);
  digitalWrite(PWRKEY, LOW);
  delay(30000);
  Serial.println("SIM7020E has turned on.");
}

void loop() {
  if (Serial2.available())
  {
    Serial.write(Serial2.read());
  }
  if (Serial.available())
  {
    String str = Serial.readString();
    str.trim();
    Serial.println("Command: " + str);
    if (str == "1") //Turn on SIM7020E
    {
      powerOn();
      //str = "ATI";
    }
    else
    {
      if (str == "0") //Turn off SIM7020E
      {
        str = "AT+CPOWD=1";
      }
    }
    Serial2.println(str);
  }
}

Последовательность запуска:

  • Включили питание.
  • Запутили модуль:
    • Либо нажать кнопку запуска модуля где-то на секунду,
    • Либо ввести 1 в строку терминала для запуска механизма управления пином PWRKEY модуля,
    • Либо отправить команду AT, чтобы «разбудить» модуль.

AT команды SIM7020E

Я тестировал работу SIM7020E с NB-IoT SIM-картой от МТС в Н.Новгороде. Важный момент, на SIM-карте должно быть явно указано NB-IoT. Обычная SIM-карта в NB-IoT сети не регистрируется. Ответы на AT команды реальные.

AT командаОтветКомментарии
AT+CMEE=2OKВключаем вывод расширенной диагностической информации
AT&WOKСохраняем в энергонезависимой памяти
AT+CPIN?+CPIN: READY
OK
Проверяем подключение SIM карты. Если READY, значит все нормально.
AT+CBAND?+CBAND: 1,3,5,8,20,28Проверяем поддержку чипом нужных диапазонов.
AT+CENG?+CENG: 1540,3,90, «04A8F3C9″,-96,-10, -86,2,3,»3B9F»,1,,-85Получаем список доступных базовых станций.
AT+CSQ+CSQ: 13,0Получаем информацию о уровне сигнала и % ошибок в канале.
Уровень сигнала:
0 -115 дБл и меньше
1 -112 дБл
2-30 -110..-54 дБл
31 -52 дБл и сильнее
99 – нет сигнала.
AT+CREG?+CREG: 0,1Проверяем регистрацию в сети. «0,1» — правильное значение.
Первый параметр:
0 – нет кода регистрации сети
1 – есть код регистрации сети
2 – есть код регистрации сети + доп параметры
Второй параметр:
0 – не зарегистрирован, поиска сети нет
1 – зарегистрирован, домашняя сеть
2 – не зарегистрирован, идёт поиск новой сети
3 – регистрация отклонена
4 – неизвестно
5 – роуминг
AT+COPS=?+COPS: (2,»25001″,»25001″,»25001″,9),(1,»25002″,»25002″,»25002″,9),,(0-4),(0-2)Отображение списка доступных операторов. Коды операторов:
25001: МТС
25002, 25014: МегаФон
25003: Ростелеком (НСС, Элайн)
….
25099: БилайнНТК
AT+COPS?+COPS: 0,2,»25001″,9На каком операторе зарегистрировался модем.
AT+CGATT? +CGATT: 1Состояние регистрации в GPRS сети. Правильно — 1. Если 0, нужно выполнить команду AT+CGATT=1

Полезные ссылки

Spread the love
Запись опубликована в рубрике IT рецепты с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *