Создание простого веб-сервера nodemcu esp8266 в arduino ide

Содержание

node.egc.setmode()¶

Sets the Emergency Garbage Collector mode. The EGC whitepaper
provides more detailed information on the EGC.

Parameters

    • EGC inactive, no collection cycle will be forced in low memory situations
    • Try to allocate a new block of memory, and run the garbage collector if the allocation fails. If the allocation fails even after running the garbage collector, the allocator will return with error.
    • Run the garbage collector when the memory used by the Lua script goes beyond an upper . If the upper limit can’t be satisfied even after running the garbage collector, the allocator will return with error. If the given limit is negative, it is interpreted as the desired amount of heap which should be left available. Whenever the free heap (as reported by falls below the requested limit, the garbage collector will be run.
    • Run the garbage collector before each memory allocation. If the allocation fails even after running the garbage collector, the allocator will return with error. This mode is very efficient with regards to memory savings, but it’s also the slowest.
  • in the case of , this specifies the memory limit.

NodeMCU-Tool¶

Arguably NodeMCU-Tool, which requires Node.js, is the better code upload & execution tool than ESPlorer. Also, in contrast to the former it is very well maintained. However, we also understand that Windows users in general prefer GUI over command line.

The is quite long but essentially NodeMCU-Tool offers:

  • upload (Lua) files from your host system to the device
  • manage the device file system (delete, up-/download, etc.)
  • run files on NodeMCU and display the output over UART/serial

Quick start:

  1. Install Node.js and NPM if not available yet
  2. Install NodeMCU-Tool globally
  3. Verify installation by runnin
  4. Upload a Lua file
  5. Run it

Note that you may need to use the prefix to install the tool at step 2, and also possibly add the flag after the install command.

Режимы работы ESP8266

Одна из важнейших функций, которую обеспечивает ESP8266, заключается в том, что он может не только подключаться к существующей Wi-Fi сети и работать в качестве веб-сервера, но он также может устанавливать собственную сеть, позволяя другим устройствам подключаться непосредственно к нему и получать доступ к веб-страницам. Это возможно, потому что ESP8266 может работать в трех разных режимах: режим станции, режим точки доступа и оба первых режима одновременно. Это обеспечивает возможность построения ячеистых сетей.

Режим станции (STA)

ESP8266, который подключается к существующей сети W-iFi (созданной вашим беспроводным маршрутизатором), называется станцией (Station, STA).

Рисунок 2 – Демонстрация режима Station ESP8266 NodeMCU

В режиме STA ESP8266 получает IP адрес от беспроводного маршрутизатора, к которому подключен. С этим IP адресом он может настроить веб-сервер и выдавать веб-страницы на все подключенные к существующей Wi-Fi сети устройства.

Режим точки доступа (AP)

ESP8266, который создает свою собственную сеть Wi-Fi и действует как концентратор (точно так же как маршрутизатор Wi-Fi) для одной или нескольких станций, называется точкой доступа (Access Point, AP). В отличие от Wi-Fi роутера, он не имеет интерфейса к проводной сети. Такой режим работы называется Soft Access Point (soft-AP). Максимальное количество станций, которые могут к нему подключиться, ограничено пятью.

Рисунок 3 – Демонстрация режима Soft Access Point ESP8266 NodeMCU

В режиме AP ESP8266 создает новую сеть Wi-Fi и устанавливает для нее SSID (имя сети) и присваивает себе IP адрес. По запросу на этот IP адрес он может выдавать веб-страницы всем подключенным к этой сети устройствам.

net.dns.setdnsserver()¶

Sets the IP of the DNS server used to resolve hostnames. Default: resolver1.opendns.com (208.67.222.222). You can specify up to 2 DNS servers.

Parameters

  • IP address of a DNS server
  • which DNS server to set (range 0~1). Hence, it supports max. 2 servers.

See also

net.ping()

Pings a server. A callback function is called when response is or is not received. Summary statistics can be retrieved via the second callback.

The function can be disabled by commenting macro in when more compact build is needed.

Parameters

  • destination domain or IP address
  • number of ping packets to be sent (optional parameter, default value is 4)
  • callback function which is invoked when response is received where

    • number of bytes received from destination server (0 means no response)
    • destination server IP address
    • ICMP sequence number
    • round trip time in ms
      If domain name cannot be resolved callback is invoked with parameter equal to 0 (i.e. no response) and values for all other parameters.
  • callback function which is invoked when response is received where

    • destination server IP address
    • total number of packets sent
    • total number of packets lost (not received)
    • total number of bytes received from destination server
    • total time to perform ping

Example

Multiple pings can start in short sequence thought if the new ping overlaps with the previous one the first stops receiving answers, i.e.

gives

This part gone to the TLS module, link kept for backward compatibility.

Тестирование контакта ADC (A0)

Чтобы отправлять команды при помощи ESPlorer IDE, вам нужно установить последовательное соединение между компьютером и ESP. Для этого сделайте следующее:

  1. Подключите ESP-12E или программатор FTDI к компьютеру
  2. Выставьте скорость передачи данных на 9600 бод
  3. Выберите порт, к которому подключен ESP-12E или программатор FTDI (например, COM3)
  4. Нажмите на кнопку «Open/Close»

Все элементы, необходимые для этих действий, показаны на картинке ниже красным цветом:

Затем впишите команду print(adc.read(0)) и нажмите на кнопку «Send», как показано на картинке ниже:

Вам должно вернуться значение в диапазоне от «0» до «1024». Теперь покрутите потенциометр и еще несколько раз отправьте команду print(adc.read(0)). Если регулятор потенциометра будет выставлен ближе к 0 вольт, программа напечатает что-то около «0», а если ближе к 3,3 вольт, то что-то около «1024».

См.также

AliExpress — глобальная виртуальная (в Интернете) торговая площадка, предоставляющая возможность покупать товары производителей из КНР

Getting Started

First Boot

On your first boot, the device will start a hotspot called «espArtNetNode» with a password of «byMtongnz2017» (case sensitive). Login to the hotspot and goto 2.0.0.1 in a browser.

Note that the hotspot is, by default, only for accessing the settings page. You’ll need to enable Stand Alone mode in the web UI if you want to send ArtNet to the device in hotspot mode.

Web UI

In hotspot mode, goto 2.0.0.1 and in Wifi mode goto whatever the device IP might be — either static or assigned by DHCP.

In the Wifi tab, enter your SSID and password. Click save (it should go green and say Settings Saved). Now click reboot and the device should connect to your Wifi.

If the device can’t connect to the wifi or get a DHCP assigned address within (Start Delay) seconds, it will start the hotspot and wait for 30 seconds for you to connect. If a client doesn’t connect to the hotspot in time, the device will restart and try again.

Restore Factory Defaults

I have allowed for 2 methods to restore the factory default settings: using a dedicated factory reset button on GPIO14 or multiple power cycles.

Method 1: Hold GPIO14 to GND while the device boots. This method isn’t available for the ESP01 or NO_RESET builds.

Method 2: Allow the esp8266 about 1-4 seconds to start, then reset it (or power cycle). Do this at least 5 times to restore factory default settings.

DMX Workshop

I have implemented as many DMX Workshop/ArtNet V4 features as I possibly could. You can change settings such as merge mode, IP address, DHCP, port addresses, node name… Most of these are also available via the web UI.

Flashing the Built in LED with Lua

Here’s  a program to flash the built in LED. This is the way you
would initially think of writing
the code in C — non event driven. Even though it works don’t use this
in general. You need to think in terms of releasing processing time and
not making loops that do not exit (See next example for event driven
timer programming).

— NodeMCU ExamplesLEDpin=4— Declare LED pin no.
delayuS=500000— Set delay in microSecond. here 0.5 second
gpio.mode(LEDpin,gpio.OUTPUT)— Set LED pin as GPIO output pin
while(1)— Define infinite while loop
dogpio.write(LEDpin,gpio.HIGH)— Set LED pin HIGH i.e. LED OFF
tmr.delay(delayuS)— timer Delay
gpio.write(LEDpin,gpio.LOW)— Set LED pin LOW i.e. LED ON
tmr.delay(delayuS)— timer Delaytmr.wdclr()— Stop watchdog resetting the MCU
end

Save the above as file: led_flash1.lua

Note that the tmr.wdclr() function is used to stop the watchdog
reset which is needed it in this function to stop a reset because it is
not event driven — See next example for event driven blink.

node.bootreason()¶

Returns the boot reason and extended reset info.

The first value returned is the raw code, not the new «reset info» code which was introduced in recent SDKs. Values are:

  • 1, power-on
  • 2, reset (software?)
  • 3, hardware reset via reset pin
  • 4, WDT reset (watchdog timeout)

The second value returned is the extended reset cause. Values are:

  • 0, power-on
  • 1, hardware watchdog reset
  • 2, exception reset
  • 3, software watchdog reset
  • 4, software restart
  • 5, wake from deep sleep
  • 6, external reset

In general, the extended reset cause supercedes the raw code. The raw code is kept for backwards compatibility only. For new applications it is highly recommended to use the extended reset cause instead.

In case of extended reset cause 3 (exception reset), additional values are returned containing the crash information. These are, in order, EXCCAUSE, EPC1, EPC2, EPC3, EXCVADDR, and DEPC.

Прошивки для esp8266 NodeMcu

В основу платформы загружена стандартная прошивка Node MCU, в которую встроен интерпретатор языка Lua. При помощи Lua-команд можно выполнять следующие действия:

  • Подключение к Wi-Fi точке доступа;
  • Работа в роли Wi-Fi точки доступа;
  • Переход в режим глубокого сна для уменьшения потребления энергии;
  • Включение или выключения светодиода на выходе GPIO16;
  • Выполнение различные операции с файлами во флэш-памяти;
  • Поиск открытой Wi-Fi сети, подключение к ней;
  • Вывод MAC адреса;
  • Управление пользовательскими таймерами.

Для программирования NodeMCU можно использовать Arduino IDE или комплекс средств разработки SDK – ESPlorer. Этот комплекс обладает рядом отличий:

  • Он может работать на множестве различных платформ;
  • Обладает поддержкой нескольких открытых файлов;
  • Позволяет подсвечивать код языка Lua;
  • Возможность умной отправки файлов;
  • Возможность поддержки нескольких видов прошивки одновременно.

Для обеспечения корректной и стабильной работы нужно обновить прошивку до последней версии. Существует несколько способов обновления – облачный сервис, Docker Image и компилирование в Linux. Каждый из этих способов обладает своими плюсами и минусами. Наиболее простым и понятным является первый способ.

Сбор прошивки в облачном сервисе

После начала сборки придет письмо на почту, сигнализирующее о начале запуска процесса. Через некоторое время придет и второе письмо – будет предложено выбрать версию float (дробные числа) или integer (целые числа).

После перехода по полученной ссылке нужно будет скачать файл bin и поместить его в Resources – Binaries. Там будет расположен файл nodemcu_integer_0.9.5_20150318.bin, который нужно удалить. В итоге содержимое папки будет выглядеть следующим образом.

Обновление прошивки Node Mcu

Для правильной и стабильной работы платы требуется перезаписать esp_init_data_default.bin. Скачать его можно на официальном сайте. Нужный файл нужно поместить снова в систему для прошивки NodeMCU Flasher по пути Resources – Binaries, предварительно удалив из него старый файл.

Затем можно подключать NodeMCU и приступить к обновлению. Для начала нужно поменять настройки – в NodeMCU Flasher во вкладке Config нужно выбрать файл собранной прошивки вместо INTERNAL://NODEMCU.

Остальное оставить без изменений, перейти на Operations и нажать Flash. Как только окончится прошивка, нужно снова перейти на Config и в первой строке указать путь esp_init_data_default.bin. Также дополнительно указывается адрес, куда нужно переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. После этого нужно снова вернуться на Operations и нажать Flash.

После этого нужно переформатировать всю файловую систему млаты. Для этого нужно запустить ESPlorer, обязательно поставить скорость обмена 115200 и перезагрузить NodeMCU. После всех вышеописанных действий будет новая версия прошивки. Отладочная плата полностью перепрошита и готова к работе.

Installation

Thanks to Node.js, the NodeMCU-Tool is platform independent and will run on Windows, Linux und OSX. There are different installation variants available (system wide or project based).

via NPM (Node.js Package Manager)

Global Installation as root (Linux/Mac OS Platforms)

The global installation may require administrator(root) privileges because the package is added to the systems library path. If you get any permission errors on Linux/Mac OS run the command as root or via .

$ sudo npm install nodemcu-tool -g

Local/Project related Installation

You can also install it in your local project directory. When using this method, the command is not registered within your path!

$ npm install nodemcu-tool

In this case, a link to the binary file is located in

As Archive from GitHub

You can also download the latest release directly from GitHub and extract the sources to your project directory.
After downloading you have to install the dependencies by running in the nodemcu-tool directory.

When using this method, the command is not registered within your path. You have to register it manually using a symlink — or the recommended way: call the binary file directly.

node.setpartitiontable()¶

Sets the current LFS and / or SPIFFS partition information.

Syntax

Note

This function is typically only used once during initial provisioning after first flashing the firmware. It does some consistency checks to validate the specified parameters, and it then reboots the ESP module to load the new partition table. If the LFS or SPIFFS regions have changed then you will need to reload LFS, reformat the SPIFSS and reload its contents.

Parameters

An array containing one or more of the following enties. The address values are byte offsets relative to the start of the Flash memory. The size values are in bytes. Note that these parameters must be a multiple of 8Kb to align to Flash page boundaries.
— . The base address of the LFS region.
— . The size of the LFS region.
— . The base address of the SPIFFS region.
— . The size of the SPIFFS region.

Returns

Not applicable. The ESP module will be rebooted for a valid new set, or a Lua error will be thown if inconsistencies are detected.

Распиновка ESP8266 NodeMCU

С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.

Рисунок 6 – Распиновка ESP8266 NodeMCU

Для простоты мы сгруппируем выводы с аналогичными функциями.

Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.

GND – это вывод земли отладочной платы ESP8266 NodeMCU.

Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.

Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.

Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).

Выводы UART ESP8266 NodeMCU имеет 2 интерфейса UART, то есть UART0 и UART1, которые обеспечивают асинхронную связь (RS232 и RS485) и могут обмениваться данными со скоростью до 4,5 Мбит/с. Для связи можно использовать UART0 (выводы TXD0, RXD0, RST0 и CTS0), который поддерживает управление потоком. UART1 (вывод TXD1) поддерживает только сигнал передачи данных, поэтому он обычно используется для печати журнала событий.

Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:

  • 4 режима синхронизации передачи SPI;
  • до 80 МГц и тактовые частоты, полученные делением 80 МГц;
  • до 64 байт FIFO.

Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.

Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.

Выводы управления используются, как ни странно, для управления ESP8266. Эти выводы включают в себя вывод включения микросхемы EN, вывод сброса RST и вывод пробуждения WAKE.

  • Вывод EN – микросхема ESP8266 включена, когда на вывод EN подается высокий логический уровень. При низком логическом уровне микросхема работает на минимальной мощности.
  • Вывод RST используется для сброса микросхемы ESP8266.
  • Вывод WAKE используется для вывода чипа из глубокого сна.

Flashing firmware

Please note that the device will generally need a power cycle after updating the firmware.

Web UI OTA from my previous project

Flash https://github.com/mtongnz/ESP8266_ArtNetNode_DMX to your device (if not already on there) using the Arduino IDE and then use the Web UI to upload the .bin available in this git.

Arduino IDE

You can also use the «WebUpdate» found in Examples->ESP8266WebServer. Make sure you change the Flash Size in the Tools menu to match your ESP8266s flash. You’ll need to allow about 700K for the sketch and upload or OTA will fail — this means that with a 1M unit, select the 1M(256K SPIFFS).

Instructions to find out your flash size (if unknown) are on my Instructable linked at the top of this page.

Event driven lua LED blink : NodeMCU Examples

The previous code example does not use event driven programming so
lets write it the way lua should be used using a timer to create an
event that will trigger led blink.

Note the lua script below operates for newer lua SDK > 2.1.0.  -timer operation.

— NodeMCU Examples— Event driven programmingdelayms=400LEDpin=4LEDstate=gpio.mode(LEDpin,gpio.OUTPUT)functiontog()if(LEDstate)thengpio.write(LEDpin,gpio.LOW)print()elsegpio.write(LEDpin,gpio.HIGH)print(1)endLEDstate=notLEDstateend— oo calling method
localmytimer=tmr.create()mytimerregister(delayms,tmr.ALARM_AUTO,function()tog()end)mytimerstart()

Save the above as File: led_flash2.lua

The event driver (the timer) is at the end of the code.

First a timer object is created ‘mytimer’. Then the timer is registered with the delay time, the type of repeat —
ALARM_AUTO means repeat this timer event forever.

Next is the function
tog that is called when the timer triggers. Then the timer is started.
You can use ‘mytimer:alarm’ instead of register and start, which both
registers and starts the timer if you want.

So in this code the timer repeatedly calls function tog() at the delayms rate which is set to 400ms.

Установка библиотеки датчиков DHT

Связь с датчиками DHT11, с датчиками DHT22/AM2302 – это сложная задача, поскольку для передачи данных они используют собственный однопроводный протокол. Этот протокол требует точной синхронизации. К счастью, нам не нужно беспокоиться об этом, потому что мы собираемся использовать библиотеку DHT от Adafruit, которая позаботится почти обо всем. Эта библиотека настолько мощна, что работает как на архитектуре Arduino, так и на архитектуре ESP.

Чтобы установить библиотеку, перейдите в меню Скетч (Sketch) → Подключить библиотеку (Include Library) → Управлять библиотеками… (Manage Libraries…). Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Рисунок 3 – Установка библиотеки Arduino – выбор управления библиотеками в Arduino IDE

Отфильтруйте результаты поиска, введя «DHT sensor». Должна остаться пара записей. Найдите DHT sensor library by Adafruit. Нажмите на эту запись, а затем выберите Установить (Install).

Рисунок 4 – Установка библиотеки Adafruit DHT

Библиотека датчиков DHT использует Adafruit Sensor support backend. Поэтому поищите в менеджере библиотек Adafruit Unified Sensor и установите его тоже (возможно, придется немного прокрутить).

Краткое описание языка Lua

Язык Lua обладает простым синтаксисом и мощными конструкциями описания данных, которые основаны на массивах и расширяемой семантике. Этот мощный язык программирования используется для создания программного обеспечения, расширения различных игр. В отличие от остальных языков Lua обладает более гибкими и более мощными конструкциями.

Мигание светодиодами на Lua

Можно рассмотреть простейшую схему – мигание светодиодом. Этот пример поможет изучить работы с контактами GPIO. Светодиод нужно подключить как показано на схеме.

Затем нужно записать следующий скетч в левое окно ESPlorer:

gpio.mode (pin_number, gpio.OUTPUT) // установка рабочего режима на выход

gpio.write (pin_number, gpio.HIGH)// установка высокого уровня

gpio.write (pin_number, gpio.LOW)// установка низкого уровня

gpio.serout (1, gpio.HIGH, <+990000,990000>, 10, 1) // установка мигания светодиодом 10 раз

После нужно сохранить скрипт с названием init.lua. Сразу после этого начнется автоматическая загрузка написанного кода в отладочную плату и его выполнение. Если операция выполнена успешно, отладочная плата начнет мигать светодиодом.

Важно отметить, что плата самостоятельно выполняет скрипт, подключение к компьютеру нужно только для подачи питания

Товары

  • Технические характеристики модуля
  • Примеры использования (скриптовый язык Lua)
  • Примеры использования (скетч в среде программирования Arduino IDE)

NodeMCU Lua – плата на основе популярного модуля ESP8266 (рисунок 1) предназначена для создания IoT устройств (устройств Интернета вещей), которым необходима передача или получение данных в интернет с помощью технологии Wi-Fi.

Как обращаться к GPIO-контактам в коде

В таблице ниже показано, как номера GPIO-контактов ESP8266-12E (оснащенной встроенным программатором) соотносятся со своими номерами в Lua-коде.

Номер контакта в Lua-коде Номер GPIO-контакта ESP8266
0 GPIO16
1 GPIO5
2 GPIO4
3 GPIO0
4 GPIO2
5 GPIO14
6 GPIO12
7 GPIO13
8 GPIO15
9 GPIO3
10 GPIO1
11 GPIO9
12 GPIO10

Вот так эти контакты расположены на самой плате:

А вот так выглядит распиновка ESP-01 (все контакты работают на 3.3 вольтах):

Важно:В следующем разделе «Пишем Lua-скрипт» будет фрагмент «pin=4», с помощью которого мы будем обращаться к контакту GPIO2. Если вписать «pin=3», то мы обратимся к контакту GPIO0.. Так устроена прошивка NodeMCU на внутреннем уровне

Но вам об этом беспокоиться не стоит: просто запомните, что GPIO0 – это 3 контакт, а GPIO2 – это 4 контакт.

Так устроена прошивка NodeMCU на внутреннем уровне. Но вам об этом беспокоиться не стоит: просто запомните, что GPIO0 – это 3 контакт, а GPIO2 – это 4 контакт.

net.ifinfo()¶

Return information about a network interface, specified by index.

Returns

if the given does not correspond to an interface. Otherwise,
a table containing …

  • , , and configured for this interface, as dotted quad strings
    or if none is set.

  • if DHCP was used to configure the interface, then will be a table containing…

  • — the DHCP server itself, as a dotted quad

  • — the IP address suggested for the client; likely, this equals
    above, unless the configuration has been overridden.

  • — the NTP server suggested by the DHCP server.

DNS servers are not tracked per-interface in LwIP and, as such, are not
reported here; use .

node.setpartitiontable()¶

Sets the current LFS and / or SPIFFS partition information.

Syntax

Note

This function is typically only used once during initial provisioning after first flashing the firmware. It does some consistency checks to validate the specified parameters, and it then reboots the ESP module to load the new partition table. If the LFS or SPIFFS regions have changed then you will need to reload LFS, reformat the SPIFSS and reload its contents.

Parameters

An array containing one or more of the following enties. The address values are byte offsets relative to the start of the Flash memory. The size values are in bytes. Note that these parameters must be a multiple of 8Kb to align to Flash page boundaries.
— . The base address of the LFS region.
— . The size of the LFS region.
— . The base address of the SPIFFS region.
— . The size of the SPIFFS region.

Returns

Not applicable. The ESP module will be rebooted for a valid new set, or a Lua error will be thown if inconsistencies are detected.

node.startupcounts()¶

Query the performance of system startup.

Important

This function is only available if the firmware is built with defined. This would normally be done by uncommenting the line in .

Example

This might generate the output (formatted for readability):

The crucial entry is the one for which is when the application had started running. This was on a Wemos D1 Mini with flash running at 80MHz. The startup options were all turned on.
Note that the clock speed changes in to 160MHz. The total time was (approximately): . With startup options of 0, the time is 166ms. These times may be slightly optimistic as the clock is only 52MHz for a time during boot.

Подключение NodeMCU к компьютеру

Для начала работы с NodeMcu нужно подключить плату к компьютеру. Первым шагом будет установка драйвера CP2102 и открытие Arduino IDE. Затем нужно найти в «Файл» – «Настройки» и в окно «дополнительные ссылки для менеджера плат» вставить ссылку http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json.

После этого в меню «документы» – «плата» «менеджер плат» выбрать «esp8266» и установить последнюю версию. После проделанных действий в меню «инструменты» – «плата» нужно найти NodeMCU.

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

How to access pins using lua

The following example shows you how to access pins on an ESP module
with commands that are similar to Arduino C code uploading them with
ESPlorer. These commands have been tested on a Lolin nodeMCU V3 board.

Warning: In lua the pin information is different to Arduino. The pin number refers to the label on the board i.e. D4 is pin 4.

Note: Pin 4 is attached to the built in LED and
this is pulled high so sending a zero turns it on. This was found by
trial and error.

— NodeMCU Examplespin=4gpio.mode(pin,gpio.OUTPUT)gpio.write(pin,gpio.LOW)print(gpio.read(pin))

Save the above as file:led_on.lua

Шаг 11. Настройка

После завершения прошивки вы должны увидеть на дисплее слово «Connecting».

Дисплей включения часов

ESP пытается подключиться к вашему WiFi, чтобы получить текущее время. Однако он еще не знает пароля к вашей точке доступа (AP) WiFi.

  • Нажмите на ESP кнопку сброса (RST) дважды с интервалом примерно в одну секунду.
    Кнопка сброса на модуле ESP
  • Дисплей должен будет показать вам AP: MorphClk,Pwd: HariFun и 192.168.4.1.
    Дефолтные настройки сети в часах
  • Сейчас ESP действует как точка доступа WiFi с названием MorphClk и паролем HariFun.
  • Перейдите к своему компьютеру/телефону, чтобы изменить свое WiFi подключение с вашего WiFi на MorphClk.
  • Чтобы переключить сеть WiFi, на Windows используется иконка в нижнем правом углу, на Mac – в верхнем правом.
  • Вы можете увидеть предупреждение, что ваш телефон не может найти интернет. Это нормально. Ваш телефон сейчас подключен только к ESP, а ESP не подключен к интернету (пока).
  • Используя вэб-браузер на своем компьютере/телефоне, откройте 192.168.4.1, это сайт, обслуживаемый ESP.

    Точка доступа WiFi от часовВэб-интерфейс часов

  • Нажмите «Configure WiFi» и выберите ВАШУ точку доступа WiFi и введите пароль от своей WiFi сети. Это сохранит данную информацию в постоянной памяти, поэтому вам не придется повторять это снова.
  • Также выберите часовой пояс.
  • Введите Y в поле 24Hr, чтобы часы отображались в 24-часовом формате, или N, если предпочитаете 12-часовой форма. Но я еще не сделал индикатора AM/PM.

    Страница настроек часовСтраница настроек часов

  • Не забудьте переключить свой компьютер/телефон обратно на свою обычную точку доступа WiFi, иначе у вас не будет доступа в интернет.

Настройки сохраненыПереход в нормальный режим работыВсё работает

net.socket:on()¶

Register callback functions for specific events.

Parameters

  • string, which can be «connection», «reconnection», «disconnection», «receive» or «sent»
  • callback function. Can be to remove callback.

The first parameter of callback is the socket.

  • If event is «receive», the second parameter is the received data as string.
  • If event is «disconnection» or «reconnection», the second parameter is error code.

If reconnection event is specified, disconnection receives only «normal close» events.

Otherwise, all connection errors (with normal close) passed to disconnection event.

Example

Note

The event is fired for every network frame! Hence, if the data sent to the device exceeds 1460 bytes (derived from Ethernet frame size) it will fire more than once. There may be other situations where incoming data is split across multiple frames (e.g. HTTP POST with ). You need to manually buffer the data and find means to determine if all data was received.

net.dns.setdnsserver()¶

Sets the IP of the DNS server used to resolve hostnames. Default: resolver1.opendns.com (208.67.222.222). You can specify up to 2 DNS servers.

Parameters

  • IP address of a DNS server
  • which DNS server to set (range 0~1). Hence, it supports max. 2 servers.

See also

net.ping()

Pings a server. A callback function is called when response is or is not received. Summary statistics can be retrieved via the second callback.

The function can be disabled by commenting macro in when more compact build is needed.

Parameters

  • destination domain or IP address
  • number of ping packets to be sent (optional parameter, default value is 4)
  • callback function which is invoked when response is received where

    • number of bytes received from destination server (0 means no response)
    • destination server IP address
    • ICMP sequence number
    • round trip time in ms
      If domain name cannot be resolved callback is invoked with parameter equal to 0 (i.e. no response) and values for all other parameters.
  • callback function which is invoked when response is received where

    • destination server IP address
    • total number of packets sent
    • total number of packets lost (not received)
    • total number of bytes received from destination server
    • total time to perform ping

Example

Multiple pings can start in short sequence thought if the new ping overlaps with the previous one the first stops receiving answers, i.e.

gives

This part gone to the TLS module, link kept for backward compatibility.

Начало работы с Termite

В оригинальной статье о прошивке ESP8266 была рекомендована PuTTY; и, если она у вас она есть, и вы хотите её использовать, она здесь будет отлично работать. Тем не менее, Termite в этом плане более удобное приложение и будет использоваться далее в этой статье. Termite бесплатен и для личного, и для коммерческого использования.

В последующих этапах предполагается, что модуль ESP-01 запрограммирован так же, как обычно, поставщиком. Если вы (или кто-то еще) внесли изменения в стандартные настройки программы, вам необходимо будет поэкспериментировать, чтобы определить текущие настройки вашего модуля ESP-01.

После проверки своей схемы программирования ESP-01, как описано выше, включите её. Запустите на своем компьютере Termite и нажмите кнопку Settings (Настройки); вы должны увидеть окно, похожее на приведенное ниже. Убедитесь, что COM порт, к которому подключен USB-TTL конвертер, правильно выбран в окне настроек последовательного порта. Выставьте все остальные параметры, как показано в окне настроек последовательного порта ниже, и нажмите OK, чтобы закрыть окно настроек последовательного порта.

Настройки последовательного порта

На этом этапе курсор должен мигать в нижней части окна Termite; если нет, кликните на нижней части окна Termite, чтобы поместить туда курсор. Введите и нажмите Enter на клавиатуре; если всё хорошо, ESP-01 ответит в окне Termite. Если это произойдет, можете вздохнуть с облегчением, потому что вы только что преодолели главное препятствие.

Затем введите и нажмите Enter. ESP-01 должен ответить чем-то очень похожим, что показано на рисунке ниже.

Отклик модуля ESP-01

Команда говорит ESP8266 сообщить о версии набора AT-команд, который он содержит, какой SDK (Software Development Kit) был загружен в него, какая компания собрала модуль ESP, и когда SDK был загружен в модуль. Наконец, как обычно, ESP8266 завершает свой ответ с помощью .

Если ESP-01 ответил правильно, то можно закончить с Termite (если вы не хотите еще поэкспериментировать). Далее он понадобится снова для подтверждения успешной прошивки.