Modem-stretch: различия между версиями

Нет описания правки
Строка 15: Строка 15:
Модемы подключены к процессору по:
Модемы подключены к процессору по:
*uart - все;
*uart - все;
*usb - 3G/4G/NB-IOT.
*usb + uart - 3G/4G/NB-IOT.
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]].
Подробнее о подключении модемов и низкоуровневом взаимодействии с ними можно почитать в разделе [[Special:MyLanguage/#низкоуровневая-работа с модулем через at-команды|#Низкоуровневая работа с модулем через AT-команды]].


Строка 43: Строка 43:


=== Низкоуровневая работа по uart === <!--T:4-->
=== Низкоуровневая работа по uart === <!--T:4-->
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту ''/dev/ttyGSM''. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются драйвером ''cdc_acm'').
Любое взаимодействие с модемом так или иначе сводится к отправке AT-команд через последовательный порт модема. Все модемы подключаются к порту ''/dev/ttyGSM''. 3G модемы, помимо этого, подключаются к портам ''/dev/ttyACM'''X''''' (порты создаются usb-драйвером ''cdc_acm'').


==== Подключение в linux ==== <!--T:4-->
==== Подключение в linux ==== <!--T:4-->
Строка 64: Строка 64:
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device
[ 6103.182338] cdc_acm 2-1.2:1.12: ttyACM6: USB ACM device
</syntaxhighlight>
</syntaxhighlight>
Соответственно, в данном случае 3G модем подключен к портам /dev/ttyACM0 - /dev/ttyACM6.


астройки: 115200, 8N2, '''no hardware flow control'''
==== Отправка AT-команд ==== <!--T:4-->
Для всех модемов рабочими настройками связи являются: 115200-8-N-1, '''no hardware flow control''' (аппаратный контроль потока должен быть обязательно выключен). Некоторые модели модемов (например, sim5300e, sim7000e) могут сами определять baudrate, установленный в данный момент. Для этого нужно послать в последовательный порт несколько символов (например, "AAAAAAAAAAT").


<!--T:5-->
<!--T:52-->
Внутри контроллера модем подключён к процессору одним из двух способов:
Для работы в интерактивном режиме рекомендуем использовать утилиту minicom:
* по порту UART (устройство ''/dev/ttyGSM'' (ранее: ''/dev/ttyAPP0'')) - все модемы, включая 3G;
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
* по порту USB (устройства ''/dev/ttyACM0''-''/dev/ttyACM6'') - только 3G.
<pre>
Работать с модемом на низком уровне можно, посылая команды на порт ''/dev/ttyGSM'' или ''/dev/ttyACM0'' соответственно.
# minicom -s /dev/ttyGSM
Для 3G-связи порт UART не подходит в силу ограничения пропускной способности UАRT-канала, следует использовать ACM-порт /dev/ttyACM0.
</pre>
 
[[Special:MyLanguage/Файл:Minicom_settings.png|Настройки Minicom]]
<!--T:6-->
* Зайти в настройки minicom (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить нужный порт ''/dev/ttyGSM'' (в нашем случае), скорость и чётность - ''115200-8-N-1'', ''Hardware flow control - No'', ''Software flow control - No''
Также к процессору подключены управляющие пины модема PWRKEY и RESET, с помощью которых можно выключить или перезагрузить модем. Обычно работать с ними напрямую не требуется - перезагрузка производится утилитой '''wb-gsm''' (смотрите ниже), но также реализован прямой доступ к этим контактам через GPIO (подробнее читайте [[Special:MyLanguage/GPIO|GPIO]], ищите в таблице соответствующие названия).
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
 
* Далее запускать как '''minicom /dev/ttyGSM''' (все параметры будут сразу браться из профиля с названием ''/dev/ttyGSM'', который мы ранее создали)
=== Включение модуля === <!--T:7-->
* Первой вашей командой должна стать ''AAAAAAAAAT'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся.
 
* Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK'''.
<!--T:8-->
По умолчанию, модем автоматически включается при загрузке контроллера. Потом его можно выключать и перезагружать утилитой '''wb-gsm''' (утилита включена в стандартный образ в пакет '''wb-utils''').
<syntaxhighlight lang="bash">
$ wb-gsm on #  включение устройства
$ wb-gsm off #  выключение устройства
$ wb-gsm reset #  перезагрузка включенного устройства
$ wb-gsm restart_if_broken #  включение или перезагрузка, если модем не отвечает
</syntaxhighlight>


=== Модемы SIM7000E 2G/NB-IoT === <!--T:9-->
=== Модемы SIM7000E 2G/NB-IoT === <!--T:9-->
Строка 308: Строка 302:
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]].
Ознакомьтесь с инструкцией - [[Special:MyLanguage/Работа с последовательным портом из Linux|Работа с последовательным портом из Linux]].
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.
Обратите внимание на настройки: 115200, 8N2, '''no hardware flow control'''.
<!--T:52-->
Для интерактивного режима:
* запускаем '''minicom''' с ключём, создающим профиль работы с портом (скорость передачи данных, чётность, и т.д.):
<pre>
$ minicom -s /dev/ttyGSM
</pre>
[[Special:MyLanguage/Файл:Minicom_settings.png|Настройки Minicom]]
<!--T:53-->
* Зайти в настройки (нажать ''Ctrl+A'', затем ''O''), выбрать пункт ''Serial port setup'', там установить порт ''/dev/ttyGSM'', скорость и чётность - ''115200, 8N1'', ''Hardware flow control - No'', ''Software flow control - No''
* Сохранить настройки: ''Save setup as _dev_ttyGSM''
* Далее запускать как '''minicom /dev/ttyGSM''' (все параметры будут сразу браться из профиля с названием ''/dev/ttyGSM'', который мы ранее создали)
* Первой вашей командой должна стать ''AAAAAAAAAT'' - с её помощью модуль распознает скорость, с которой мы к нему обращаемся (смотрите [[Special:MyLanguage/SIM900R|SIM900R]])
* Второй командой выполните просто ''AT''. Вам должен прийти ответ '''OK'''


==== Примеры команд ==== <!--T:54-->
==== Примеры команд ==== <!--T:54-->
wb_editors
556

правок