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

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

Разобрался. esp подключается но ее не видно в роутере,почемуто. Wifi сканер нашол, по ip полключается

 

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
01.06.2020 в 16:13, vladsimf сказал:

Второй вопрос связан с отображением выбираемой температуры и форматом передаваемых данных. Хотелось бы получить значения на мониторе в виде дробного числа, а при передаче в виде uint. (23.5 и 235 соответственно)
2 MB · 1 скачивание

Вопрос снят.

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


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

Доброго дня, отличный проект, я в коде не сильно разбираюсь, поэтому вопрос, допустим у меня есть только датчик HTU21D

нужно: 

- мерять температуру и влажность этим датчиком одновременно

-  чтобы по превышении заданного порога влажности запускался вентилятор

не нужно: 

- управление нагрузкой при расхождении расчетной абсолютной влажности между двух датчиков

Что нужно поправить в коде?

 

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


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

Всем привет. Подскажите пожалуйста как добавить в WEB показания температуры с датчика HTU21D, сейчас отображается с этого датчика влажность в % и влажность в г/м3?

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


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

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

 

Разобрался.Путь папки со всеми файлами должен быть стандартным.

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

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


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

Добрый день.

Непешно пытаюсь разобраться с разными датчиками. Возник затык с DHT11 (ну такой вот валялся - не стыдите).

#include <DHT.h>
#include <DHT_U.h>

#ifndef USERS_H
#define USERS_H

DHT dht(5, DHT11);

/* Параметры индикаторов web интерфейса для плагина Knob
                       Мин  Макс   Шаг    Заголовок      Ед. измер.
|---------------------|----|------|------|--------------|---------| */
knob_t *T = new knob_t(-40, 125, ".1", "Температура", "°C");
knob_t *H = new knob_t(  0, 100, ".01", "Влажность", "%");

/* Добавление датчика в систему */
void sensors_config() {
      dht.begin();
  
  /* DHT на страничке внешнего датчика */
  sensors.add(T, "out_temperature", [&](){ return dht.readTemperature(); });
  sensors.add(H, "out_humidity", [&](){ return dht.readHumidity(); });

  /* ESP на странице внутреннего датчика */
  sensors.add(new knob_t(-100, 0, "1", "RSSI", "dbm"), device::in, "rssi",[&](){ 
    return wifi.isConnected() ? WiFi.RSSI() : 0; 
  });
  sensors.add(new knob_t(0, 5, ".01", "Питание", "V"), device::in, "vcc", [&](){ 
    return ESP.getVcc() * 0.001; 
  });
  sensors.add(new knob_t(0, 81920, "1", "RAM", "Byte"), device::in, "ram", [&](){
    return 81920 - ESP.getFreeHeap();
  });

}

#endif

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

1. На странице отображаются целые значения влажности и температуры. Хотя при самообновлении показаний, видно как у температуры меняются десятые, а у влажности сотые. Как только процесс самообновления завершается, опять только целые значения.

2. На суточном графике нет значений влажности и температуры. Мало того, что их нет по сути, еще и нет цифр на вертикалных осях слева и справа.

 

Подскажите, в какую сторону копать, чтобы поправить эти два момента.

---------------------------------------

C проблемой 2 разобрался. Оказалось достаточно записать две строки в таком виде:

  sensors.add(T, "out_temperature", [&](){ return dht.readTemperature(); }, true);
  sensors.add(H, "out_humidity", [&](){ return dht.readHumidity(); }, true);

Теперь давление и температура пишутся на суточном графике.

Изменено пользователем U-M

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


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

Здравствуйте!

sensors.add(T, "out_temperature", [&](){ return dht.readTemperature(); }, true);
sensors.add(H, "out_humidity", [&](){ return dht.readHumidity(); }, true);

перепишите в такой вид:

sensors.add(T, device:: out, "out_temperature", [&](){ return dht.readTemperature(); }, true);
sensors.add(H, device:: out, "out_humidity", [&](){ return dht.readHumidity(); }, true);

C уважением.

  • Like 1

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


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

Здравствуйте!

Вопрос к уважаемому автору.

Возможно ли в проект добавить функцию изменения значения переменной в коде средствами плагина knob?

К сожалению являюсь самоучкой. Не всё могу сделать сам, но видоизменить и использовать в своём проекте в силах.

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

С уважением!

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

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


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

Добрый день. Что то делаю не так только не пойму что. Качал архив там где уже с библиотеками. Не хочет подключаться.

https://ibb.co/sCdQkBn

все заработало спустя время

информация фатал на скрине это норма?

2.thumb.jpg.203a8c7c9adf5676505c9dbb3dfc07f0.jpg

 

Изменено пользователем Sergei
заработало

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


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

Подскажите пожалуйста как оптимально вставить в управление GPIO включение и выключение пина по времени? Как я понимаю время уже берется с интернета.

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


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

Плюнул, сделал через блинк. Пытаюсь сделать кормушку для кота с обвесом в виде метеостанции и экрана. Пока экран выдает поочередно время, дату, погоду на 3 дня, текущие показатели датчиков. Ну и на страницу с датчиками прикрутил планку прогноза погоды как тут постили раньше. Спасибо за проект. 

IMG_20190418_222754.jpg

ESP8266_WS_V2.0_and_oled.zip

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


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

Здравствуйте.

Модуль ESP-12F прошил прошивкой автора темы. Включаю станцию, начинает мигать синий светодиод на модуле. В Web интерфейс 192.168.4.1. захожу, меняю пароль в секции "Точка доступа- аварийный режим". Перегружаю модуль. Синий светодиод мигнул раз и погас. Название сети модуля изменилось на "WiFi-IoT", но сеть НЕ защищена, можно спокойно подключиться кто хочет. Прошил еще раз, все то же самое. Все остальное работает, температуру, давление, влажность показывает. И ДА, как у "Sergei", так же "Fatal error". Странно, но год назад шил станцию этой же прошивкой, ничего подобного не было, все работало, пароль ставился, сетка была защищена. Error-ов не было. Что я сделал не так? Шил ArduinoIDE что в комплекте с прошивкой.

И еще, подскажите, пожалуйста, что изменить в скетче, чтобы использовать модуль ESP-1 с замененной на 4Гб памяти. Не найду, что изменить, чтобы на его порты GPIO-0 и GPIO-2 подключить датчик BME-280.

 

Изменено пользователем Vladik
дополнение

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


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

Люди, помогите, две платы прошивал, ни в одной не сохраняется пароль (и название не меняется) на WIFi аварийный  режим станции. Точнее, в WEB интерфейсе все сохраняется, вот только название аварийной WiFi сети станция выдает свое, которого нет в интерфейсе и пароль при подключении к WiFi точке доступа станции не спрашивает. При сбросе кнопкой Reset на плате светодиод моргает 1 раз и больше не горит. Если сбросить настройки платы в Веб интерфейсе, название WiFi точки доступа усианавливается по умолчанию и светодиод начинает мигать. Плата вот такая.

IMG_20210305_201040~01.jpg

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

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


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

Плата правильно выбрана?, Настройки  разметки диска?

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


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

Плата правильно выбрана?, Настройки  разметки диска?

Первым делом проверил, как мастер писал, "nodemcu ver.1 (esp12)", flash 4mb (3mb/512), все, как в инструкции. Пробовал и esp8266, ноль реакции, так же работает. Голову сломал.

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

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


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

 

Поставил с нуля ArduinoIDe 1.8.10 (с этого сайта последний с прошивкой 2 beta) на комп. с Windows-10. Прошил плату. Все прошилось без ошибок, как и раньше. Работает все, КРОМЕ запоминания пароля и названия в Аварийном режиме. К домашнему роутеру подключается. Но мне не надо к домашней сети, мне надо, чтобы станция работала в режиме точки доступа с запароленной сетью WiFi, чтобы к станции мог подключаться только я. Это у всех в аварийном режиме нельзя поставить на  WiFi пароль или только у меня?

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


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

Прошил модуль в Windows 7. Ничего не изменилось (((

Прикладываю видео прошивки.

Скрытый текст

Всем спасибо, кто откликнулся.

Проблему решил, установив последнюю версию Java. Fatal error в Web интерфейсе перестал появляться после замены версии платы ESP8266 Boards в библиотеке - вместо 2.6.3  установлена версия 2.7.4.

И, оказывается,  пароль WiFi точки доступа модуля должен быть от 8 символов и длиннее.

Изменено пользователем Vladik
решено

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


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

Всем добрый день. Небольшой отзыв по работе метеостанции. Работала полтора года. Сначала отвалился датчик CCS811, почти сразу. Некоторое время он показывал что-то около нормальных значений, потом улетел в небо. Далее BME 280. Саму плату я залил лаком, кроме соответственно самого датчика. Летом проблем не было, но осенью, зимой и весной датчик почти постоянно висел со 100% влажностью в показаниях. Как я понимаю, проблем в том, что под металлическим кожухом датчика конденсируется влага. И нужно время, что бы она высохла естественным путем. В датчиках SI7021 и SHT30-35 и некоторых других предусмотрена просушка датчика путем прогревания. Хорошая статья по датчикам тут. Буквально вчера датчик вообще полностью перестал работать.  Без проблем проработал датчик освещенности. Датчик на любителя и ценность его показаний тоже. Но работал он без проблем. В моей метеостанции esp была смонтирована на улице рядом с датчиками. В герметичном корпусе за полтора года с ней никаких проблем. Работает и сейчас отлично. Планирую немного модернизировать станцию. Откажусь от BME, есть пару BMP, буду их использовать только для давления, а влажность сокрее всего буду брать от SI7021. И если получится (я не программист ни разу) попробую прикрутить к станции DS18B20 только для температуры. Kitsum спасибо за то, что поделились кодом и конструкцией! Всем удачи!

IMG_2753.jpg

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


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

влажность сокрее всего буду брать от SI7021

остановитесь на SHT-31 -их недорогих самый адекватный и по температуре и по влажности

по влажности ошибка до 2%, у SI7021 - до 6-8%

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


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

Добрый день!

Есть цифровой датчик GY-1145 работает по шине I2C.

Как я понял, с его помощью можно измерять UV Index  и уровень освещённости.

Хотелось бы  его прикрутить в данный проект?

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


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

Добрый день.

 

Нужна консультация по такому вопросу - периодически, через разные интервалы времени "отваливается" wi-fi на метеостанции. При чем метеостанция не видна по IP выданному ей роутером ни по своему IP вида 192.168.4.1. Приходится передергивать питание.

Само питание метеостанции стабильное, сигнал к роутеру также стабилен и эфир не загажен. GPIO 0 подтянут к питанию.

Единственное, что может быть нестандартным, по МАС адресу роутер всегда выдает метеостанции выделенный для нее IP.

 

В какую сторону посмотреть, для решения проблемы?

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


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

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

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



Войти сейчас

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

    • Автор: 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 пользователей

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

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