В главном цикле loop вполне допустимы задержки в пределах 1 секунды, связь не должна рваться. Кидайте код, возможно дело в чем то другом.Вообще не стабильно работает если использовать delay и даже если задержки делать с помощью millis() по 20 милисикунд, то не возможно подключится к плате по wi fi хотя модуль и подключился к роутару. Что за фигня, ну ладно Delay() нельзя использовать, но как таймер millis() может мешать этой библиотеке?
Для платы WeMos D1 R2 пины D0, D1, D2 определены. Смотрите документацию D1 R2 | WeMos.cc@Евгений Шемануев
Добрый день,
Я так понимаю, вы разработчик данного приложения?
В сгенерированном коде для WeMos D1 R2 имеют место константы:
Компилятор ругается, что не знает, что такое D2, D1, D0.Код:#define PIN_BUTTON_RED D2 #define PIN_BUTTON_YELLOW D1 #define PIN_BUTTON_BLUE D0
Исправить бы, а то вдруг кто-то не догадается, что надо поправить в коде.
Спасибо, уже вроди разобрался, это проблемы с питанием модуля esp8266. Питаю его от линиейного стабилизатора KIA 1117 на 3,3 вольта. Сам стабилизатор запитан от платы ардуино нано, а она через usb кабель. И вот тут начинаются чудеса, кабель дает просадку до 4,5 вольт и линейник на выходе уже на esp просаживает до 2,6 вольт и esp начинает такую муть сыпать в сериал порт и при этом ток жрет нормальный.В главном цикле loop вполне допустимы задержки в пределах 1 секунды, связь не должна рваться. Кидайте код, возможно дело в чем то другом.
void setup()
{
RemoteXY_Init ();
pinMode (PIN_BUTTON_1, OUTPUT);
pinMode (PIN_SWITCH_1, OUTPUT);
// TODO you setup code
}
Что то не понял вопрос. У вас модуль esp8266 подключен через soft serial порт, а вы хотите через аппаратный сериал порт узнать подключился есп или нет? Ну там есть вообще параметр информирующий о подключении андроида (именно андроида, а не к роутеру модуля) к есп, можно его задействовать для светадиода на 13 пине или др пине платы ардуино.Как вставить в
отправку по UART результат инициализации, ESP8266 увидился или нет?Код:void setup() { RemoteXY_Init (); pinMode (PIN_BUTTON_1, OUTPUT); pinMode (PIN_SWITCH_1, OUTPUT); // TODO you setup code }
И по результату
RemoteXY_Handler ();
этой функции тоже как узнать о наличии ошибок?
Поковырялся в библиотеке RemoteXY, что-то не нашел ответа на вопрос.
Для отладки необходимо в код скетча перед подключением библиотеки RemoteXY (перед [HASHTAG]#include[/HASHTAG] <RemoteXY.h>) добавить определениеНадо узнать заработала ли связка esp8266 через soft serial порт с ардуиной. Т.е. ардуина должна передать на комп по serial данные о подключении к esp8266
например
Serial.print("esp8266 conected")
Надо для отладки связки
Не совсем понял вопроса. RemoteXY не работает через браузер. Через браузер производится только конфигурация графического интерфейса. Для работы RemoteXY используется мобильное приложение, которое можно скачать по ссылке Мобильное приложениенарод несколько раз смотрел видео, в ардуине я новичек, но простые програмки типа считать данные с датчика и отправить их на экран по и2с пишу, объясните пожалуйста как реализовать управление через интернет на страничке в браузере? а то на очевидных моментах внимание уделили, а на подключении через браузер нет
Подобный режим работы не предусмотрен в текущей версии. Возможно, появится в будущем.@Евгений Шемануев Пожелания на будущее: А что если сделать переменные для хранения режима wi fi точка доступа или клиент, а так же строковые переменные для хранения ssid и пароля wi-fi сети и что бы значения этих переменных сохранялось в eeprom, при следующей загрузке восстанавливалось от туда, а при генерации кода на сайте уже по умолчанию была одна страница с названием wi fi settings (мы эту кнопочку можем опционально переместить куда нужно), на той странице имеются: переключатель режима wi fi (точка доступа или клиент), окно ввода ssid и окно ввода пароля (окна ввода у вас пока вообще нет в этом сервисе), кнопка сохранить wi - fi настройки. Далее если при первом включении не удалось подключится к wi fi роутару (по причине отсувствия такой сети или неверном пароле) при 5 попытках (опционально на странице wi fi settings), то по умолчанию модуль esp перезагружается в режим точки доступа, с заранее известными данными (ssid, пароль, IP, порт).
Думаю это возможно переделав библиотеку.
У вас появилась сеть, которая прошита в модуле по умолчанию. Видимо у вас не связи между модулем и вашей платой, по этому RemoteXY не может настроить модуль "под себя". Проверяйте:Подскажите, в сем может быть проблема, сделал на сайте код заполнять своими доработками не стал, хотел проверить исправность WiFi модуля, подключил как в статье, залил скетч. На устройстве появилась сеть AI-THINKER_(не помню), к которой не получается подключится. Что делать?
А поле порт любое значение можно выставить?У вас появилась сеть, которая прошита в модуле по умолчанию. Видимо у вас не связи между модулем и вашей платой, по этому RemoteXY не может настроить модуль "под себя". Проверяйте:
1. Правильность подключения модуля и RX и TX перекрестием к пинам 0 и 1. Модуль ESP8266 WiFi последний рисунок.
2. Скорость модуля 115200
Да, вы правы, есть такая проблема. Рекомендую пока лечить так - поставить паузу в 5 сек после старта ардуины и перед запуском RemoteXY:@Евгений Шемануев тут у вас в библиотеке есть небольшая проблемка из за которой думаю как раз не удается подключится по wi fi удачно после включения питания устройства.
У вас первая отправляймая команда wi fi модулю от микрокантроллера это AT+RST но wi fi модуль не успевает так быстро загрузится после подачи питания на его и просто игнорирует эту команду. Нужно что бы первым делом микроконтроллер ожидал ответ от модуля ready, а потом уже отправлял AT+RST. Это было замечано что ни когда не удается подключится приложению к wi fi модулю, не смотря на то что к роутару он подключен. А вот если потом нажать reset кнопку на плате ардуино, то микроконтроллео успешно перезагружается и сразу же перезагружает wi fi модуль и уже можно нормально подключится.
#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);
}