Обзор платы nodemcu esp8266 и ее использование в arduino ide

Содержание

Шаг 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, иначе у вас не будет доступа в интернет.

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

Пример Arduino: мигалка

Чтобы убедиться, что ядро ESP8266 Arduino и NodeMCU правильно настроены, мы загрузим самый простой скетч – The Blink!

Для этого теста мы будем использовать встроенный светодиод. Как упоминалось ранее в этом руководстве, вывод платы D0 подключен к встроенному синему светодиоду и программируется пользователем. Отлично!

Прежде чем мы перейдем к загрузке скетча и игре со светодиодом, мы должны убедиться, что в Arduino IDE выбрана правильная плата. Откройте Arduino IDE и выберите пункт NodeMCU 0.9 (ESP-12 Module) в меню Инструменты → Плата.

Рисунок 9 – Выбор отладочного модуля NodeMCU в Arduino IDE

Теперь подключите ESP8266 NodeMCU к компьютеру через USB-кабель micro-B. Как только плата будет подключена, ей должен быть назначен уникальный COM-порт. На компьютерах с Windows это будет что-то вроде COM#, а на компьютерах Mac/Linux он будет в виде /dev/tty.usbserial-XXXXXX. Выберите этот последовательный порт в меню Инструменты → Порт. Также выберите скорость загрузки: 115200

Рисунок 10 – Выбор COM порта в Arduino IDE

Предупреждение

Уделите больше внимания выбору платы, выбору COM порта и скорости загрузки. В случае некорректных настроек при загрузке новых скетчей вы можете получить ошибку espcomm_upload_mem.

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

После загрузки кода светодиод начнет мигать. Возможно, чтобы ваш ESP8266 начал работать со скетчем, вам придется нажать кнопку RST.

Рисунок 11 – Рабта тестового скетча Blink на ESP8266 NodeMCU

Запись прошивки NodeMCU с использованием Windows-ПК

Итак, к этому моменту у нас уже должна быть готова цепь и скачан флэшер для записи прошивки NodeMCU. Как нам загрузить ее на ESP8266?

Очень просто. Если вы уже настроили последовательную коммуникацию между ESP8266 и ПК, то вам осталось проделать следующее:

  • Откройте флэшер на ПК;
  • Перейдите на вкладку Advanced (см. скриншот ниже);
  • Выставьте скорость передачи данных на 9600 бод;

Примечание: Некоторые ESP8266-модули по умолчанию коммуницируют на скорости 115200 бод. Если вы попытались записать прошивку, но ничего не произошло, попробуйте поменять скорость передачи данных на 115200 бод. Интерфейс вкладки Advanced должен выглядеть примерно так:

Затем откройте вкладку Config и нажмите на иконку с изображением шестеренки, чтобы выбрать двоичный файл прошивки NodeMCU.

Далее вам нужно будет выбрать двоичный файл прошивки NodeMCU, который вы скачали выше в разделе «Загружаем двоичные файлы прошивки NodeMCU».

В результате вкладка Config должна будет выглядеть как-то так:

Затем перейдите на вкладку Operation и проделайте следующее:

  1. Выберите COM-порт, к которому подключен FTDI-программатор (или ESP-12E);
  2. Нажмите на кнопку Flash(F);

Это запустит процесс прошивки. Когда прошивка будет выполнена, вы должны увидеть маленькую круглую зеленую иконку с галочкой в левом нижнем углу экрана.

Во время прошивки у ESP8266 будет мигать синий светодиод. Если он не мигает, а флэшер завис, проделайте следующее:

  1. Проверьте подключения;
  2. Отключите FTDI-программатор (или ESP-12E) от ПК и снова подключите;
  3. Перезапустите флэшер NodeMCU;
  4. Проверьте настройки на вкладке Advanced флэшера;
  5. Попробуйте другую скорость передачи данных (9600 или 115200 бод);
  6. Снова попробуйте записать прошивку;

Когда прошивка будет выполнена, отключите ESP8266 от питания, а контакт GPIO0 – от GND.

Webserver Start Count Down

This script does the same job as the last one except that it shows
you how long you have until the webserver starts. A countdown is output
to the serial monitor.

— NodeMCU Examples
— Countdown to webserver start
print(«\nAbout to start a simple webserver in 10 seconds»)count=6print(«\n»)functionshow_count()count=count-1if(count<=)thencountdownunregister()dofile(«simple_webserver.lua»)print(«Starting Server»);elsebuf=tostring(count)..» seconds to webserver start»print(buf)endendcountdown=tmr.create()countdownalarm(1000,tmr.ALARM_AUTO,function()show_count()end)

Save the above file as init.lua overwriting the previous file.

NodeMCU V3 Projects and Applications

NodeMCU V3 is mainly used in the WiFi Applications which most of the other embedded modules fail to process unless incorporated with some external WiFi protocol. Following are some major applications used for NodeMCU V3.

  • Internet Smoked Alarm
  • VR Tracker
  • Octopod
  • Serial Port Monitor
  • ESP Lamp
  • Incubator Controller
  • IoT home automation
  • Security Alarms

That’s all for now. I hope I have given you something valuable related to this module. If you have any question, you can approach me in the comment section below. I’d love to help you the best way I can. You are most welcome to keep us updated with your valuable feedback so we keep producing quality content as per your needs and requirements. Thanks for reading the article.

ESP-07

Особенности этого модуля — керамическая антенна и разъем для внешней антенны, металлический экран.

Подключение к IoT

Аппаратная часть

Работа с этим модулем, к сожалению, прошла не слишком гладко. Ни один из возможных вариантов подключения не сработал, и я, уже отчаявшись, решила удалять его описание из статьи. Но тут мне дали новый модуль и сказали попробовать еще раз — о чудо, он заработал с первого раза! В чем было дело и как сломался первый модуль, который я мучила, — неизвестно, но скорее всего он был убит нещадной статикой. Мораль этого лирического отступления такова — если у вас что-то не заработало по инструкции, написанной ниже, не вините инструкцию — сначала прозвоните и проверьте все контакты, а потом попробуйте на другом модуле.

1) Собираем схему

ESP-07

USB-Serial

VCC

VCC

CH_PD (рекомендуется через резистор)

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 (рекомендуется через резистор)

GND

GPIO 0 — сначала не подключен, но будет использоваться для перевода в режим программирования далее, поэтому к нему уже подведен провод

все остальные контакты не подключены

RTS, CTS — не подключены

На фото этого и следующего модуля уже можно заметить резисторы. После неведомой поломки уже решила перестраховаться и поставила килоомники, хотя и без них все должно работать.

2) Переводим в режим программирования (необходимо каждый раз выполнять перед прошивкой модуля)

2.1) Отключаем питание от модуля2.2. Подключаем пин GPIO 0  к GND

2.2) Подключаем пин GPIO 0  к GND

ESP-07

USB-Serial

VCC

VCC

CH_PD

VCC

TX

RX

RX

TX

GND

GND

GPIO 15 

GND

GPIO 0

GND

все остальные контакты не подключены

RTS, CTS — не подключены

2.3) Подключаем модуль к питанию

2.4) Железо готово, приступаем к программной части.

Программная часть

1) Выбираем плату: Tools (Инструменты) -> Board(Плата) Generic ESP8266 Module.

2) Вставляем подготовленный код.

3) Задаем данные для подключения Wi-Fi и идентификатор своего объекта на платформе.

4) Компилируем и загружаем скетч на плату.

5) Для обычной работы модуля (не для режима прошивки) пин GPIO 0 должен быть свободен, поэтому отключаем его от GND.

6) Переподключаем питание ESP-07 (например, вытаскиваем и вставляем обратно адаптер).

7) Видим появление данных на платформе.

В Китае

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.

Использование на практике

Модуль NodeMCU V0.9 очень удобен – в отличие от других модулей с чипом ESP8266 он отлично совместим с контактами макетной платы (разумеется, не считая 4-ех боковых контактов, которые приходится отгибать).

Как можно видеть на картинке ниже, V0.9 закрывает все 10 контактов стандартной макетной платы. Таким образом, чтобы воспользоваться ими, придется задействовать U-образные провода-перемычки, то есть перед их подключением модуль придется вынуть из макетной платы. Не очень удобно… Сравните это с ESP-201, по бокам которого остается по одному свободному ряду контактов.

Сравнение модулей NodeMCU и ESP-201; как видите, NodeMCU закрывает собой все 10 контактов, а ESP-201 оставляет 2 свободных ряда (по бокам от себя)

Отличия

1-ое поколение / V0.9 / V1

Это 1-ая версия (уже устаревшая) NodeMCU, и она продается в виде яркой желтой (и очень широкой) платы. Ее размеры – это 47 на 31 мм, и это значит, что она покрывает собой все 10 контактов стандартной макетной платы. По этой причине пользоваться ею крайне неудобно.

Эта версия производилась, по всей видимости, в основном компанией Amica. Она оснащена модулем ESP-12 и 4 Мб flash-памяти.

Прототипная плата ESP8266 NodeMCU 1-го поколения

2-ое поколение / V1.0 / V2

Версия V2 исправляет недостатки оригинала – она получилась более узкой, а ее контакты хорошо подходят к контактам макетной платы. Чип ESP-12 был заменен на ESP-12E.

Прототипная плата ESP8266 NodeMCU 2-го поколения

V3

Окей, а что насчет V3? NodeMCU новых характеристик пока не публиковали, поэтому официально 3-е поколение еще не вышло. В результате выяснилось, что V3 – это «версия», придуманная компанией LoLin, чтобы показать небольшие улучшения относительно плат V2. Кроме того, они заявляют, что V3 может похвастаться более надежным USB-портом.

Если сравнить распиновку, то мы увидим лишь одно небольшое отличие от V2. LoLin решила использовать один из двух зарезервированных контактов для выдачи USB-питания, а второй – для дополнительной «земли».

Кроме того, V3 отличается от других плат по размеру. Плата от LoLin значительно больше, чем платы V2 от Amica и DOIT. В частности, из-за такого размера я этой платой никогда пользоваться не буду. Есть альтернативы и получше.

Какое отношение Lolin имеет к Wemos? Хороший вопрос. Распиновка на картинке выше изначально была опубликована на wemos.cc, но теперь эта ссылка – битая.

Шаг 8. Установка поддержки ESP8266

Нам также необходима поддержка ESP8266.

  • Закройте Менеджер библиотек, но оставайтесь в Arduino IDE.
  • Перейдите в Файл (File) > Настройки (Preferences).
  • Кликните на иконку справа от поля «Дополнительные ссылки для менеджера плат» (Additional Board Manager URLs)
  • Вставьте этот URL отдельной строкой (последовательность значения не имеет):
    Установка поддержки ESP8266
  • Кликните OK, чтобы выйти из настроек.
  • Перейдите к Инструменты (Tools) > Плата xyz (Board xyz) > Менеджер плат (Board Manager…).
  • Найдите ESP8266.
  • Установите esp8266 by ESP8266 Community.
    Установка поддержки ESP8266

Режимы работы 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 адрес он может выдавать веб-страницы всем подключенным к этой сети устройствам.

NodeMCU V3 Features

  • Open-source
  • Arduino-like hardware
  • Status LED
  • MicroUSB port
  • Reset/Flash buttons
  • Interactive and Programmable
  • Low cost
  • ESP8266 with inbuilt wifi
  • USB to UART converter
  • GPIO pins

As mentioned above, a cable supporting micro USB port is used to connect the board. As you connect the board with a computer, LED will flash. You may need some drivers to be installed on your computer if it fails to detect the NodeMCU board. You can download the driver from this page.

Note: We use Arduino IDE software for programming this module. It is important to note that the pin configuration appearing on the board is different from the configuration we use to program the board on the software i.e. when we write code for targeting pin 16 on the Arduino IDE, it will actually help is laying out the communication with the D0 pin on the module.

Following figure the shows the pin configuration to use in Arduino IDE.

How to Power NodeMCU V3?

You can see from the pinout image above, there are five ground pins and three 3V3 pins on the board. The board can be powered up using the following three ways.

USB Power. It proves to an ideal choice for loading programs unless the project you aim to design requires separate interface i.e. disconnected from the computer.

Provide 3.3V. This is another great option to power up the module. If you have your own off-board regulator, you can generate an instant power source for your development kit.

Power Vin. This is a voltage regulator that comes with the ability to support up to 800 mA. It can handle somewhere between 7 to 12 V. You cannot power the devices operating at 3.3 V, as this regulator unable to generate as low as 3.3V.

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

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

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

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

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.

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.

connection:request()¶

Opens the connection to the server and issues the request. If was set to in the connection options, then this function returns immediately. Otherwise, the function doesn’t return until all callbacks have been made and the request is complete. If the server supports Keep-Alive and wasn’t specified in the headers, the connection will remain open after completion, ready for another call to (possibly after setting a new URL with ).

Returns

In asynchronous mode, always returns .

In synchronous mode, it returns 2 results, where is if the connection is still open. In that case, if you don’t wish to use the socket again, you should call to ensure the socket is not kept open unnecessarily. When a connection is garbage collected any remaining sockets will be closed.

node.random()¶

This behaves like math.random except that it uses true random numbers derived from the ESP8266 hardware. It returns uniformly distributed
numbers in the required range. It also takes care to get large ranges correct.

It can be called in three ways. Without arguments in the floating point build of NodeMCU, it returns a random real number with uniform distribution in the interval [0,1).
When called with only one argument, an integer n, it returns an integer random number x such that 1 <= x <= n. For instance, you can simulate the result of a die with random(6).
Finally, random can be called with two integer arguments, l and u, to get a pseudo-random integer x such that l <= x <= u.

Parameters

  • the number of distinct integer values that can be returned — in the (inclusive) range 1 ..
  • the lower bound of the range
  • the upper bound of the range

Прошивки для 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. После всех вышеописанных действий будет новая версия прошивки. Отладочная плата полностью перепрошита и готова к работе.

Tools¶

Cloud Build Service

NodeMCU «application developers» just need a ready-made firmware. There’s a cloud build service with a nice UI and configuration options for them.

Docker Image

Occasional NodeMCU firmware hackers don’t need full control over the complete tool chain. They might not want to setup a Linux VM with the build environment. Docker to the rescue. Give Docker NodeMCU build a try.

Linux Build Environment

NodeMCU firmware developers commit or contribute to the project on GitHub and might want to build their own full fledged build environment with the complete tool chain. The NodeMCU project embeds a for Linux/x86-64 by default. After working through the below, simply start the build process with

The default build setup reduces output verbosity to a minimum. The verbosity level can be increased by setting the environment variable to 1, as below. See the root for other available options.

Note

Building the tool chain from scratch is out of NodeMCU’s scope. Refer to ESP toolchains for related information.

Git

If you decide to build with either the Docker image or the native environment then use Git to clone the firmware sources instead of downloading the ZIP file from GitHub. Only cloning with Git will retrieve the referenced submodules:

Omitting the optional will clone release.

Как обращаться к 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.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.

Распиновка 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 используется для вывода чипа из глубокого сна.

Docker¶

The Docker NodeMCU build image is the easiest method to build NodeMCU related components locally on your preferred platform.

Offering:

  • build NodeMCU firmware based on locally cloned sources and configuration
  • cross-compile Lua files into LFS image locally

Detailed instructions available in the image’s README. As for available config options and study the comments in .

For LFS

  1. In edit the line and adjust the size to that needed. Note that this must be a multiple of 4Kb.
  2. Build as you would otherwise build with this image (i.e. see its README)

Note that this Docker image is not an official NodeMCU offering. It’s maintained by a NodeMCU team member as an individual, though.

Recent Articles

  1. Learn how to use the TP4056 properly. There’s a right way, and a wrong way, to use it to safely charge Lithium Ion batteries.

  2. A tutorial on using the ADS1115 precision 16 bit ADC for low power use.

  3. Arduino Nano ISP: How to program an ATmega328P using an Arduino Nano as the ISP programmmer. One common problem: Programming a sketch into the chip without a reset control — solved here.

  4. I2C tutorial: Learn all about the 2 wire I2C serial protocol. Learn how easy it is to use, how it works and when to use it…

  5. How to test and use an Arduino Joystick including a new library to make it super easy.

  6. How to use the MCP4728, a versatile four channel DAC with built in voltage reference.

    The MCP4728 chip is a four channel 12 bit DAC, with memory that outputs voltage that you can use for calibration, anywhere you want a fixed voltage.