Программирование ESP8266 на MicroPython: подключение датчика DHT22


Модули ESP8266 находят широкое применение в современном мире благодаря своим функциональным возможностям (в основном, возможности использования технологии Wi-Fi) и относительно невысокой ценой. Наиболее популярным способом программирования данных модулей является среда Arduino IDE, а написание программы в данном случае осуществляется на языке, похожем на C++. Синтаксис данного языка достаточно сложен и его освоение для начинающих радиолюбителей может представлять достаточно сложную задачу. В данном случае гораздо более дружественным к "новичкам" является язык программирования MicroPython, который отличается использованием сравнительно простых конструкций и получает все большее распространение в настоящее время для программирования микроконтроллеров.

Внешний вид проекта программирования ESP8266 на MicroPython

В данной статье мы рассмотрим установку на модуль ESP8266 (NodeMCU) необходимого программного обеспечения для его программирования на языке MicroPython и напишем небольшую программу на данном языке, позволяющую модулю ESP8266 считывать данные с датчика температуры и влажности DHT22.

Зачем использовать MicroPython для программирования ESP8266

MicroPython – это "урезанная" версия языка python, спроектированная для работы в микроконтроллерах и встраиваемых системах (embedded systems). Синтаксис MicroPython во многом похож на python, поэтому если вы знакомы с python, то вам не составит большого труда освоить MicroPython.

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

Логотип языка MicroPython

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

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

Главная цель, которую ставили перед собой создатели языка MicroPython – это сделать процесс программирования микроконтроллеров настолько простым, насколько это возможно. Импортируемые библиотеки MicroPython делают написание кода программы исключительно простым и понятным. К примеру, код программы на MicroPython для мигания встроенным светодиодом модуля будет выглядеть следующим образом.

NodeMCU ESP8266

NodeMCU ESP8266 – это платформа разработки с открытым исходным кодом для сферы интернета вещей, которая представляет собой комбинацию Wi-Fi модуля и компонентов, похожих на те, которые используются в плате Arduino. Ее можно программировать с помощью Arduino IDE через интерфейс micro USB. Wi-Fi модуль в составе NodeMCU ESP8266 соответствует общепринятому стандарту 802.11 и содержит чип 12E, встроенный регулятор напряжения на 3.3V и встроенную антенну. Модуль может работать в качестве точки доступа Wi-Fi. Также плата NodeMCU поддерживает несколько возможных режимов питания: через micro USB порт и двух типов внешних источников питания (5v VCC и 3.3v VCC).

Внешний вид платы NodeMCU ESP8266

Обычно NodeMCU ESP8266 программируется с помощью Arduino IDE, но в данном проекте нам необходимо будет загрузить в нее специальную прошивку, в результате чего вы потом не сможете программировать ее с помощью Arduino IDE. Как потом восстановить оригинальную прошивку ESP8266 вы можете прочитать в этой статье.

Необходимые компоненты

  1. Модуль ESP8266 (NodeMCU) (купить на AliExpress).
  2. Датчик температуры и влажности DHT22 (купить на AliExpress).
  3. Светодиод (купить на AliExpress).
  4. Резистор 1 кОм (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода (5 шт.).

Внешний вид необходимых компонентов для проекта показан на следующем рисунке.

Внешний вид необходимых компонентов для проекта

Установка прошивки MicroPython на ESP8266

Существуют два способа установки прошивки (firmware) MicroPython на модуль ESP8266. В этой статье мы рассмотрим их оба, но сначала эту прошивку нужно скачать.

Перед тем как подключать плату NodeMCU ESP8266 к компьютеру, нам необходимо скачать последнюю версию MicroPython, после чего мы можем установить прошивку на NodeMCU. Скачать эту прошивку можно с официальной страницы загрузок Micropython.

Скачивание прошивки MicroPython на ESP8266

Установка прошивки MicroPython на модуль ESP8266

Перед тем как устанавливать эту прошивку на ESP8266, нам необходимо удостовериться в том, что у нас установлен правильный драйвер для преобразования интерфейса в последовательный порт (USB to Serial Converter). Большинство плат NodeMCU содержит микросхему CP2102, которая выполняет эту функцию. Поэтому нам необходимо скачать и установить драйвер CP2102 USB to UART converter. Далее нам необходимо скачать программу esptool, которая позволяет загружать прошивку в ESP8266. Процесс ее установки показан на рисунке ниже.

Самый простой способ скачать Python – это из магазина Microsoft Store, с которого можно скачать и установить копию Python. Когда Python будет установлен, мы можем использовать команду pip3 install esptool чтобы установить программу esptool. Этот процесс показан на следующем рисунке.

Установка программы esptool

После установки esptool проверьте имеете ли вы к ней доступ из командной строки. Для этого достаточно в командной строке выполнить команду esptool.py, если после этого вы увидите картину примерно как на следующем рисунке, значит, вы успешно установили esptool на компьютер с операционной системой Windows.

Проверка корректности установки программы esptool

Если у вас наблюдаются проблемы с доступом к esptool из окна с командной строкой, то попробуйте добавить в команду полный путь до места, куда она установлена.

Определение COM порта, выделенного плате NodeMCU

Для определения COM порта, выделенного плате NodeMCU, откройте диспетчер устройств Windows, а в нем пункт с портами (Ports) – в нем вы должны увидеть порт, ассоциированный с платой NodeMCU.

Определение COM порта, выделенного плате NodeMCU

Очистка Flash памяти модуля ESP8266

После определения COM порта мы должны подготовить NodeMCU ESP8266 в загрузке в него новой прошивки, для этого необходимо очистить его память. Для этого можно использовать команду: esptool.py --port COM6 erase_flash. После этого вы увидите процесс, показанный на следующем рисунке.

Процесс очистки Flash памяти модуля ESP8266

Установка прошивки

Выполните представленную ниже команду для установки MicroPython в вашу плату NodeMCU. После этого вы получите возможность работать с MicroPython.

Процесс установки MicroPython в NodeMCU будет выглядеть следующим образом.

Процесс установки MicroPython в NodeMCU

На представленном рисунке показан пример установки MicroPython с рабочего стола (desktop), если у вас бинарный файл (binary) MicroPython находится в другом месте, то смените соответствующим образом каталог в командной строке с помощью команды cd.

После установки MicroPython в NodeMCU можно приступать к написанию программы для нашего проекта.

Соединение с NodeMCU ESP8266 с помощью PuTTY

Начнем мы написание нашей первой программы с выводом на экран сообщения "Hello World" с помощью программы PuTTY. В ней нам необходимо установить тип соединения (connection type) Serial, в качестве линии последовательной передачи данных (Serial line) у нас будет выступать COM6, скорость установим равную 115200.

Настройка PuTTY для соединения с NodeMCU ESP8266

Если все сделано правильно, то на экране вы должны увидеть окно, показанное на рисунке ниже. В этом окне мы можем писать код нашей программы также, как это делается в терминале iPython. Наша программа с выводом на экран сообщения "Hello World" будет состоять всего из двух строк, и на приведенном рисунке вы видите результат ее работы.

Написание простейшей программы в терминале

Загрузка кода программы мигания светодиодом на Python с помощью Ampy

Доступ к языку MicroPython с помощью терминала PuTTY является хорошим способом взаимодействия с модулем ESP, но есть еще один способ загрузки кода программы в модуль – с помощью инструмента Adafruit Ampy. Установить этот инструмент мы можем с помощью команды pip3 install adafruit-ampy, в результате которой программа Ampy установится на ваш компьютер. Процесс ее установки будет выглядеть следующим образом.

Процесс установки программы Adafruit Ampy

Для написания программы нам будет нужна информация о том, к какому порту подключена наша плата NodeMCU ESP8266. В нашем случае это COM6 (у вас это может быть уже другой COM порт). Для написания нашей простейшей программы мигания светодиодом с помощью языка MicroPython мы можем использовать руководство с официального веб-сайта MicroPython. С помощью этого руководства и написан код нашей программы.

Как видите, код программы очень простой. Сначала мы импортируем библиотеку Pin из machine. Далее мы импортируем библиотеку time, которая используется для организации задержек в программе. Далее мы устанавливаем режим работы для контакта Pin2 (к нему подключен встроенный светодиод нашей платы) на вывод данных. Затем в бесконечном цикле while мы включаем и выключаем светодиод с задержкой 500ms.

Теперь, чтобы загрузить код этой программы в NodeMCU, нам необходимо выполнить следующую команду ampy.

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

Тестирование работы проекта

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

Далее рассмотрим считывание данных температуры и влажности с датчика DHT22 с помощью языка MicroPython.

Схема проекта

Схема подключения датчика DHT22 к плате NodeMCU ESP8266 представлена на следующем рисунке.

Схема подключения датчика DHT22 к плате NodeMCU ESP8266

Как видите, схема очень проста и ее легко можно собрать на макетной плате. Запитать схему можно через разъем micro-USB на NodeMCU. Внешний вид собранной на макетной плате конструкции проекта показан на следующем рисунке.

Внешний вид собранной на макетной плате конструкции проекта

Объяснение программы для считывания данных с датчика DHT22 в ESP8266

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Написать программу для считывания данных температуры и влажности с датчиков DHT22 или DHT11 с помощью MicroPython достаточно просто поскольку прошивка MicroPython, которую мы установили ранее, содержит в себе встроенную библиотеку DHT.

Начнем код программы мы с импортирования библиотек DHT и Pin.

Далее мы создадим объект DHT с указанием номера контакта, к которому подключен датчик.

И, наконец, чтобы считывать значения температуры и влажности с датчика, нам необходимо использовать следующие три команды (в нашем случае sensor необходимо потом заменить на dht22):

Далее, в основной части кода программы, в цикле while мы будем считывать значения температуры и влажности с датчика DHT22 и выводить их на экран. Учтите, что датчику DHT22 необходима задержка не менее 2 секунд между считываниями данных.

Когда код программы будет у нас готов, мы можем загрузить его в плату с помощью команды ampy.

После загрузки кода программы вы сможете увидеть выводимые в окно монитора последовательной связи значения температуры и влажности. Мы использовали putty и, как вы можете видеть на рисунке ниже, мы принимали значения температуры и влажности через порт COM5.

Считываемые в нашем проекте значения темпераутры и влажности

Исходный код программы на MicroPython

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
5 076 просмотров

Комментарии

Программирование ESP8266 на MicroPython: подключение датчика DHT22 — 3 комментария

  1. Блэт, давайте еще пару строк банального кода переделаем на 1001 язык проговнирования!!! За... 1001 решение банальных задач и не самым удобным способом, особенно кода есть 100000000 библиотек, фрамоверков и т.п (ЗЛО!!!) Все должно исходить от простого или универсального.
    PS: Стив-Бил

    • Как на С это сделать много инфы, а как это сделать на MicroPython, к сожалению, пока не разбирался

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *