- Что такое MicroPython?
- Почему MicroPython для NodeMCU?
- Что такое ESP8266 (NodeMCU)?
- Используемое оборудование
- Установка прошивки MicroPython для ESP8266
- Связь с NodeMCU с помощью PuTTY
- Загрузка светодиодного мигающего кода на основе Python с помощью Ampy
- MicroPython на ESP8266: определение температуры и влажности с помощью DHT22
Для новичка, который интересуется программированием микроконтроллеров с поддержкой Wi-Fi, таких как ESP8266, понимание среды программирования ESP-IDF или Arduino IDE может быть сложной задачей, загадочный синтаксис языков C и C ++ требует дополнительных знаний в области компьютерных наук, а именно: почему эти языки не всегда удобны для новичков, поэтому в этой статье мы научимся настраивать и программировать ESP8266 с помощью MicroPython, и, наконец, мы получим данные о температуре и влажности от нашего любимого датчика температуры и влажности DHT22. Ранее мы также сделали руководство о том, как программировать ESP32 с помощью Micro Python, вы также можете проверить это, если хотите.
Что такое MicroPython?
Можно сказать, что MicroPython - это нарезанная кубиками версия python, предназначенная для работы с микроконтроллерами и встроенными системами. Синтаксис и процесс кодирования MicroPython похож на Python. Итак, если вы уже знаете python, вы уже знаете, как писать свой код с помощью MicroPython. Если вы поклонник Python, вы можете прочитать эту статью.
MicroPython был разработан в Великобритании командой, возглавляемой Дамионом Джонсом, и они запустили Kickstarter в то время, когда они запустили определенный набор плат для разработки, на которых будет работать прошивка, которая позволяет запускать MicroPython поверх нее, что Прошивка теперь портирована для работы на ESP8266, о чем вы узнаете из этой статьи.
Почему MicroPython для NodeMCU?
Python - один из наиболее широко используемых и простых в изучении языков программирования на сегодняшний день. Итак, с появлением MicroPython программирование аппаратных микроконтроллеров стало очень простым. Если вы никогда раньше не программировали микроконтроллер и хотите начать учиться программированию, MicroPython - хорошее начало.
MicroPython использует урезанную версию стандартных библиотек Python, поэтому все стандартные библиотеки недоступны. Но MicroPython включает в себя простые и удобные модули для взаимодействия с оборудованием, что означает, что с помощью MicroPython чтение и запись в регистр GPIO стало намного проще.
Конечная цель MicroPython - сделать программирование микроконтроллеров настолько простым, насколько это возможно, чтобы им мог пользоваться кто угодно. С MicroPython импорт библиотек и написание кода становится проще, код, показанный ниже, представляет собой простой пример, в котором мигает встроенный светодиод на плате NodeMCU, мы подробно обсудим код после статьи.
from machine import Pin from time import sleep LED = Pin (2, Pin.OUT) while True: LED.value (not LED.value ()) sleep (0.5) из спящего режима.
Что такое ESP8266 (NodeMCU)?
ESP8266 - это недорогой модуль Wi-Fi, разработанный для приложений, связанных с Интернетом вещей (IoT).
Он поставляется с универсальными входными и выходными контактами (GPIO), а также поддерживает множество широко используемых протоколов, таких как SPI, I2C, UART и другие. Но самая крутая особенность этого микроконтроллера - это то, что он имеет встроенный Wi-Fi. С его помощью мы можем очень легко подключиться к любому Wi-Fi 2,4 ГГц.
Теперь основы ушли в сторону, и мы можем перейти к практической части, где мы покажем вам необходимое оборудование и процесс установки MicroPython на ESP8266 IC.
Используемое оборудование
Список использованных материалов
- 1 х макет
- 1 х ESP8266 (NodeMCU)
- 1 x DHT22 (датчик температуры и влажности)
- 1 х 3 мм светодиод (светоизлучающий диод)
- 1 х 1 кОм резистор
- 5 х перемычка
Установка прошивки MicroPython для ESP8266
В этой статье есть два способа установить прошивку MicroPython на ESP8266. Мы поговорим о них обоих, но сначала нам нужно его скачать.
Скачивание прошивки MicroPython для ESP8266:
Перед тем, как подключить плату NodeMCU (ESP8266) к нашему ПК, нам необходимо загрузить последнюю версию MicroPython, после чего мы сможем установить прошивку на NodeMCU, вы можете загрузить ее с официальной страницы загрузки Micropython.
Установка прошивки MicroPython на ESP8266:
Прежде чем мы сможем установить прошивку на ESP8266, нам нужно убедиться, что у нас есть подходящий диск для преобразователя USB в последовательный порт, большая часть платы NodeMCU использует IC преобразователя USB в UART CP2102, поэтому нам необходимо загрузить и установить Драйвер для конвертера USB в UART CP2102. После загрузки и установки диска нам необходимо загрузить esptool, инструмент на основе Python, предназначенный для чтения и записи прошивки на ESP8266.
Самый простой способ получить Python - через Microsoft Store, оттуда вам нужно загрузить и установить копию Python. После установки Python мы можем использовать команду pip3 install esptool для установки esptool. Процесс будет выглядеть примерно так, как на изображении ниже.
После установки проверьте, получаете ли вы доступ к esptool из командного терминала.
Для этого просто запустите команду esptool.py version, если вы получите окно, подобное изображению ниже, вы успешно установили esptool на свой ПК с Windows.
И если у вас возникли проблемы с доступом к esptool из командного окна, попробуйте добавить полный путь установки в переменную среды Windows.
Поиск ПОРТА, выделенного для платы NodeMCU:
Теперь нам нужно узнать выделенный порт для платы NodeMCU, для этого просто войдите в окно диспетчера устройств и найдите параметр под названием Порты, если вы развернете, вы можете узнать порт, связанный с платой NodeMCU. Для нас это похоже на изображение, показанное ниже.
Стирание флэш-памяти ESP8266:
Теперь, когда мы определились с ассоциированным COM-портом, мы можем подготовить модуль NodeMCU, очистив его флеш-память. Для этого используется следующая команда esptool.py --port COM6 erase_flash . Процесс будет выглядеть примерно так, как на изображении ниже.
Установка прошивки:
Выполнение следующей команды установит двоичный файл MicroPython на плату NodeMCU, после установки этот двоичный файл позволит нам загружать наши программы на Python и взаимодействовать с циклом Read Evaluate и Print .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = обнаруживать 0 esp8266-20200911-v1.13.bin
Процесс будет похож на изображение ниже,
Обратите внимание, что во время установки двоичный файл находился на моем рабочем столе, поэтому у меня есть компакт-диск с рабочим столом и я запускаю команду.
Теперь, когда все готово, пришло время связаться с платой и мигать светодиодами.
Связь с NodeMCU с помощью PuTTY
Теперь давайте запустим нашу первую программу Hello World, используя PuTTY, PuTTY, для этого нам нужно установить тип соединения как Serial, затем мы установим линию Serial (в нашем случае это COM6) и, наконец, мы установим скорость на 115200 бод..
Если все сделано правильно, появится окно, подобное приведенному ниже изображению, и мы можем легко записать в него наш код, обычно оно работает как терминал iPython. Кроме того, мы запустили нашу первую программу hello world, состоящую всего из двух простых строк, и как только мы разместили наш оператор печати, мы получили ответ.
Загрузка светодиодного мигающего кода на основе Python с помощью Ampy
Доступ к MicroPython с помощью терминала PuTTY - хороший способ связи с модулем ESP, но еще один простой способ - загрузить код с помощью инструмента Adafruit Ampy, чтобы установить ampy, мы можем просто запустить простой pip3 install adafruit- ampy, и она установит ampy на наш компьютер. Процесс будет выглядеть примерно так, как на изображении ниже.
Теперь, когда у вас есть это, нам все еще нужна наша информация о последовательном порту, к которому мы подключены. В нашем случае это COM6. Теперь нам просто нужно написать наш код LED Blink с помощью MicroPython, для этого мы использовали руководство, представленное на официальном веб-сайте micro python.
С помощью гида создается следующий код.
from machine import Pin from time import sleep LED = Pin (2, Pin.OUT) while True: LED.value (not LED.value ()) sleep (0.5) из спящего режима.
Код очень простой. Сначала мы импортируем библиотеку контактов с компьютера. Класс булавки. Затем нам нужно импортировать библиотеку времени, которая используется для создания функции задержки. Затем мы устанавливаем Pin2 (который является встроенным светодиодом, подключенным к модулю ESP12E) как выход. Затем мы настраиваем цикл while, в котором мы включаем и выключаем светодиод с задержкой 500 мс.
Вот как вы загружаете код в NodeMCU. Для этого вам нужно запустить следующую команду ampy , ampy --port COM6 поставить main.py
Если программа исправлена, вы увидите мигающий светодиод, как показано ниже.
Примечание. При загрузке кода я установил текущее расположение приглашения на рабочий стол, поэтому мне не нужно было указывать полный путь к файлу main.py, если это не так, поскольку вам нужно указать полный путь к вашему основному файлу..py файл.
Затем мы переходим к получению данных о температуре и влажности от датчика DHT22.
MicroPython на ESP8266: определение температуры и влажности с помощью DHT22
Схема взаимодействия DHT22 с NodeMCU:
Полную принципиальную схему для этого проекта можно найти ниже. Я использовал фриттинг для создания этой схемы.
Как видите, схема очень проста и может быть легко построена на макете с помощью перемычек. Вся схема может получать питание через порт micro-USB на NodeMCU. Настройка моего оборудования показана ниже.
Код:
Получить данные о температуре и влажности с датчика DHT22 или DHT11 с помощью MicroPython очень легко, поскольку прошивка MicroPython, которую мы установили ранее, поставляется со встроенной библиотекой DHT.
1. Мы начинаем наш код с импорта библиотеки DHT и библиотеки контактов из машинного класса.
импорт dht из пина импорта машины
2. Затем мы создаем объект DHT, который ссылается на штифт, к которому мы прикрепили наш датчик.
sensor = dht.DHT22 (контакт (14))
3. Наконец, чтобы измерить значение датчика, мы должны использовать следующие три команды.
сенсор. измерение () сенсор. температура () сенсор. влажность ()
Для окончательного кода мы помещаем его в цикл while и печатаем значения, которые отмечают конец нашего кода. Кроме того, датчику DHT22 требуется 2 секунды, прежде чем он сможет прочитать какие-либо данные, поэтому нам нужно добавить задержку в 2 секунды.
из импорта машины Пин из времени импорт сна импорт dht dht22 = dht.DHT22 (вывод (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperature:% 3.2f C'% temp) print ('Humidity:% 3.2f %%'% hum) кроме OSError as e: print ('Не удалось прочитать данные с датчика DHT22.')
Когда мы закончим кодирование, мы можем загрузить код с помощью команды ampy.
ampy --port COM6 поставить main.py
После успешного выполнения кода вы можете отслеживать значения температуры и влажности на любом последовательном мониторе. Я использовал замазку и, как вы можете видеть ниже, мне удалось получить значения температуры и влажности на COM5.
Надеюсь, вам понравилась статья и вы узнали что-то полезное. Если у вас есть какие-либо вопросы, вы можете оставить их в разделе комментариев ниже или использовать наши форумы, чтобы задать другие технические вопросы.