Начало работы с esp8266 nodemcu v3 lua с wifi


Introduction to NodeMCU V3

NodeMCU V3 is an open-source firmware and development kit that plays a vital role in designing your own IoT product using a few Lua script lines.

Multiple GPIO pins on the board allow you to connect the board with other peripherals and are capable of generating PWM, I2C, SPI, and UART serial communications.

The interface of the module is mainly divided into two parts including both Firmware and Hardware where former runs on the ESP8266 Wi-Fi SoC and later is based on the ESP-12 module.

The firmware is based on Lua – A scripting language that is easy to learn, giving a simple programming environment layered with a fast scripting language that connects you with a well-known developer community.

And open source firmware gives you the flexibility to edit, modify and rebuilt the existing module and keep changing the entire interface until you succeed in optimizing the module as per your requirements.

USB to UART converter is added on the module that helps in converting USB data to UART data which mainly understands the language of serial communication.

Instead of the regular USB port, MicroUSB port is included in the module that connects it with the computer for dual purposes: programming and powering up the board.

The board incorporates status LED that blinks and turns off immediately, giving you the current status of the module if it is running properly when connected with the computer.

The ability of module to establish a flawless WiFi connection between two channels makes it an ideal choice for incorporating it with other embedded devices like Raspberry Pi.

Introduction: Quick Start to Nodemcu (ESP8266) on Arduino IDE

By Magesh JayakumarMagesh JayakumarFollow

More by the author:

About: I make hobbyist stuffs and play with electronics follow me to know more https://www.facebook.com/arduinolabviewsolidworks https://twitter.com/learnrobotix

More About Magesh Jayakumar »

Thanks to the guys those who ported the Esp8266 into Arduino IDE and helping all the arduino users happy to the core. Yes it’s been long time since they did and this post is bit later to thanks the good hearted work by the guys out there.

Lets begin with Installing the Esp8266 support for the Arduino and see how to blink an LED ( the hello world in the electronics )

check out the video to know step by step tutorial on how to get started with our favourite chip Esp8266

Firstly open the Arduino IDE Go to files and click on the preference in the Arduino IDE

copy the below code in the Additional boards Manager http://arduino.esp8266.com/stable/package_esp8266com_index.json click OK to close the preference Tab.

After completing the above steps , go to Tools and board, and then select board Manager

Navigate to esp8266 by esp8266 community and install the software for Arduino. Once all the above process been completed we are read to program our esp8266 with Arduino IDE. For this example I have used NodeMCU esp8266 and if you are using any other vendor wifi chips or generic wifi module please check with the esp8266 Pin mapping which is very essential to make things works. The reason why I used D7 pin for this example is , I uploaded the basic blink program that comes with the examples program in the arduino IDE which is connected with 13 pin of arduino. The 13th pin is mapped into D7 pin of NodeMCU. go to board and select the type of esp8266 you are using. and select the correct COM port to run the program on your esp8266 device.

<p>void setup() {<br>  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}</p><p>// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second

upload the program and see the results.

if you like the above tutorial and if you want try out with cool projects you can also check this link here , that’s the amazon book link where you can use that book to make IoT with Esp8266 or Nodemcu, that books gives you basic coverage on how to do simple things and get yourself started with arduino and goes on developing projects like sending data to webserver and creating a webserver, uploading and controlling data from a webpage, how to interface TFT LCD and I2C devices and many more things can find on the link.

Firmware for esp8266 NodeMcu

The platform is loaded with the standard Node MCU firmware, in which the Lua language interpreter is integrated. Using Lua commands, you can do the following:

  • Connect to a Wi-Fi access point;
  • Work as a Wi-Fi access point;
  • Switch to deep sleep mode to reduce energy consumption;
  • Turn on or off the LED on the GPIO16 output;
  • Perform various operations with files in flash memory;
  • Search for an open Wi-Fi network, connect to it;
  • MAC address output;
  • Manage user timers.

For programming NodeMCU, you can use the Arduino IDE or the SDK development kit – ESPlorer. This complex has several differences:

  • It can work on many different platforms;
  • It has support for multiple open files;
  • Allows highlighting the Lua language code;
  • The ability to smartly send files;
  • The ability to support several types of firmware at the same time.

To ensure correct and stable operation, you need to update the firmware to the latest version. There are several upgrade methods – cloud service, Docker Image, and compilation on Linux. Each of these methods has its pros and cons. The simplest and most understandable is the first method.

Collecting firmware in the cloud service

After clicking on the received link, you will need to download the bin file and place it in Resources – Binaries. The nodemcu_integer_0.9.5_20150318.bin file will be located there, which must be deleted. As a result, the contents of the folder will look as follows.

Пример 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

Технические характеристики: ESP32 против ESP8266

ESP32 является преемником ESP8266. Он имеет дополнительное ядро ​​процессора, более быстрый Wi-Fi, больше GPIO и поддерживает Bluetooth 4.2 и Bluetooth с низким энергопотреблением. Кроме того, ESP32 поставляется с сенсорными контактами, которые можно использовать для пробуждения ESP32 из глубокого сна, встроенным датчиком эффекта Холла и встроенным датчиком температуры (последние версии ESP32 больше не поставляются со встроенным датчиком температуры).

Обе платы очень дешевы, но ESP32 стоит немного дороже. В то время как ESP32 может стоить от 6 до 12 долларов, ESP8266 может стоить от 4 до 6 долларов (но это зависит от того, где вы их приобретаете).

В следующей таблице показаны основные различия между чипами ESP8266 и ESP32:

Hantek 2000 — осциллограф 3 в 1
Портативный USB осциллограф, 2 канала, 40 МГц….


Использовать просто чипы ESP32 или ESP8266 сложно и непрактично, особенно при тестировании и создании прототипов. В большинстве случаев вы захотите использовать платы разработки ESP32 и ESP8266. Эти платы поставляются со всеми необходимыми схемами для питания чипа, подключения его к компьютеру, схемой для легкой загрузки кода, контактами для подключения периферийных устройств, встроенными светодиодами питания и управления и другими полезными функциями.

Платы для разработки ESP32 и ESP8266, которые мы используем чаще, — это плата разработки ESP32 DEVKIT DOIT и комплект ESP8266 ESP-12E NodeMCU Kit. Однако есть много других моделей плат для разработки, из которых вы можете выбирать.

Wrapping up

Now that you know how to use the deepSleep() function, your battery powered project can last longer.

You may also like other ESP8266 projects:

  • ESP8266 Wi-Fi Button – DIY Amazon Dash Button Clone
  • ESP8266: DHT Temperature and Humidity Readings in OLED Display
  • Hack a PIR Motion Sensor with an ESP8266
  • How to Use a Multimeter – Beginner’s Guide

We have other guides about deep sleep that you might be interested in:

  • MicroPython: ESP32 Deep Sleep and Wake Up Sources
  • MicroPython: ESP8266 Deep Sleep and Wake Up Sources
  • ESP32 Deep Sleep with Arduino IDE and Wake Up Sources

This is an excerpt from my Home Automation using ESP8266 eBook. If you like ESP8266 and you want to learn more about it. I recommend downloading my course: Home Automation using ESP8266.

I hope this guide was useful. Thanks for reading!

Updated July 29, 2019


Теперь сделаем сервер, который будет работать на указанном порту (пусть будет 333). Затем мы с помощью терминальной программы подключимся к нашему серверу, указав его IP и порт. И потом будем обмениваться данными.

Скрипт main.lua:

Теперь наш скрипт поднимает Wi-Fi точку, создает сервер, который на порту 333 ожидает подключения. В момент подключения сервер отправит клиенту строку «Hello!», а приняв от клиента данные, вернет ему строку «Recived: » и дальше все, что он принял.

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

Но нам еще нужна терминальная программа для подключения на IP адрес ESP8266 ( и указанный порт (333). На обычном компьютере можно установить PuTTY. Для мобильных телефонов под Android я использую JuiceSSH.


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

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

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

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

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





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








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


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

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

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

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

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

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

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













GPIO 15 




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

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) Видим появление данных на платформе.

В Китае

#1 ESP8266 Deep Sleep with Timer Wake Up

To use timer wake up with ESP8266, you need to connect the RST pin to GPIO 16 which is labeled as D0, in a NodeMCU board. Simply follow the next schematic diagram:

Connect the RST pin to GPIO 16 only after uploading the code.

If you take a look at the NodeMCU pinout, you can see that GPIO 16 is a special pin and it has a WAKE feature.

Recommended reading: ESP8266 Pinout Reference Guide

The RST pin of the ESP8266 is always HIGH while the ESP8266 is running. However, when the RST pin receives a LOW signal, it restarts the microcontroller.

If you set a deep sleep timer with the ESP8266, once the timer ends, GPIO 16 sends a LOW signal. That means that GPIO 16, when connected to the RST pin, can wake up the ESP8266 after a set period of time.

ESP8266 NodeMCU Timer Wake Up Sketch

Having the ESP8266 add-on for Arduino IDE installed (how to Install the ESP8266 Board in Arduino IDE), go to Tools and select “NodeMCU (ESP-12E Module)”. Here’s the code that you need to upload to your ESP:

In this example, we print a message in the Serial Monitor:

After that, the ESP8266 goes to sleep for 30 seconds.

To put the ESP8266 in deep sleep, you use ESP.deepsleep(uS) and pass as argument the sleep time in microseconds.

In this case, 30e6 corresponds to 30000000 microseconds which is equal to 30 seconds.

After uploading the code, press the RST button to start running the code, and then connect RST to GPIO 16. The ESP8266 should wake up every 30 seconds and print a message in the Serial Monitor as shown below.

This example simply prints a message in the Serial Monitor, but in a real world application, you’ll perform a useful task like making a request, publish sensor readings, etc.

ESP-01 Timer Wake Up Circuit

If you want to make a similar setup with an ESP-01 board, you need to solder a wire as shown below. That tiny pin is GPIO 16 and it needs to be connected to RST pin.

However, the pins are so tiny that it is really hard to solder a wire like that to GPIO 16 on the ESP-01… So, for this wake up mode you should use the NodeMCU board or a bare ESP12-E chip.

Recommended reading: ESP8266 Pinout Reference

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

The ESP8266 Module

The ESP8266 module is a IoT device consisting of a 32-bit ARM microprocessor with support of WIFI network and built-in flash memory. This architecture allows it to be programmed independently, without the need of other microcontrollers like the Arduino, for example.

The problem is that, to create a development environment  focused in the ESP8266, we need to build a circuit with other integrated components to facilitate the work. That’s why several projects arose of boards that incorporate the ESP8266, from which we highlight the following:

  • NodeLHC
  • ESP201
  • Wemos D1
  • Adafruit HUZZAH ESP8266
  • NodeMCU

In this article, we will use the NodeMCU board as an example, but the design can be easily adapted to any other ESP8266 platform.

The NodeMCU Platform

NodeMCU is a complete environment of hardware and software for IoT prototyping consisting of the following items:

  • Controller board consisting of a ESP8266 module
  • Micro USB Port to power (5 volts) and programming
  • 10 digital inputs GPIOs operating at 3.3V and an analog input GPIO to 1.8 V
  • Development kit based on the Lua language


  • Need to learn a new language and IDE
  • Reduced pinout
  • Scarce documentation

The NodeMCU programming can be as easy as in Arduino. The main difference is in the pinning of the board, described below:

There are 6 extra GPIOs. All of them can be programmed as PWM, I2C, 1-wire, except for GPIO16 (D0).

For details on the ESP8266 and NodeMCU, see the references at the end of the page.
The purpose of this article is to show how we can program the NodeMCU using the Arduino programming language because, in this way, we are greatly reducing the disadvantages that the platform offers.

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

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

Работа ESP8266может осуществляться в трех разных режимах:

  1. Станция (STA)
  2. Точка доступа (AP)
  3. Комбинированный

Режим станции

Модуль ESP8266, который подключается к существующей WiFi сети (созданной беспроводным маршрутизатором), называется Станция (STA).

Профессиональный цифровой осциллограф
Количество каналов: 1, размер экрана: 2,4 дюйма, разрешен…


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

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

Модуль ESP8266, который создает свою собственную WiFi сеть и действует как концентратор (точно так же как маршрутизатор WiFi) для одной или нескольких станций, называется Точкой доступа (AP).

В отличие от WiFi-роутера, он не имеет подключения к проводной сети. Максимальное количество станций, которые могут подключиться к нему, ограничено пятью.

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

Upload LFS image¶

The compiled LFS image file (e.g. ) is uploaded as a regular file to the device file system (SPIFFS). You do this just like with Lua files with e.g. or . There is also a new example, HTTP_OTA.lua, in that can retrieve images from a standard web service.

Once the LFS image file is on SPIFFS, you can execute the command and the loader will then load it into flash and immediately restart the ESP module with the new LFS loaded, if the image file is valid. However, the call will return with an error if the file is found to be invalid, so your reflash code should include logic to handle such an error return.

Edit your file

is the file that is first executed by the NodeMCU firmware. Usually it setups the WiFi connection and executes the main Lua application. Assuming that you have included the file discussed above, then executing this will add a simple API for LFS module access:

  • Individual functions can be executed directly, e.g.
  • LFS is now in the require path, so works as expected.

Do a protected call of this code: and check the error status. See in the LFS whitepaper for a more detailed description.

Minimal LFS example

Below is a brief overview of building and running the simplest LFS-based system possible.

To use LFS, start with a version of the NodeMCU firmware with LFS enabled. See section «Build LFS
enabled firmware» for how to do that. Load it on the ESP8266 in the usual way (whatever that is for your set up).

Then build an LFS file system. This can be done in several ways, as discussed above; one of the easiest is to use on the host machine. Make sure to include a file named with the following one line content:
The file lua_examples/lfs/_init.lua should definitely be included in the image, since it’s the easiest way to integrate the LFS system. The file can then be downloaded to the ESP8266 just like any other file.

The next step is to tell the ESP8266 that the LFS exists. This is done with , which will trigger a reset, followed by to better integrate LFS; logging into the esp8266 and running the following commands gives an overview of the command sequence.

Note that no error correction has been used, since the commands are intended to be entered at a terminal, and errors will become obvious.

Then you should set up the ESP8266 boot process to check for the existence of an LFS image and run whichever module is required. Once the LFS module table has been registered by running lua_examples/lfs/_init.lua, running an LFS module is simply a matter of eg: .

need only be rerun if the LFS image is updated; after it has loaded the LFS image into flash memory the original file (in SPIFFS) is no longer used, and can be deleted.

Once LFS is known to work, then modules such as lua_examples/lfs/dummy_strings.lua can usefully be added, together of course with effective error checking.

Описание ESP8266 NodeMcu v3

Технические характеристики модуля:

  • Поддерживает Wi-Fi протокол 802.11 b/g/n;
  • Поддерживаемые режимы Wi-Fi – точка доступа, клиент;
  • Входное напряжение 3,7В – 20 В;
  • Рабочее напряжение 3В-3,6В;
  • Максимальный ток 220мА;
  • Встроенный стек TCP/IP;
  • Диапазон рабочих температур от -40С до 125С;
  • 80 МГц, 32-битный процессор;
  • Время пробуждения и отправки пакетов 22мс;
  • Встроенные TR переключатель и PLL;
  • Наличие усилителей мощности, регуляторов, систем управления питанием.

Отличия от других модификаций

Платы поколения V1 и V2 легко отличить – они обладают различным размером. Также второе поколение оснащено улучшенной модификацией чипа ESP-12 и 4 Мб флэш-памяти. Первая версия, устаревшая, выполнена в виде яркой желтой платформы. Использовать ее неудобно, так как она покрывает собой 10 выходов макетной платы. Плата второго поколения сделана с исправлением этого недостатка – она стала более узкой, выходы хорошо подходят к контактам платы. Платы V3 внешне ничем не отличаются от V2, они обладают более надежным USB-выходом. Выпускает плату V3 фирма LoLin, из отличий от предыдущей платы можно отметить то, что один из двух зарезервированных выходов используется для дополнительной земли, а второй – для подачи USB питания. Также плата отличается большим размером, чем предыдущие виды.

Где купить модули NodeMCU и ESP8266

Сегодня на рынке доступно множество достаточно недорогих модификаций плат на базе ESP8266. Мы сделали небольшую подборку наиболее интересных вариантов:

Питание модуля NodeMcu

Подавать питание на модуль можно несколькими способами:

  • Подавать 5-18 В через контакт Vin;
  • 5В через USB-разъем или контакт VUSB;
  • 3,3В через вывод 3V.

Преимущества NodeMcu v3

  • Наличие интерфейса UART-USB с разъемом micro USB позволяет легко подключить плату к компьютеру.
  • Наличие флэш-памяти на 4 Мбайт.
  • Возможность обновлять прошивку через USB.
  • Возможность создавать скрипты на LUA и сохранять их в файловой системе.

Недостатки модуля NodeMcu

Основным недостатком является возможность исполнять только LUA скрипты, расположенные в оперативной памяти. Этого типа памяти мало, объем составляет всего 20 Кбайт, поэтому написание больших скриптов вызывает ряд трудностей. В первую очередь, весь алгоритм придется разделять на линейные блоки. Эти блоки необходимо записать в отдельные файлы системы. Все эти модули исполняются при помощи оператора dofile.

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

Также важно в конце каждого написанного скрипта вызывать функцию collectgarbage (сборщик мусора)

Код прошивки

Для прошивки всех используемых ниже модулей используем один и тот же код.

Основные функции:

  1. Установка Wi-Fi соединения

  2. Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT

  3. Отправка рандомных значений по температуре («base/state/temperature») и влажности («base/state/humidity») каждые 5 секунд (PUB_DELAY)

  4. Получение сообщений о переключении света («base/relay/led1»)

Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка <ric-mqtt-client-id>. 

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

STM32 (STM32F103C8T6)

Данная отладочная плата известна также под названием проект “Blue pill”. Опенсорсное решение на базе ARM процессора. Плата призвана заменить собой платформу Arduino Nano и имеет следующие характеристики:

  • Архитектура Микроконтроллера ARM Cotrex M3
  • Разрядность 32 Бит
  • Максимальная частота 72 Мгц
  • Объем памяти программ (FLASH): 64 / 128 кБайт
  • Объем памяти данных (RAM): 20 кБайт
  • Выводы: 37
  • UART: 3
  • SPI: 2
  • I2C: 2
  • CAN: 1
  • USB: 1
  • АЦП: 2 АЦП, 10 каналов, время преобразования 1 мкс
  • Напряжение питания микроконтроллера 2 … 3,6 В
  • Напряжение питания платы 5 В
  • Ток потребления до 50 мА

По сравнению с основным конкурентом — Arduino Nano, характеристики более чем впечатляющие. Да и зона применения этого микроконтроллера гораздо шире. Однако без нюансов не обходится. Стоит учитывать, что напряжение питания у микроконтроллера на этой плате составляет в среднем 3,3 вольта, соответственно и логика работы микроконтроллера трехвольтовая. У Arduino Nano напряжение питания 5 Вольт и логика соответствующая.

Однако, не все так печально. Разработчики предусмотрели такой вариант и ряд выходов платы сделали толерантными к 5ти вольтовой логике. Данная информация представлена на изображении ниже:

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

На китайских торговых площадках мне встречались преобразователи на 4 и 8 каналов, стоят копейки, но позволяют избавиться от головной боли :). Вот ссылка на 4х канальный преобразователь:

Устройства на базе STM32 в последние годы все больше и больше набирают популярность. На них строят как примитивные устройства, так и квадрокоптеры. А с выходом marlin 2.0 количество 3Д принтеров на подобной платформе значительно увеличится.

Свои модули STM32  (STM32F103C8T6) я заказывал вот тут:

Ну а теперь поговорим о модулях на микроконтроллерах с WIFI.

Так или иначе рано или поздно любому радиолюбителю или инженеру становится скучно и не интересно разрабатывать автономные устройства, либо обстоятельства вынуждают разрабатывать устройства взаимодействующие друг с другом или через интернет. У Адруино есть шилды, которые позволяют подружить микроконтроллер с сетью, но прогресс не стоит на месте и был разработан новый микроконтроллер уже имеющий у себя на борту интерфейс wifi. Представляю Вашему вниманию микроконтроллер ESP8266.

Основные характеристики ESP8266 следующие:

  • Тактовая частота 80 МГц с возможностью разгона до 160 МГц без гарантии стабильности работы
  • Платформа 32 Бит
  • Поддержка Wifi стандартов b/g/n
  • Количество портов GPIO 14, из них доступно 11
  • Количество аналоговых входов 1
  • АЦП 10 Бит
  • Питания от 2,6 до 3,6 В
  • Потребляемая мощность до 215 мА в режиме передачи, 100 мА в режиме приема, 70 мА в режиме ожидания.
  • Поддерживаются три режима пониженного потребления, все без сохранения соединения с точкой доступа: Modem sleep (15 мА), Light sleep (0.4 мА), Deep sleep (15 мкА)

Имеются следующие интерфейсы:

  • UART
  • SPI
  • I2C

Вот основные особенности данного микроконтроллера. Как видим, есть свои достоинства и недостатки. К достоинствам можно отнести:

  • Производительная платформа
  • Наличие Wifi
  • Наличие поддержки самых востребованных интерфейсов
  • Наличие режимов низкого энергопотребления
  • Совместимость со средой Arduino IDE

К недостаткам можно отнести следующее:

  • Мало количество портов GPIO
  • Только один аналоговый вход
  • Высокое энергопотребление в режиме передачи

Однако, недостатки не такие уж и критичные и для ряда проектов просто несущественные.

За счет своей функциональности микроконтроллер ESP8266 приобрел широкую популярность в среде разработчиков устройств и модулей для умного дома и интернета вещей. О чем свидетельствует популярность модулей Sonoff, обзоры которых я делал ранее. (Обзоры модулей Sonoff). Также данные микроконтроллеры используются во всяких устройствах с Wifi на борту, таких как кондиционеры, роботы-пылесосы и т.д.

Cloud Builder¶

  • one for NodeMCU with floating support
  • one for NodeMCU without floating support i.e. an integer-only binary

We recommend using the floating point build, even though the integer variant uses less RAM for storing variables, as there is little runtime difference between the two variants. Furthermore, the floating point variant handles non-integer values properly and this greatly simplifies numeric calculations.

For everything else the cloud builder GUI is self-explanatory. Hence, no need for further explanations here.


  1. Expand the «LFS options» panel
  2. Select an LFS size, 64KB is likely going to be large enough
  3. Select other options and build

Note that this service is not maintained by the NodeMCU team. It’s run by a NodeMCU team member as an individual, though.

Uploading the Sketch

Uploading the Sketch to the ESP-12E

If you’re using an ESP-12E NodeMCU Kit, uploading the sketch is very simple, since it has built-in programmer. Plug your board to your computer. Make sure you have the right board selected:

You also need to select the Port:

Then, copy the code provided:

Click the “Upload” button in the Arduino IDE and wait a few seconds until you see the message “Done uploading.” in the bottom left corner.

Uploading the Sketch to the ESP-01

Uploading code to the ESP-01 requires establishing a serial communication between your ESP8266 and a FTDI Programmer as shown in the schematic diagram below.

The following table shows the connections you need to make between the ESP8266 and the FTDI programmer.

ESP8266 FTDI programmer
CH_PD 3.3V
VCC 3.3V

If you have a brand new FTDI Programmer and you need to install your FTDI drivers on Windows PC, visit this website for the official drivers: http://www.ftdichip.com/Drivers/VCP.htm.

Then, you just need to connect the FTDI programmer to your computer, and upload the sketch to your ESP8266 board. You should see the “Done Uploading” message after a few seconds.

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

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

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

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

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

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

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

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