Каталог

Примеры LTE

В следующих руководствах демонстрируется использование функциональности LTE CAT-M1 и NB-IoT в модулях Pycom с поддержкой сотовой связи.

Наши сотовые модули поддерживают как LTE CAT-M1, так и NB-IoT: это новые сотовые протоколы с низким энергопотреблением, большой дальностью действия. Они не совпадают с полной версией 2G / 3G / LTE, поддерживаемой сотовыми телефонами, и требуют, чтобы ваши местные операторы поддерживали их. На момент написания статьи подключения CAT-M1 и NB-IoT не были широко доступны, поэтому обязательно уточните у местных операторов, есть ли доступ там, где вы находитесь.

CAT-М1

Убедитесь, что у вас установлена последняя версия прошивки модема Sequans для лучшей совместимости с сетью. Инструкции можно найти здесь.

Услуга LTE Cat M1 предоставляет полный IP-доступ через сотовый модем.

После завершения функции lte.connect() все функции IP-сокетов, включая SSL, будут маршрутизироваться через это соединение. Это означает, что любой код, использующий WLAN, можно адаптировать к Cat M1, сначала добавив шаг настройки соединения, а затем отключившись.

Например, чтобы подключиться через LTE Cat M1 к веб-серверу Google по безопасному SSL:

import socket

import ssl

import time

from network import LTE

lte = LTE() # подтверждение объекта LTE

lte.attach() # подключить сотовый модем к базовой станции

while not lte.isattached():

    time.sleep(0.25)

lte.connect()       # начать сессию и получить IP-адрес

while not lte.isconnected():

    time.sleep(0.25)




s = socket.socket()

s = ssl.wrap_socket(s)

s.connect(socket.getaddrinfo(‘www.google.com‘, 443)[0][-1])

s.send(b"GET / HTTP/1.0 ")

print(s.recv(4096))

s.close()




lte.disconnect()

lte.dettach()

Это также относится к нашим примерам MQTT и AWS.

ВАЖНО: После инициализации радиостанции LTE перед переходом в спящий режим ее необходимо деинициализировать, чтобы обеспечить минимальное энергопотребление. Радиостанция LTE постоянно получает питание и допускает случаи использования, которые требуют, чтобы система была выведена из спящего режима из-за события в сети LTE (например, полученных данных или SMS).

При совместном использовании платы расширения и FiPy, RTS / CTS ДОЛЖНЫ быть удалены, поскольку эти контакты используются радиостанцией LTE. Их сохранение приведет к неустойчивой работе и более высокому потреблению тока, особенно в состоянии глубокого сна.

NB-IoT

Класс LTE для IoT

Поставляемые модули Pycom поддерживают только CAT-M1; чтобы использовать NB-IoT, вам необходимо установить другую прошивку для модема Sequans. Инструкции для этого можно найти здесь.

Использование NB-IoT 

Пример с Vodafone:

from network import LTE

lte = LTE()

lte.attach(band=20, apn="nb.inetd.gdsp")

while not lte.isattached():

    time.sleep(0.25)

lte.connect()       # начать сеанс данных и получить IP-адрес

while not lte.isconnected():

    time.sleep(0.25)

# теперь используем сокет как обычно

ВАЖНО: После инициализации радиостанции LTE перед переходом в спящий режим ее необходимо деинициализировать, чтобы обеспечить минимальное энергопотребление. Радиостанция LTE постоянно получает питание и допускает случаи использования, которые требуют, чтобы система была выведена из спящего режима из-за события в сети LTE (например, полученных данных или SMS).

При совместном использовании платы расширения и FiPy, RTS / CTS ДОЛЖНЫ быть удалены, поскольку эти контакты используются радиостанцией LTE. Их сохранение приведет к неустойчивой работе и более высокому потреблению тока, особенно в состоянии глубокого сна.

Модуль IMEI

Чтобы получить IMEI вашего модуля Pycom с поддержкой сотовой связи, вам необходимо убедиться, что вы используете прошивку версии 1.17.0.b1 или выше. Вы можете проверить версию прошивки, запустив следующий код на своем устройстве через интерактивный REPL.

>>> import os

>>> os.uname()

(sysname=‘GPy‘, nodename=‘GPy‘, release=‘1.17.0.b1‘, version=‘v1.8.6-849-d0dc708 on 2018-02-27‘, machine=‘GPy with ESP32‘)

Если у вас есть подходящая прошивка, вы можете запустить следующий код, чтобы получить номер IMEI ваших модулей:

from network import LTE

lte = LTE()

lte.send_at_cmd(‘AT+CGSN=1‘)

Вы получите строку, подобную этой: +CGSN: "354347xxxxxxxxx" OK. Значение между двойными кавычками - это ваш IMEI.

Обновление прошивки модема

Эта статья относится только к платам GPy, FiPy и G01

Важное замечание: При первом обновлении модема, даже если вы ранее обновляли его с помощью старого метода обновления прошивки, вы ДОЛЖНЫ использовать метод обновления «recovery», описанный ниже. В противном случае вы рискуете повредить свой модуль.

Пожалуйста, также используйте файл upgdiff_33080-to-39529.dup (1.2M) из архива.

import sqnsupgrade

sqnsupgrade.run(‘upgdiff_33080-to-39529.dup‘, ‘updater.elf‘)

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

Средство обновления теперь интегрировано в последнюю стабильную версию прошивки (мы вскоре опубликуем новую версию прошивки для разработки и Pybytes), поэтому вам больше не нужно загружать какие-либо скрипты в свой модуль. Встроенный модуль обновления будет иметь приоритет над всеми загруженными скриптами.

Пожалуйста, начните со следующих шагов:

  1. Обновите инструмент обновления прошивки Pycom до последней версии.
  2. Выберите Firmware Type stable в окне связи для обновления до версии v1.18.1.r1

Файлы встроенного программного обеспечения модема защищены паролем: чтобы загрузить их, вы должны быть участником forum.pycom.io и иметь доступ к: Announcements & News –> Announcements only for members.

Вы можете найти различные версии прошивок, доступные здесь.

В этом руководстве мы используем CATM1-39529.zip и NB1-37781.zip в качестве примеров. 

После распаковки zip-архива вы увидите, что каждый пакет прошивки содержит два файла, один из которых является файлом прошивки (например, CATM1-39529.dup или NB1-37781.dup) и файл updater.elf, который требуется при использовании метода обновления «recovery» или в случае, если предыдущее обновление не удалось и модем находится в режиме восстановления.

Обратите внимание, что файл updater.elf весит около 300 КБ, поэтому вы легко можете сохранить его внутри файловой системы флэш-модуля. Файлы с прошивкой НЕ будут помещаться в флэш-файловую систему на модуле, поэтому вам нужно либо использовать SD-карту, либо загрузить их прямо с вашего компьютера.

Чтобы обновить предыдущую прошивку CAT-M1 38638, вы можете просто загрузить файл upgdiff_38638-to-39529.dup (452K) из архива CATM1-39529.zip в каталог /flash вашего модуля и запустить:

import sqnsupgrade

sqnsupgrade.run(‘upgdiff_38638-to-39529.dup‘)

Если вы обновляете прошивку Sequans на вашем модуле в первый раз, используйте вместо этого файл upgdiff_33080-to-39529.dup (1.2M) из того же архива. Подобные пакеты обновления доступны для прошивок NB-IoT.

Через SD-карту

Для переноса файлов прошивки на SD-карту у вас есть два варианта:

  1. Отформатируйте SD-карту, как в файловой системе FAT, а затем скопируйте файлы на карту с помощью компьютера.
  2. Убедитесь, что ваша SD-карта имеет MBR и один основной раздел, отформатируйте его непосредственно на модуле, смонтируйте и перенесите файлы прошивки на SD-карту по FTP. Убедитесь, что передача прошла успешно, и что каждый файл в модуле имеет тот же размер, что и исходный файл на вашем ПК.
from machine import SD

sd = SD()

os.mkfs(sd)            # форматировать SD карту

os.mount(sd, ‘/sd‘)    # смонтировать

os.listdir(‘/sd‘)      # отобразить содержимое

После того, как вы скопировали/загрузили файлы прошивки на SD-карту, вы можете прошить LTE-модем.

Чтобы установить прошивку CAT-M1 на ваше устройство, используя метод восстановления:

import sqnsupgrade

sqnsupgrade.run(‘/sd/CATM1-39529.dup‘, ‘/sd/updater.elf‘)

Чтобы загрузить прошивку NB-IoT на ваше устройство, используя метод восстановления:

import sqnsupgrade

sqnsupgrade.run(‘/sd/NB1-37781.dup‘, ‘/sd/updater.elf‘)

Обратите внимание, что вы можете напрямую загрузить нужную прошивку на свой модуль: нет необходимости обновлять ее до последней версии прошивки CAT-M1 перед переключением на NB-IoT.

Если вы уже установили SD-карту, пожалуйста, используйте путь, который вы использовали при ее установке. В противном случае, если указан абсолютный путь, отличный от /flash, скрипт автоматически подключит SD-карту по указанному пути.

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

<<< Welcome to the SQN3330 firmware updater >>>

Attempting AT wakeup...

Starting STP (DO NOT DISCONNECT POWER!!!)

Session opened: version 1, max transfer 8192 bytes

Sending 54854 bytes: [########################################] 100%

Bootrom updated successfully, switching to upgrade mode

Attempting AT auto-negotiation...

Session opened: version 1, max transfer 2048 bytes

Sending 306076 bytes: [########################################] 100%

Attempting AT wakeup...

Upgrader loaded successfully, modem is in upgrade mode

Attempting AT wakeup...

Starting STP ON_THE_FLY

Session opened: version 1, max transfer 8192 bytes

Sending 5996938 bytes: [########################################] 100%

Code download done, returning to user mode

Resetting (DO NOT DISCONNECT POWER!!!)................

Upgrade completed!

Here‘s the current firmware version:




SYSTEM VERSION

==============

  FIRMWARE VERSION

    Bootloader0  : 5.1.1.0 [33080]

    Bootloader1  : 5.1.1.0 [38638]

    Bootloader2* : 5.1.1.0 [38638]

    NV Info      : 1.1,0,0

    Software     : 5.1.1.0 [38638] by robot-soft at 2018-08-20 09:51:46

    UE           : 5.0.0.0d

  COMPONENTS

    ZSP0         : 1.0.99-13604

    ZSP1         : 1.0.99-12341

Обратите внимание, что обновление встроенного ПО может «зависать» на 7-10%, а затем на 99%. Это не признак сбоя: модему приходится выполнять некоторые задачи, а программа обновления будет ожидать завершения этих задач. Если процесс обновления не будет длиться более 5 минут, не прерывайте процесс, так как вам придется начинать заново. Также возможно придётся подождать несколько минут, прежде чем последует реакция на команду AT wakeup.

После того, как вы один раз обновили свой модем, используя метод восстановления, вы можете снова прошить его, используя только файл CATM1-38638.dup или NB1-37781.dup, без указания файла updater.elf. Однако в случае сбоя обновления ваш модем может оказаться в режиме восстановления, и вам снова понадобится файл updater.elf. Программа обновления предложит вам использовать файл Updater.elf.

Пример вывода с использованием только файла прошивки:

<<< Welcome to the SQN3330 firmware updater >>>

Attempting AT wakeup...




Starting STP ON_THE_FLY

Session opened: version 1, max transfer 8192 bytes

Sending 5996938 bytes: [########################################] 100%

Code download done, returning to user mode

Resetting (DO NOT DISCONNECT POWER!!!)............................................................................

Upgrade completed!

Here‘s the current firmware version:




SYSTEM VERSION

==============

  FIRMWARE VERSION

    Bootloader0  : 5.1.1.0 [33080]

    Bootloader1* : 5.1.1.0 [38638]

    Bootloader2  : 5.1.1.0 [38638]

    NV Info      : 1.1,0,0

    Software     : 5.1.1.0 [38638] by robot-soft at 2018-08-20 09:51:46

    UE           : 5.0.0.0d

  COMPONENTS

    ZSP0         : 1.0.99-13604

    ZSP1         : 1.0.99-12341

Через последовательный интерфейс UART

Если вы не можете использовать SD-карту для хранения образов встроенного программного обеспечения, вы можете использовать имеющийся у вас интерфейс UART с платой для загрузки файлов встроенного программного обеспечения с вашего компьютера.

Вам понадобится следующее программное обеспечение, установленное на вашем компьютере:

  1. Python 3, если он не доступен напрямую через дистрибьютора вашей ОС
  2. PySerial

Вам также необходимо скачать следующие скрипты Python: https://github.com/pycom/pycom-libraries/tree/master/lib/sqnsupgrade

Важное замечание: При первом обновлении модема, даже если вы ранее обновляли его с помощью старого метода обновления прошивки, вы ДОЛЖНЫ использовать метод обновления «recovery», описанный ниже. В противном случае вы рискуете повредить модуль.

Вы можете загрузить файл updater.elf во флэш-файловую систему модуля, а не загружать его через UART напрямую в модем, что немного увеличит скорость обновления.

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

Команды для запуска на модуле Pycom

Чтобы использовать метод восстановления:

import sqnsupgrade

sqnsupgrade.uart(True)

Чтобы использовать метод восстановления с использованием файла updater.elf в модуле:

import sqnsupgrade

sqnsupgrade.uart(True,‘/flash/updater.elf‘)

Чтобы использовать обычный метод:

import sqnsupgrade

sqnsupgrade.uart()

После выполнения этой команды появится сообщение с просьбой закрыть порт.

Going into MIRROR mode... please close this terminal to resume the upgrade via UART

Команды для запуска на вашем компьютере

Вы должны закрыть terminal/Atom или консоль Visual Studio Code, чтобы запустить на своем компьютере следующие команды. Перейдите в каталог, в котором вы сохранили скрипты sqnsupgrade, и выполните в терминале следующие команды.

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

$ python3

Python 3.6.5 (default, Apr 25 2018, 14:23:58)

[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>

>>> import sqnsupgrade

>>> sqnsupgrade.run(‘Serial_Port‘, ‘/path/to/CATM1-39529.dup‘, ‘/path/to/updater.elf‘)

При использовании стандартного метода (или если на модуль был загружен файл Updater.elf):

$ python3

 Python 3.6.5 (default, Apr 25 2018, 14:23:58)

 [GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin

 Type "help", "copyright", "credits" or "license" for more information.

 >>>

 >>> import sqnsupgrade

 >>> sqnsupgrade.run(‘Serial_Port‘, ‘/path/to/CATM1-39529.dup‘)

Обратите внимание, что обновление встроенного ПО может «зависать» на 7-10%, а затем на 99%. Это не признак сбоя: модему приходится выполнять некоторые задачи, а программа обновления будет ожидать завершения этих задач. Если процесс обновления не будет длиться более 5 минут, не прерывайте процесс, так как вам придется начинать заново. Также возможно придётся подождать несколько минут, прежде чем последует реакция на команду AT wakeup.

Повторная попытка

В случае какого-либо сбоя или прерывания процесса обновления модема LTE вы можете повторить те же действия после выполнения полного сброса (т.е. отсоединения и повторного подключения питания платы): нажатия кнопки сброса недостаточно.

Класс Sqnsupgrade

Последняя версия класса sqnsupgrade имеет несколько дополнительных функций, которые помогают при отладке или обновлении модема.

sqnsupgrade.info()

Если модем находится в режиме приложения, отображается текущая версия прошивки. Это заменяет команду version(), которая доступна только в режиме uart(). Необязательные параметры: sqnsupgrade.info(verbose=False, debug=False)

sqnsupgrade.run (load_fff = True)

Новый необязательный параметр командной строки load_fff для команды sqnsupgrade.run(). Разработан в качестве внутреннего флага. Должен применяться только по рекомендации службы поддержки Pycom.

footer shadow
Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

compacttool logoadaptive site

accepted payment systems

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2015 - 2024г https://compacttool.ru