serial
Опции конфигурации модуля последовательного порта: Включено, Эхо, Режим, GPIO приема, GPIO передачи, Скорость бод, Тайм-аут и Переопределить консольный последовательный порт. Конфигурация модуля Serial использует административное сообщение, отправляющее protobuf ConfigModule.Serial.
Это интерфейс для общения и управления вашим устройством Meshtastic через последовательный порт. Модуль можно установить в разные режимы, каждый из которых предназначен для различных сценариев использования.

Значения конфигурации модуля Serial
Включено
Включает модуль последовательного порта.
Эхо
Если установлено, любые отправляемые вами пакеты будут эхом возвращены на ваше устройство.
Режим
По умолчанию 'Simple'.
Доступные значения:
DEFAULTсоответствуетSIMPLE.SIMPLEработает как простой туннель UART. Что входит, то и выходит, требуется канал с именем'serial'.PROTOпредоставляет Protobuf Client API на этом последовательном порту. Вы можете использовать это для подключения с другого устройства, см. библиотеку клиента Arduino и Справочник API.TEXTMSGпозволит вам отправить строку через последовательный порт на устройство, которая будет транслироваться как текстовое сообщение в канал по умолчанию. Любое текстовое сообщение, полученное из mesh-сети, будет отправлено на последовательный порт в следующем формате:<Short Name>: <text>.NMEAбудет выводить поток данных NMEA 0183, содержащий внутренние GPS-координаты или фиксированное положение, а также местоположения других узлов в качестве путевых точек (WPL).CALTOPOбудет выводить путевые точки NMEA 0183 (WPL) каждые 10 секунд для всех действительных местоположений узлов для использования в CalTopo / SARTopo.WS85будет анализировать и вычислять данные о скорости ветра, полученные через последовательный порт от Ecowitt WS85. Передает значения через телеметрический пакет каждые 5 минут. Требуется модификация метеодатчика WS85 (https://hackaday.io/project/196990-meshtastic-ultrasonic-anemometer-wx-station). Если опция недоступна в приложении, включите с помощью команды CLI"meshtastic --set serial.mode 6".
:::tip
Режим PROTO не показывает очевидного вывода при пассивном наблюдении через монитор последовательного порта. При тестировании рассмотрите использование Python CLI с опцией --listen, чтобы просмотреть поток protobuf.
:::
Пин GPIO приема
Установите пин GPIO на пин RXD, который вы настроили.
:::tip
На RAK4631 с платой RAK19007 и некоторых версиях плат RAK19003 по умолчанию используются пины TXD1 (16) и RXD1 (15). Для этого устройства необходимо установить режим GPS в Not_Present. Для других версий платы RAK19003 доступны пины TXD0 (20) и RXD0 (19).
:::
Пин GPIO передачи
Установите пин GPIO на пин TXD, который вы настроили.
:::tip Подключите пин TX к пину RX другого устройства и наоборот. Соедините их земли друг с другом (не обязательно, если они оба подключены к одному источнику питания USB). :::
Скорость бод
Скорость бод последовательного порта.
Тайм-аут
Время ожидания перед тем, как пакет будет считаться "завершенным".
Переопределить консольный последовательный порт
Если установлено в true, это позволит модулю Serial управлять (устанавливать скорость бод) и использовать основной USB-серийный интерфейс для вывода. Это полезно только для режимов NMEA и CalTopo и может работать странно или вообще не работать в других режимах. Установка пинов TX/RX в конфигурации модуля Serial приведет к игнорированию этой настройки.
:::tip После изменения настроек модуля требуется сброс, чтобы они вступили в силу. :::
Доступность конфигурации модуля Serial для клиентов
<Icon icon="mdi:android" height="1.5rem" style={{ marginRight: "0.25rem" }} /> Android
</>
),
value: "android",
},
{
label: (
<>
<Icon icon="mdi:apple" height="1.5rem" style={{ marginRight: "0.25rem" }} /> Apple
</>
),
value: "apple",
},
{
label: (
<>
<Icon icon="mdi:terminal" height="1.5rem" style={{ marginRight: "0.25rem" }} /> CLI
</>
),
value: "cli",
},
{
label: (
<>
<Icon icon="mdi:internet" height="1.5rem" style={{ marginRight: "0.25rem" }} /> Web
</>
),
value: "web",
},
]}>
Android
:::info
Опции конфигурации модуля Serial доступны для Android.
- Откройте приложение Meshtastic
- Перейдите в: Вертикальное многоточие (3 точки в правом верхнем углу) > Конфигурация радио > Serial
:::
Apple
:::info Все опции конфигурации модуля Serial доступны в iOS, iPadOS и macOS в разделе Настройки > Конфигурация модулей > Serial. :::
CLI
:::info
Все опции конфигурации модуля Serial доступны в Python CLI. Примеры команд ниже:
:::
| Настройка | Допустимые значения | По умолчанию |
|---|---|---|
| serial.enabled | true, false |
false |
| serial.echo | true, false |
false |
| serial.mode | DEFAULT SIMPLE PROTO TEXTMSG, NMEA, CALTOPO |
DEFAULT |
| serial.rxd | GPIO Pin Number 1-39 | Default of 0 is Unset |
| serial.txd | GPIO Pin Number 1-33 | Default of 0 is Unset |
| serial.baud | BAUD_DEFAULT BAUD_110 BAUD_300 BAUD_600 BAUD_1200 BAUD_2400 BAUD_4800 BAUD_9600 BAUD_19200 BAUD_38400 BAUD_57600 BAUD_115200 BAUD_230400 BAUD_460800 BAUD_576000 BAUD_921600 |
BAUD_DEFAULT (38400) |
| serial.timeout | integer (milli seconds) |
Default of 0 corresponds to 250 ms |
| serial.override_console_serial_port | true, false |
false |
:::tip
Поскольку устройство перезагружается после каждой команды, отправленной через CLI, рекомендуется при установке нескольких значений в разделе конфигурации объединять команды в одну.
```shell title="Example:" meshtastic --set serial.enabled true --set serial.echo true
:::
```shell title="Enable / Disable Module"
meshtastic --set serial.enabled true
meshtastic --set serial.enabled false
```shell title="Enable / Disable Echo" meshtastic --set serial.echo true meshtastic --set serial.echo false
```shell title="Set Mode"
meshtastic --set serial.mode DEFAULT
meshtastic --set serial.mode PROTO
```shell title="Set RXD to GPIO pin number 7" meshtastic --set serial.rxd 7
```shell title="Set TXD to GPIO pin number 28"
meshtastic --set serial.txd 28
```shell title="Set Baud Rate" meshtastic --set serial.baud BAUD_DEFAULT meshtastic --set serial.baud BAUD_576000
```shell title="Set Timeout to 15 milli seconds"
meshtastic --set serial.timeout 15
Web
:::info Все опции конфигурации модуля Serial доступны в веб-интерфейсе. :::
:::warning Доступ к GPIO фундаментально опасен, поскольку неверные опции могут физически повредить или уничтожить ваше оборудование. Убедитесь, что вы полностью понимаете схему вашего устройства, прежде чем пробовать это, поскольку мы не предоставляем гарантию. Используйте на свой страх и риск.
Этот модуль требует подключения периферийного устройства к вашему устройству. Без него он не будет работать. :::
Примеры
По умолчанию используются RX GPIO 16 и TX GPIO 17.
Основное использование
- Включите модуль, установив
serial.enabledв1. - Установите пины (
serial.rxd/serial.txd) для предпочитаемых GPIO-приемника и передатчика. Для плат tbeam рекомендуется использовать: - RXD 13
- TXD 14
- Установите
serial.timeoutна время ожидания перед тем, как пакет будет считаться "завершенным". - (Необязательно) установите
serial.modeвTEXTMSG, если хотите отправлять сообщения в/из общего канала текстовых сообщений. Для более точного управления используйте режимPROTO, например, в сочетании с библиотекой клиента Arduino. -
Подключитесь к устройству через последовательный интерфейс на
38400 8N1. С помощью tio –tio -e -b 38400 -f none /dev/myserialport -
Отправьте пакет длиной до 237 байт. Он будет транслироваться по каналу по умолчанию.
- (Необязательно) Установите
serial.echoв1, и любое сообщение, которое вы отправите, будет эхом возвращено на ваше устройство.
Подключение PIR-датчика к внешнему микроконтроллеру
Ниже приведены примеры использования Raspberry Pi Pico или Arduino Mini Pro, подключенных к PIR-датчику для обнаружения движения. При обнаружении движения сообщение отправляется по последовательному интерфейсу на T-Beam. T-Beam передает сообщение в виде текста по каналу по умолчанию с использованием модуля serial в режиме TXTMSG.
Конфигурация программного обеспечения Meshtastic
- Модуль Serial включен, режим: TEXTMSG
- GPIO пины (Для T-Beam) RX 13, TX 14
- 38400 Бод
Спецификация компонентов для Raspberry Pi Pico
- Raspberry Pi Pico с запущенным CircuitPython
- T-Beam V1.1 с запущенным Meshtastic
- PIR-датчик (Adafruit Breadboard Model)
Схема подключения Raspberry Pi Pico

- Пин TX 14 на T-Beam к пину RX 2 на Pico
- Пин RX 13 на T-Beam к пину TX 1 на Pico
- Пины Vcc и GND PIR-датчика к Vcc/GND на макетной плате соответственно
- Линия срабатывания PIR-датчика к GPIO28 Pico (пин 34 Pico)
- Пин GND на T-Beam к пину GND 38 на Pico
- Пин GND 38 на Pico к общей шине земли на макетной плате
- Пин 3V3 36 на Pico к положительной шине напряжения на макетной плате
- Необязательно, для питания Pico от T-Beam вместо USB:
- Подключите пин 5V на T-Beam к пину Vbus 40 на Pico
Код на CircuitPython
# Setup PIR sensor on GP28
pir = digitalio.DigitalInOut(board.GP28)
pir.direction = digitalio.Direction.INPUT
# Setup serial UART connection TX/RX on (GP0/GP1)
uart = busio.UART(board.GP0, board.GP1, baudrate=38400, timeout=0)
while True:
if(pir.value == True):
uart.write(bytes("Motion Detected", "ascii"))
time.sleep(30)
time.sleep(0.5)
Спецификация компонентов для Arduino Mini Pro
- Arduino Mini Pro с загруженным примером скетча ниже.
- T-Beam V1.1 с запущенным Meshtastic
- PIR-датчик (Adafruit Breadboard Model)
Схема подключения Arduino Mini Pro

- Пин RX 13 T-BEAM к пину TX на ARDUINO MINI
- Пин TX 14 T-BEAM к пину RX на ARDUINO MINI
- Пин 3.3V T-BEAM к пину 3.3V на ARDUINO MINI
- Пин GND T-BEAM к пину GND на ARDUINO MINI
- Пин 2 ARDUINO MINI к пину OUT на PIR-датчике
- Пин 3.3V ARDUINO MINI к 3.3V на PIR-датчике
- Пин GND ARDUINO MINI к пину GND на PIR-датчике
Код для Arduino Mini Pro
int LED = 13; // the pin to which the LED is connected
int PIR = 2; // the pin to which the sensor is connected
int previousState = LOW; // previous state of the sensor
void setup() {
pinMode(LED, OUTPUT); // initialize the LED as an output
pinMode(PIR, INPUT); // initialize the sensor as an input
Serial.begin(9600); // initialize serial communication
}
void loop(){
int currentState = digitalRead(PIR); // read the current state of the sensor
if (currentState != previousState) { // check if the state has changed
if (currentState == HIGH) { // check if there is motion
digitalWrite(LED, HIGH); // turn the LED on
Serial.println("Motion Detected");
}
else {
digitalWrite(LED, LOW); // turn the LED off
Serial.println("No Motion");
}
previousState = currentState; // update the previous state
}
delay(100); // small delay to avoid false sensor readings
}