Скрыть объявление
Управляйте вашими ESP8266 и другими устройствами прямо с телефона из любой точки мира, где есть интернет!
Подробности и обсуждение IoT Manager в этой теме. Официальный сайт приложения и документация IoTmanager.ru
Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "ESP8266 Arduino IDE", создана пользователем Victor, 28 мар 2015.

  1. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    Arduino IDE для ESP8266
    ArduinoIDE.png

    Новый метод установки на стандартную версию Arduino IDE 1.6.4, через Board Manager
    1. Установить Arduino IDE 1.6.4 с официального сайта Arduino
    2. Запустить IDE, далее Файл - Настройки - в поле "Additional Boards Manager URLs" вставить ссылку на стабильную версию http://arduino.esp8266.com/package_esp8266com_index.json, или для nightly build http://arduino.esp8266.com/staging/package_esp8266com_index.json, нажать OK
    3. Инструменты - Плата - Boards Manager
    4. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
    5. Кликните Install
    6. Дождитесь окончания загрузки (около 130 Мегабайт)
    7. Закройте Boards Manager и в меню Инструменты - Плата - Generic ESP8266
    8. Установите частоту вашего модуля 80/160Mhz, размер флеш памяти и выберите порт
    9. Profit!
    ArduinoBoardsManager2.png
    Скачать с github (Windows, Linux, Mac OS X)
    Скачать исходный код
    Скачать x64 Alpha с appveyor build-сервера

    Инструкция по сборке Arduino IDE из исходников на разных платформах

    Альтернативный метод установки на 1.6.4, предложенный Adafruit
    1. Установить Arduino IDE 1.6.4 с официального сайта Arduino
    2. Запустить IDE, далее Файл - Настройки - в поле "Additional Boards Manager URLs" вставить https://adafruit.github.io/arduino-board-index/package_adafruit_index.json, нажать OK
    3. Инструменты - Плата - Boards Manager
    4. В Boards Manager в поле фильтра введите esp8266 или вручную пролистайте список и кликните на ESP8266 by ESP8266 Community Forum
    5. В появившемся поле выберите версию 1.6.2 и кликните Install
    6. Дождитесь окончания загрузки (около 130 Мегабайт)
    7. Закройте Boards Manager и в меню Инструменты - Плата - Generic ESP8266
    8. Установите частоту вашего модуля 80/160Mhz и выберите порт
    9. Profit!
    ArduinoBoardsManager.png
     
    Последнее редактирование: 29 май 2015
  2. shaman1010

    shaman1010 Читатель

    Сообщения:
    103
    Симпатии:
    11
    День добрый, в скачанном c Вашего гитхаба Arduino 1.6.1 пытаюсь скомпилировать что-либо (WebServer) - ошибка (в Win8.1/64 не указана, какая). Пытаюсь залить бутлоадер - ошибка.
    В первом случае - посмотрел, какой экзешник крешится, это xtensa-lx106-elf-g++.exe
    Пытаюсь запустить его отдельно - наконец-то выяснилось, чего ему нужно: libiconv-2.dll Он есть по пути arduino-1.6.1\hardware\tools\avr\libexec\gcc\avr\4.8.1, но не подтягивается.
    При попытке залить бутлоадер вываливается такая ошибка: "Ошибка при загрузке бутлоадера: пропущен 'bootloader.tool' параметр конфигурации"
    И еще, в гитхабе не работает кнопка "Clone in Desktop" - это что-то не включено, либо пока github борется с DDOS-ом, они что-то там отключили?
     
  3. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
  4. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Да, проблема с dll-кой, на билд сервере она почему-то перестала перекладываться в каталог с arduino.exe.
    К вечеру выложу исправленный билд, пока можете скопировать вручную.
     
  5. shaman1010

    shaman1010 Читатель

    Сообщения:
    103
    Симпатии:
    11
    Да, скомпилировалось, сервер запустился. С бутлоадером ошибка осталась.

    Подскажите, в этом проекте можно будет использовать область флеши, выше 512кБ? (сейчас 16МБ впаяна).
     
  6. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    А что за бутлоадер вы хотите прошить? в esp бутлоадер находится в ROM, поэтому на функцию прошивки бутлоадера я не вообще не смотрел.

    в принципе можно использовать и 16mb flash. добавлю поддержку в список тасков.
     
  7. shaman1010

    shaman1010 Читатель

    Сообщения:
    103
    Симпатии:
    11
    В программаторах засветился esptool, предположил по аналогии с соседним Arduino IDE ESP8266, что он может отдельно загрузчик записать. (1.2, 1.3b). По большому счету не критично, гораздо нужней там была бы функция "стереть fullflash" (забить весь объем FF-ками) очень практично, особенно в периоды испытаний.


    Отлично! Думаю вполне логичным смотрится вариант, предложенный pvvx (все програмное пространство ограничить стандартными 512кБ, а остаток - отдать под файловую систему, ту же обсуждаемую spifFS, или еще какую-либо). Хотя Вам видней, как правильней организовать работу с повышенным объемом, но поддержка нужна. На 15MB можно вполне себе рюшечный интерфейс соорудить, либо данные с датчиков месяц хранить...


    upd. Скетч тестового Web-сервера. В консоль до начала отработки текущей программы сыпется мусор (наверное бутлоадер согласовывается). Получается не совсем корректная отработка. Как этот мусор можно отключить?

    upd2. Если в хроме зажать F5, то сервер валится, оставляя за собой в консоли:
    Код (Text):
    1.  
    2. ets Jan  8 2013,rst cause:4, boot mode:(3,7)
    3.  
    4. wdt reset
    5. load 0x40100000, len 30000, room 16
    6. tail 0
    7. chksum 0x99
    8. load 0x3ffe8000, len 2556, room 8
    9. tail 4
    10. chksum 0x5e
    11. load 0x3ffe8a00, len 2340, room 4
    12. tail 0
    13. chksum 0x70
    14. csum 0x70
    15. r”0
    16.  
     
    Последнее редактирование: 28 мар 2015
  8. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Сейчас приложение собирается без загрузчика второй стадии, то есть по адресу 0x00000 идет само приложение. Вероятно, в будущем это изменится для поддержки функции заливки прошивки по воздуху, тогда понадобится запись загрузчика.

    Да, для начала нужно сделать поддержку spiffs и прицепить C-шный stdio к этой файловой системе (как это сделано в mbed, например).

    Вроде бы после перезагрузки бутлоадер всегда выдает лог загрузки на скорости 74800. А что именно некорректно отрабатывает из-за этого.


    Принято, посмотрю.
     
  9. shaman1010

    shaman1010 Читатель

    Сообщения:
    103
    Симпатии:
    11
    Если пропадает питание и модуль висит на uart-е роутера:
    В начальный момент загрузки большинство коммутаторов/роутеров с консольным входом делают таймаут в 1-2 сек, для возможности перехвата управления.
    Если в консоль в этот момент пульнуть хоть что-нибудь - он остановится в ожидании дальнейших указаний.
    Аналогично себя ведут многие устройства (спутниковые тюнера, планшеты, ...), правда в некоторых сделано чуть лучше - они ожидают определенную последовательность.
     
  10. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    посмотрите это
     
  11. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    99
    Немного запутался с переносом веток, поэтому отпишусь здесь.

    Очень инетерсный проект. то что касается переключения контекста - это просто восхитительно. Я хотел добиться решения задачи выполнения фоновых задач в Sming, и именно поэтому изначально долго присматривался к FreeRTOS. Но с нм не задалось (хотя, вполне вероятно зря, потихоньку продолжаю смотреть в ту сторону). У Вас же простое красивое и элегантное решение для главной проблемы - как заставить фоновые задачи работать корректно (и без привлечения многопоточной ОС). Я изучил код, но пока все равно, как мне кажется, еще не полностью понимаю эту ассемблерно-стековую магию, igrr, могли бы Вы рассказать поподробнее?

    По возможностям здесь есть несколько плюсов и несколько минусов в сравнении с моими текущими наработками:
    Плюсы
    • Просто шикарное решение по переключению котекста и выполнению фоновых задач
    • mDNS - раньше не задумывался о подобной возможности, маленький но очень приятный штрих к теме виртуальных веб серверов
    Минусы/чего не хватает
    • Файловая система
    • Полноценный веб-сервер с Views и Templates (а вообще, если честно, мне кажется не совсем правильно делать всю обработку в веб сервере на String'ах, хотя бы просто по памяти)
    • HTTP клиент
    • FTP
    • SPI
    • Протестированная работа с различной периферией и готовые примеры
    • AnalogWrite (но, в Sming сейчас тоже только софтверный)
    • Обертки под системные API
    Так что тут правда хорошо бы как-нибудь кооперировать наши усилия, но как? Мы зашли к решению схожих проблем с немного разных сторон, более того, изначально Sming рождался именно как идея перенести Arduino под ESP (и даже назывался NetWiring) но позже я пересмотрел концепцию, т.к. с одной стороны, понял что совместимость никогда не будет полной, а с другой, что ESP8266 намного мощнее любых Ардуино поэтому не надо пытаться загнать разработку в эти старые рамки. Поэтому например появилась полноценная файловая система а не эмулятор EEPROM (который планировался изначально), весьма мощные классы для веб сервера и т.п.

    igrr, буду рад пообщаться по любым вопросам!
     
    Victor нравится это.
  12. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Я начал писать этот код до выхода версии sdk с FreeRTOS, поэтому это был единственный способ, который просматривался.
    Общая идея такая. Есть функция loop_wrapper в core_esp8266_main.cpp, весь пользовательский код (т.е. setup и loop) запускается оттуда. Функция loop_task (в том же файле) — это обработчик таска, которому назначен приоритет 0. Функция loop_wrapper, а вместе с ней и пользовательский код, запускаются из этого обработчика таска. При запуске функции loop_wrapper мы смотрем, есть ли у нас сохраненный стек (т.е. было ли прервано выполнение функции loop_wrapper на предыдущем вызове таска). Если нет — сохраняем регистры, указатель на верхушку стека (SP) и указатель на инструкцию (PC) — это даст нам возможность "выпрыгнуть" из функции loop_wrapper, когда потребуется, после этого начинаем выполнять loop_wrapper. Если сохраненное состояние есть — восстанавливаем записанные SP, PC, и другие регистры, и продолжаем выполнение loop_wrapper из того места, где оно было приостановлено. Для переключения контекста есть две функции: esp_yield и esp_schedule. Первая сохраняет PC, SP, и другие регистры и "выпрыгивает" из loop_wrapper, тем самым возвращая управление системе, вторая — просто вызывает system_os_post для запуска таска при следующей возможности.
    Ограничение такого подхода — можно сделать только один дополнительный контекст.

    В целом согласен, я бы отнес к фичам своего проекта еще и библиотеку ESP8266WiFi, которая реализует знакомый многим API библиотеки WiFi Shield.

    Да, это очень мощный функционал. Насколько я понимаю, всё это можно обернуть в библиотеки. При этом останется базовая совместимость с Arduino и совместимые API для работы с WiFi и TCP/IP, но также появится куча мощных функций. Внутри библиотек при этом можно делать все что угодно — использовать lwip напрямую, не использовать String и т.п.
    Если мы сможем адаптировать ваши библиотеки (веб-сервер, http, ftp, spi, sleep modes и т.д.) для компиляции в составе Arduino, мне кажется, будет очень крутое решение.
     
    ivy и Victor нравится это.
  13. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    Мысли по поводу обновления прошивки по воздуху.
    Рассматриваемый Иваном вариант
    Отлично подходит для прошивки по WiFi, но не очень подходит для передачи файлов по WiFi (а когда будет реализована файловая система - этот вопрос точно возникнет). Может быть решать задачу в комплексе?

    Если использовать программатор не esptool, а другую универсальную консольную утилиту, то вопрос может быть частично снят. (Выбираем в меню esptool - прошиваем через serial, выбираем другую - шьем по WiFi)

    Однако я вижу еще и необходимость в утилите с интерфейсом, похожим на файловый менеджер для легкого выполнения операций на файловой системе. Это позволит быстро разрабатывать и отлаживать HTML,CSS и Javascript файлы.

    Именно по этому пути я развиваю ESPlorer для NodeMCU (если помните, сначала была консольная luatool. И да, в ESPlorer по WiFi тоже планируется передача файлов). Сейчас люди используют и luatool и ESPlorer только для решения разных задач.
     
  14. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
  15. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Как насчёт использования FTP для заливки файлов? И не придётся писать собственные GUI тулы...
     
  16. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    Вполне рабочий вариант. Желательно еще на всех модулях mDNS поднимать. Хотя с mDNS вроде в любом случае удобнее.
     
  17. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    igrr, получается что не нужно
    а просто выбираем другой прошивальщик вместо esplool, который ищет доступные esp8266, выводит их где-то списком, юзер выбирает нужную и прошивка полетела по воздуху.
    Как такая идея?

    на его странице загрузки http://www.arduinesp.com/download/
    Код (Text):
    1. Change list
    2. 0.20 – 29 March 2015 – Core replaced with esp8266.com/arduino created by Ivan Grokhotkov
     
  18. igrr

    igrr Moderator Команда форума

    Сообщения:
    70
    Симпатии:
    23
    Вообще не хотелось бы городить какие-то внешние окна выбора, когда есть уже встроенное в среду меню, для этого предназначенное.
    Но возможно это разумный компромисс, пока device discovery в самой среде не будет отрефакторен для поддержки чего-то кроме Yun.
    Только тогда писать этот gui нужно на чем-то кросс-платформенном, не требующем еще одного рантайма (Java, или С++wxWidgets).
     
  19. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    получается мне надо еще младшего брата ESPlorer-у запилить :)
     
  20. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.092
    Симпатии:
    348
    igrr, народ тут спрашивает когда можно будет GPIO0 руками не дергать - хотят точь в точь как на ардуине или UDK.
    Я, честно говоря, вообще не понимаю, почему это сразу не реализовано. С этим какие-то подводные камни есть?
     

Поделиться этой страницей