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

Общие вопросы по Arduino IDE для ESP8266

AmatorVic

New member
Добрый день. Есть вопрос по Arduino IDE for ESP8266. Вчера скачал с build-сервера с шапки ветки новую сборку. Заметил что в папке hardware\esp8266com\esp8266\variants вместо esp-01 появился generic и изменилась версия SDK. При компиляции рабочий код стал больше на 10%. После загрузки в модуль ESP-01 он не запускается. Виснет на старте.
Что я не так делаю?
Откатываюсь на прежнюю сборку - все ОК.
 

Telek

New member
А у меня новые билды вываливаются с такой ошибкой при запуске IDE
Код:
Exception in thread "main" java.lang.UnsatisfiedLinkError: jnidispatch (/com/sun
/jna/win32-amd64/jnidispatch.dll) not found in resource path
        at com.sun.jna.Native.loadNativeLibrary(Native.java:471)
        at com.sun.jna.Native.<clinit>(Native.java:91)
        at processing.app.windows.Platform.<clinit>(Platform.java:287)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:190)
        at processing.app.BaseNoGui.initPlatform(BaseNoGui.java:601)
        at processing.app.Base.initPlatform(Base.java:177)
        at processing.app.Base.main(Base.java:91)
UPD. Решил. Вынес папку java.
Начиная с 76 билда - esp не стартует.
 
Последнее редактирование:

mischaka

New member
Как воспользоватся командой ESP.wdtDisable(). Компилер пишет что не знает объекта "ESP" .
в каком include описан объект "ESP". Я не нашол, подскажите пожалуйсто.
Спасибо за многочисленные ответы :(
Сам разобрался. У меня оказалась старая версия ардуино. Скачал здес https://github.com/esp8266/Arduino и всё заработало.
 

Ivizil

New member
Что-то у меня не работают загруженные в esp(07) прошивки. Делаю всё по инструкции, скетч успешно загружается, а реакции со стороны esp никакой . Всё время создает точку доступа, зашитую ещё на заводе. Пробовал поморгать светодиодом та же ерунда. Прошивка стоит с завода. Может её нужно поменять?
 

AmatorVic

New member
Что-то у меня не работают загруженные в esp(07) прошивки. Делаю всё по инструкции, скетч успешно загружается, а реакции со стороны esp никакой . Всё время создает точку доступа, зашитую ещё на заводе. Пробовал поморгать светодиодом та же ерунда. Прошивка стоит с завода. Может её нужно поменять?
У меня тоже самое. С IDE 1.6.1 та которая с https://github.com/esp8266/Arduino/releases все работает, грузиться и запускается, а если ставить с https://ci.appveyor.com/project/igrr/Arduino/build/artifacts то загружается, но не запускается. и код получается на 10% больше.
Я об этом писал выше, пришлось откатиться на первую версию с github.com
 

Ivizil

New member
Подскажите у всех так медленно отправляет GET запросы на сервер? Если в примере wi-fi client задержку поставить не 5000 а допустим 50 то скорость составляет примерно 1 запрос в 8 секунды. При этом в скетче нигде больше задержек нет кроме 10 в одном месте и то не в цикле. Я уже и сериал монитор отключал - ничего не изменилось. При всём этом на w5100 шилде получалось до 3-5 запросов в секунду.
 
Последнее редактирование:

AmatorVic

New member
Не знаю как клиент, но в примере WiFiserver при отправке построчно страница отображается также построчно, т.е. отправка ответа на GET запрос от клиента очень медленная.
Скорее всего связана с работой WiFi модуля.
Поэтому я готовлю стразу страницу и потом отправляю её полностью.
Но при этом столкнулся с проблемой буфера функции client.println
Пока не разобрался полностью.
 

AmatorVic

New member
Господа, подскажите, что нибудь работал с массивом PROGMEM на ESP8266.
Что-то у меня не получается с ним работать, хотя в ошибку не вываливается при компиляции.
библиотека есть в поставке.
 

Ivizil

New member
Скорее всего связана с работой WiFi модуля.
Согласен очень похоже что wifi работает очень не торопливо. Может кто знает как это побороть.. ?
И ещё когда к выходу подключен светодиот и отсоеденить минут от контроллера (т.е. отключить сам контроллер отключением "-") то светодиод загорается?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Согласен очень похоже что wifi работает очень не торопливо.
Если используется либа Lwip от Espressif, то там включен по умолчанию алгоритм отправки nagle <-- там описано как отключать.
Если правильно организовать отправку и прием пакетов, то модуль отрабатывает к тысяче штук пакетов (пакет = MSS по 1560 байт) в секунду. Проверено на моей прошивке (можете проверить на своем модуле, записав её). Т.е. поток по TCP у модуля за 1 Мегабайт в секунду без сверх оптимизации. С оптимизацией - к 1.2 Мегабайта в секунду передача файла по HTTP.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Там говорится только про опцию TCP_NODELAY. А как и где ее устанавливать?
Используйте поиск по файлам *.h в Lwip - ищите TF_NODELAY :)
Найдете [HASHTAG]#define[/HASHTAG] TF_NODELAY ((u8_t)0x40U) /* Disable Nagle algorithm */
А дальше придется вам бороться с ++ от СИ :) Memory alloc очень медленный на модуле, да с запретами всех прерываний, и при этом модуль жрет много...
Так что бросайте это занятие - для дрыгания одной релюхой и 8 пакетов в секунду вам хватит. :)
 
Последнее редактирование:

vvzvlad

New member
Так что бросайте это занятие - для дрыгания одной релюхой и 8 пакетов в секунду вам хватит. :)
Мне надо отправлять пару байтов раз в 3 секунды. Но зато надо сделать это без задержек, а сейчас модуль делает это на 30-50мс медленнее, чем телефон с программой на java.
 

pvvx

Активный участник сообщества
Но зато надо сделать это без задержек
Если не нашли как указать Lwip-у отправлять сразу, не задумываясь, то ждите авторов Arduino - опция выставляется в флагах структуры pcb, они укажут. Я вообще не понимаю что такое "скетч" и "кекс" или как тама его, что варят в "дурине" :)
 

vvzvlad

New member
Если не нашли как указать Lwip-у отправлять сразу, не задумываясь, то ждите авторов Arduino - опция выставляется в флагах структуры pcb, они укажут. Я вообще не понимаю что такое "скетч" и "кекс" или как тама его, что варят в "дурине" :)
Я нашел упоминания в WiFiClient.cpp и tcp_impl.h/tcp.h, даже нашел вот это:
[HASHTAG]#define[/HASHTAG] tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY)
[HASHTAG]#define[/HASHTAG] tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY)
Но что такое pcb, которое ему надо передать, я не знаю.
 

tsrman

New member
Я нашел упоминания в WiFiClient.cpp и tcp_impl.h/tcp.h, даже нашел вот это:
[HASHTAG]#define[/HASHTAG] tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY)
[HASHTAG]#define[/HASHTAG] tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY)
Но что такое pcb, которое ему надо передать, я не знаю.
посмотрите в WiFiClient.cpp в районе
int ICACHE_FLASH_ATTR WiFiClient::connect(IPAddress ip, uint16_t port)

там как раз pcb определяется
tcp_pcb* pcb = tcp_new();
if (!pcb)
return 0;

немного ниже попробуйте добавить
tcp_nagle_disable(pcb);
 
Сверху Снизу