1. Введение в Raspberry Pi Pico W и MicroPython
Введение в Raspberry Pi Pico W и MicroPython
Представьте себе полноценный компьютер, который можно спрятать в спичечном коробке, потребляющий минимум энергии и стоящий дешевле пары чашек кофе. Именно таким устройством является микроконтроллер. В отличие от привычного настольного ПК или смартфона, которые одновременно выполняют сотни задач (открывают браузер, воспроизводят музыку, загружают обновления), микроконтроллер создаётся для идеального выполнения одной конкретной задачи.
В системах умного дома микроконтроллеры играют роль невидимых помощников. Они считывают температуру в комнате, управляют яркостью освещения, открывают автоматические жалюзи или отправляют уведомление на телефон, если датчик зафиксировал протечку воды.
Знакомство с Raspberry Pi Pico W
Плата Raspberry Pi Pico W — это компактный и мощный микроконтроллер, разработанный организацией Raspberry Pi Foundation. Буква «W» в названии означает Wireless (беспроводной) и является ключевым отличием этой модели от базовой версии Pico.
Сердцем платы выступает чип RP2040. Это «мозг» устройства, который принимает решения и управляет всеми подключенными компонентами. Рядом с ним расположен второй важный чип — CYW43439, который наделяет плату способностью подключаться к сетям Wi-Fi. Именно этот модуль позволяет нашему устройству стать частью интернета вещей (IoT) и передавать данные на серверы или получать команды со смартфона.
!Схема платы Raspberry Pi Pico W с ключевыми компонентами
Чтобы лучше понимать возможности платы, взглянем на её основные технические характеристики:
| Характеристика | Значение | Простое объяснение | | :--- | :--- | :--- | | Процессор | Двухъядерный ARM Cortex-M0+ | Два «вычислительных центра», позволяющих плате выполнять задачи параллельно и быстро. | | Тактовая частота | 133 МГц | Скорость работы мозга. Он выполняет 133 миллиона простейших операций в секунду. | | Оперативная память (RAM) | 264 КБ | «Краткосрочная память». Здесь хранятся данные, пока плата включена (например, текущие показания датчика). При выключении питания данные исчезают. | | Флэш-память (Flash) | 2 МБ | «Долгосрочная память». Здесь хранится ваш код и операционная система. Данные остаются даже без питания. | | Беспроводная связь | Wi-Fi (802.11n) | Возможность подключаться к домашнему роутеру и выходить в интернет. |
GPIO: Как плата общается с внешним миром
Сам по себе микроконтроллер бесполезен, если он не может взаимодействовать с окружающей средой. Для этого по краям платы расположены металлические отверстия с зубчатыми краями. Это контакты GPIO (General Purpose Input/Output — ввод/вывод общего назначения).
Если сравнить микроконтроллер с человеческим организмом, то процессор — это мозг, а контакты GPIO — это нервная система.
Контакты могут работать в двух основных режимах:
Всего на плате 40 контактов, из которых 26 можно использовать как GPIO. Важно помнить одно строгое правило электроники: рабочее напряжение Raspberry Pi Pico W составляет 3,3 вольта. Подача на контакты напряжения в 5 вольт (например, от некоторых старых датчиков для Arduino) может мгновенно вывести плату из строя.
MicroPython: Язык общения с платой
Микроконтроллеры не понимают человеческую речь. Им нужны четкие инструкции в виде программного кода. Исторически платы программировались на сложных языках C или C++, которые требуют глубокого понимания архитектуры процессора и ручного управления памятью.
Для новичков был создан MicroPython — это адаптированная и облегченная версия популярного языка программирования Python, специально оптимизированная для работы на микроконтроллерах с ограниченным объемом памяти.
Главное преимущество MicroPython заключается в его читаемости. Код выглядит почти как обычный английский текст. Кроме того, MicroPython является интерпретируемым языком. Это значит, что вам не нужно тратить время на сложную «компиляцию» (перевод кода в машинные нули и единицы) перед каждым запуском. Вы пишете команду, нажимаете кнопку запуска, и плата мгновенно её выполняет.
> MicroPython позволяет сосредоточиться на логике вашего проекта — «что должно произойти», а не на технических сложностях того, «как именно процессор должен это обработать».
Подготовка к работе: Thonny IDE и прошивка
Чтобы писать код и отправлять его на плату, нам понадобится специальная программа на компьютере — IDE (Integrated Development Environment — интегрированная среда разработки). Для MicroPython стандартом де-факто является программа Thonny. Она бесплатна, минималистична и идеально подходит для начинающих.
Прежде чем написать первую строчку кода, плату нужно «оживить» — установить на неё операционную систему MicroPython. Этот процесс называется прошивкой.
Процесс прошивки состоит из нескольких простых шагов:
RPI-RP2..uf2) с официального сайта Raspberry Pi и просто перетащите его на эту «флешку».Как только файл скопируется, плата автоматически перезагрузится. Флешка исчезнет, а внутри микроконтроллера теперь будет работать MicroPython, готовый принимать ваши команды.
Первый проект: Мигание встроенным светодиодом
Традиционно в мире электроники первой программой является мигание светодиодом — это аналог фразы «Hello, World!» в программировании. На плате Raspberry Pi Pico W уже есть крошечный встроенный зеленый светодиод, поэтому нам даже не понадобятся дополнительные провода.
Откройте Thonny, убедитесь, что в правом нижнем углу выбран интерпретатор MicroPython (Raspberry Pi Pico), и введите следующий код в главном окне редактора:
Разберем этот код построчно, чтобы понять логику работы микроконтроллера.
Строки import machine и import time подключают к нашей программе внешние библиотеки. Библиотека machine содержит инструкции для управления физическим «железом» платы (контактами, питанием), а time позволяет работать со временем (создавать паузы).
Команда led = machine.Pin("LED", machine.Pin.OUT) выполняет настройку контакта. Мы обращаемся к встроенному светодиоду (он имеет системное имя "LED") и указываем, что этот контакт должен работать в режиме вывода сигнала (machine.Pin.OUT). Теперь переменная led является нашим пультом управления этим светодиодом.
Конструкция while True: создает бесконечный цикл. Микроконтроллеры созданы для непрерывной работы. Всё, что написано внутри этого цикла (с отступом в 4 пробела), будет повторяться снова и снова, пока плата подключена к питанию.
Внутри цикла происходят два действия:
led.toggle() — переключает состояние светодиода на противоположное. Если он был выключен, он включится. Если был включен — выключится.time.sleep(1) — приказывает микроконтроллеру ничего не делать ровно 1 секунду.Понимание временных интервалов важно для проектирования систем. В нашем коде светодиод меняет состояние каждую секунду. Значит, он горит 1 секунду и не горит 1 секунду. Полный цикл (включение и выключение) занимает 2 секунды.
В физике частота таких повторяющихся событий рассчитывается по формуле:
где — частота в герцах (Гц), а — период (время одного полного цикла) в секундах.
В нашем случае период секунды. Подставив это в формулу, получаем Гц. Это означает, что светодиод совершает половину полного цикла за одну секунду. Если бы мы изменили паузу в коде на time.sleep(0.5), период составил бы 1 секунду, а частота мигания увеличилась бы до 1 Гц.
Нажав кнопку «Run» (зеленый треугольник) в Thonny, вы увидите, как зеленый огонек на плате начнет ритмично мигать. Вы только что успешно запрограммировали свой первый микроконтроллер, сделав первый шаг к созданию собственного умного дома.