• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопросы RemoteXY - ESP8266

krepton85

Member
Блин, даже EEPROM не возможно использовать - видимо долго читает ее и потом не подключается по wi fi.
 

Евгений Шемануев

Moderator
Команда форума
Вообще не стабильно работает если использовать delay и даже если задержки делать с помощью millis() по 20 милисикунд, то не возможно подключится к плате по wi fi хотя модуль и подключился к роутару. Что за фигня, ну ладно Delay() нельзя использовать, но как таймер millis() может мешать этой библиотеке?
В главном цикле loop вполне допустимы задержки в пределах 1 секунды, связь не должна рваться. Кидайте код, возможно дело в чем то другом.
 

Евгений Шемануев

Moderator
Команда форума
@Евгений Шемануев
Добрый день,
Я так понимаю, вы разработчик данного приложения?
В сгенерированном коде для WeMos D1 R2 имеют место константы:
Код:
#define PIN_BUTTON_RED D2
#define PIN_BUTTON_YELLOW D1
#define PIN_BUTTON_BLUE D0
Компилятор ругается, что не знает, что такое D2, D1, D0.
Исправить бы, а то вдруг кто-то не догадается, что надо поправить в коде.
Для платы WeMos D1 R2 пины D0, D1, D2 определены. Смотрите документацию D1 R2 | WeMos.cc
Еще раз проверили, код компилируется. Возможно вы не выбрали тип платы в Arduino IDE, когда компилировали.
 

krepton85

Member
В главном цикле loop вполне допустимы задержки в пределах 1 секунды, связь не должна рваться. Кидайте код, возможно дело в чем то другом.
Спасибо, уже вроди разобрался, это проблемы с питанием модуля esp8266. Питаю его от линиейного стабилизатора KIA 1117 на 3,3 вольта. Сам стабилизатор запитан от платы ардуино нано, а она через usb кабель. И вот тут начинаются чудеса, кабель дает просадку до 4,5 вольт и линейник на выходе уже на esp просаживает до 2,6 вольт и esp начинает такую муть сыпать в сериал порт и при этом ток жрет нормальный.
Вообще не мог понять почему если напрямую от лаб. БП подключаю esp и все отлично работает, а если питать от павербанка или usb сетевой зарядки, или usb порта ноутбука, то такая муть выходит.
 

krepton85

Member
@Евгений Шемануев Пожелания на будущее: А что если сделать переменные для хранения режима wi fi точка доступа или клиент, а так же строковые переменные для хранения ssid и пароля wi-fi сети и что бы значения этих переменных сохранялось в eeprom, при следующей загрузке восстанавливалось от туда, а при генерации кода на сайте уже по умолчанию была одна страница с названием wi fi settings (мы эту кнопочку можем опционально переместить куда нужно), на той странице имеются: переключатель режима wi fi (точка доступа или клиент), окно ввода ssid и окно ввода пароля (окна ввода у вас пока вообще нет в этом сервисе), кнопка сохранить wi - fi настройки. Далее если при первом включении не удалось подключится к wi fi роутару (по причине отсувствия такой сети или неверном пароле) при 5 попытках (опционально на странице wi fi settings), то по умолчанию модуль esp перезагружается в режим точки доступа, с заранее известными данными (ssid, пароль, IP, порт).
Думаю это возможно переделав библиотеку.
 

igorlab

New member
народ несколько раз смотрел видео, в ардуине я новичек, но простые програмки типа считать данные с датчика и отправить их на экран по и2с пишу, объясните пожалуйста как реализовать управление через интернет на страничке в браузере? а то на очевидных моментах внимание уделили, а на подключении через браузер нет :(
 

russo

Member
Как вставить в
Код:
void setup()
{
  RemoteXY_Init ();
 
  pinMode (PIN_BUTTON_1, OUTPUT);
  pinMode (PIN_SWITCH_1, OUTPUT);
 

  // TODO you setup code
 
}
отправку по UART результат инициализации, ESP8266 увидился или нет?

И по результату
RemoteXY_Handler ();
этой функции тоже как узнать о наличии ошибок?
Поковырялся в библиотеке RemoteXY, что-то не нашел ответа на вопрос.
 

krepton85

Member
Как вставить в
Код:
void setup()
{
  RemoteXY_Init ();

  pinMode (PIN_BUTTON_1, OUTPUT);
  pinMode (PIN_SWITCH_1, OUTPUT);


  // TODO you setup code

}
отправку по UART результат инициализации, ESP8266 увидился или нет?

И по результату
RemoteXY_Handler ();
этой функции тоже как узнать о наличии ошибок?
Поковырялся в библиотеке RemoteXY, что-то не нашел ответа на вопрос.
Что то не понял вопрос. У вас модуль esp8266 подключен через soft serial порт, а вы хотите через аппаратный сериал порт узнать подключился есп или нет? Ну там есть вообще параметр информирующий о подключении андроида (именно андроида, а не к роутеру модуля) к есп, можно его задействовать для светадиода на 13 пине или др пине платы ардуино.
 

russo

Member
Надо узнать заработала ли связка esp8266 через soft serial порт с ардуиной. Т.е. ардуина должна передать на комп по serial данные о подключении к esp8266
например
Serial.print("esp8266 conected")

Надо для отладки связки
 

Евгений Шемануев

Moderator
Команда форума
Надо узнать заработала ли связка esp8266 через soft serial порт с ардуиной. Т.е. ардуина должна передать на комп по serial данные о подключении к esp8266
например
Serial.print("esp8266 conected")

Надо для отладки связки
Для отладки необходимо в код скетча перед подключением библиотеки RemoteXY (перед [HASHTAG]#include[/HASHTAG] <RemoteXY.h>) добавить определение
[HASHTAG]#define[/HASHTAG] REMOTEXY__DEBUGLOGS Serial
В этом случае на порту Serial на скорости 115200 вы увидите некоторую отладочную информацию.
Если вы включаете отладку на порту Serial, тогда сам RemotXY должен быть настроен на порт, отличный от порта отладки. Например SoftSerial.
 

Евгений Шемануев

Moderator
Команда форума
народ несколько раз смотрел видео, в ардуине я новичек, но простые програмки типа считать данные с датчика и отправить их на экран по и2с пишу, объясните пожалуйста как реализовать управление через интернет на страничке в браузере? а то на очевидных моментах внимание уделили, а на подключении через браузер нет :(
Не совсем понял вопроса. RemoteXY не работает через браузер. Через браузер производится только конфигурация графического интерфейса. Для работы RemoteXY используется мобильное приложение, которое можно скачать по ссылке Мобильное приложение
 

Евгений Шемануев

Moderator
Команда форума
@Евгений Шемануев Пожелания на будущее: А что если сделать переменные для хранения режима wi fi точка доступа или клиент, а так же строковые переменные для хранения ssid и пароля wi-fi сети и что бы значения этих переменных сохранялось в eeprom, при следующей загрузке восстанавливалось от туда, а при генерации кода на сайте уже по умолчанию была одна страница с названием wi fi settings (мы эту кнопочку можем опционально переместить куда нужно), на той странице имеются: переключатель режима wi fi (точка доступа или клиент), окно ввода ssid и окно ввода пароля (окна ввода у вас пока вообще нет в этом сервисе), кнопка сохранить wi - fi настройки. Далее если при первом включении не удалось подключится к wi fi роутару (по причине отсувствия такой сети или неверном пароле) при 5 попытках (опционально на странице wi fi settings), то по умолчанию модуль esp перезагружается в режим точки доступа, с заранее известными данными (ssid, пароль, IP, порт).
Думаю это возможно переделав библиотеку.
Подобный режим работы не предусмотрен в текущей версии. Возможно, появится в будущем.
 

legionprorok

New member
Подскажите, в сем может быть проблема, сделал на сайте код заполнять своими доработками не стал, хотел проверить исправность WiFi модуля, подключил как в статье, залил скетч. На устройстве появилась сеть AI-THINKER_(не помню), к которой не получается подключится. Что делать? Вот данные по прошивке с модуля.
AT+GMRAT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04

Код Ниже.

//////////////////////////////////////////////
// RemoteXY include library //
// use library version 2.2.2 or up //
// use ANDROID app version 3.5.1 or up //
//////////////////////////////////////////////

/* определение режима соединения и подключение библиотеки RemoteXY */
[HASHTAG]#define[/HASHTAG] REMOTEXY_MODE__ESP8266POINT_HARDSERIAL

[HASHTAG]#include[/HASHTAG] <RemoteXY.h>

/* настройки соединения */
[HASHTAG]#define[/HASHTAG] REMOTEXY_SERIAL Serial
[HASHTAG]#define[/HASHTAG] REMOTEXY_SERIAL_SPEED 115200
[HASHTAG]#define[/HASHTAG] REMOTEXY_WIFI_SSID "RemoteXY"
[HASHTAG]#define[/HASHTAG] REMOTEXY_WIFI_PASSWORD "12345678"
[HASHTAG]#define[/HASHTAG] REMOTEXY_SERVER_PORT 6377


/* конфигурация интерфейса */
unsigned char RemoteXY_CONF[] =
{ 2,27,121,0,5,0,1,2,0,21
,35,22,11,2,79,78,0,79,70,70
,0,4,128,14,15,35,12,2,66,1
,28,51,7,16,2,66,4,46,36,13
,17,2,67,4,3,55,18,5,2,11
,67,4,44,56,18,5,2,11,65,6
,28,77,9,9,2,66,4,3,36,13
,16,2,129,0,7,28,18,6,9,208
,146,208,186,208,187,209,142,209,135,208
,184,209,130,209,140,32,209,135,208,176
,208,185,208,189,208,184,208,186,0,129
,0,24,68,15,6,9,208,146,208,190
,208,180,208,176,0 };

/* структура определяет все переменные вашего интерфейса управления */
struct {

/* input variable */
unsigned char switch_1; /* =1 если переключатель включен и =0 если отключен */
signed char slider_1; /* =0..100 положение слайдера */

/* output variable */
signed char level_1; /* =0..100 положение уровня */
signed char level_3; /* =0..100 положение уровня */
char text_1[11]; /* =строка оканчивающаяся нулем UNICODE */
char text_2[11]; /* =строка оканчивающаяся нулем UNICODE */
unsigned char led_1_r; /* =0..255 яркость красного цвета индикатора */
unsigned char led_1_g; /* =0..255 яркость зеленого цвета индикатора */
signed char level_2; /* =0..100 положение уровня */

/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */

} RemoteXY;

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

[HASHTAG]#define[/HASHTAG] PIN_SWITCH_1 13


void setup()
{
RemoteXY_Init ();

pinMode (PIN_SWITCH_1, OUTPUT);


// TODO you setup code

}

void loop()
{
RemoteXY_Handler ();

digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);


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

Евгений Шемануев

Moderator
Команда форума
Подскажите, в сем может быть проблема, сделал на сайте код заполнять своими доработками не стал, хотел проверить исправность WiFi модуля, подключил как в статье, залил скетч. На устройстве появилась сеть AI-THINKER_(не помню), к которой не получается подключится. Что делать?
У вас появилась сеть, которая прошита в модуле по умолчанию. Видимо у вас не связи между модулем и вашей платой, по этому RemoteXY не может настроить модуль "под себя". Проверяйте:
1. Правильность подключения модуля и RX и TX перекрестием к пинам 0 и 1. Модуль ESP8266 WiFi последний рисунок.
2. Скорость модуля 115200
 

legionprorok

New member
У вас появилась сеть, которая прошита в модуле по умолчанию. Видимо у вас не связи между модулем и вашей платой, по этому RemoteXY не может настроить модуль "под себя". Проверяйте:
1. Правильность подключения модуля и RX и TX перекрестием к пинам 0 и 1. Модуль ESP8266 WiFi последний рисунок.
2. Скорость модуля 115200
А поле порт любое значение можно выставить?
 

krepton85

Member
@Евгений Шемануев тут у вас в библиотеке есть небольшая проблемка из за которой думаю как раз не удается подключится по wi fi удачно после включения питания устройства.
У вас первая отправляймая команда wi fi модулю от микрокантроллера это AT+RST но wi fi модуль не успевает так быстро загрузится после подачи питания на его и просто игнорирует эту команду. Нужно что бы первым делом микроконтроллер ожидал ответ от модуля ready, а потом уже отправлял AT+RST. Это было замечано что ни когда не удается подключится приложению к wi fi модулю, не смотря на то что к роутару он подключен. А вот если потом нажать reset кнопку на плате ардуино, то микроконтроллео успешно перезагружается и сразу же перезагружает wi fi модуль и уже можно нормально подключится.
 

Евгений Шемануев

Moderator
Команда форума
@Евгений Шемануев тут у вас в библиотеке есть небольшая проблемка из за которой думаю как раз не удается подключится по wi fi удачно после включения питания устройства.
У вас первая отправляймая команда wi fi модулю от микрокантроллера это AT+RST но wi fi модуль не успевает так быстро загрузится после подачи питания на его и просто игнорирует эту команду. Нужно что бы первым делом микроконтроллер ожидал ответ от модуля ready, а потом уже отправлял AT+RST. Это было замечано что ни когда не удается подключится приложению к wi fi модулю, не смотря на то что к роутару он подключен. А вот если потом нажать reset кнопку на плате ардуино, то микроконтроллео успешно перезагружается и сразу же перезагружает wi fi модуль и уже можно нормально подключится.
Да, вы правы, есть такая проблема. Рекомендую пока лечить так - поставить паузу в 5 сек после старта ардуины и перед запуском RemoteXY:
void setup()
{
delay (5000); // пауза в 5 сек.
RemoteXY_Init ();
.....

Первым делом ждать от модуля "ready" - плохое решение, так как после сброса ардуино модуль ESP не сбрасывается и "ready" не дождется...
В ближайшее время в библиотеку будут внесены изменения.
 

krepton85

Member
[QUOTE="Евгений Шемануев",]
Первым делом ждать от модуля "ready" - плохое решение, так как после сброса ардуино модуль ESP не сбрасывается и "ready" не дождется...
[/QUOTE]
Ну да об этом я не подумал. Просто в маем случае удобней сброс делать откл/вкл питания. У меня 2-х канальный диммер для ламп накаливания на 220 вольт.
 

legionprorok

New member
Код:
#define REMOTEXY_MODE__ESP8266POINT_SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
/* настройки соединения */
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 19200
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
/* конфигурация интерфейса  */
unsigned char RemoteXY_CONF[] =
  { 2,27,121,0,5,0,1,2,0,21
  ,35,22,11,2,79,78,0,79,70,70
  ,0,4,128,14,15,35,12,2,66,1
  ,28,51,7,16,2,66,4,46,36,13
  ,17,2,67,4,3,55,18,5,2,11
  ,67,4,44,56,18,5,2,11,65,6
  ,28,77,9,9,2,66,4,3,36,13
  ,16,2,129,0,7,28,18,6,9,208
  ,146,208,186,208,187,209,142,209,135,208
  ,184,209,130,209,140,32,209,135,208,176
  ,208,185,208,189,208,184,208,186,0,129
  ,0,24,68,15,6,9,208,146,208,190
  ,208,180,208,176,0 };
/* структура определяет все переменные вашего интерфейса управления */
struct {

    /* input variable */
  unsigned char switch_1; /* =1 если переключатель включен и =0 если отключен */
  signed char slider_setTemp; /* =0..100 положение слайдера */

    /* output variable */
  signed char level_1; /* =0..100 положение уровня */
  signed char level_3; /* =0..100 положение уровня */
  char text_1[11];  /* =строка оканчивающаяся нулем UNICODE */
  char text_2[11];  /* =строка оканчивающаяся нулем UNICODE */
  unsigned char led_1_r; /* =0..255 яркость красного цвета индикатора */
  unsigned char led_1_g; /* =0..255 яркость зеленого цвета индикатора */
  signed char level_2; /* =0..100 положение уровня */

    /* other variable */
  unsigned char connect_flag;  /* =1 if wire connected, else =0 */

} RemoteXY;
/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////
#define PIN_SWITCH_1 13
#include <OneWire.h>
OneWire ds(4);
long previousMillis = 0; // время, когда состояние  обновлялось
int k;
long interval = 750; 
byte data[2];
int Temp;

void setup()
{
  RemoteXY_Init ();
  pinMode (PIN_SWITCH_1, OUTPUT);
// TODO you setup code
   k=1;
}

void loop()
{
  RemoteXY_Handler ();

int setTemp = RemoteXY.slider_setTemp;
itoa (setTemp, RemoteXY.text_1, 10);
RemoteXY.level_2 = setTemp;

   if (Temp<setTemp && RemoteXY.switch_1==1)
   digitalWrite(PIN_SWITCH_1, HIGH);
   else
{   RemoteXY.switch_1=0;
   digitalWrite(PIN_SWITCH_1, LOW); }
   // TODO you loop code
  // используйте структуру RemoteXY для передачи данных

///////////////////////////////////////////////////////////////////////////////

if (k==1){
//  byte data[2];
  ds.reset();
  ds.write(0xCC);
  ds.write(0x44); }
k=0;
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
    // сохраняем последний момент, когда менялось состояние 
    previousMillis = currentMillis;
    ds.reset();
    ds.write(0xCC);
    ds.write(0xBE);
    data[0] = ds.read();
    data[1] = ds.read();
     Temp = (data[1]<< 8)+data[0];
     Temp = Temp>>4;
k=1;
}
RemoteXY.level_3 = Temp;
itoa (Temp, RemoteXY.text_2, 10);

}
Очень тяжело подключается устройству, и после подключения долго идет обновление данных, модуль отправляет данные раз в 1,5-3 сек, если убрать код считывания температуры с ds18b20, то все нормально работает.
 
Сверху Снизу