• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

NodeMCU v2 аналоговый вход и работа в режиме точки доступа

Сергей_Ф

Moderator
Команда форума
Вопросов по подключению потенциометра к esp у меня нет. На крайние ноги 3,3 В, со средней на А0. На плате присутствует делитель напряжения, если вы к этому.
Если у вас нет вопросов, то не надо было открывать тему. Уж извините. А если спрашиваете, то давайте уж все данные, и схему, и код.
У меня вопрос так и не снят. Как и куда подключен потенциометр я не знаю, а гадать не обучен. Может коллеги умеют гадать?
 

PANda81

New member
Судя по константам, вы собрались управлять котлом? Тогда никаких нерешённых моментов быть не должно в принципе.
Да, по названию точки доступа можно догадаться) Напольный газовый котел. Работало и на обычной серве, но сгорела внутри платка управления, когда повысил напряжение в попытке избавиться от дребезга. Решил переделать, использовал оставшиеся запчасти (шестерни, потенциометр), и микромотор-редуктор вместо движка, чтобы повысить момент.
 

Сергей_Ф

Moderator
Команда форума
А что это за ересь?

Вы устанавливаете цифровой gpio0 на выход и в то же время пытаетесь туда что-то вывести и прочитать как аналоговый вход?
вызов analogRead(0) аналогичен analogRead(A0), так что здесь ошибки нет.
 

PANda81

New member
Если у вас нет вопросов, то не надо было открывать тему. Уж извините. А если спрашиваете, то давайте уж все данные, и схему, и код.
У меня вопрос так и не снят. Как и куда подключен потенциометр я не знаю, а гадать не обучен. Может коллеги умеют гадать?
potWemos-500x476.png
Есть другие варианты подключения? Мне кажется, верна ваша версия, что дело в библиотеке. Вы не злитесь, пожалуйста, но я не спросил помочь разобраться с нуля, а спрашивал может кто УЖЕ сталкивался с чем-то подобным. Поэтому подробных данных и не привел. А на библиотеку и не подумал, потому что пользовался ею, и вроде проблем не было. Большое спасибо за помощь
 

Сергей_Ф

Moderator
Команда форума
Посмотреть вложение 11764
Есть другие варианты подключения? Мне кажется, верна ваша версия, что дело в библиотеке. Вы не злитесь, пожалуйста, но я не спросил помочь разобраться с нуля, а спрашивал может кто УЖЕ сталкивался с чем-то подобным. Поэтому подробных данных и не привел. А на библиотеку и не подумал, потому что пользовался ею, и вроде проблем не было. Большое спасибо за помощь
Я не злюсь, просто надо все данные предоставлять.
А где тут делитель? У аналогового входа есть вполне конкретный диапазон рабочих напряжений, точно не помню, но от 0 до 1,5В кажется. У вас будет от 0 до 3,3В - и что вы получите?
С библиотекой тоже не всё так просто, не должно изменение значений в loop влиять на режим точки доступа никак. Хотя может спецы по RemoteXY подскажут что там наверчено.
З.Ы. Извините не посмотрел что у вас NodeMCU :( Там делитель встроенный и всё будет ОК.
 
Последнее редактирование:

PANda81

New member
Я не злюсь, просто надо все данные предоставлять.
А где тут делитель? У аналогового входа есть вполне конкретный диапазон рабочих напряжений, точно не помню, но от 0 до 1,5В кажется. У вас будет от 0 до 3,3В - и что вы получите?
С библиотекой тоже не всё так просто, не должно изменение значений в loop влиять на режим точки доступа никак. Хотя может спецы по RemoteXY подскажут что там наверчено.
С NodeMCU v2 картинку не нашел, у нее прямо рядом со входом 2 резистора, читал диапазон у голой esp до 1В. У меня все корректно работает.
 

PANda81

New member
Сходил на форум RemoteXY. Там пишут, что проблема для esp известная и нужно снижать частоту опроса аналогового входа. Типа реализация точки доступа программная и как-то конфликтует с опросом аналога. Буду пробовать.
 

Сергей_Ф

Moderator
Команда форума
Сходил на форум RemoteXY. Там пишут, что проблема для esp известная и нужно снижать частоту опроса аналогового входа. Типа реализация точки доступа программная и как-то конфликтует с опросом аналога. Буду пробовать.
Т.е. от сигнала на входе не зависит, а зависит от кода в их библиотеке. Вот мне как то стрёмно было бы доверять им котёл. Мониторинг то ладно, но управление... Но дело ваше.
 

PANda81

New member
Т.е. от сигнала на входе не зависит, а зависит от кода в их библиотеке. Вот мне как то стрёмно было бы доверять им котёл. Мониторинг то ладно, но управление... Но дело ваше.
Нет. Там это обсуждается не в привязке к их библиотеке, это касается реализации точки доступа в самой esp8266
 

Сергей_Ф

Moderator
Команда форума
Нет. Там это обсуждается не в привязке к их библиотеке, это касается реализации точки доступа в самой esp8266
Зачем вам опрашивать аналоговый вход в режиме точки доступа? Это вспомогательный режим, как я понимаю. Если этот опрос реализован в той библиотеке и вы не можете его отключить, то как раз она и при чём ;)
Загрубив считывания данных с аналогового входа вы получите меньшее число отсчётов положения потенциометра.
 

esp340

Active member
Залил ваш код в свою NodeMCU, на А0 подал 3,3В, точку доступа Kotel2 вижу, подключение проходит, но ip не получает.
 

PANda81

New member
Зачем вам опрашивать аналоговый вход в режиме точки доступа? Это вспомогательный режим, как я понимаю. Если этот опрос реализован в той библиотеке и вы не можете его отключить, то как раз она и при чём ;)
Загрубив считывания данных с аналогового входа вы получите меньшее число отсчётов положения потенциометра.
В итоговом изделии RemoteXY не будет. Оно так, на этапе тестирования погонять напрямую механизм, что-то отладить. Ардуино не пользовался, в своих домашних проектах сразу начал использовать Esp. Вот вроде порог вхождения невысокий, но постоянно наступаешь на какие-то грабли, что действительно сильно снижает доверие к надежности конечного изделия.
Залил ваш код в свою NodeMCU, на А0 подал 3,3В, точку доступа Kotel2 вижу, подключение проходит, но ip не получает.
Вы строку раскомментировали? У меня вообще ничего в Wifi окружении не появляется.
 

Сергей_Ф

Moderator
Команда форума
В итоговом изделии RemoteXY не будет. Оно так, на этапе тестирования погонять напрямую механизм, что-то отладить. Ардуино не пользовался, в своих домашних проектах сразу начал использовать Esp. Вот вроде порог вхождения невысокий, но постоянно наступаешь на какие-то грабли, что действительно сильно снижает доверие к надежности конечного изделия.

Вы строку раскомментировали? У меня вообще ничего в Wifi окружении не появляется.
Попробуйте так. У меня всё появилось и подключилось, только на страницу 192.168.4.1 не заходит, но может и не должно

Код:
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include <ESP8266WiFi.h>
#include <RemoteXY.h>

int Servo_Set, pol;
static esp8266::polledTimeout::periodicMs checkSensor( 500 );

extern "C" {
#include "user_interface.h";
}
#define REMOTEXY_WIFI_SSID "Kotel2"
#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, 13, 13, 1, 7, 53, 21, 21, 20, 5, 2, 26, 2};
struct {
int16_t edit_1;
unsigned char connect_flag;
} RemoteXY;
#pragma pack(pop)

void setup() {
Serial.begin(115200);
RemoteXY_Init ();
pinMode(0, OUTPUT);
digitalWrite(0, 0);
}

void loop() {
RemoteXY_Handler ();
Servo_Set = (RemoteXY.edit_1);
if ( checkSensor ) {
  pol = map(analogRead(0), 0, 1023, -20, 187);
  Serial.println(pol);
}
if ((Servo_Set - pol) > 0) {
analogWrite(5, 1023);
digitalWrite(0, 0);
} else if ((Servo_Set - pol) < 0) {
analogWrite(5, 1023);
digitalWrite(0, 1);
} else {
analogWrite(5, 0);
digitalWrite(0, 0);
}
}

bool _isTimer(unsigned long startTime, unsigned long period )
{
    return millis() - startTime >= period;
}
 

PANda81

New member
Попробуйте так. У меня всё появилось и подключилось, только на страницу 192.168.4.1 не заходит, но может и не должно
RemoteXY - это приложение для телефона, веб интерфейс не предусмотрен. У меня заработало через millis. На 20 еще работало, а на 10 точку доступа видно, но сбоит при получении IP адреса. В вашем варианте выдало ошибку
Код:
6:6:8: error: 'polledTimeout' in namespace 'esp8266' does not name a type

D:\Arduino\Скетчи\Котел\6\6.ino: In function 'void loop()':

6:32:6: error: 'checkSensor' was not declared in this scope

exit status 1
'polledTimeout' in namespace 'esp8266' does not name a type
Что нужно сделать, чтобы ее не было?
 

PANda81

New member
Мой вариант

Код:
#define  REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include <ESP8266WiFi.h>
#include <RemoteXY.h>

int Servo_Set, pol;
unsigned long myTimer1;

extern "C" {
#include "user_interface.h";
}
#define REMOTEXY_WIFI_SSID "Kotel2"
#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, 13, 13, 1, 7, 53, 21, 21, 20, 5, 2, 26, 2};
struct {
int16_t edit_1;
 unsigned char connect_flag;
} RemoteXY;
#pragma pack(pop)

void setup() {
  Serial.begin(115200);
  RemoteXY_Init ();
  pinMode(0, OUTPUT); 
  digitalWrite(0, 0);
  myTimer1 = millis();  
}

void loop() {
  RemoteXY_Handler  ();
  Servo_Set = (RemoteXY.edit_1);
  if (millis() - myTimer1 >= 20) {
    myTimer1 = millis();
    pol = map(analogRead(0), 0, 1023, -20, 187);
    Serial.println(pol);
  }  
  if ((Servo_Set - pol) > 0) {
    analogWrite(5, 1023);
    digitalWrite(0, 0);
  } else if ((Servo_Set - pol) < 0) {
    analogWrite(5, 1023);
    digitalWrite(0, 1);
  } else {
    analogWrite(5, 0);
    digitalWrite(0, 0);
  }
}

bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
 
Сверху Снизу