В следующих руководствах демонстрируется использование функциональности LTE CAT-M1 и NB-IoT в модулях Pycom с поддержкой сотовой связи.
Наши сотовые модули поддерживают как LTE CAT-M1, так и NB-IoT: это новые сотовые протоколы с низким энергопотреблением, большой дальностью действия. Они не совпадают с полной версией 2G / 3G / LTE, поддерживаемой сотовыми телефонами, и требуют, чтобы ваши местные операторы поддерживали их. На момент написания статьи подключения CAT-M1 и NB-IoT не были широко доступны, поэтому обязательно уточните у местных операторов, есть ли доступ там, где вы находитесь.
Убедитесь, что у вас установлена последняя версия прошивки модема 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. Их сохранение приведет к неустойчивой работе и более высокому потреблению тока, особенно в состоянии глубокого сна.
Поставляемые модули Pycom поддерживают только CAT-M1; чтобы использовать NB-IoT, вам необходимо установить другую прошивку для модема Sequans. Инструкции для этого можно найти здесь.
Пример с 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 вашего модуля 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), поэтому вам больше не нужно загружать какие-либо скрипты в свой модуль. Встроенный модуль обновления будет иметь приоритет над всеми загруженными скриптами.
Пожалуйста, начните со следующих шагов:
Файлы встроенного программного обеспечения модема защищены паролем: чтобы загрузить их, вы должны быть участником 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-карту у вас есть два варианта:
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
Если вы не можете использовать SD-карту для хранения образов встроенного программного обеспечения, вы можете использовать имеющийся у вас интерфейс UART с платой для загрузки файлов встроенного программного обеспечения с вашего компьютера.
Вам понадобится следующее программное обеспечение, установленное на вашем компьютере:
Вам также необходимо скачать следующие скрипты Python: https://github.com/pycom/pycom-libraries/tree/master/lib/sqnsupgrade
Важное замечание: При первом обновлении модема, даже если вы ранее обновляли его с помощью старого метода обновления прошивки, вы ДОЛЖНЫ использовать метод обновления «recovery», описанный ниже. В противном случае вы рискуете повредить модуль.
Вы можете загрузить файл updater.elf во флэш-файловую систему модуля, а не загружать его через UART напрямую в модем, что немного увеличит скорость обновления.
Вам необходимо подготовить свой модем к режиму обновления с помощью следующих команд.
Чтобы использовать метод восстановления:
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.info()
Если модем находится в режиме приложения, отображается текущая версия прошивки. Это заменяет команду version(), которая доступна только в режиме uart(). Необязательные параметры: sqnsupgrade.info(verbose=False, debug=False)
sqnsupgrade.run (load_fff = True)
Новый необязательный параметр командной строки load_fff для команды sqnsupgrade.run(). Разработан в качестве внутреннего флага. Должен применяться только по рекомендации службы поддержки Pycom.
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru