Автоматика LuckyBox

В этой теме 1,030 ответов, 95 участников, последнее обновление  JON 11 мес. .

Просмотр 15 сообщений - с 151 по 165 (из 1,031 всего)
  • Автор
    Сообщения
  • #20718

    Alex
    Участник
    • Ответов: 62
    @kanadec

    Разобрался, всем спасибо

    0
    #20719

    Sybastian
    Участник
    • Ответов: 22
    @sybastian

    Исходя из листинга, реальный контроль “нуля” никак не осуществляется (да и не требуется в данной реализации), семистор сам закроется когда “увидит 0” и программе останется только окрыть его (согласно настроек)

    0
    #20720

    Sybastian
    Участник
    • Ответов: 22
    @sybastian

    В Heater.ino, ф-цию heaterLoop() можно упростить, к примеру так:
    void heaterLoop() {
    if ( heaterStatus ) {
    ResOut();
    State = !State;
    lastTime = millis();
    }
    else { digitalWrite(heater, 0); }
    }

    В частности:
    – строка/блок “if ( lastTime + 250 <= millis() )…” не нужна, т.к. “lastTime + 250” всегда будет меньше millis() из-за вызова heaterLoop() из основного цикла программы, в котором как минимум  dallRead(flagDallRead*1000) является блокирующей (в среднем от 200 до 750 млс * кол-во датчиков)
    – оптимизация/упрощение

    0
    #20721

    Счастливчик
    Хранитель
    • Ответов: 2597
    @wpadm

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

    Да, вполне. Сейчас тестируем упрощенный способ заливать прошивку. А дальше работайте не здоровье.

    Объясните плз  поподробнее строку  18 в Heater.ino  –     if (lastTime + 250 <= millis())

    Что бы не перегружать контроллер, не заставляем каждые 10 мс что-то делать. У ТЭНа огромная инерционность, и переключения раз в 100, 250 или даже 500 мс вполне допустимы и на процесс не влияют. Надо будет видео с подключенной лампочкой записать, как в свое время ers снимал.

    вывод: На моей плате пины sd2 sd3 использовать нельзя.

    Вы датчики по питанию к + 3.3в подтянули? Резистором 10к?

    Каким образом скетч отслеживал переход через ноль? 0

    Реле само переключается только через ноль. Это его стандартная функция.

    Хорошо живет на свете Винни-Пух...

    0
    #20723

    Счастливчик
    Хранитель
    • Ответов: 2597
    @wpadm

    в котором как минимум  dallRead(flagDallRead*1000) является блокирующей (в среднем от 200 до 750 млс * кол-во датчиков)

    Неправильно. Чтение датчиков асинхронное. Сначала идет запрос на измерение температуры, затем опрос датчиков. Все это напрямую по счетчику millis. Т.е. задержек нет вообще.

    Значит и ваше предложение по ТЭН не будет работать.

    Предлагаю по возможности компилировать и тестировать у себя предварительно предложения по изменениям кода. Т.к. в этом случае все очевидно, а где-то будет нет.

    Хорошо живет на свете Винни-Пух...

    0
    #20725

    Сирожа
    Участник
    • Ответов: 2004
    @4-6

    Скажите а на диск D можно поставить? И будет проблема при установке и после переустановки винды А то у меня хакер сопливый есть ,так винду рублю раз в пол года,

    Быстро выпитый стакан не считается налитым.

    0
    #20727

    alpetrovski
    Участник
    • Ответов: 25
    @alpetrovski

     

    Объясните плз поподробнее строку 18 в Heater.ino – if (lastTime + 250 <= millis())

    Что бы не перегружать контроллер, не заставляем каждые 10 мс что-то делать. У ТЭНа огромная инерционность, и переключения раз в 100, 250 или даже 500 мс вполне допустимы и на процесс не влияют. Надо будет видео с подключенной лампочкой записать, как в свое время ers снимал.

    ну в таком случае должно быть     if (lastTime + 250 > millis())  те совершать действие если с момента предыдущего прошло более 250mc ?

     

    0
    #20728

    Счастливчик
    Хранитель
    • Ответов: 2597
    @wpadm

    Скажите а на диск D можно поставить? И будет проблема при установке и после переустановки винды А то у меня хакер сопливый есть ,так винду рублю раз в пол года,

    Куда угодно можно. И проблем не будет.

    Зависит от того, что ты хочешь. Если в коде ковыряться, то среда ардуино нужна. А если готовве прошивки брать, то коллеги решений накидали, оттестируем и можно будет по упрощенной процедуре прошивки заливать. Одна программа загрузчик, 5 минут и … вуаля

    Хорошо живет на свете Винни-Пух...

    1+
    #20729

    Счастливчик
    Хранитель
    • Ответов: 2597
    @wpadm

    ну в таком случае должно быть     if (lastTime + 250 > millis())  те совершать действие если с момента предыдущего прошло более 250mc ?

    Коллега, вы заставляете нас работать компиляторами ваших изменений в коде. Дождитесь контроллера и тестируйте))

    Хорошо живет на свете Винни-Пух...

    0
    #20730

    Андрей
    Участник
    • Ответов: 49
    @andydav

    Вы датчики по питанию к + 3.3в подтянули? Резистором 10к?

    Нет,вот я ламер,запаяю,проверю.Спасибо.

    0
    #20731

    Sybastian
    Участник
    • Ответов: 22
    @sybastian

    в котором как минимум dallRead(flagDallRead*1000) является блокирующей (в среднем от 200 до 750 млс * кол-во датчиков)

    Неправильно. Чтение датчиков асинхронное. Сначала идет запрос на измерение температуры, затем опрос датчиков. Все это напрямую по счетчику millis. Т.е. задержек нет вообще.

    Верно, не обратил внимания что чтения датчиков происходит только OneWire(в моей реализации еще есть DallasTemperature, которая и устраивает 0,7сек. задержку на датчик)

     

    0
    #20732

    Роман
    Участник
    • Ответов: 290
    @papazol

    Видео https://www.youtube.com/watch?v=S_uUenTkda4 уже вышло на ютубе, а здесь я не увидел его. Поскольку в этом видео была просьба комментарии писать здесь, а не там, я и напишу здесь. Правда, будет непонятно, что я комментирую 🙂

    В одном ролике невозможно объяснить всё с самого начала (для чайников). Однако, это и не нужно. Нет смысла знать внутреннюю архитектуру модуля ESP8266, всё равно она сложнее, чем можно объяснить. Но вот акцентировать внимание на том, что этот модуль – не просто микропроцессор, а именно WiFi модуль, необходимо. Потому что по видео непонятно, через что осуществляется обмен информацией между модулем и смартфоном/компьютером.

    Также стоит сказать, что в данной концепции (использование web-интерфейса) используются те же приёмы и средства, которые используются при создании “обычных” web сайтов (страниц), то есть, по сути, наш модуль ESP8266 содержит в себе web сайт!

    Этот “сайт” расположен не в Интернете, а в локальной WiFi сети. Поэтому и доступ к нашему “сайту” имеют только устройства, подключенные к этой локальной WiFi сети. Для этого устройство должно иметь на борту браузер, а также необходимо знать адрес “сайта”. Поскольку мы имеем дело с домашней сетью, осмысленного наименования “сайта” мы не получим (в нашей сети нет DNS-сервера). Поэтому придётся использовать цифровой IP адрес. Этот адрес имеет вид 192.168.Х.Y.

    Модуль ESP8266 может работать в двух основных режимах: режим точки доступа (AP) и режим подключения к существующей WiFi сети.

    В режиме точки доступа модуль ESP8266 создаёт свою собственную WiFi сеть, которая называется LuckyBox. К этой сети можно подключиться с любого смартфона/планшета, введя пароль 12345678. Режим точки доступа необходим для того, чтобы а) при первом включении мы могли ввести наименование и пароль своей домашней сети и б) можно было работать в таком месте, где домашней сети нет вообще. IP адрес модуля в режиме точки доступа фиксированный (192.168.4.1). Именно его следует ввести в адресную строку браузера после подключения к точке доступа LuckyBox. При этом загружается страница настроек, на которой можно ввести наименование и пароль своей домашней WiFi сети и сохранить их в упомянутом файле конфигурации. После этого при перезагрузке/подаче питания на модуль ESP8266 он будет пытаться подключиться к указанной в файле конфигурации домашней WiFi сети. В случае успешного подключения роутер выдаст модулю IP адрес.

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

    Первый способ требует подключения модуля к компьютеру USB кабелем. Находясь в программе Arduino IDE, следует открыть Монитор порта. При этом модуль будет автоматически перезагружен, и в окне Монитора появятся служебные сообщения. В том числе будет указан IP адрес. Вводим этот адрес в адресную строку браузера и заходим на наш “сайт”.

    Второй способ основан на упомянутой функции SSDP. Однако не на всех компьютерах это работает. Например, на моём – не работает. Поэтому альтернативный способ “добывания” IP адреса знать необходимо.

    Обмен данными между web сервером (модулем) и открытой в браузере страницей осуществляется методом AJAX (Asynchronous Javascript and XML), то есть без перезагрузки страницы. Изменяются только те элементы страницы, которые изменять необходимо, например, значения температуры, уставок и т. п. Все остальные элементы страницы (текст, рисунки) загружаются лишь один раз. Это позволяет уменьшить трафик и ускорить обновление информации.

    Метод AJAX основан на JavaScript. Будем считать, что это такой язык программирования. Текст программы на JavaScript называется “скрипт”. Скрипты обрабатываются и выполняются средствами браузера. Использование JavaScript позволяет переложить большую часть вычислений, требующих нагрузки на процессор, с web сервера на браузер конечного пользователя. Тем самым можно снять нагрузку с компьютера, на котором установлен web сервер, и, следовательно, использовать менее мощный (и дешёвый) компьютер. В нашем случае таким маломощным компьютером является микропроцессор модуля ESP8266.

    Текст загруженной в браузер html-страницы содержит также и либо сам текст скрипта, либо ссылку на файл *.js, содержащий текст скрипта. Браузер, открыв страницу, загружает и начинает выполнять команды скрипта. Например, в нашем случае, скрипт содержит команды, направленные на периодическую передачу запросов значений температуры. Период формирования запросов задаётся в скрипте. Скрипт формирует текст запроса, содержащий некоторое ключевое слово, вводит его в адресную строку браузера и передаёт на сервер (а сервер – это модуль ESP8266). Затем скрипт ждёт ответа от сервера.

    В это время сервер принимает запрос, обнаруживает ключевое слово и в соответствии с этим ключевым словом выполняет функцию, формирующую текст ответа в виде файла *.json.

    Аббревиатура json означает JavaScript Object Notation. Нужно заметить, что файлы *.json – это обычные текстовые файлы, их можно открыть в Блокноте. Формат файла *.json очень прост. Он содержит пары “переменная:значение”, перечисляемые через запятую.

    Сформировав текст файла *.json, сервер отсылает его браузеру. Таким образом сервер сообщает браузеру значения запрошенных переменных.

    Приняв ответ на свой запрос, браузер (а, точнее, скрипт) разбирает (парсит) текст файла *.json, подставляя принятые значения переменных в нужные поля на странице. Таким образом на странице изменяются только текущие значения температур.

    Практически так же осуществляется передача данных от страницы к серверу. Например, мы вводим значение уставки и нажимаем кнопку ЗАДАТЬ. Скрипт отслеживает нажатие этой кнопки и в случае появления этого события выполняет функцию, которая формирует текст запроса, содержащий ключевое слово (другое!) и введённое значение уставки. Этот запрос вводится в адресную строку и отправляется на сервер. Сервер принимает запрос, обнаруживает ключевое слово и выполняет соответствующую функцию, которая изменяет значение внутренней переменной модуля (уставку) на принятое от браузера. Также обычно формируется ответ на запрос, подтверждающий принятие запроса и выполнение необходимых действий. Это ответ отправляется браузеру, и, если он положительный, то ничего не происходит. Если ответ отрицательный или вовсе отсутствует, браузер может вывести предупреждающее сообщение.

    11+
    #20733

    Дмитрий Белов
    Участник
    • Ответов: 14
    @jameswhite

    Помогите, не получается установить Ардуино на Windows. …

    Файл esp8266fs.jar разархивировать не надо. Если Arduino IDE у вас установлено в папку C:\Documents\, то путь к файлу должен выглядеть так: C:\Documents\Arduino\tools\ESP8266FS\ tool\esp8266fs.jar. Отсутствие нужных папок говорит, скорее всего, что установка Arduino IDE не была произведена корректно или смотрите не ту папку.

    1+
    #20734

    Павлуха
    Участник
    • Ответов: 4
    @lamaker777

    экономим драгоценные пины для других возможных устройств (управление насосом охлаждения)

    Расширители портов ведь есть.

    0
    #20736

    юрий
    Участник
    • Ответов: 241
    @19700602pankinmail

    Обьясните пожалуйста,чем они отличаются и какое из них предпочтительней

    Вложения:
    Вы должны войти для просмотра вложений.
    0
Просмотр 15 сообщений - с 151 по 165 (из 1,031 всего)

Тема «Автоматика LuckyBox» закрыта для новых ответов.