serial

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

Это интерфейс для общения и управления вашим устройством Meshtastic через последовательный порт. Модуль можно установить в разные режимы, каждый из которых предназначен для различных сценариев использования.

image

Значения конфигурации модуля Serial

Включено

Включает модуль последовательного порта.

Эхо

Если установлено, любые отправляемые вами пакеты будут эхом возвращены на ваше устройство.

Режим

По умолчанию 'Simple'.

Доступные значения:

:::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.

  1. Откройте приложение Meshtastic
  2. Перейдите в: Вертикальное многоточие (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.

Основное использование

  1. Включите модуль, установив serial.enabled в 1.
  2. Установите пины (serial.rxd / serial.txd) для предпочитаемых GPIO-приемника и передатчика. Для плат tbeam рекомендуется использовать:
  3. RXD 13
  4. TXD 14
  5. Установите serial.timeout на время ожидания перед тем, как пакет будет считаться "завершенным".
  6. (Необязательно) установите serial.mode в TEXTMSG, если хотите отправлять сообщения в/из общего канала текстовых сообщений. Для более точного управления используйте режим PROTO, например, в сочетании с библиотекой клиента Arduino.
  7. Подключитесь к устройству через последовательный интерфейс на 38400 8N1. С помощью tiotio -e -b 38400 -f none /dev/myserialport

  8. Отправьте пакет длиной до 237 байт. Он будет транслироваться по каналу по умолчанию.

  9. (Необязательно) Установите serial.echo в 1, и любое сообщение, которое вы отправите, будет эхом возвращено на ваше устройство.

Подключение PIR-датчика к внешнему микроконтроллеру

Ниже приведены примеры использования Raspberry Pi Pico или Arduino Mini Pro, подключенных к PIR-датчику для обнаружения движения. При обнаружении движения сообщение отправляется по последовательному интерфейсу на T-Beam. T-Beam передает сообщение в виде текста по каналу по умолчанию с использованием модуля serial в режиме TXTMSG.

Конфигурация программного обеспечения Meshtastic

Спецификация компонентов для Raspberry Pi Pico

Схема подключения Raspberry Pi Pico

image

Код на 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

image

Код для 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

}