ПЕРВЫЙ ПРОЕКТ НА МИКРОКОНТРОЛЛЕРЕ ESP32
Микроконтроллер ESP32
Почему ESP32?
До сих пор еще можно услышать фразу о том, что первый проект на микроконтроллере нужно делать, используя Arduino. Но это далеко не так. В последние годы появились более производительные, компактные и дешевые микроконтроллеры, которые имеют более развитую периферию, большие объемы памяти, а также возможности связи по Wi-Fi и Bluetooth. Одним из таких чипов является ESP32, уже ставший наиболее популярной платформой для устройств интернета вещей и стандартным вариантом для первого знакомства с микроконтроллерами.Плата разработки ESP32 DEVKIT V1
Для работы с микроконтроллером ESP32 удобно воспользоваться платой разработки ESP32 DevKit v1. На плате расположен модуль ESP-WROOM-32 с антенной, 4 МБ флэш-памяти программ, 520 КБ оперативной памяти и двухъядерным процессором. С каждой стороны платы установлены контакты с шагом 2,54 мм, что позволяет легко установить её на макетную плату. Питание ESP32 DevKit может осуществляться через USB-разъем или от отдельного источника. Кроме того, на плате есть светодиод, подключенный ко 2-му выводу GPIO микроконтроллера. То есть, для первого эксперимента нам будет достаточно только подключить плату к компьютеру с помощью USB-кабеля.Язык программирования MicroPython
Почему MicroPython?
Сегодня по многим оценкам самым популярным языком программирования стал Python. В наши дни он используется в очень многих сферах, среди которых web-разработка, машинное обучение, анализ и работа с данными, визуализация, написание скриптов автоматизации и многих других. Python имеет низкий порог входа, прекрасно подходит как в качестве учебного языка, так и для самых серьезных применений.Для микроконтроллеров существует реализация языка программирования Python, которая называется MicroPython. Помимо почти полного соответствия синтаксису Python 3 она имеет возможности операционной системы и интерактивный интерфейс командной строки REPL для немедленного выполнения команд. MicroPython может легко интегрироваться со схемами, кнопками, датчиками, ЖК-дисплеями и различной другой электроникой и предлагает очень широкие возможности как для экспертов в области программирования оборудования, так и для новичков.
Среда программирования Iguana IDE
Одной из наиболее удобных и полнофункциональных сред программирования на MicroPython является Iguana IDE. С помощью этой среды можно запускать программы, останавливать их выполнение, управлять файлами и загружать их на микроконтроллер и все это не только с помощью USB-кабеля, но и по Wi-Fi. Кроме того, Iguana имеет встроенный терминал для удобной отладки программ и работы с REPL, а также загрузчик MicroPython для микроконтроллеров ESP.Iguana IDE бесплатна и ее можно скачать для установки с сайта robostart.ru. Процесс установки очень простой и подробно описан на странице "Как установить Iguana MicroPython IDE?".
Как установить MicroPython на ESP32
Устанавливаем драйвер для вашей платы
Для работы с ESP32 DevKit необходимо установить драйвер для микросхемы моста USB – UART, который позволяет ESP32 вести обмен данными с компьютером через USB. Существуют платы с чипом CP2102, а также с чипом CH9102X. Для того, чтобы определить, какой драйвер вам нужен, обратите внимание на микросхемы, обведенные красным кругом на картинках.Прочитав на микросхеме ее название, вы узнаете, какой драйвер вам нужен.
Установка драйвера не представляет сложностей. Скачать драйвер и прочитать инструкцию по его установке можно на соответствующих страницах:
Скачать драйвер для ESP32 (CP2102)
Скачать драйвер для ESP32 (CH9102X)
Скачиваем файл с прошивкой MicroPython
Скачать файл с MicroPython для ESP32 можно с официальной страницы или по прямой ссылке, находящейся на странице "Скачать MicroPython ESP32".Загружаем прошивку с MicroPython в микроконтроллер
Подключите ESP32 с помощью кабеля USB к компьютеру и запустите Iguana IDE. В верхней части окна рядом с переключателем режимов "Serial — Wi-Fi" должен отобразиться номер COM-порта, выделенный для вашей платы ESP32Номер порта может быть другим, но справа должна быть белая круглая точка. Если ее нет, то проверьте подключение вашего ESP32 к компьютеру с помощью USB-кабеля и выберите в меню "View" пункт "Reload" или нажмите сочетание клавиш Ctrl + R.
Теперь нажмите в верхней части окна кнопку
В появившемся окне в верхней части должно отобразиться:
Оставим всё без изменений и нажмем кнопку справа от панельки с надписью
В появившемся окне выберем скачанный ранее файл с MicroPithon.
В панельке должен появиться путь к файлу с прошивкой, что-то типа:
После этого смело жмем кнопку под этой панелькой.
Часто рекомендуют зажать кнопку "BOOT" при загрузке прошивки в ESP32, но на плате разработки ESP32 DEVKIT V1 и подобных стоит схема, управляющая уровнями на GPIO0 и Reset, поэтому обычно нажимать дополнительно кнопку "BOOT" не обязательно.
Немного ждем, пока не начнется процесс. Когда появится сообщение с отображением процентов загрузки, кнопку "BOOT" можно отпустить (если вы ее нажимали).
Дождемся конца загрузки и появления надписи "Process completed". (Если что-то пошло не так, повторим процесс загрузки снова.)
Закроем крестиком окно загрузки "Burn".
На всякий случай отсоединим USB-кабель от платы ESP32 и через пару секунд снова подсоединим его, сделав таким образом "горячую" перезагрузку микроконтроллера.
В Iguana IDE снова отобразится номер COM-порта, к которому подключен ESP32
Чтобы открыть порт, нажмем рядом кнопку
В терминале в нижней части окна Iguana IDE появится сообщение об открытии порта, приветствие MicroPython и строчка с тремя галочками ">>>" – это приглашение REPL.
REPL в MicroPython
REPL выполняет код в интерактивном режиме. Попробуем набрать в терминале после приглашения ">>>"import machine
Текст не обязательно набирать вручную, можно скопировать и вставить в терминал с помощью контекстного меню (вызывается нажатием правой клавиши мыши) и команды "Past".
Нажмем "Enter". Снова появится приглашение ">>>".
Наберем или скопируем и вставим в терминале вторую команду:
machine.Pin(2, machine.Pin.OUT).value(1)
Нажмем "Enter".
После выполнения этих двух команд на плате загорится светодиод.
Теперь попробуем погасить светодиод. Наберем или скопируем и вставим в терминале:
machine.Pin(2, machine.Pin.OUT).value(0)
Мигаем светодиодом
Пишем программу мигания светодиодом
В окне редактора, которое находится над терминалом, напишем или скопируем в него следующий код:import time, machine
led = machine.Pin(2, machine.Pin.OUT)
while True:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
Показать объяснение к коду
import time, machine
Подключаем модули time и machine.
Модуль time содержит функции для измерения интервалов времени и создания задержек. Нам необходима функция sleep() из этого модуля для создания задержки.
Модуль machine позволяет получить прямой доступ и возможность управления аппаратными элементами системы. Нам необходим класс Pin из этого модуля для управления контактом, к которому подключен светодиод на нашей плате.
led = machine.Pin(2, machine.Pin.OUT)
Создаем объект Pin с именем led с помощью конструктора machine.Pin(id, mode). Объекты Pin используются для управления GPIO-контактами (от англ. «general-purpose input/output», т.е. «интерфейс ввода/вывода общего назначения») и могут управлять выходным напряжением или считывать входное напряжение.В качестве id указываем идентификатор контакта, который однозначно указывает на определенный GPIO pin. На плате ESP32 встроенный светодиод подключен к контакту GPIO под номером 2.
mode – здесь задается режим работы контакта. Доступные значения:
Pin.OUT – контакт будет работать в режиме выхода,
Pin.IN – контакт будет входным.
while True:
Создаем бесконечный цикл "пока" ("while").
Бесконечный цикл while — это цикл, который никогда не заканчивается и повторяется снова и снова. Чтобы создать такой цикл, нужно задать условие, при котором всегда будет возвращаться True (истина), а самый простой способ: вместо условия написать сразу его результат – True.
Синтаксис Питона основан на отступах у строк. В Питоне мы не можем ставить отступы как нам заблагорассудится. С помощью отступов формируются программные блоки, которые в других языках программирования задаются с помощью операторных скобок. Все строки, входящие в блок, должны иметь одинаковый отступ. По стандарту – это четыре пробела. Поэтому все строки, входящие в тело бесконечного цикла, мы будем писать с одинаковыми отступами.
led.value(1)
Задаем высокий уровень напряжения на контакте.
time.sleep(0.5)
Функция sleep(0.5) переводит устройство в режим сна на полсекунды.
led.value(0)
Задаем низкий уровень напряжения на контакте.
time.sleep(0.5)
Функция sleep(0.5) переводит устройство в режим сна на полсекунды.
Загружаем и выполняем
Чтобы загрузить код в микроконтроллер и запустить его выполнение, нажмем над окном редактора кнопкуСветодиод начнет мигать с интервалом в полсекунды. Ура! У вас заработал ваш первый проект на микроконтроллере ESP32.
Редактируем программу
Изменим в нашем коде скорость миганий на полторы секунды, отредактировав аргумент у функций sleep.import time, machine
led = machine.Pin(2, machine.Pin.OUT)
while True:
led.value(1)
time.sleep(1.5)
led.value(0)
time.sleep(1.5)
Снова запустим код на выполнение кнопкой
Мигания станут менее частыми.
Обратите внимание на левую панель со списком файлов на устройстве. Сейчас там должно быть два файла: "boot.py" и "newscript.py". Файл "boot.py" там присутствовал с самого начала. Это самый главный файл для MicroPython. А файл "newscript.py" – это файл с нашим кодом мигания светодиодом, который мы загрузили, когда нажали на кнопку "DOWNLOAD & RUN". Чтобы остановить программу нажмем кнопку
Чтобы запустить программу снова, можно либо опять нажать на кнопку "DOWNLOAD & RUN", либо выделить файл "newscript.py" в списке на панели менеджера файлов и нажать на кнопку над списком, на которой изображен треугольник, смотрящий вправо .
Остановим программу, нажав на соседнюю кнопку , которая дублирует кнопку "STOP".
После этого закроем USB-соединение с помощью кнопки "Close", которая находится рядом с кнопкой "Open". Старайтесь закрывать соединение с микроконтроллером, когда вы хотите отсоединить USB-кабель.
Управление программами и файлами
Автоматический запуск программы при включении питания
Если мы отсоединим USB-кабель от микроконтроллера, а потом подключим его снова, подав таким образом питание, наша программа не запустится. Чтобы программа запускалась автоматически при включении питания, необходимо сделать дополнительные действия.При включении питания MicroPython, который выполняет роль операционной системы на микроконтроллере, запускает последовательно два файла (если они есть). Сначала запускается файл "boot.py", а затем файл "main.py". Чтобы наша программа запускалась автоматически, поместим ее вызов в файл "main.py".
Над редактором кода, рядом с вкладкой с названием "newscript.py" нажмем на "+" (или в меню "File" выберем команду "New"), чтобы создать еще одну вкладку. Она автоматически получит имя "newscript1.py". Дадим новое имя нашему скрипту. Для этого сделаем двойной клик на вкладке с именем "newscript1.py". Вкладка перейдет в режим редактирования. Напишем в ней "main.py" и нажмем "Enter" или кликнем по окну с кодом. Теперь наша вкладка будет называться "main.py". Напишем следующий код:
import newscript
Откроем USB-соединение с помощью кнопки "Open" и нажмем кнопку "DOWNLOAD & RUN". К списку файлов на устройстве добавится файл "main.py".
Закроем USB-соединение с помощью кнопки "Close". Отсоединим USB-кабель от микроконтроллера, а потом подключим его снова, подав питание. Наша программа запустится, так как теперь ее вызов находится в файле "main.py".
Снова откроем USB-соединение кнопкой "Open". В терминале должна будет появиться надпись
Device is busy. Press "STOP" button to stop.
Если этого не произошло, отсоедините USB-кабель. Выберите в меню "View" пункт "Reload" или нажмите сочетание клавиш Ctrl + R. Игуана перезагрузится. Подсоедините USB-кабель. Снова откройте USB-соединение кнопкой "Open".
В некоторых случаях после остановки программы нажатием кнопки "STOP", в терминале может не появиться приглашение REPL в виде трех галочек ">>>". Тогда следует также сделать "Reload" и снова открыть USB-соединение кнопкой "Open".
Когда микроконтроллер занят выполнением программы в бесконечном цикле, подключиться к нему по USB иногда бывает затруднительно. Может появляться сообщение вида
Error open: Opening COM5: File not found
В этом случае следует просто отсоединить кабель от микроконтроллера, сделать "Reload" в Игуане, предварительно, конечно, сохранив свои скрипты с помощью кнопки "SAVE", снова подсоединить кабель и открыть соединение кнопкой "Open".
Если по каким-то причинам не обновился список файлов, можно сделать это принудительно нажав под списком на кнопку . В меню "Device" эта команда называется "Refresh file list".
После экспериментов с автозагрузкой строчку "import newscript" из файла "main.py" лучше удалить, чтобы она не мешала нам для дальнейших опытов с микроконтроллером.
Как загрузить файл из микроконтроллера в редактор кода и обратно?
Функционал по работе с файлами в Игуане распределен в меню "File" и меню "Device". Большая часть команд продублирована кнопками для быстрого и удобного доступа.Чтобы открыть файл, загруженный в микроконтроллер, в редакторе кода, нужно выделить его в панели со списком файлов и нажать над списком кнопку . В меню "Device" эта команда называется "Read file from device". Существует также самый быстрый способ: просто сделайте двойной клик по имени файла в списке. Он откроется в редакторе.
Чтобы загрузить файл из редактора кода в микроконтроллер, не запуская его на выполнение, нужно нажать над списком файлов кнопку . В меню "Device" эта команда называется "Write file to device".
Подробнее о назначении основных элементов интерфейса Игуаны можно прочитать на странице Справка по Iguana MicroPython IDE".
Удачный Вам экспериментов!
Это оригинальная статья myROBOT.ru
ПОПУЛЯРНЫЕ СТАТЬИ |
Драйвер двигателей L293D
Для управления двигателями мини робота необходимо устройство, которое бы преобразовывало управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей.
Как сделать простейшего робота
О том, как сделать робота в домашних условиях, используя лишь микросхему драйвера моторов и пару фотоэлементов. В зависимости от способа соединения моторов, микросхемы и фотоэлементов робот будет двигаться на свет или, наоборот, прятаться в темноту, следовать по линии или бежать за вашей рукой.
Первые проекты на микроконтроллере ESP32
В качестве первых проектов на ESP32 рассмотрим примеры мигания светодиодами и напишем программу "бегущие огни". Это классика при изучении микроконтроллеров.
Как сделать простого робота на микроконтроллере (Часть 1). Управляем электромоторами
Как самому сделать робота, используя драйвер управления двигателями L293D и микроконтроллер ATmega8. Схема робота и примеры простейших программ для управления моторами.
НОВЫЕ СТАТЬИ |
Можно ли сделать BEAM-робота на Raspberry Pi?
Ответ Марка Тилдена с уникальной фотографией одной из новых работ маэстро.
Изучаем Python: TOP-5 лучших сайтов для изучения Питона
Самоучитель, интерактивный учебник, наглядные задачи и примеры программ.
Роботы на одной микросхеме своими руками
Подборками статей myROBOT.ru. Практика создания роботов: схемы и советы по изготовлению. Чтобы сделать роботов, нет необходимости даже писать программы. Все роботы начнут работать сразу же, как только Вы подключите к ним питание.
ПОПУЛЯРНОЕ НА САЙТЕ |
Драйвер программатора USBASP для Windows 7, 8, 10
Универсальный драйвер программатора USBasp v 2.0 USB ISP без необходимости принудительного отключения сертификата драйвера или использования Zadig, достаточно скачать драйвер USBasp и запустить файл InstallDriver.exe.
Учимся программировать.
Среда программирования на ЛОГО
GAME LOGO — бесплатная среда программирования для увлекательного путешествия в мир программирования и информатики. Программирование на русском языке, удобный и красивый интерфейс, продуманный синтаксис.