Ну вот, наконец-то пришла пора нам вернуться к контроллеру с WiFi-модулем ESP8266.
До сих пор мы его изучали, пользуясь ПО, установленном в нём при покупке, а также прошивали готовое ПО.
А теперь мы попробуем прошивку для него написать самостоятельно.
Это можно сделать несколькими способами. Можно воспользоваться Arduino IDE, но только мне это что-то не понравилось из-за отсутствия гибкости написания кода и по нескольким другим причинам. Также можно воспользоваться SDK, который предоставляет нам производитель. Но воспользоваться им тоже можно по-разному.
Само собой, нам потребуется кросс-компилятор, мы же ведь пишем и собираем ПО не на той машине, на которой оно будет работать. Кросс-компилятор нам, к сожалению, производитель не предоставляет, но найти его не сложно, так как существует много сборок в сети, большинство которых работают в ОС Linux, также есть несколько сборок и для Windows. Одной из таких сборок мы и воспользуемся.
Скачать её можно здесь. Также я добавлю на всякий случай ссылочку внизу страницы, чтобы не затерялась.
NodeMCU V3 ESP8266 — обзор, подключение и прошивка в Arduino IDE
Также нам потребуется утилита esptool. Где её взять и как пользоваться, мы знаем. Она представляет из себя файл, интерпретируемый средой Python. Если у кого-то нет желания устанавливать Python, я дам ссылку на комплект утилит внизу страницы. В принципе, условимся на том, что его нет ни у кого, и данной утилитой, скомпилированной для Windows, мы и будем пользоваться.
Собирать проект мы будем в среде программирования Eclipse, с которой мы уже давно знакомы из уроков по языку C. Также для автоматизации процесса сборки прошивки, а также процесса загрузки её в FLASH-память контроллера, мы собственноручно напишем сценарий Makefile. А проект, как всегда, мы напишем простейший, который будет мигать светодиодом на плате.
Плату мы будем использовать другую — NodeMCU, в которой распаяна микросхема-конвертер USB-TTL, также управление перезагрузкой модуля и подготовкой его к прошиванию тоже настроено через интерфейс UART с помощью CTS и RTS.
Вот так выглядит модуль

Микросхема-конвертер может попасться разная. Поэтому драйвер нужен будет соответствующий. Ну, думаю, с этим проблем не будет. У меня лично CH340, пока проблем не заметил.
К плюсам данной сборки можно отнести помимо её удобного управления через USART размер FLASH-памяти 4 мегабайта, а также вывод огромного количества ножек наружу.
Если вы ещё не успели приобрести такой модуль, то можно по-прежнему пользоваться ESP-01, но лучше всё-таки заиметь именно такой, так как он намного удобнее и стоит также очень недорого.
Теперь давайте приступим к установке и разворачиванию нашего ПО.
По ссылке, которую я дал выше, скачаем самую последнюю версию тулчейна

Начнём его установку, откроется диалог, в котором снимем галку добавления системного пути, так как мы не будем использовать весь комплект, а только его часть, и скопируем мы потом всё, что нам из него надо, в другой каталог. Также согласимся с лицензией использования
Разработка WEB-интерфейса для ESP8266. Часть 1: Подготовка скетча в Arduino IDE

Жмём кнопку Install и тулчейн распакуется по указанному пути.
Теперь создадим какую-нибудь папку где угодно, в которой мы будем хранить весь наш тулчейн и SDK. Я, например, на диске D создал папку с именем ESP8266.
В данную папку скопируем из папки, в которую распаковался только что наш полный тулчейн, папку xtensa-lx106-elf, находящуюся в папке opt.
Также в папке D:ESP8266 создадим папку ESP8266_NONOS_SDK, в которую скопируем содержимое ESP8266 NONOS SDK V2.2.1, скачанного с сайта espressif.
Также в папку D:ESP8266 скопируем папку utils с тремя утилитами из архива с утилитами, ссылка на который есть внизу страницы.
Вот, в принципе, и весь тулчейн.
Надеюсь, что все смотрят мои уроки по языку C и у всех Eclipse и MinGW уже установлен, поэтому заострять на этом внимание не будем. А если это не так, то есть в данном курсе уроки по установке и того и другого.
Запустим IDE Eclipse и начнём создание нового проекта, для чего пройдём по меню File -> New -> Project

В открывшемся диалоге выберем C/C++ -> C Project и жмём Next

В следующем открывшемся диалоге выбираем Executable -> Empty Project -> Cross GCC, дадим имя нашему проекту и снова жмём Next

Затем в следующем разделе галку оставляем только на Release и жмём Finish

В дереве проектов у нас создалась пустая папка с именем проекта. Настроим некоторые свойства нашего проекта, вызвав соответствующее контекстное меню.
В свойствах в пункте C/C++ Build/Tool Chain Editor открывшегося диалога изменим текущий сборщик

В пункте C/C++ Build снимем 2 галки и напишем команду для сборки проекта в соответствующее поле редактирования, а текст другого поля отредактируем, убрав оттуда папку Debug, и нажмём кнопку Apply and Close

Остальные настройки мы добавим позже.
Как создавать папки внутри дерева проекта, а также как добавлять туда новые файлы с исходным кодом и заголовочные файлы, мы знаем из этого урока, поэтому повторять это смысла нет.
Создадим новые папки с именами inc. src и build в дереве с проектом

Создадим в папке src файл main.c и добавим в него пока следующее содержимое
Источник: narodstream.ru
Программирование ESP8266 на MicroPython: подключение датчика DHT22
Модули ESP8266 находят широкое применение в современном мире благодаря своим функциональным возможностям (в основном, возможности использования технологии Wi-Fi) и относительно невысокой ценой. Наиболее популярным способом программирования данных модулей является среда Arduino IDE, а написание программы в данном случае осуществляется на языке, похожем на C++. Синтаксис данного языка достаточно сложен и его освоение для начинающих радиолюбителей может представлять достаточно сложную задачу. В данном случае гораздо более дружественным к «новичкам» является язык программирования MicroPython, который отличается использованием сравнительно простых конструкций и получает все большее распространение в настоящее время для программирования микроконтроллеров.

В данной статье мы рассмотрим установку на модуль ESP8266 (NodeMCU) необходимого программного обеспечения для его программирования на языке MicroPython и напишем небольшую программу на данном языке, позволяющую модулю ESP8266 считывать данные с датчика температуры и влажности DHT22.
Зачем использовать MicroPython для программирования ESP8266
MicroPython – это «урезанная» версия языка python, спроектированная для работы в микроконтроллерах и встраиваемых системах (embedded systems). Синтаксис MicroPython во многом похож на python, поэтому если вы знакомы с python, то вам не составит большого труда освоить MicroPython.
MicroPython был разработан в Великобритании (UK), командой под руководством Damion jones, и первоначально они размещали свой проект на Kickstarter, чтобы собрать необходимые средства на его разработку. После этого они разработали прошивку, которую можно было загружать в определенные платы разработки для последующего написания на них программ для MicroPython. В настоящее время эта прошивка адаптирована и для модулей ESP8266.

Язык Python сейчас является одним из самых популярных языков программирования для начинающих специалистов благодаря простоте своего освоения. Поэтому с появлением MicroPython процесс написания программ для поддерживаемых им микроконтроллеров также значительно упростился. Если вы ранее никогда не писали программы для микроконтроллеров, то начало этого процесса на MicroPython будет для вас хорошим вариантом.
MicroPython использует урезанные версии стандартных библиотек Python, поэтому обычные библиотеки Python для него не подходят. Но MicroPython имеет свои простые в использовании библиотеки, которые подходят для работы с большинством периферийных устройств и датчиков, которые можно подключать к микроконтроллерам.
Главная цель, которую ставили перед собой создатели языка MicroPython – это сделать процесс программирования микроконтроллеров настолько простым, насколько это возможно. Импортируемые библиотеки MicroPython делают написание кода программы исключительно простым и понятным. К примеру, код программы на MicroPython для мигания встроенным светодиодом модуля будет выглядеть следующим образом.
Источник: microkontroller.ru
Обучаемся MicroPython на ESP32/ESP8266

Программирование
На чтение 7 мин Просмотров 371 Опубликовано 25.02.2023
Введение
MicroPython — это язык программирования высокого уровня, предназначенный для работы на микроконтроллерах, таких как платы ESP32 и ESP8266. Это урезанная версия популярного языка программирования Python, оптимизированная для встраиваемых систем и позволяющая разработчикам писать код, взаимодействующий с аппаратной частью микроконтроллера. С помощью MicroPython можно легко писать код, управляющий датчиками, двигателями и другими аппаратными компонентами, что делает его ценным инструментом для приложений Интернета вещей (IoT).
Платы ESP32 и ESP8266 популярны среди любителей и разработчиков благодаря своей низкой стоимости, компактным размерам и мощным возможностям. Плата ESP32 — это двухъядерный микроконтроллер, поддерживающий Wi-Fi и Bluetooth, а ESP8266 — одноядерный микроконтроллер, поддерживающий Wi-Fi. Обе платы можно программировать с помощью MicroPython, что позволяет с легкостью разрабатывать сложные IoT-приложения.
Настройка среды
Прежде чем начать программирование с помощью MicroPython на плате ESP32/ESP8266, необходимо настроить среду разработки. Это включает в себя установку микропрограммы MicroPython на плату, настройку текстового редактора и установление соединения между платой и компьютером.
Установка микропрограммы MicroPython на плату — это первый шаг. Вы можете загрузить прошивку с сайта MicroPython, а затем с помощью такого инструмента, как esptool, прошить ее на плату. После установки прошивки можно подключить плату к компьютеру с помощью USB-кабеля.

Далее вам понадобится текстовый редактор для написания и редактирования кода. Существует множество текстовых редакторов, таких как Thonny, Mu или Visual Studio Code. Вы можете выбрать любой текстовый редактор, с которым вам удобно работать и который поддерживает подсветку синтаксиса MicroPython.
После установки текстового редактора вам нужно будет установить соединение между платой и компьютером. Один из способов сделать это — использовать последовательное соединение через терминальную программу, такую как PuTTY или TeraTerm. В качестве альтернативы для взаимодействия с платой можно использовать инструмент, специфичный для MicroPython, например, ampy или rshell.
После настройки среды вы можете начать писать код на MicroPython на вашей плате ESP32/ESP8266. В следующем разделе мы рассмотрим основы программирования на MicroPython, включая переменные, типы данных, операторы, условные операторы, циклы, функции и модули.
Основные концепции программирования на MicroPython
В этом разделе мы рассмотрим основные концепции программирования, которые необходимо знать для начала работы с MicroPython на плате ESP32/ESP8266. Эти понятия включают переменные, типы данных, операторы, условные операторы, циклы, функции и модули.
Переменные используются для хранения данных в памяти, например, чисел или текста. В MicroPython переменную можно создать, присвоив значение имени, например, так: x = 10. В этом случае переменной x присваивается значение 10. MicroPython поддерживает несколько типов данных, включая целые числа, плавающие числа, строки и булевы.
Операторы используются для выполнения операций над переменными, таких как сложение, вычитание, умножение и деление. MicroPython поддерживает все основные арифметические операторы, а также операторы сравнения и логические операторы.
Условные операторы позволяют проверить, является ли определенное условие истинным или ложным, и выполнить различный код в зависимости от результата. Для этого MicroPython поддерживает операторы if, elif и else.

Циклы позволяют повторять блок кода несколько раз. MicroPython поддерживает для этой цели циклы while и for.
Функции — это многократно используемые блоки кода, которые можно вызывать из разных частей программы. В MicroPython функцию можно определить с помощью ключевого слова def, например, так: def my_function():.
Модули — это коллекции функций и переменных, которые можно использовать в вашей программе. MicroPython поставляется со стандартной библиотекой модулей, которые обеспечивают дополнительную функциональность, например, модуль math для математических операций.
Поняв эти основные концепции программирования, вы сможете начать писать свой собственный код на MicroPython и управлять аппаратным обеспечением вашей платы ESP32/ESP8266. В следующем разделе мы рассмотрим, как взаимодействовать с платой с помощью REPL и как выполнять код на плате.
Взаимодействие с платой
Одним из преимуществ использования MicroPython на плате ESP32/ESP8266 является возможность взаимодействия с платой непосредственно через REPL (Read-Evaluate-Print Loop). REPL — это интерфейс командной строки, который позволяет вводить и выполнять команды MicroPython и просматривать выходные данные непосредственно на плате.
Чтобы получить доступ к REPL, необходимо установить последовательное соединение между компьютером и платой. Это можно сделать с помощью терминальной программы, такой как PuTTY или TeraTerm, или специфического для MicroPython инструмента, такого как ampy или rshell.
После установления соединения вы можете вводить команды MicroPython непосредственно в окно терминала и нажимать Enter для их выполнения. Например, вы можете ввести print(«Hello, world!») и нажать Enter, чтобы вывести на плату сообщение «Hello, world!».

Вы также можете взаимодействовать с аппаратным обеспечением платы непосредственно через REPL. Например, вы можете использовать оператор import для импорта модуля machine, который обеспечивает доступ к контактам GPIO платы. Затем вы можете использовать класс Pin для создания цифрового выходного контакта, как показано ниже: led = machine.Pin(2, machine.Pin.OUT).
Создав вывод, вы можете включать и выключать его с помощью методов on() и off(), например, так: led.on() или led.off().
В дополнение к REPL, вы также можете выполнять код на плате, используя текстовый редактор и загружая код на плату. Это можно сделать с помощью таких инструментов, как ampy или rshell, или с помощью программы передачи файлов, например FileZilla.
Взаимодействуя с платой напрямую через REPL и выполняя код на плате, вы можете управлять аппаратным обеспечением платы ESP32/ESP8266 и разрабатывать сложные IoT-приложения. В следующем разделе мы рассмотрим продвинутые концепции программирования, включая объектно-ориентированное программирование и работу с датчиками и другими аппаратными компонентами.
Расширенные концепции программирования MicroPython
Работа с датчиками и другими аппаратными компонентами является распространенным вариантом использования MicroPython на платах ESP32/ESP8266. Модуль machine предоставляет доступ к контактам GPIO платы, интерфейсам I2C и SPI и другим аппаратным компонентам. Например, вы можете использовать класс I2C для связи с датчиками I2C, как показано ниже: i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4)).
Общение с другими устройствами и сервисами также является распространенным вариантом использования MicroPython на платах ESP32/ESP8266. MicroPython поддерживает множество коммуникационных протоколов, включая HTTP, MQTT и WebSockets. Вы можете использовать такие библиотеки, как urequests или umqtt для отправки HTTP-запросов или MQTT-сообщений, соответственно.
Кроме того, MicroPython поддерживает интеграцию с облачными сервисами, такими как AWS IoT и Google Cloud IoT. Вы можете использовать такие библиотеки, как umqtt.robust или umqtt.simple для подключения к этим службам и отправки или получения сообщений.
Поняв эти продвинутые концепции программирования, вы сможете разрабатывать более сложные приложения с использованием MicroPython на вашей плате ESP32/ESP8266. Имея возможность управлять аппаратными компонентами и взаимодействовать с другими устройствами и сервисами, вы сможете разрабатывать мощные IoT-приложения, способные собирать, анализировать и обрабатывать данные в режиме реального времени.
Заключение
С помощью MicroPython вы можете писать код на языке Python, который можно запускать непосредственно на плате ESP32/ESP8266, что упрощает создание и тестирование проектов. MicroPython также является легким и эффективным, что делает его отличным выбором для сред с ограниченными ресурсами.
Независимо от того, начинающий вы программист или опытный, изучение MicroPython на платах ESP32/ESP8266 — это ценный навык, который можно применить в широком спектре проектов, от простого мониторинга датчиков до сложных робототехнических приложений.