Přeskočit na hlavní obsah

AT konzole přes USB-C

Tato stránka popisuje, jak komunikovat se zařízením GLIDER přes jeho konektor USB-C pomocí AT příkazů. AT konzole je doporučené rozhraní pro každodenní práci – zprovoznění, konfiguraci, aktualizace firmwaru – a nevyžaduje žádný speciální ladicí hardware.

tip

Hledáte živé logy a plný Zephyr shell? Použijte místo toho RTT konzoli (J-Link).

Jak to funguje

Interně zařízení GLIDER propojuje UART0 čipu nRF9151 s převodníkem FT234XD USB-UART. Ve chvíli, kdy zapojíte kabel USB-C, firmware převodník napájí a začne přijímat AT příkazy.

SignálPin nRF9151Funkce
UART0 TXP0.25nRF91 → FT234XD RXD
UART0 RXP0.24nRF91 ← FT234XD TXD
USB_ENP0.00Napájí FT234XD (aktivní v log. 1)
USB_DETECTP0.26Detekuje kabel (aktivní v log. 0)

UART0 pracuje na 1 000 000 baud (nastaveno v gauger_lte_nrf9151_common.dtsi).

Když zapojíte kabel USB-C, firmware:

  1. Detekuje kabel na USB_DETECT (P0.26).
  2. Po 50 ms zákmitové prodlevě zapne USB_EN (P0.00) – FT234XD se nastartuje.
  3. Aktivuje UART0 RX a začne zpracovávat AT příkazy.

Předpoklady

Systémové balíčky

sudo apt update
sudo apt install python3 python3-venv git

Členství ve skupině dialout

Linux omezuje přístup k sériovým portům na členy skupiny dialout. Přidejte se jednorázově:

sudo usermod -aG dialout $USER
caution

Aby se změna skupiny projevila, musíte se odhlásit a znovu přihlásit. Ověření:

groups | grep -o dialout
# should print: dialout

Ověření, že se kabel USB-C zaregistruje

Zapojte zařízení GLIDER a zkontrolujte:

ls -l /dev/ttyUSB0
# crw-rw---- 1 root dialout ... /dev/ttyUSB0

Pokud se /dev/ttyUSB0 neobjeví, zkontrolujte dmesg | tail -20 – měli byste vidět něco jako:

usb 1-2: new full-speed USB device
ftdi_sio 1-2:1.0: FTDI USB Serial Device converter detected
usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0

Pokud místo toho vidíte chyby, je problém na straně hardwaru (nesprávný kabel, vadný konektor, FT234XD není napájen).

Kompletní nastavení s virtuálním prostředím Pythonu

Doporučený způsob instalace nástrojů HARDWARIO pro příkazovou řádku je uvnitř virtualenv Pythonu. Tím se balíčky izolují od systémového Pythonu a funguje to na každé moderní distribuci Linuxu.

Krok 1 – Ověřte, že je nainstalován python3-venv

dpkg -l python3-venv | tail -1
# expect a line starting with "ii"

Pokud chybí:

sudo apt install python3-venv

Krok 2 – Vytvořte virtualenv

Ve složce svého projektu:

python3 -m venv .venv

Krok 3 – Aktivujte virtualenv

source .venv/bin/activate

Výzva vašeho shellu by nyní měla mít předponu (.venv).

Krok 4 – Nainstalujte potřebné balíčky

pip install --upgrade pip
pip install west pyserial loguru rttt

Co jste právě nainstalovali:

BalíčekÚčel
westMeta-build nástroj používaný Zephyr / nRF Connect SDK
pyserialKnihovna pro komunikaci po UART
loguruStrukturované logování
rtttKnihovna konzolového UI od HARDWARIO – zpracovává rámování @LOG:

Krok 5 – Ověřte instalaci

west --version
python3 -c "import serial, loguru, rttt; print('OK')"

Oba příkazy by měly proběhnout úspěšně.

Spuštění konzole

V terminálu, kde je virtualenv aktivní:

source .venv/bin/activate
west serial-console

Výchozí hodnoty, které west serial-console používá:

  • --port /dev/ttyUSB0
  • --baudrate 1000000

Pokud máte více zařízení, zadejte port explicitně:

west serial-console --port /dev/ttyUSB1 --baudrate 1000000

Konzole udržuje dva oddělené proudy:

  • AT příkazy a odpovědi – co napíšete a co zařízení GLIDER odpoví.
  • Zprávy @LOG: – živé řádky logu, které projdou po obrazovce, aniž by rušily příkazovou řádku.

Užitečné soubory, které west serial-console spravuje:

  • Historie příkazů: ~/.serial_console_history
  • Kompletní záznam sezení: ~/.serial_console_console
  • Trasování modemu: ~/.serial_console.mtrace

Rychlá kontrola funkčnosti

AT
# OK

ATI
# "GLIDER-R1.1"

Pokud se objeví OK, komunikujete se zařízením.

Základní AT příkazy

PříkazCo dělá
ATTest připojení – vrací OK
AT+CLACVypíše všechny registrované AT příkazy
AT$HELPStejné jako +CLAC, ale s nápovědou
ATIIdentifikace zařízení
AT+CGMINázev výrobce
AT+CGMMNázev produktu
AT+CGMRRevize firmwaru
AT+CGSNSériové číslo
AT$INFO?Výpis všech informačních polí (sériové číslo, claim token, …)
AT$REBOOTRestartuje zařízení
AT&WUloží konfiguraci do flash
AT&FObnovení výchozího nastavení (vymaže celou konfiguraci)

Konfigurace přes AT

AT$CONFIG=? # list every configurable key
AT$CONFIG="therm config show" # current thermometer slot bindings
AT$CONFIG="therm config 1 28ab12cd…" # bind slot 1 to a specific DS18B20
AT&W # save and reboot

Spouštění shell příkazů z AT konzole

AT konzole umí také vykonat jakýkoli příkaz Zephyr shellu přes AT$SHELL:

AT$SHELL="therm state"
AT$SHELL="therm scan"
AT$SHELL="therm scan --save"
AT$SHELL="kernel reboot cold"
AT$SHELL="log disable"
AT$SHELL="log enable wrn"

Aktualizace firmwaru

Pro programovou aktualizaci firmwaru viz referenci AT příkazy (AT$FW).

Údržba

AkcePříkaz
Opuštění virtualenvdeactivate
Aktualizace nástrojůpip install --upgrade west pyserial loguru rttt
Odstranění virtualenvrm -rf .venv
Výpis nainstalovaných balíčkůpip list

Řešení problémů

Permission denied na /dev/ttyUSB0

ls -l /dev/ttyUSB0
# crw-rw---- 1 root dialout ...

groups | grep dialout
# if "dialout" is missing:
sudo usermod -aG dialout $USER
# then log out / log in (or run: newgrp dialout)

Port je obsazený

Jiný terminál (screen, minicom, picocom, tio, …) jej již drží:

sudo lsof /dev/ttyUSB0
screen -ls && screen -wipe
killall screen minicom picocom tio 2>/dev/null

Logy přicházejí, ale AT příkazy se nevracejí zpět

Váš terminál posílá pouze CR místo LF nebo CRLF. west serial-console řeší konce řádků automaticky, jiné terminály ale nemusí. Například při použití tio:

tio -b 1000000 -m INLCRNL,OCRNL /dev/ttyUSB0

OCRNL mapuje odchozí CR na LF.

Alternativní terminály

Pokud west serial-console není k dispozici, funguje jakýkoli terminál, který zvládne 1 000 000 baud:

# tio (recommended alternative)
tio -b 1000000 -m INLCRNL,OCRNL /dev/ttyUSB0
# exit: Ctrl-T Q

# picocom
picocom -b 1000000 --omap crlf /dev/ttyUSB0
# exit: Ctrl-A Ctrl-X

# pyserial miniterm
python3 -m serial.tools.miniterm /dev/ttyUSB0 1000000
# exit: Ctrl-]