- Какво е MicroPython?
- Защо MicroPython за NodeMCU?
- Какво е ESP8266 (NodeMCU)?
- Използван хардуер
- Инсталиране на фърмуера на MicroPython за ESP8266
- Комуникация с NodeMCU с PuTTY
- Качване на базиран на Python LED мигащ код с помощта на 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, ще обсъдим кода подробно след статията.
от машинния импорт ПИН от времето за импортиране на заспиване LED = ПИН (2, ПИН.ОТ) докато True: LED.value (не LED.value ()) сън (0.5)
Какво е ESP8266 (NodeMCU)?
ESP8266 е евтин Wi-Fi модул, предназначен за приложения на Internet of Things (IoT).
Той се предлага с входове и изводи за общо предназначение (GPIO) и също така поддържа различни често използвани протоколи като SPI, I2C, UART и др. Но най-страхотната характеристика на този микроконтролер е, че той има вграден Wi-Fi. С него можем да се свържем много лесно с всеки Wi-Fi от 2,4 GHz.
Сега основите са извън начина, по който можем да преминем към практическата част, където ще ви покажем необходимия хардуер и процеса на инсталиране на MicroPython на ESP8266 IC.
Използван хардуер
Списък на използваните материали
- 1 х Макет
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (сензор за температура и влажност)
- 1 x 3 mm LED (светодиод)
- 1 x 1K резистор
- 5 х Jumper Wire
Инсталиране на фърмуера на MicroPython за ESP8266
В тази статия съществуват два начина за инсталиране на фърмуера на MicroPython върху ESP8266. Ще говорим и за двамата, но първо трябва да го изтеглим.
Изтегляне на фърмуера на MicroPython за ESP8266:
Преди да свържем платката NodeMCU (ESP8266) към нашия компютър, трябва да изтеглим последната версия на MicroPython, след което можем да инсталираме фърмуера на NodeMCU, можете да го изтеглите от официалната страница за изтегляне на Micropython
Инсталиране на фърмуера на MicroPython на ESP8266:
Преди да можем да инсталираме фърмуера на ESP8266, трябва да се уверим, че разполагаме с правилното устройство за USB към сериен преобразувател, по-голямата част от платката NodeMCU използва CP2102 USB към UART конвертор IC, поради което трябва да изтеглим и инсталираме драйвер за CP2102 USB към UART конвертор, След като устройството бъде изтеглено и инсталирано, трябва да изтеглим esptool, който е инструмент, базиран на python, създаден за четене и запис на фърмуера на ESP8266.
Най-лесният начин да получите Python е чрез Microsoft Store, оттам трябва да изтеглите и инсталирате копие на Python. След като Python бъде инсталиран, можем да използваме командата pip3 install esptool, за да инсталираме esptool. Процесът ще изглежда като нещо като изображението по-долу.
Веднъж инсталиран, проверете дали имате достъп до esptool от командния терминал.
За целта просто изпълнете командата, esptool.py версия, ако получите прозорец като изображение по-долу, успешно сте инсталирали esptool на вашия компютър с Windows.
И ако имате проблеми с достъпа до esptool от командния прозорец, опитайте да добавите пълния път на инсталация към променливата на средата на Windows.
Намиране на PORT, разпределен за 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
Процесът ще изглежда подобно на изображението по-долу,
Моля, обърнете внимание, че по време на инсталацията двоичният файл беше на моя работен плот, така че имам cd към моя работен плот и стартирам командата.
Сега е готово, време е да комуникираме с платката и да премигнем някои светодиоди.
Комуникация с NodeMCU с PuTTY
Сега нека да стартираме първата си програма Hello World, като използваме PuTTY, PuTTY, за да направим това, така че трябва да зададем типа на връзката като Serial, след това задаваме Serial line (В нашия случай COM6) и накрая задаваме Speed на 115200 бода.
Ако всичко е направено правилно, ще се появи прозорец, подобен на изображението по-долу, и ние можем лесно да напишем кода си в него, той обикновено работи като терминал iPython. Също така, ние стартирахме нашата първа здравна световна програма, която е само два прости реда и след като поставихме изявлението си за печат, получихме отговора си.
Качване на базиран на Python LED мигащ код с помощта на Ampy
Достъпът до MicroPython с помощта на терминала PuTTY е добър начин за комуникация с модула ESP, но друг лесен начин е да качите кода чрез инструмента Adafruit Ampy, за да инсталирате ampy, можем просто да стартираме проста pip3 инсталация adafruit- ampy и ще инсталира ampy на нашия компютър. Процесът ще изглежда нещо като изображението по-долу.
След като имате това, ние все още се нуждаем от нашата информация за серийния порт, към който сме свързани. В нашия случай това е COM6. Сега просто трябва да напишем нашия LED Blink код с MicroPython, за това използвахме ръководството, предоставено на официалния уеб сайт на micro python
С помощта на ръководството се прави следният код.
от машинния импорт ПИН от времето за импортиране на заспиване LED = ПИН (2, ПИН.ОТ) докато True: LED.value (не LED.value ()) сън (0.5)
Кодът е много прост. Първо, импортираме библиотеката Pin от машината. Pin клас. След това трябва да импортираме библиотеката за време, която се използва за извършване на функция за забавяне. След това задаваме Pin2 (който е вграденият светодиод, прикрепен към модула ESP12E) като изход. След това задаваме цикъл за време, където включваме и изключваме светодиода със закъснение 500ms.
Така качвате кода в NodeMCU. За да направите това, трябва да изпълните следната команда ampy , ampy --port COM6 поставете main.py
Ако програмата бъде коригирана, ще видите мигащ светодиод, както е показано по-долу.
Забележка: Докато качвах кода, зададох текущото си местоположение на подкана на моя Desktop, така че не се наложи да посочвам пълен път за файла main.py, ако случаят не е такъв, трябва да посочите пълния път за вашия основен.py файл.
След това преминаваме към получаване на данните за температурата и влажността от сензора DHT22.
MicroPython на ESP8266: Получаване на температура и влажност с DHT22
Схема за свързване на DHT22 с NodeMCU:
Пълната електрическа схема за този проект може да бъде намерена по-долу. Използвал съм фризиране, за да създам тази схема.
Както можете да видите схемата е много проста и може лесно да бъде изградена върху макет с помощта на джъмперни проводници. Пълната схема може да се захранва с помощта на micro-USB порта на NodeMCU. Моята хардуерна настройка е показана по-долу.
Код:
Много е лесно да получите данни за температурата и влажността от сензор DHT22 или DHT11 с помощта на MicroPython, тъй като фърмуерът на MicroPython, който инсталирахме по-рано, се предлага с вградена DHT библиотека.
1. Започваме нашия код, като импортираме DHT библиотеката и pin библиотеката от машинния клас.
импортирайте dht от машинния импорт ПИН
2. След това създаваме DHT обект, който се отнася до щифта, в който сме прикрепили нашия сензор.
сензор = dht.DHT22 (щифт (14))
3. И накрая, за да измерим стойността на сензора, трябва да използваме следните три команди.
sensor.measure () sensor.temperature () сензор.влажност ()
За окончателния код го поставяме в цикъл while и отпечатваме стойностите, които маркират края на нашия код. Също така сензорът DHT22 се нуждае от 2 секунди, преди да може да прочете каквито и да е данни, така че трябва да добавим забавяне от 2 секунди.
от машинно импортиране ПИН от време импорт сън импорт dht dht22 = dht.DHT22 (ПИН (14)) докато е вярно: опитайте: сън (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Температура:% 3.2f C'% temp) печат ('Влажност:% 3.2f %%'% hum) освен OSError as e: print ('Неуспешно четене на данни от сензора DHT22.')
След като приключим с кодирането, можем да качим кода с помощта на командата ampy.
ampy --port COM6 поставете main.py
След успешно изпълнение на кода можете да наблюдавате стойностите на температурата и влажността на всеки сериен монитор. Използвах шпакловка и както можете да видите по-долу, успях да получа стойности за температура и влажност на COM5.
Надявам се, че статията ви е харесала и сте научили нещо полезно. Ако имате някакви въпроси, можете да ги оставите в раздела за коментари по-долу или да използвате нашите форуми, за да публикувате други технически въпроси.