ESP-8266/ESP32 NodeMCU Lua: азы программирования.

Тема в разделе "ESP8266, ESP32", создана пользователем ИгорьК, 25 июл 2017.

  1. ИгорьК

    ИгорьК Гуру

    Вот решение вашей проблемы:

    upload_2019-1-21_13-35-48.png

    И файл что надо залить в приложении.
     

    Вложения:

  2. Подскажите, может еще быть эта проблема связана с конструированием прошивки(подключение различных модулей)?
     
  3. ИгорьК

    ИгорьК Гуру

    Залейте прилагаемый выше файл по адресу 0x3fc000

    Но лучше установить esptool и действовать как я писал в теме, что привел ссылку.
     
  4. ИгорьК

    ИгорьК Гуру

    Нет. Если у вас нормальный небитый файл, то дело не в нем.
     
  5. ИгорьК

    ИгорьК Гуру

    Здесь есть нюансы.
    Та программа, которой вы пользовались для прошивки, уже давно не поддерживается.
    Шить надо Flash Download Tools https://www.espressif.com/en/support/download/other-tools

    Но лучше - esptool, которые позволяют увидеть что за модуль перед вами и проверить его работоспособность.
    https://github.com/espressif/esptool

    Неплохо - nodemcu pyflasher: https://github.com/marcelstoer/nodemcu-pyflasher/releases
    Начните с него.
     
  6. Файл esp_init_data_default.bin начиная с адреса 0x3fc000 (у меня 4MB) надо залить после прошивки, или до?
    Подскажите с настройками, корректно выставлены? Добавить скорость или как на модуле прописано?
     
  7. ИгорьК

    ИгорьК Гуру

    А в случае постоянного мигания - вот ответ:

    upload_2019-1-21_13-49-12.png
     
  8. ИгорьК

    ИгорьК Гуру

    До или после - безразлично. Надо вместе. Пользуйтесь Flash Download Tools https://www.espressif.com/en/support/download/other-tools
     
  9. Спасибо!
    Буду изучать данную Вами информацию
     
  10. Пожалуйста, еще
    Скорость можно увеличить?
     
  11. ИгорьК

    ИгорьК Гуру

    Где?
    Прошивка - 115200.
    SDK 2.2.1 что у вас - скорость связи по умолчанию 115200.
     
  12. ИгорьК

    ИгорьК Гуру

  13. Перепрошил модуль
    Вот что получилось
    12.PNG
    13.PNG
     
  14. Но, почему-то, имя и пароль я ввел свои, а в сети wifi он виден под именем концовки MAC.
    Причем в открытом виде
     
  15. И я изменил в скрипте как точку доступа
     
  16. В DownloadTools модуль продетектировался как с 32 Mbit памятью
     
  17. ИгорьК

    ИгорьК Гуру

    Старт с интерпретатором Lua NodeMCU. (Для чайников, книжка с картинками)

    0. Прежде чем приступить к работе, нужно знать несколько принципиальных вещей.

    а) Система Lua NodeMCU представляет собой комбинацию двух элементов:
    1. интерпретатор языка Lua (заливается прошивка модуля ...bin), который превращает ESP-8266 в (типа) микрокомпьютер. Прошивка заливается один раз.
    2. исполняемый скрипт - программу (обычно, файл(ы) с расширением *.lua), который (тоже заливается, но (1) после прошивки файла ...bin и (2)другой программой ) читается прошивкой и исполняется ей прямо у вас на глазах.
    Поэтому, если вы держите в руках новый модуль, вы:
    1. заливаете прошивку специальными программами, о которых позже;
    2. проверяете успех с помощью ESPlorer;
    3. заводите модуль в сеть (или поднимаете на нем точку доступа, что, ИМХО, сакс);
    4. загружаете скрипты и работаете с ними с помощью того же ESPlorer.
    б) Если вы повторяете чей-то проект, то, обычно, и прошивка(интерпретатор языка) и скрипты(программный код) там есть. Если по какой-то причине прошивка (интерпретатор языка) отсутствует, ее можно "заказать" по этому адресу. На первой странице вы должны поставить галочки в соответствии с тем кодом, который вы хотите повторить. Галочки, что стоят по-умолчанию снимать категорически нельзя!

    в) Все модули ESP-8266 делятся на две части:

    • с портом USB, через который (1) программируются и (2)питаются (но можно питать и на отдельную ногу)
    upload_2019-10-2_17-56-24.png
    • и соответственно без USB - значит их надо отдельно питать и иметь через что программировать.
    upload_2019-10-2_17-57-30.png
    Берите те что с USB, они дороже на бутылку пива, но избавляют от многих (целых трех) хлопот.

    Если по глупости и/или жадности вы для начала купили модуль без USB, докупайте:
    • паяльник,
    • олово,
    • флюс
    • провода,
    • блочок питания на 3.3вольта,
    • модуль программатора USB-UART (ищем на Али по ключевым словам) или Ародуино UNO,
    • монтажную плату где все это паять.

    Не убедил что покупать модули без USB не стоит? Жадность будет наказана!

    г) ESP-8266 убить правильной/неправильной/ошибочной заливкой НЕЛЬЗЯ!

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

    Модуль можно убить только подав 5 вольт не туда. Остальное - поправимо!


    Пошагово.

    1. Заливка прошивки LUA NodeMCU(!!!) лучше всего осуществляется программой PyFlasher.

    Все просто для модулей с USB:

    upload_2019-3-13_10-40-38.png


    ============ Таблетка от жадности у кого нет USB ================

    Если у вас модуль без USВ (редко - старого типа с USB) - для прошивки нога 3 (она же GPIO0, ищите и читайте документацию) при подаче питания должна быть соединена с GND.

    Кроме того, жадность наказывается еще одним/двумя соединениями. Для ESP-01 соединить 3.3в и CH_PD:

    upload_2019-3-13_11-19-53.png


    Для ESP-201, 12, etc - нога 8(GPIO15) должна быть соединена с GND:

    upload_2019-3-13_11-25-34.png

    Табличка в помощь:

    upload_2019-3-13_12-4-12.png


    Каталог ног модуля выглядит так:

    upload_2019-3-13_12-1-15.png



    Как осуществляется прошивка через Ардуино ищем и разбираемся сами!

    ================ Конец Таблетки======================




    2. Проверка успеха заливки.
    Скачиваем и устанавливаем ESPlorer.

    upload_2019-3-13_10-42-40.png

    1 Выбираем порт, он там обычно уже стоит.
    2. Устанавливаем все остальные значения как на картинке
    3. Большая кнопка "Open", жмем, становится "Close".
    4. В левом поле набираем 'node.restart()', курсор должен остаться в этой строке.
    5. Жмем конпку 'Line'
    6. Видим перезагрузку ESP-8266, в том числе перечень установленных модулей.
    7. Жмем кнопку 'Send', что отправит на модуль команду node.heap().
    8. Видим свободную память, здесь 42368.

    Но! Если вы сделаете указанные в пункте действия как Быстрый Джим, вы можете нарваться на такую картинку:

    upload_2019-3-16_8-53-28.png

    После заливки прошивки модуль следует обесточить и затем включить вновь. После включения в течение до 3 минут модуль может не подавать признаков жизни. Модуль занимается самоформатированием. Не беспокойте его некоторое время.


    3. Заводим модуль в сеть.

    [​IMG]

    [​IMG]

    Пояснения:

    Код (Lua):
    do
        -- Режим - клиент
        wifi.setmode(wifi.STATION)
        -- Чистим конфиг после "экспериментов"
        wifi.sta.clearconfig()
        -- Установки - через таблицу, создаем ее
        local scfg = {}
        scfg.auto = true -- Связь восстанавливается сама
        scfg.save = true -- Настройки будут сохранены во флэш, после перезагрузки все заработает само
        scfg.ssid = 'Моя_Точка_Доступа' -- WiFi
        scfg.pwd = 'Мой_Пароль' -- Password
        wifi.sta.config(scfg) -- Конфигурируем установки wifi
        wifi.sta.connect() -- Пошло соединение
        -- Проверяем результат через 15 секунд, потому как иногда
        -- для новой настройки нужно много времени
        tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    end
    Для работы, копипастим и меняем на свое точку и пароль:
    Код (Lua):
    do
        wifi.setmode(wifi.STATION)
        wifi.sta.clearconfig()
        local scfg = {}
        scfg.auto = true
        scfg.save = true
        scfg.ssid = 'Моя_Точка_Доступа' -- WiFi
        scfg.pwd = 'Мой_Пароль' -- Password
        wifi.sta.config(scfg)
        wifi.sta.connect()
        tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    end



    ... (ещё не все)
     
    Последнее редактирование: 2 окт 2019
  18. ИгорьК

    ИгорьК Гуру

    ==============================


    ==============================
     
    Последнее редактирование: 13 мар 2019
  19. ИгорьК

    ИгорьК Гуру

    upload_2019-1-21_18-29-47.png

    Откуда там "dofile('init.lua')"? Что там за file.close()?
    Откуда там взялся 'init.lua'?

    В скриншоте ранее у вас там еще какая-то лабуда проскакивала.
    upload_2019-1-21_18-28-58.png

    Вы там чем-то своим занимаетесь, потом задаете здесь вопросы. У меня хрустального шара нет.
     
  20. Эта лабуда проскакивала, когда не был еще прошит файл esp_init_data_default.bin
    А dofile('init.lua')" и
    file.close() появилось, когда запустил Ваш скрипт создания STATION
    Я его переименовал в init.lua и залил на модуль. И изменил на создать точку доступа STATIONAP
    Потом хотел проверить в автономном режиме, просто подав питание на модуль