Начала работы с NodeMCU. ESPlorer и первый скрипт.

Опубликовано bondrogeen

Для написания первого скрипта, воспользуемся программой ESPlorer — это удобные, мультиплатформенные инструменты, которые позволяют создавать, редактировать, загружать в один клик lua-скрипты.

Поддерживаемые платформы:
  • Windows (x86, x86-64)
  • Linux (x86, x86-64,ARM soft & hard float)
  • Solaris (x86, x86-64)
  • Mac OS X (x86, x86-64, PPC, PPC64)

 

Установка.

Для работы программы нужно скачать и установить  JAVA (стандартная — SE версии 7 и выше), ну и саму программу, которую можно скачать здесь. Распаковываем архив,для  Windows запускаем файл ESPlorer.bat  для Linux  > sudo java-jar ESPlorer.jar

Внешний вид.

По мере развития программы интерфейс видоизменялся и к данному моменту времени выглядит так. Сам интерфейс на английском, но интуитивно понятен. Внешний вид программы можно изменить нажав в меню кнопку «View«, тут можно выбрать одну из тем оформления, а также включить или отключить кнопки или панели. При наведении мышки на какой нибудь элемент появится краткая подсказка. Запустив программу, увидим основное окно программы, которое разбито на две части: левая — это редактор кода и правая — это окно терминала.

В левой части в верху есть три вкладки — это выбор устройства с которым будет работать, так как программа может работать не только с прошивками на NodeMCU, но и с другими (MicroPython, на базе AT-команд).

По умолчанию выбрана вкладка (NodeMCU & MicroPythone), с ней мы и будем работать. в ней мы видим еще четыре вкладки «Scripts«, «Commands«, «Snippets» и «Settings«.

Во вкладке «Scripts» в  с самом верху находится стандартная панель инструментов (создать, открыть, перезагрузка файла, сохранить и т.д), чуть ниже редактор кода с подсветкой синтаксиса, который занимают основную часть вкладки и в самом низу находятся основные кнопки для сохранения (Save to ESP), отправки(Send to ESP), исполнения (Run), и загрузки (Upload…) скриптов в модуль. Вкладка «Commands» пропустим так как почти все ее функции продублированы в левой части программы. Во вкладки «Snippets» можно добавить до 16 фрагментов часто используемого кода для быстрой отправки на исполнения в модуль. Ну и последняя «Settings» это настройки, выбор используемой прошивки, изменения цветовой схемы редактора, настройки serial-порта, ну и в случае проблем с отправкой скриптов в модуль можно «поиграться» с задержками.

В правой же части вверху расположились настройки сом- порта, тут можно выбрать номер порта, его скорость, открыть или закрыть соединение, а так же поблагодарить автора. По середине находится терминала, в правой его части, расположены кнопки для работы с файловой системой модуля где можно отформатировать ее, узнать кол. используемой и оставшейся памяти, отобразить все файлы хранящиеся на ней. Ниже кнопки быстрого вызова фрагментов кода snippet о которых я писал выше и информационные кнопки о количестве оставшейся памяти Heap, общая информация Chip Info, серийный номер чипа Chip ID и флеш памяти Flash ID и кнопка программной перезагрузки модуля Reset.  В самом низу командная строка.

Подключение ESP.

Подключаем ESP к com-порту (в моем случает это 30 порт), выставляем скорость 115200 и открываем соединение нажав на кнопку Open, если все сделали правильно, то увидим вот такой лог в терминале программы.

На что хотел бы обратить внимание при использовании плат NodeMCU, wemos и подобных. У них распаяны пины «DTR» и «RTS» это сделано для автоматического перевода модуля в режим прошивки и аппаратного сброса.

Так что имейте это ввиду, когда будете «играться» кнопками DTR или RTS. Если  активировать DTR и аппаратно сбросить (нажмете кнопку сброса на плате), то ESP перейдет в режим прошивки и перестанет определяться программой, до тех пор пока вы не отключите ее и не сбросите ESP. Так что на месте разработчика я бы удалил эту кнопку из программы, ну или хотя бы убрал подальше))). Кнопка RTS дублирует (аппаратную) кнопку сброса на плате модуле, при активации ее, на порт RESET будет подан логический ноль, что приведет к сбросу ESP, а при отключении, вернет состояние обратно. Очень удобно при отладки кода, так как не нужно каждый раз тянуться к кнопки сброса на модуле.

Первый скрипт.

После того как удачно подключились к модулю, переходим в левую часть программа и в редакторе кода пишем такую строку.

функция print() выводит информацию в окно терминала.

Далее в нижней части нажимаем на кнопку Send to ESP и в окне терминала увидим вот такой ответ.

Теперь давайте разбираться, в окне терминала появились две строчки, первая с знаком «>» в начале — это строка нашего кода, которая была отправлена на исполнения в модуль,  а вторая это ответ от модуля.

Кнопкой Send to ESP мы отправляем код на исполнения в модуль ESP, но для того чтобы наш код (скрипт) сохранился в файловой системе модуля, нужно дать ему имя и сохранить его. Для этого в верхней части программы наживаем на иконку в виде дискеты с надписью Save, в появившимся окне выбираем путь, куда будет сохранен файл и задаем имя нашему скрипту. По умолчанию программа присвоит имя «script1.lua»,  меняем его на «first_script.lua» и сохраняем. Теперь мы можем нажать на кнопку Save to ESP и наш файл будет записан в файловую систему.

В окне терминала увидим такой лог.

Программа записала наш скрипт в файловую систему и автоматом запустила его. Поэтому  мы увидели в конце строки Hello, world!!!

Создайте новый файл, нажав на иконку в виде чистого листа и напишите в редакторе строчку.

функция dofile() запустить скрипт из файловой системы.

Теперь отправим скрип на исполнения кнопкой «Send to ESP«. Мы увидим, что наш скрипт «first_script.lua» выполнился, а в окне терминала получим такой ответ.

Для того чтобы скрипт автоматически запускался при включении модуля, сохраним его (как делали ранее), но только назовем его init.lua и запишем в модуль. Дело в том, что при запуске или перезагрузке модуля, NodeMCU проверяет наличия файл init.lua в файловой системе и если он есть, запускает его. Таким образом мы можем заставить запускаться наш скрипт автоматически.

Перезагрузим модуль и теперь в место ошибки lua: cannot open init.lua,  увидим  Hello, world!!!

Давайте разбираться, на файловой системе находится два файла init.lua и first_script.lua. При запуске, модуль автоматически запускает init.lua, а он в свою очередь, запускает first_script.lua и скрипт исполняет команду вывода Hello, world!!! в окно терминала.

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

Есть еще один важный момент, в процессе тестирования кода будут могут возникать ошибки, если допустить критическую ошибку, то с большой вероятностью, получим циклический «ребут» (неприятная особенность NodeMCU). Советую, при отладки кода, запускать скрипты в ручную и только после того как все ошибки будут устранены, добавлять его в init.lua. Так же можно сделать задержку в init.lua, чтобы скрипт запускался не сразу, а по истечению 5 сек, в случаи критической ошибки, этого времени будет достаточно, чтобы исправить ее или удалить скрипт.

Сохраним код в скрипте init.lua и перезагрузим устройство,  в окне терминала увидим такой лог.

На этом пока все, подробную документацию на NodeMCU можно прочитать.  https://nodemcu.readthedocs.io

 

Рубрики: NodeMCU

Отправить ответ

avatar

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Notify of