- Що таке 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, ми детально обговоримо код після статті.
від машинного імпорту Pin від часу імпорту сплячого світлодіода = Pin (2, Pin.OUT), а True: LED.value (не LED.value ()) sleep (0.5)
Що таке ESP8266 (NodeMCU)?
ESP8266 - це недорогий модуль Wi-Fi, призначений для програм, пов'язаних з Інтернетом речей (IoT).
Він постачається із вхідними та вихідними штифтами загального призначення (GPIO), а також підтримує різноманітні часто використовувані протоколи, такі як SPI, I2C, UART та багато іншого. Але найкрутішою особливістю цього мікроконтролера є те, що він має вбудований Wi-Fi. За допомогою нього ми можемо дуже легко підключитися до будь-якого Wi-Fi 2,4 ГГц.
Тепер основи не в змозі перейти до практичної частини, де ми покажемо вам необхідне обладнання та процес встановлення MicroPython на IC ESP8266.
Використовуване обладнання
Список використаних матеріалів
- 1 х Макет
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (датчик температури та вологості)
- 1 х 3 мм світлодіод (світлодіод)
- 1 x 1K резистор
- 5 х дроту перемички
Встановлення мікропрограми MicroPython для ESP8266
У цій статті є два способи встановити прошивку MicroPython на ESP8266. Ми поговоримо про них обох, але спочатку нам потрібно його завантажити.
Завантаження мікропрограми MicroPython для ESP8266:
Перш ніж підключити плату NodeMCU (ESP8266) до нашого ПК, нам потрібно завантажити останню версію MicroPython, після чого ми зможемо встановити прошивку на NodeMCU, ви можете завантажити її з офіційної сторінки завантаження Micropython
Встановлення мікропрограми MicroPython на ESP8266:
Перш ніж ми зможемо встановити прошивку на ESP8266, нам потрібно переконатися, що ми маємо правильний диск для перетворювача USB в послідовний, більша частина плати NodeMCU використовує мікросхему перетворювача USB в UART CP2102, тому нам потрібно завантажити та встановити Драйвер для конвертера CP2102 USB в UART. Після завантаження та встановлення накопичувача нам потрібно завантажити esptool - інструмент на основі пітона, створений для читання та запису прошивки на ESP8266.
Найпростіший спосіб отримати Python - це через Microsoft Store, звідти потрібно завантажити та встановити копію Python. Після встановлення Python ми можемо використовувати команду pip3 install esptool для встановлення esptool. Процес буде виглядати приблизно так, як показано на малюнку нижче.
Після встановлення перевірте, чи отримуєте ви доступ до esptool із командного терміналу.
Для цього просто запустіть команду esptool.py версії, якщо з’явиться вікно, як на малюнку нижче, ви успішно встановили esptool на ПК з Windows.
І якщо у вас виникають проблеми з доступом до esptool з командного вікна, спробуйте додати повний шлях встановлення до змінної середовища Windows.
Пошук порту, виділеного для дошки NodeMCU:
Тепер нам потрібно з’ясувати виділений порт для плати NodeMCU, для цього просто зайдіть у вікно диспетчера пристроїв і знайдіть варіант, який називається «Порти», якщо розгорнути, щоб ви могли дізнатися порт, пов’язаний з платою NodeMCU. Для нас це схоже на зображення, показано нижче.
Видалення флеш-пам'яті ESP8266:
Тепер ми з’ясували асоційований COM-порт, ми можемо підготувати модуль NodeMCU, стерши флеш-пам’ять з нього. Для цього використовується наступна команда esptool.py --port COM6 erase_flash . Процес буде виглядати приблизно так, як на зображенні нижче.
Встановлення прошивки:
Запуск наступної команди встановить бінарний файл MicroPython на плату NodeMCU, після встановлення цього бінарного файлу ми зможемо завантажувати наші програми python та спілкуватися з циклом Read Evaluate and Print .
esptool.py --port COM6 --boud 460800 write_flash --flash_size = виявити 0 esp8266-20200911-v1.13.bin
Процес буде схожий на зображення нижче,
Зверніть увагу, що на момент встановлення двійковий файл був на моєму робочому столі, тому я маю компакт-диск на робочий стіл і запускаю команду.
Тепер це зроблено, настав час спілкуватися з платою та блимати деякими світлодіодами.
Спілкування з NodeMCU за допомогою PuTTY
Тепер давайте розпочнемо нашу першу програму Hello World, використовуючи PuTTY, PuTTY, для цього нам потрібно встановити тип з'єднання як Serial, далі ми встановимо Serial line (у нашому випадку це COM6), і, нарешті, ми встановимо швидкість 115200 бод.
Якщо все зроблено правильно, з’явиться вікно, подібне до зображення нижче, і ми можемо легко записати в нього наш код, як правило, це працює як термінал iPython. Крім того, ми запустили нашу першу програму hello world, яка складається лише з двох простих рядків, і після того, як ми розмістили заяву про друк, отримали свою відповідь.
Завантаження коду блимання світлодіодів на основі Python за допомогою Ampy
Доступ до MicroPython за допомогою терміналу PuTTY - це хороший спосіб спілкування з модулем ESP, але ще одним простим способом є завантаження коду за допомогою інструменту Adafruit Ampy, для встановлення ampy ми можемо просто запустити просту установку pip3 adafruit- ampy, і вона встановить ampy на наш ПК. Процес буде виглядати приблизно так, як на зображенні нижче.
Тепер, коли у вас це є, нам все ще потрібна наша інформація про послідовний порт, до якого ми підключені. У нашому випадку це COM6. Тепер нам просто потрібно написати наш світлодіодний блимаючий код за допомогою MicroPython, для цього ми скористались посібником на офіційному веб-сайті micro python
За допомогою керівництва робиться такий код.
від машинного імпорту Pin від часу імпорту сплячого світлодіода = Pin (2, Pin.OUT), а True: LED.value (не LED.value ()) sleep (0.5)
Код дуже простий. Спочатку ми імпортуємо бібліотеку Pin із машини. Клас Pin. Далі нам потрібно імпортувати бібліотеку часу, яка використовується для створення функції затримки. Далі ми встановлюємо 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 та бібліотеку pin з класу машини.
імпортувати dht з машинного імпорту Pin
2. Далі ми створюємо об'єкт DHT, який посилається на штифт, в який ми прикріпили наш датчик.
датчик = dht.DHT22 (штифт (14))
3. Нарешті, для вимірювання значення датчика ми повинні використати наступні три команди.
sensor.measure () sensor.temperature () sensor.humidity ()
Для остаточного коду ми поміщаємо його в цикл while і друкуємо значення, що позначають кінець нашого коду. Крім того, сенсору DHT22 потрібно 2 секунди, перш ніж він зможе зчитувати будь-які дані, тому нам потрібно додати затримку в 2 секунди.
від машинного імпорту Pin від часу імпорту сплячого імпорту dht dht22 = dht.DHT22 (Pin (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Температура:% 3.2f C'% temp) друк ('Вологість:% 3.2f %%'% гул), за винятком OSError as e: print ('Не вдалося прочитати дані з датчика DHT22.')
Закінчивши кодування, ми можемо завантажити код за допомогою команди ampy.
ampy --port COM6 поставити main.py
Після успішного виконання коду ви можете контролювати значення температури та вологості на будь-якому послідовному моніторі. Я використав шпаклівку, і як ви можете бачити нижче, я зміг отримати значення температури та вологості на COM5.
Сподіваюся, вам сподобалась стаття і ви дізналися щось корисне. Якщо у вас виникли запитання, ви можете залишити їх у розділі коментарів нижче або використати наші форуми, щоб опублікувати інші технічні питання.