• Система автоматизации с открытым исходным кодом на базе 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));}
  }
 
Сверху Снизу