Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

ArduinoIDE для ESP8266

Тема в разделе "Sming Open Source Framework", создана пользователем Sermus, 26 мар 2015.

?

Нужна ли возможность использовать ESP8266 как Arduino-совместимые платы?

  1. Нет, Ардуино не для меня

    0 голосов
    0,0%
  2. Мне хватает SDK/UDK

    7,4%
  3. Да, отказался бы от связки Arduino+ESP8266 в пользу просто ESP8266

    42,6%
  4. Использовал бы ESP8266 как более мощную альтернативу классическим Arduino

    81,5%
Можно выбрать сразу несколько вариантов.
  1. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    По просьбе администраторов форума создаю отдельный топик пока в рамках раздела Sming. Если возникнет необходимость, для топиков будет создан отдельный раздел. Теперь к сути.

    Arduino IDE ESP8266
    [​IMG]

    Как вы знаете, ESP8266 это не только [гладкая шерстка, но и 2 кило отборного диетического мяса] не только WiFi модуль, но и довольно мощный процессор. В цифрах "довольно мощный" означает что в сравнении с типовым Arduino, построенным на AVR8 он имеет в 10 раз большую частоту (160MHz против 16), 32-х битную архитектуру против 8-и битной, в 40 раз больше оперативной памяти (80КB против 8) и в 16 или 32 раза больше flash (512КB или 1МБ против 32KB).

    В настоящий момент в мире Arduino ESP используется как некое дополнение к классическому Arduino, наделяющему его WiFi-возможностями. Из преимуществ такого решения можно отметить следующие:
    1) простота программирования, поскольку программируется это добро в классической ArduinoIDE c применением уже написанных библиотек, либо при помощи посылки AT-команд.

    Недостатки:
    1) В системе участвует три железки: Arduino, ESP8266 и конвертер уровней (логических и питания), поскольку большинство Ардуин имеют пятивольтовое питание и логические уровни, а ESP требует трех вольт. Этот факт означает соответствующую стоимость и сложность, особенно, если это все собирается на макетке. Из-за этого проект явно выбивается из парадигмы plug'n'play. Прежде чем играться, нужно помучиться с соединениями.
    2) Какой-то странный перекос, в которой убогая железка управляет гораздо более мощной, хотя мощная, теоретически может решать те же задачи, которые решает убогая.

    Если бы была решена задача "простого" программирования ESP наподобие как это сделано в экосистеме Arduino, это бы нивелировало единственный недостаток программирования "голого" ESP по сравнению со связкой Arduino + ESP.

    Первый шаг к этому сделал уважаемый Anakod, написав обертку с Arduino API над ESP8266. Второй шаг попытался сделать я, перенеся build chain, ESP8266 SDK и код Anakod под Arduino IDE и сконфигурировав все это добро так, чтобы в Arduino IDE ESP8266 выглядел бы как еще одна Arduino-совместимая плата. Первые результаты уже есть. По крайней мере, простые примеры по морганию светодиодом и логированию в UART собираются, прошиваются и работают.

    Если это удастся довести хоть до какого-то ума, то мы получим еще один клон Arduino, но стоимостью 3$, со встроенным WiFi и не в пример гораздо более мощными ресурсами (если сравнивать с большинством Ардуин за исключением Due).

    Страница проекта тут: http://sermus.github.io/ESP8266_ArduinoIDE/
     
    Последнее редактирование модератором: 26 мар 2015
    Victor нравится это.
  2. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Публикую здесь небольшую вводную статью по инсталляции присадки к Arduino IDE. Фактически, это просто русский дубль того, что написано на странице проекта. Итак.
    Инсталляция (раскрыть)
    Шаг первый.
    Инсталлируете Arduino IDE 1.6.1 или более позднюю версию отсюда http://arduino.cc/en/Main/Software.

    Шаг второй.
    Находите директорию, где ArduinoIDE хранит скетчи. Для этого идете в настройки ArduinoIDE:
    [​IMG]

    Шаг третий.
    Скачиваете отсюда http://sermus.github.io/ESP8266_ArduinoIDE/ архив с addon'ом. И распаковываете его в (sketchbook location)\hardware . Если директории hardware там нет, создаете.
    Кому хочется, можно просто сделать клон репозитория https://github.com/Sermus/ESP8266_ArduinoIDE в эту директорию hardware.
    После этого у Вас в hardware должна очутиться как минимум папка Espressif:
    [​IMG]

    Шаг четвертый. Запускаете ArduinoIDE (или перезапускаете, если была запущена), идете в меню Tools->Board и видите там ESP8266:
    [​IMG]
    Если не видите, то, скорее всего что-то неправильно распаковали на шаге 3.
    Выбираете ESP8266, дальше вся работа как с обычным Arduino.
    Можно загрузить пример Blink из hardware\Espressif\Examples и прошить его.
     
    Последнее редактирование модератором: 26 мар 2015
    Victor нравится это.
  3. Климатехник

    Климатехник Читатель

    Сообщения:
    126
    Симпатии:
    11
    А загружать как?
     
  4. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Как в Ардуину - жмите кнопку "загрузить". COM порт только не забудьте выбрать правильный перед этим.
     
  5. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Каким образом работать с Wi-Fi, i2c, SPI?
    Есть ли портированные под ESP8266 библиотеки для этого?
     
  6. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    WiFi: смотрим пример HttpServer_Bootstrap, можно из моей сборки
    I2C: смотрим библиотеку I2Cdev из состава Sming
    SPI: грепаем примеры из состава Sming, хоть библиотеку для ILI9163, хоть для ssd1306, насколько я вижу семантика работы с SPI не отличается от таковой для ардуины.
     
  7. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    До примера HTTP-сервера добрался, уже изучаю, спасибо!

    Как-то кроме создания файла в коде, можно загружать в ФС (ftp, ssh)?
    Или только downloadClient.downloadFile вытягивать файлы с других ресурсов?

    Если ESPduino :) сможет нормально работать веб-сервером, при этом общаться с Ардуиной по i2c/SPI или UART, то это будет просто бомба! Да ещё за такие-то смешные деньги...:cool:
     
    nicelight нравится это.
  8. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Вроде Anakod запилил поддержку ftp, но у меня пока версия Sming, которая это не поддерживает. Насколько я понимаю, можно залить файлы отдельно в область данных тем же esptool, но это тема уже не в рамках ArduinoIDE.

    На тему "нормальности" поддержки web тут сломано немало копий. Нормально оно, конечно, никогда не будет поддерживать в силу ограниченности ресурсов. Но если нормальность понимать как "в той же мере, в какой оно поддерживается решениями на Arduino", то оно может поддерживаться нормально.

    Не очень понимаю, зачем Вам в этой связке Arduino. Вы строите кластер из ардуин, которые общаются по I2C/SPI/UART?
     
  9. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Тогда как на счёт поддержки SDIO? Тогда можно было бы файлы хранить на внешней флешке.

    Для меня "нормальность" веб-сервера - стабильность работы хотя бы на уровне Ethernet Shield W5100, который не загибается от AJAX запросов раз в секунду, в отличие от ESP8266 на АТ прошивках...

    У меня проект собран на Ардуино, требуется Wi-Fi связь с ним и веб-сервер для управления. Полностью железо на ESP8266 не перенести, т.к. у меня ESP-01 и GPIO всего два + UART, а требуется несколько цифровых и несколько аналоговых.
     
    nicelight нравится это.
  10. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Что-то пошло не так :)
    Качал отсюда: https://github.com/Sermus/ESP8266_ArduinoIDE/zipball/master
    Ошибка компиляции (раскрыть)

    Arduino: 1.6.1 (Windows 7), Плата"ESP8266"

    Изменена опция сборки, пересобираем все



    C:\Users\agrogov\Documents\Arduino\hardware\Espressif/ESP8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-g++ -MMD -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -DICACHE_IRAM_ATTR='__attribute__((section(".text")))' -DIRAM_ATTR='__attribute__((section(".text")))' -ffunction-sections -fdata-sections -Wno-write-strings -fno-rtti -fno-exceptions -std=c++11 -DF_CPU=80000000L -DARDUINO=10601 -DARDUINO_ESP8266_ESP8266 -DARDUINO_ARCH_ESP8266 -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266 -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\include -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\SmingCore -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\Wiring -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\system -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\system\include -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\Services\ArduinoJson -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\Services\DateTime -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\Services\SpifFS -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\Services\WebHelpers -IC:\Users\agrogov\Documents\Arduino\hardware\Espressif/ESP8266/ESP8266_SDK\include -c C:\Users\agrogov\AppData\Local\Temp\build553927093535618437.tmp\HttpServer_Bootstrap.cpp -o C:\Users\agrogov\AppData\Local\Temp\build553927093535618437.tmp\HttpServer_Bootstrap.cpp.o

    In file included from C:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\SmingCore/../Wiring/../include/user_config.h:27:0,

    from C:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\SmingCore/../Wiring/WiringFrameworkDependencies.h:11,

    from C:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\SmingCore/../Wiring/WiringFrameworkIncludes.h:11,

    from C:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\SmingCore/SmingCore.h:11,

    from HttpServer_Bootstrap.ino:1:

    C:\Users\agrogov\Documents\Arduino\hardware\Espressif\ESP8266\cores\esp8266\Sming\Sming\system\include/esp_systemapi.h:21:0: error: "IRAM_ATTR" redefined [-Werror]

    [HASHTAG]#define[/HASHTAG] IRAM_ATTR __attribute__((section(".iram.text")))

    ^

    <command-line>:0:0: note: this is the location of the previous definition

    cc1plus.exe: all warnings being treated as errors

    Ошибка компиляции.
     
  11. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Ну тут непаханное поле. Теоретически можете подключить еще одну флешку на те же линии, на которых сидит та, которая есть. Другой вариант - заменить ту, что есть. Третий, попробовать использовать линии HSPI для общения с накопителем. В общем, варианты есть, но это уже, насколько я понимаю, вне рамок концепции ArduinoIDE.

    Тут многие жаловались на глючность espconn - API для организации сетевого обмена. В Sming он не входит, так что есть шанс, что можно организовать ответ раз в секунду. По крайней мере у pvvx, вроде, как-то получается.
     
  12. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Попробуйте подменить файлик.
     

    Вложения:

    • platform.txt
      Размер файла:
      6,2 КБ
      Просмотров:
      31
  13. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Ну почему же вне рамок? Для Ардуины существует множество модулей под SD и MicroSD карты, в основном они все под SPI. Библиотека или поддержка в ядре под ESP8266 для работы с ними были бы очень кстати.

    espconn глючит даже в режиме tcp-client, крайне сложно было добиться стабильности при отправке GET запросов раз в 3 секунды. Чаще отправлять АТ прошивки не в состоянии, к сожалению...
     
  14. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Спасибо, помогло!
    compiled (раскрыть)

    Section| Description| Start (hex)| End (hex)|Used space
    ------------------------------------------------------------------------------
    data| Initialized Data (RAM)| 3FFE8000| 3FFE89E8| 2536
    rodata| ReadOnly Data (RAM)| 3FFE89F0| 3FFEB308| 10520
    bss| Uninitialized Data (RAM)| 3FFEB308| 3FFF46A8| 37792
    text| Cached Code (IRAM)| 40100000| 40107810| 30736
    irom0_text| Uncached Code (SPI)| 40210000| 402482FC| 230140
    Total Used RAM : 50848
    Free RAM : 31072
    Free IRam : 2050

     
  15. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Ну потому что я сделал так, чтобы ArduinoIDE работал с ESP. У меня не было цели заставить все в мире библиотеки для Arduino работать на ESP. Они на разных ардуинах-то работают по разному. Я портирование всех возможных библиотек не осилю физически.

    Если есть библиотека для ардуино, которая работает через SPI и не использует фичи AVR или SAM3 напрямую, то есть хороший шанс, что она заработает и здесь, ведь hardware abstraction layer в виде библиотеки SPI уже существует.

    А вообще, кто, кроме вас, заинтересованных в работе того или иного конкретного железа, ответит на вопрос работает ли оно? Вы бы протестили и вынесли это знание в community.
     
  16. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Мой косяк был, внес изменение в репозиторий. Файлик дал, чтобы Вам заново не пришлось весь целиком качать (если качали архивом)
     
  17. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Может с этим же связано,- залить не получается:
    ошибка загрузки (раскрыть)

    Entering bootloader...
    Connecting...
    Traceback (most recent call last):
    File "esptool.py", line 610, in <module>
    IOError: [Errno 2] No such file or directory: 'C:\\Users\\agrogov\\AppData\\Local\\Temp\\build169463865693909293.tmp/eagle.app.flash.bin'

    Файлы в каталоге на скриншоте во вложении.
     

    Вложения:

    • ESPduino.png
      ESPduino.png
      Размер файла:
      5,9 КБ
      Просмотров:
      19
  18. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    А включите в настройках ArduinoIDE подробный лог при построении и прошивке и выложите полный лог при прошивке. Так непонятно - почему-то не сгенерировался eagle.app.flash.bin
     
  19. Dr. Morg

    Dr. Morg Новичок

    Сообщения:
    84
    Симпатии:
    4
    Лог сборки во вложенном файле, в спойлер не влазит по объёму.
     

    Вложения:

  20. Sermus

    Sermus Читатель

    Сообщения:
    110
    Симпатии:
    15
    Аргх, в скрипте, который генерирует eagle.app.flash.bin, есть ссылка по абсолютному пути. Так что если у Вас не стоит UDK (или он стоит не по пути C:\Espressif) Вам крупно не повезло.
    Поправил скрипт. Подмените gen_appbin на приаттаченный.
     

    Вложения:

    • gen_appbin.zip
      Размер файла:
      11,1 КБ
      Просмотров:
      5

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