1 (edited by scientificman 2018-07-04 13:38:26)

Topic: Задержки при работе с 8266

Здравствуйте!

Пробую управлять перемещением машинки при помощи связки RemoteXY + ESP8266 как точка доступа + Pro Mini. В принципе, все работает, но столкнулся с тем, что имеет место существенная задержка при выполнении команд. Задержка имеет нерегулярный характер. То есть, иногда команда выполняется практически сразу, а иногда с задержкой до 1 секунды!

Сначала предположил, что всему виной SoftSerial, однако на HardSerial все повторилось (субъективно, даже сало хуже). В программе не использую delay().  Только  RemoteXY_Handler() и установка скорости вращения двигателей. Здесь было обсуждение похожей проблемы но с HM-10. Решения найдено не было!

Буду благодарен за любые комментарии, советы, рекомендации, помощь!

2

Re: Задержки при работе с 8266

Та же самая проблема для Wemos D1 с моторной платой, тормознуто передаёт данные, считаю что нужно править RemoteXY или забить на него. Детям баттлботы не реагируют и плачут.

https://cad.onshape.com/documents/28f8b … e187f9ef6e

3

Re: Задержки при работе с 8266

Аналогичная проблема.
Не могу понять, почему периодически возникают фризы управления с nodeMCU.
Добавил простой джойстик, через map конвертю это в управление сервой.
Больше никаких либ не подключаю. Серву тоже не подключаю, так что гипотетических просадок напряжения нету.
Подключается корректно, серва крутится, но иногда в рандомное время появляются рандомные подвисания.
Включил REMOTEXY__DEBUGLOGS, в мониторе компорта эти фризы прям четко видны, вплоть до 4 секунд. Не пойму, откуда они. Пробовал разные платы.

Вот выдержки из логов:

[   28.169] -> 55 06 00 C0 F1 B9
[   28.243] <- 55 06 00 C0 F1 B9
[   28.243] -> 55 06 00 C0 F1 B9
[   31.238] <- 55 06 00 C0 F1 B9
[   31.239] -> 55 06 00 C0 F1 B9
[   31.323] <- 55 06 00 C0 F1 B9
.......

[   32.118] -> 55 06 00 C0 F1 B9
[   32.198] <- 55 06 00 C0 F1 B9
[   32.199] -> 55 06 00 C0 F1 B9
[   33.720] <- 55 06 00 C0 F1 B9
[   33.721] -> 55 06 00 C0 F1 B9
[   33.767] <- 55 06 00 C0 F1 B9
...
[   35.921] <- 55 06 00 C0 F1 B9
[   35.922] -> 55 06 00 C0 F1 B9
[   37.373] <- 55 06 00 C0 F1 B9
[   37.373] -> 55 06 00 C0 F1 B9

В итоге машинку на wifi-управлении REMOTEXY сделать не получается...

Вот исходники

/*
   -- New project --

   This source code of graphical user interface
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 2.3.5 or later version
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
     - for ANDROID 4.3.1 or later version;
     - for iOS 1.3.5 or later version;

   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include <ESP8266WiFi.h>

#define  REMOTEXY__DEBUGLOGS Serial

#include <RemoteXY.h>

// настройки соединения
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377

// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255, 2, 0, 0, 0, 12, 0, 8, 13, 0, 5, 37, 40, 8, 48, 48, 2, 26, 31 };

// структура определяет все переменные вашего интерфейса управления
struct {
  // input variable
  int8_t joystick_1_x; // =-100..100 координата x положения джойстика
  int8_t joystick_1_y; // =-100..100 координата y положения джойстика
  // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)

int mapped_x = 0;
int mapped_y = 0;

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

void setup()
{
  RemoteXY_Init ();
  // TODO you setup code
}

void loop()
{
  RemoteXY_Handler ();
  mapped_y = map(RemoteXY.joystick_1_y, -100, 100, 0, 180);

  // TODO you loop code
  // используйте структуру RemoteXY для передачи данных
}