Arduino. ТехноСфера. Шаг-2. Скетч для ESP-12F WeMos D1 WiFi. Распознаваемые команды. Группа-2

На предыдущую страницу…

Команды группы-2

Команды, которые Устройство (ESP-12F WeMos D1 WiFi) пересылает сопряженному с ним Arduino UNO (с использованием Tx/Rx)

Список команд в группе-2:

  • serial_readln
  • serial_println

Важно!
1. В текущей версии реализован вариант, когда Устройство (ESP-12F WeMos D1 WiFi) соединяется (через Rx/Tx) только с одним Arduino UNO.
Но на случай дальнейшего расширения возможностей (к одному устройству присоединено несколько Arduino) — в скетче предусмотрена обязательная идентификация Arduino, сопряженных с Устройством.
2. В том случае, если требуется получить данные от всех сопряженных Arduino, то можно использовать специальный идентификатор: device_all (в скетче сопряженного Arduino такой идентификатор интерпретируется, как обращение к «этому Arduino»).


Команда serial_readln
Назначение команды: Отработка запроса на получение данных от сопряженного Arduino UNO.
Команда может содержать входные параметры.

1. Если входных параметров нет, то возвращаются состояния (и значения) всех пинов всех Arduino UNO, сопряженных с Устройством (в текущей версии — с одного).
Пример.
Команда:
http://192.168.0.102/serial_readln
(аналог этой команды: http://192.168.0.102/serial_readln?device_all z9z info_all)
Ответ (одна строка):
ED0EBECDA1A74DDB8B666351F57734D2: <[098BB20A0CEE4FBBAB7BDC71EB2A8778; pin_0=1; pin_1=1; pin_2=0; pin_3=1; pin_4=0; pin_5=0; pin_6=0; pin_7=0; pin_8=0; pin_9=0; pin_10=0; pin_11=0; pin_12=0; pin_13=1; pin_14=0; pin_15=0; pin_14=356; pin_15=338; pin_16=314; pin_17=315; pin_18=302; pin_19=317; pin_20=336; sys_var=;]>
где
ED0EBECDA1A74DDB8B666351F57734D2 — ID Устройства (ESP-12F WeMos D1 WiFi) ;
<[ — начало блока данных, полученных от Arduino;
]> — конец блока данных, полученных от Arduino;
098BB20A0CEE4FBBAB7BDC71EB2A8778 — ID Arduino, от которого получены данные;
pin_0=1;sys_var=; — собственно, данные, полученные от Arduino.

Каждый элемент данных (кроме sys_var) имеет следующий формат:
pin_НомерПина=Значение
Например: pin_13=1
Элементы данных (в блоке данных) разделены точкой с запятой.
Элемент данных sys_var будет более подробно рассмотрен в скетче для сопряженного Arduino.

2. Если требуется получить значение одного или нескольких пинов, то следует указать их конкретно в виде параметров (количество не ограничено — в разумных пределах).
В качестве разделителя параметров используется цепочка символов z9z .
Пример.
Команда:
http://192.168.0.102/serial_readln?device_all z9z pin_12 z9z pin_13 z9z pin_A2
Ответ (одна строка):
ED0EBECDA1A74DDB8B666351F57734D2: <[098BB20A0CEE4FBBAB7BDC71EB2A8778; pin_12=0; pin_13=1; pin_A2=340;]>

3. В том случае, если лимит времени на ожидание ответа (от сопряженного Arduino) исчерпан и данные от него не поступили, то формируется соответствующий ответ:
ED0EBECDA1A74DDB8B666351F57734D2: NO INFO

*****

Команда serial_writeln
Назначение команды: Отработка запроса на отсылку команд/данных к сопряженному Arduino UNO.

Команда содержит входные параметры.
Количество входных параметров: не менее 2-х.

Первый входной параметр: ID сопряженного Arduino (допускается использование значения device_all — см. выше).

Остальные параметры: перечень команд (содержащих соответствующие данные) для управления режимами и установки значений конкретных пинов (и переменной sys_var) в сопряженном Arduino UNO.

Одна команда serial_writeln может содержать неограниченное (в разумных пределах) кол-во параметров (но не менее 2-х).

В качестве разделителя параметров используется цепочка символов z9z .

Каждый параметр имеет следующий формат:
Пин=Значение
где
Пин — идентификатор пина;
Значение — новое значение для соответствующего пина.

Примеры идентификаторов пинов:
pin_13 — цифровой пин 13;
pin_A0 — аналоговый пин A0;
pin_3 — цифровой пин 3;
pin_W3 — цифровой пин 3 с поддержкой ШИМ (PWM).

Важно!
1. Допустимые значения для идентификаторов пинов:
pin_0 … pin_15 — цифровые пины;
LED_BUILTIN — встроенный светодиод (аналог pin_13);
pin_w3, pin_w5, pin_w6, pin_w9, pin_w10, pin_w11 — цифровые пины с поддержкой ШИМ;
pin_A0 … pin_A5 — аналоговые пины.

2. Допустимые (устанавливаемые) значения для пинов:
IN (или INPUT) — установка режима Input для заданного пина (pinMode);
OUT (или OUTPUT) — установка режима Output для заданного пина (pinMode);
LOW (или 0) — значение 0 (digitalWrite);
HIGH (или 1) — значение 1 (digitalWrite);
0 … 255 — для цифрового пина с поддержкой ШИМ (analogWrite);
0 … (не ограничено) — значение для аналогового пина (analogWrite).
Примечание — для цифровых пинов устанвливаемое значение автоматически приводится к значениям 0 или 1.

Пример-1.
Установить режим Output для пинов: 3, 9, 13. Затем, для каждого из этих пинов установить значение 1.
Команда:
http://192.168.0.102/serial_println?device_all z9z pin_3=OUT z9z pin_9=OUT z9z pin_13=OUT z9z pin_13=1 z9z pin_3=1 z9z pin_9=1
Ответ:
ED0EBECDA1A74DDB8B666351F57734D2: OK; serial_println; device_all; pin_3=OUT; pin_9=OUT; pin_13=OUT; pin_13=1; pin_3=1; pin_9=1

Пример-2.
Установить режим Output для пинов: 3, 9, 13. Затем, для пина13 установить значение 1, а для пинов 3 и 9 (в режиме ШИМ) сначала установить значение 5.
А затем — для пина-3 установить значение 2, а для пина-9 значение 200.
Далее — «погасить» все 3-и светодиода.
Команда-1:
http://192.168.0.102/serial_println?device_all z9z pin_3=OUT z9z pin_9=OUT z9z pin_13=OUT z9z pin_13=1 z9z pin_W3=5 z9z pin_W9=5
Ответ:
ED0EBECDA1A74DDB8B666351F57734D2: OK; serial_println; device_all; pin_3=OUT; pin_9=OUT; pin_13=OUT; pin_13=1; pin_3=1; pin_9=1
Команда-2:
http://192.168.0.102/serial_println?device_all z9z pin_W3=2 z9z pin_W9=200
Ответ:
ED0EBECDA1A74DDB8B666351F57734D2: OK; serial_println; device_all; pin_W3=2; pin_W9=200
Команда-3:
http://192.168.0.102/serial_println?device_all z9z pin_13=0 z9z pin_W3=0 z9z pin_W9=0
Ответ:
ED0EBECDA1A74DDB8B666351F57734D2: OK; serial_println; device_all; pin_13=0; pin_W3=0; pin_W9=0


ВАЖНО!

После того, как команда serial_readln или serial_println "получена" Устройством (ESP-12F WeMos D1 WiFi), скетч (прежде, чем отправить команду на Arduino) производит ее определенную конвертацию:
1. Заменяет все цепочки символов z9z на символ "точка с запятой";
2. Заменяет: 
  serial_readln - на GET;
  serial_println - на SET.

Это можно увидеть в мониторе COM-порта (в программе Arduino IDE) при тестировании скетча на Устройстве, подключенном к ПК через USB.

Пример-1.
Команда (http-запрос), пришедшая на Устройство:
http://192.168.0.102/serial_readln?device_all z9z pin_12 z9z pin_13 z9z pin_A2
Команда, отправленная Устройством на сопряженный Arduino:
GET: device_all; pin_12; pin_13; pin_A2

Пример-2.
Команда (http-запрос), пришедшая на Устройство:
http://192.168.0.102/serial_println?device_all z9z pin_3=OUT z9z pin_9=OUT z9z  pin_13=OUT z9z pin_13=1 z9z pin_W3=5 z9z pin_W9=5
Команда, отправленная Устройством на сопряженный Arduino:
SET: device_all; pin_3=OUT; pin_9=OUT;  pin_13=OUT; pin_13=1; pin_W3=5; pin_W9=5


Дата: 03.11.2021