Перейти к публикации
iT4iT.CLUB

Рекомендованные сообщения

pasha413, согласен с Kitsum, на нестабильность работы esp или прошивки Ваш случай не похож, очень похоже на пропадание питания. 

Я подумал, что у Вас как и у меня esp перезагружается сам, но по Вашему скриншоту это не видно. 

 

О, интерпретация данных, это хорошо. Это то, что я имел ввиду, повествуя о датчиках СО2. 

Forester, а Вы отпрашиваете датчик давления раз в 2 часа? Просто в ранних версиях прошивки Kitsum данные вообще не логировались и сравнивать было не с чем, чтобы интерпретировать значения, в существующей версии лог ведётся, но без привязки времени. А у Вас  приведён код только касательно отображения скорости изменения давления, а вот где Вы данные двухчасовой давности получаете и как - не указываете. Это не совсем очевидно, но познавательно. На мой взгляд, это полезная добавка для метеостанции. 

Изменено пользователем Alex_DIY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
35 минут назад, Alex_DIY сказал:

а Вы отпрашиваете датчик давления раз в 2 часа?

Нет. Опрашивать можно сколько угодно раз. Но запоминать одно значение, а второе через два часа. И сравнивать их. Я не программист и свой страшный код даже боюсь показывать здесь. В моем случае код простой. Опрос датчиков каждые две секунды с инкрементом переменной и сбросом ее в ноль через 3599 циклов (через два часа). Если переменная равна нулю, запоминаем первое значение давления. Если переменная равна 3599 - запоминаем второе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
50 минут назад, Alex_DIY сказал:

А у Вас  приведён код только касательно отображения скорости изменения давления, а вот где Вы данные двухчасовой давности получаете и как - не указываете.

Если интересно, вот полный код https://yadi.sk/d/B0x4Thf73RSUvH

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваш код пока не смотрел, но чисто из алгоритмических соображений, Вам  надо держать в памяти 3599 предыдущих значений, чтобы относительно их смотреть двухчасовой разницу с каждым новым опросом датчика(при постоянстве длины периода в 2 часа и 2х секунды опросом датчика) . Ну и с каждым опросом сдвига "устаревшее" значение в хвосте очереди значений. Собственно, поэтому я заострил на этом внимание. Позже посмотрю код, может быть мне станет понятно как Вы это реализовали. Просто массив из 3599 переменной int в память поместиться не должен. 

Прогнозирование это несомненно хорошо, чем просто наблюдение на "сухие" цифры. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Alex_DIY сказал:

Вам  надо держать в памяти 3599 предыдущих значений

Нет. Я держу в памяти только два значения, остальные отбрасываю. То есть все измеренные значения выводятся на экран, но для сравнения выбираются только два с разницей в два часа (такой алгоритм заложен в часах CASIO).  Сравнение происходит не с каждым измерением, а раз в два часа. Этого достаточно.  Около года тестирую такой алгоритм. Ардуина адекватно повторяет своими стрелками на экране "крутизну" графика на часах CASIO. В данном проекте самый простой вариант, наверное, - подсвечивать шкалу давления четырьмя разными цветами. Ну например: зеленый - давление стабильное; желтый - первая скорость изменения давления; оранжевый - вторая; красный - третья; черный - четвертая. А падение или рост обозначать какой-то стрелкой. Ну это мои соображения. У кого-то всегда найдутся идеи получше))

Изменено пользователем Forester

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый вечер. А в дальнейшем не планируется добавить поддержку дисплеев как опцию? Т.е. в скетче раскоментируешь нужный тебе дисплей(к примеру, ssd1306 128х32), компилируешь, заливаешь, подсоединяешь дисплей и в настройках метеостанции выбираешь вкл/выкл, когда необходимо. 

P.S. Был бы благодарен, если бы кто нибудь помог в подключении ssd1306 OLED 128x32. Я в программировании полный ноль. Если не ошибаюсь, для него подходит библиотека https://github.com/adafruit/Adafruit_SSD1306. Наверняка кто то реализовывал вывод давления, температуры и влажности на дисплей? Или если кто нибудь реализует подключение в будущем, был бы рад мануалу, как это сделать.  :)

Изменено пользователем RusD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понял причину бага, из-за которого у меня ESP не реконнектится к роутеру после перезагрузки роутера. Если в роутере настроен невидимый SSID, то ESP не видит точку доступа и соответственно не пытается к ней подключиться. Не знаю, можно ли такое реализовать...Но надо, видимо, не искать SSID в эфире, а потом к ней подключаться. А просто пытаться к ней подключиться.

Изменено пользователем Forester

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 часа назад, wildray сказал:

Ну дайте уже хоть приблизительную дату этой RC 2.0!!! Третий пост уже упоминания Вас о ней - штудирую все страницы :)

Не хотелось бы загадывать т.к в ходе тестов появляются разного рода баги. Хотелось бы разобраться с ними до конца января, но надо быть реалистами т.к на проект тратится свободное от работы и личной жизни время. Также я стараюсь учесть пожелания, которые оставляли в теме и в личных сообщениях. Поэтому сроки скорее всего немного растянутся.

17 часов назад, Forester сказал:

По-моему, помимо отсутствия автоматического реконнекта к роутеру после перезагрузки последнего, еще проблема с давлением на BME280. За несколько часов абсолютно не отклонилось от величины 740 мм.рт.ст. Вроде как, не бывает такого. В narodmon то же самое отправляет. 

P.S. Прошу прощения. С давлением разобрался. Вроде бы, всё в порядке. просто первое показание записалось как "0". Отсюда соответственное масштабирование графика было. В narodmon можно удалить это ошибочное показание. А как быть с графиком в веб-интерфейсе ESP? У меня там тоже первое значение давления равно нулю. И график поэтому в неправильном масштабе (прямая линия).

P.S.S. Да, с BME280 проблема: первое показание равно нулю. Нужно исключить его в коде.

В данной версии прошивки реализовано автоматическое переподключение к известным контроллеру сетям. Если сеть скрыта, то при сканировании, контроллер её не увидит. Данная проблема уже решена в будущей версии и контроллер способен находить домашнюю сеть даже при скрытом SSID.

Что касаемо графика в web интерфейсе микроконтроллера, то тут имеются следующие нюансы:

  1. Изначально график рассчитан на отображение показаний за последние сутки с интервалом измерения 10 минут, что равняется 144 точкам. Могу ошибаться, но на хранение показаний с 4 датчиков будет потрачено порядка 2.3kb оперативной памяти.
  2. В лог записываются не текущие, а последние полученные показания с датчика.
  3. График автоматически масштабируется (каждый массив данных в отдельности), это значит, что на визуализацию влияет минимальное и максимальное значения за выбранный период времени.
  4. Изначально все 144 позиции графика пусты, а точнее заполнены нолями.

Следовательно, при старте весь лог заполнен значением 0 и происходит добавление первого элемента. При этом, на визуализации этот момент похож на резкий скачек всех значений с 0 до них самих. Также эти пустые значения участвуют в масштабировании т.к они часть графика. После наполнения памяти данными (ждем 24 часа) каждый элемент графика будет отображен в масштабе соответствующему минимальным и максимальным элементам из списка "живых" значений.

Именно поэтому Вы видите давление в виде сплошной линии, но при этом, если пройтись по точкам графика будут видны различия в показаниях и также видно, что они настолько незначительны, что не способны повлиять на масштаб этого элемента относительно значения 0. По завершению наполнения 0 выпадет из массива данных и ситуация будет совершенно иной.

Это не является багом, так и задумывалось. Подразумевалось, что это будет интуитивно понятно после того, как пользователь доберется до системы масштабирования в web интерфейсе. Чтобы график не содержал пустых элементов в первые сутки работы микроконтроллера, необходимо строить его из динамического числа точек. То есть, с начало будет график из одной точки, через десять минут из двух и т.д пока не  будет получены все 144 точки. При этом первые сутки график будет строиться слева на право, а после заполнения всего массива данных график начнет движение с право налево. С небольшим эффектом сжимающейся пружины. Конечно на практике он всегда строится слева на право, но пользователь этого никогда не видит и при этом человеческое восприятие не играет ему на руку.

11 час назад, Forester сказал:

Может быть, в проекте приживется идея с индикацией скорости изменения атм. давления?

Как всегда, вопрос в том, как это визуализировать.

5 часов назад, RusD сказал:

А в дальнейшем не планируется добавить поддержку дисплеев как опцию?

Добавить поддержку дисплее не сложно. В текущей версии прошивки Вы можете обновлять информацию на дисплее каждый раз когда вызывается функция readSensors(). Добавить Ваш код можно прямо в неё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Forester

посмотрел скетч, понял, что все происходит не совсем не так как я понял из Вашего объяснения =)

Вы смотрите изменение давления в периоде от 0 до 2 часов. Т.е. в 13-00 запомнили значение давления Q1 и начинаете сравнивать с Q2 измеренным в 13-01 Q2,13-02 Q2 ...14-58, 14-59 сравнивая с первоначальным в 13 часов.

Я же подумал что идет сравнение за два часа, то есть в 15-00  Q1 измеренное в 13-00 c Q2 измеренным в 15-00, затем в 15-01 Q1 измеренное в 13-01 с Q с измеренным в 15-01 и т.д.

Так значит так, раз и японцы подобное заложили в свои часы. А количество стрелочек говорит о чем ? То есть пойдет дождь,  будет ясное небо?

7 часов назад, Forester сказал:

В данном проекте самый простой вариант, наверное, - подсвечивать шкалу давления четырьмя разными цветами. Ну например: зеленый - давление стабильное; желтый - первая скорость изменения давления; оранжевый - вторая; красный - третья; черный - четвертая.

С точки зрения единообразия восприятия не лучшая идея, если отталкиваться от того,  как уже предложили у температуры подсвечивать отрицательные температуры - синим, положительные красным. То есть на одном индикаторе шкала будет подсвечиваться в зависимости от отображаемой величины, а в другом случае от ее первой производной. Может стоит отталкиваться от 1-4 стрелочек, только привязаться к их практической интерпретации и это уже в отдельном индикаторе обыграть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Kitsum сказал:

Добавить поддержку дисплее не сложно. В текущей версии прошивки Вы можете обновлять информацию на дисплее каждый раз когда вызывается функция readSensors(). Добавить Ваш код можно прямо в неё.

Доброе утро. В коде, как я уже говорил, совершенно не понимаю. Попытался сваять скетч, который нужно интегрировать в ваш основной код. При добавлении компилируется без ошибок, но при прошивке датчик bme280 перестает обнаруживаться. Sda и scl дисплея подключены в те же пины, что и датчик. Пробовал другие пины, пытаясь их прописать при инициализации дисплея - так же не работает ни датчик, ни дисплей. Скетч ковырял на основе примера из либы adafruit Adafruit_SSD1306. Чувствую, что я просто навертел там полную чушь. :)

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

void setup()
{
  // Инициализация дисплея.
  display.begin(0x3C);
  // Вывод приветствия при включении питания если нужно
  display.setCursor(3, 0);
  display.print("Hello!");
  display.display();
  delay (300);//Задержка приветствия
}

void readSensors() {
  timerReadSensors = millis();
  /* BH1750 */
  #ifdef BH1750_h
    if (light.status) light.data = BH1750.readLightLevel();
  #endif
  /* HDC1080 */
  #ifdef _CLOSEDCUBE_HDC1080_h
    if (temperature.status) temperature.data = HDC1080.readTemperature();
    if (humidity.status) humidity.data = HDC1080.readHumidity();
  #endif
  /* SI7021 */
  #ifdef si7021_h
    if (temperature.status) temperature.data = SI7021.getCelsiusHundredths() * 0.01;
    if (humidity.status) humidity.data = SI7021.getHumidityPercent();
  #endif
  /* HTU21D */
  #ifdef HTU21D_ADDRESS
    if (temperature.status) temperature.data = HTU21D.readTemperature();
    if (humidity.status) humidity.data = HTU21D.readHumidity();
  #endif
  /* BMP085 */
  #ifdef ADAFRUIT_BMP085_H
    if (pressure.status) pressure.data = BMP085.readPressure() / 133.3;
  #endif
  /* BME280 */
  #ifdef TG_BME_280_I2C_H
    if (temperature.status) BME.read(pressure.data, temperature.data, humidity.data, BME280::TempUnit_Celsius, BME280::PresUnit_torr);
  #endif

  // Вывод данных с датчика.
  display.setTextSize(1);
  display.setCursor(0,0);
  display.println("temperature.data");
  display.setTextSize(1);
  display.setCursor(0,1);
  display.println("humidity.data");
  display.setTextSize(1);
  display.setCursor(0,2);
  display.println("pressure.data");
  display.display();
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это весь скетч? Если да, то он не будет работать от слова совсем. 

Скетч делится условно на 2 части setup и loop. У Вас отсутствует процедура loop, которая выполняется циклически и бесконечно и куда Вы вписывается свой код. Далее нет подключения к i2c шине.  Это из очень крупных замечаний.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Alex_DIY сказал:

Так значит так, раз и японцы подобное заложили в свои часы. А количество стрелочек говорит о чем ? То есть пойдет дождь,  будет ясное небо?

Да, мы наконец то поняли друг друга. Если быть точным, японцы не закладывали в часы сравнение двух показаний. В часах CASIO просто идет построение графика изменения давления на матричном ЖКИ. И каждая следующая точка на индикаторе "зажигается" через два часа после предыдущей. Нас интересует первая производная от этого грубого графика. Если давление изменяется менее чем на 1 гПа, следующая точка загорается на одном уровне с предыдущей. Изменилось на +/- 1 гПа (0,03 дюйма.рт.ст или 0,75 мм.рт.ст.) - загорается на один уровень выше или ниже относительно предыдущей. И так далее. То есть, я в своем "барометре" ввел пять уровней изменения атмосферного давления. Каждый следующий уровень отличается от предыдущего на 1 гПа. Свои выводы сделал после многолетних наблюдений за графиком японских часов. Разницу между соседними точками на графике более чем на 4 уровня я ни разу не видел. Ну, возможно, в других уголках планеты такое бывает. Но это в любом случае очень сильные изменения давления. Я тут поднял инструкции снова от часов. И понял, что, во-первых, в инструкции допущена ошибка (вместо 0,05 дюймов.рт.ст. нужно было написать 0,03 дюйма.рт.ст.). Наверное, при переводе инструкции на русский допустили опечатку. Во-вторых, я в своем коде тоже неправильно указал диапазоны для сравнения. наверное перенес эту опечатку, начав рассчитывать от 0,05 дюймов, а не от гектопаскаля. Пересчитав заново, получаются такие цифры (если ошибся, поправьте):

0.   0,00 <  ΔP <  0,75 мм.рт.ст. (1 гПа) - стабильное атмосферное давление
1.   0,75  ΔP  1,50 мм.рт.ст. (1 гПа) - легкие возмущения атм. давления
2.   1,50 ⩽ ΔP 2,25 мм.рт.ст. (2 гПа) - к перемене погоды 
3.   2,25 ⩽ ΔP  3,00 мм.рт.ст. (3 гПа) - к резкой перемене погоды
4.   3,00  ΔP             мм.рт.ст. (4 гПа) - к концу света

Так же в отрицательную сторону. Промежуток между измерениями 2 часа.

 

Снимок.JPG

Изменено пользователем Forester

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Alex_DIY сказал:

Далее нет подключения к i2c шине.

 Нет, это код, который надо встроить в основной.

Под подключением вы имеете ввиду эти строки?

/*
   i2c шина
   задейстованные пины SDA и SCL
*/
#define pin_sda 4 // default sda pin
#define pin_scl 5 // default scl pin

Если да, то эти строки есть в скетче метеостанции.

Буду копаться еще... Дорогу осилит идущий. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, RusD сказал:

Под подключением вы имеете ввиду эти строки?

Нет, это константы, задание номера gpio, используемых для подключения i2c шины. 

42 минуты назад, RusD сказал:

Нет, это код, который надо встроить в основной

Очень непонятно куда именно вы его встроили. Замечания могут измениться в корне. Вам надо всего лишь указать библиотеку дисплея там же где объявляются другие библиотеки. 

В месте, где происходит инициализация i2c датчиков добавить код инициализации дисплея. 

В функцию readsensors() добавить строки, которые будут отправлять на дисплей то, что Вы хотите на нем видеть. 

Изменено пользователем Alex_DIY
Букву пропустил
  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, Alex_DIY сказал:

Вам надо всего лишь указать библиотеку дисплея там же где объявляют я другие библиотеки. 

Добавил строки

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
9 минут назад, Alex_DIY сказал:

В месте, где происходит инициализация i2c датчиков добавить код инициализации дисплея. 

Добавил после bme280:

// BME280
  #ifdef TG_BME_280_I2C_H
    Wire.beginTransmission(0x76);
    if (Wire.endTransmission() == 0) {
      temperature.status = humidity.status = pressure.status = BME.begin();
    }
  #endif
  
  // Инициализация дисплея.
  display.begin(pin_sda, pin_scl, 0x3C);

 

12 минуты назад, Alex_DIY сказал:

В функцию readsensors() добавить строки, которые будут отправлять на дисплей то, что Вы хотите на нем видеть. 

Ниже этих строк

void readSensors() {
  timerReadSensors = millis();
  /* BH1750 */
  #ifdef BH1750_h
    if (light.status) light.data = BH1750.readLightLevel();
  #endif
  /* HDC1080 */
  #ifdef _CLOSEDCUBE_HDC1080_h
    if (temperature.status) temperature.data = HDC1080.readTemperature();
    if (humidity.status) humidity.data = HDC1080.readHumidity();
  #endif
  /* SI7021 */
  #ifdef si7021_h
    if (temperature.status) temperature.data = SI7021.getCelsiusHundredths() * 0.01;
    if (humidity.status) humidity.data = SI7021.getHumidityPercent();
  #endif
  /* HTU21D */
  #ifdef HTU21D_ADDRESS
    if (temperature.status) temperature.data = HTU21D.readTemperature();
    if (humidity.status) humidity.data = HTU21D.readHumidity();
  #endif
  /* BMP085 */
  #ifdef ADAFRUIT_BMP085_H
    if (pressure.status) pressure.data = BMP085.readPressure() / 133.3;
  #endif
  /* BME280 */
  #ifdef TG_BME_280_I2C_H
    if (temperature.status) BME.read(pressure.data, temperature.data, humidity.data, BME280::TempUnit_Celsius, BME280::PresUnit_torr);
  #endif

 добавил эти строки:

 

// Вывод данных с датчика.
  display.setTextSize(1);
  display.setCursor(0,0);
  display.println("temperature.data");
  display.setTextSize(1);
  display.setCursor(0,1);
  display.println("humidity.data");
  display.setTextSize(1);
  display.setCursor(0,2);
  display.println("pressure.data");
  display.display();
}

Верно ли поступил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вроде бы идеологически верно. 

С этим дисплеем не имел дел, поэтому за правильность кода работы с ним сказать не могу - достаточно ли этих строк. Пример из его библиотеки мне пока недоступен. 

 

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, RusD сказал:

Верно ли поступил?

Имхуется мне, что что-то с выводами SDA и SCL напутано. Раз BME280 перестал определяться. Смотрите, где-то ваш код переназначает SDA и SCL на другие пины. Если оставить только ваш код, дисплей нормально работает именно на тех пинах, к которым подключен датчик?

Изменено пользователем Forester
  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем, поиски привели меня к данному примеру http://wikihandbk.com/wiki/ESP8266:Примеры/Использование_0,96-дюймового_OLED-дисплея_с_ESP8266_при_помощи_IDE_Arduino

На его основе удалось инициализировать дисплей и вывести текст типа температура, влажность, давление. Остались 2 проблемы. Либа для разрешения 128х64 и из за этого текст сплющенный и что добавить после строк текста для вывода информации с датчиков.

UPDATE:

Чуть-чуть изменил, пойду тестировать.

Вот что добавил в код:

#include "SSD1306.h" // добавил библиотеку
  
// инициализация OLED-дисплея с помощью библиотеки Wire:
 SSD1306  display(0x3c, D2, D1);

В void setup добавил
  
  display.init();
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_16);
  display.setTextAlignment(TEXT_ALIGN_LEFT);

В void readSensors() изменил и добавил строки:

/* BME280 */
#ifdef TG_BME_280_I2C_H
    if (temperature.status) BME.read(pressure.data, temperature.data, humidity.data, BME280::TempUnit_Celsius, BME280::PresUnit_torr);
    display.clear();
    display.drawString(0, 0, "Temperature: " + String(temperature.data) + "C");
    display.drawString(0, 16, "Humidity: " + String(humidity.data) + "%\t");
    display.drawString(0, 32, "Pressure: " + String(pressure.data) + "mmHg");
  #endif

И добавил в
  
void loop() {
  
  display.display();

UPD2:

Я все же добился работы дисплея. Все выводит как надо. Код выше работает.  Осталась 1 проблема. Сплющенный и плохо разборчивый текст из за другого разрешения. Или искать эту либу под 128х32(не нашел), или купить 128х64 дисплей.

Изменено пользователем RusD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@RusD доброе время суток.

В указанной Вами библиотеке имеется файл OLEDDisplay.h в котором содержатся константы с описанием размера дисплея.

// Display settings
#define DISPLAY_WIDTH 128
#define DISPLAY_HEIGHT 64

Попробуйте поиграться с этими значениями.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часов назад, Kitsum сказал:

Попробуйте поиграться с этими значениями.

Спасибо за подсказку. Попытка поменять значения приводит к артефактам в нижней части дисплея. Поищу еще доработанные либы. А касательно adafruit либы нашел много упоминаний о том, что она проблемная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

Сразу хочу сказать огромное спасибо автору за проделанную работу.

И хочу спросить совета, меня возникла проблема с веб интерфейсом. Могу зайти в него с любых устройств сети, кроме, собственно своего личного компьютера. С других устройств, будь то телефон или компьютер, заходит без проблем, вне зависимости от типа подключения к сети (кабель или вай фай). С моего компьютера пинги проходят, если мониторить плату, то она также видит входящие запросы:

192.168.1.3: /index.htm 200

Но дальше этого не заходит. Фаервол уже включал/отключал/сносил - все без толку. Помогите пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, ololonly сказал:

Добрый день.

Сразу хочу сказать огромное спасибо автору за проделанную работу.

И хочу спросить совета, меня возникла проблема с веб интерфейсом. Могу зайти в него с любых устройств сети, кроме, собственно своего личного компьютера. С других устройств, будь то телефон или компьютер, заходит без проблем, вне зависимости от типа подключения к сети (кабель или вай фай). С моего компьютера пинги проходят, если мониторить плату, то она также видит входящие запросы:


192.168.1.3: /index.htm 200

Но дальше этого не заходит. Фаервол уже включал/отключал/сносил - все без толку. Помогите пожалуйста.

Попробовать присвоить ip-адрес, который получает  ваш комп другому устройству сети (с которых соединение со станцией проходит без проблем), если увидит станцию, то напрашивается ответ, что что-то не так с вашим компом.

Пробовали ли соединяться со станцией разными обозревателями ?? (IE, Opera, FireFox, Google и т.д.) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, EVG сказал:

Попробовать присвоить ip-адрес, который получает  ваш комп другому устройству сети (с которых соединение со станцией проходит без проблем), если увидит станцию, то напрашивается ответ, что что-то не так с вашим компом.

Пробовали ли соединяться со станцией разными обозревателями ?? (IE, Opera, FireFox, Google и т.д.) ?

IP менять пробовал, разные браузеры также пробовал. На другом компе в сети стоит точно такой же Chrome, как и у меня, с теми же расширениями, и на нем все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, ololonly сказал:

IP менять пробовал, разные браузеры также пробовал. На другом компе в сети стоит точно такой же Chrome, как и у меня, с теми же расширениями, и на нем все работает.

Есть ли в наличии загрузочная флэшка или диск с гостевыми системами ?

Загрузиться с флэшки или диска с гостевой системой.
Войти с нее в сеть.
Проверить соединение со станцией.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, войдите для комментирования

Вы сможете оставить комментарий после входа



Войти сейчас

  • Похожие публикации

    • Автор: Kitsum
      Хотите помочь проекту или спонсировать новый?
      Yandex.Money PayPal.me Тема проекта
      Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека CMD, реализует настройку микроконтроллера и управление вашей программой через терминал.
      Основная задача библиотеки, это прием пользовательских команд через UART интерфейс, их обработка и выполнение пользовательского кода, связанного с той или иной командой.
      Данная библиотека позволяет реализовать:
      Управление микроконтроллером Любую настройку, будь то WiFi, другие библиотеки или часть Вашей программы Вызывать Ваши задачи (функции) из терминала по команде и передавать им требуемые параметры Использовать контроллер в качестве шлюза между датчиками и программами на PC Внимание: любая команда, передаваемая в терминал обязана заканчиваться символом перевода строки "\n".
      Подключение библиотеки
      #include <cmd.h> Инициализация объекта, к которому мы будем обращаться для добавления команд. В качестве параметра объекту необходимо передать указатель на объект Serial или любой другой схожий по типу интерфейс.
      cmd command(&Serial); В функции Setup описываем какие команды требуется обрабатывать. Например, по команде "test" вызывать пользовательскую функцию с именем "myFunctionName". Имя пользовательской функции может быть абсолютно любым.
      void Setup() { Serial.begin(115200); command.add("test", myFunctionName); } Пользовательская функция будет вызываться каждый раз, когда по интерфейсу Serial поступит команда "test". Если команда будет передана с параметрами, то эти параметры будут переданы в качестве аргументов пользовательской функции.
      В функции loop должна находится команда вызова обработчика.
      void loop() { command.handleEvents(); } Пользовательская функция обязана соответствовать ряду требований:
      Не возвращать никакого результата (быть объявленной с типом void) Принимать в качестве первого аргумента переменную с типом byte в которой будет храниться число равное количеству переданных параметров Принимать в качестве второго параметра переменную с типом char** в которой будет храниться указатель на массив со всеми указателями (char*) на переданные параметры void myFunctionName(byte argc, char** argv) { /* ... */ } Функция всегда должна иметь такой вид, даже если не подразумевается, что ей будут передаваться какие-либо параметры.
      Чтобы перебрать все переданные параметры и вывести их в консоль, можно воспользоваться следующим примером
      void myFunctionName(byte argc, char** argv) { if (0 < argc) { for (uint8_t i = 0; i < argc; i++) { Serial.printf("%i. %s\n", i, argv[i]); } } } Пример вызова пользовательской функции без параметров и с ними
      # test No parameter was passed # test p1 p2 p3 p4 p5 0. p1 1. p2 2. p3 3. p4 4. p5 Помните, что параметры представлены в виде указателей и работать с ними нужно как с обычными переменными не получится т.к указатель содержит не значение переменной (переданный параметр), а указатель на ту область памяти микроконтроллера в которой это значение находится.
      Чтобы сравнить два значения, например, параметр под индексом 0 (идет первым в списке) с каким-либо значением в программе, воспользуйтесь функцией strcmp, которая возвращает целочисленное значение, указывающее на лексическое расхождение строк. Если строки равны, то возвращаемое значение равно 0.
      if (!strcmp(argv[0], "wifi")) { Serial.println(F("Первый аргумент WiFi")); } else { Serial.println(F("Первый аргумент НЕ WiFi!!!")); } Для копирования значения указателя в другую переменную с типом char можно воспользоваться функцией strcpy
      char myVar[20]; strcpy(myVar, argv[0]); if (myVar == "123456") { Serial.prinln(F("ok")); } Также можно обернуть указатель объектом String и получить весь функционал этого объекта, который будет содержать значение параметра
      String param1(argv[0]); // String param1 = argv[0]; Serial.printf("argv[0] length: %i\n", param1.length()); Serial.printf("argv[0] is integer?: %s\n", param1.toInt() ? "YES" : "NO"); if (param1 == "qwerty") { Serial.println(F("Hello QWERTY!")); } С библиотекой идут несколько примеров, в том числе и пример конфигурации WiFi в режиме STA.
      Автор Kitsum Добавлен 05.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека smartBlink, реализует умное управление штатным светодиодом, что позволяет добавить индикацию состояния вашей программы или микроконтроллера.
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
      Автор Kitsum Добавлен 10.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...