Let it Glow Адвент-Календарь День #1: Начало!
Добро пожаловать в день #1 Let it Glow — 12-дневного мейкерского адвент-календаря, наполненного мигающими штуками и другими компонентами, которыми можно управлять вашими мигающими вещами!
Здесь рады всем — абсолютным новичкам, опытным программистам и всем, кто находится между ними. На протяжении следующих двенадцати дней этот календарь мягко познакомит вас с Raspberry Pi Pico, MicroPython и электроникой через забавные ежедневные проекты!
Не паникуйте — наши ежедневные руководства не требуют никаких предварительных знаний или опыта. Мы будем вести вас за руку и постепенно увеличивать сложность от коробки к коробке, используя то, что вы узнали в предыдущих.
По окончании этого календаря у вас будут навыки, справочные материалы и отличный набор интересных компонентов для создания собственных проектов! Добро пожаловать в ваше новое любимое хобби!
Начало работы
Если вы ещё не сделали этого, достаньте коробку #1 из вашего стильного календаря и извлеките содержимое.
Вы заметите, что эта коробка больше большинства остальных — это позволило вложить всё необходимое для настройки и подготовки к следующим дням.
Содержимое коробки #1
В этой коробке вы найдёте:
1x Raspberry Pi Pico H (с предварительно припаянными контактами)
1x кабель Micro-USB длиной 1 м
2x беспаечные макетные платы на 400 точек
Задание сегодняшнего дня
Сегодня мы настроим Raspberry Pi Pico, познакомимся с платой и запустим несколько световых проектов в качестве разминки перед остальными днями календаря.
Те из вас, кто прошёл наш 12-дневный календарь Codemas в прошлом году, уже будут знакомы с большей частью сегодняшнего контента, но это отличное повторение, если вы давно не занимались со своим Pico.
Что такое Raspberry Pi Pico?
Raspberry Pi Pico — это мощная и гибкая плата микроконтроллера от, как вы уже догадались, Raspberry Pi — тех же людей, которые создали Raspberry Pi 5 и Raspberry Pi Zero.
Однако Raspberry Pi Pico — это другой тип Raspberry Pi — это плата микро*контроллера*, а не микро*компьютера*. Мозгом Pico является чип микроконтроллера RP2040 — маленький чёрный квадрат посередине.
В то время как вы можете использовать Raspberry Pi 5 (с операционной системой) для игр, написания историй и просмотра веб-страниц, Raspberry Pi Pico предназначен для проектов физических вычислений, в которых он может управлять такими компонентами, как светодиоды, кнопки, датчики, двигатели и даже другие микроконтроллеры.
На плате расположено множество контактов, называемых контактами GPIO (**G**eneral **P**urpose **I**nput **O**utput — вход/выход общего назначения), которые позволяют подключать всевозможные компоненты для создания проектов. Ими управляет написанный вами код.
Не беспокойтесь пока слишком о разных контактах и метках — мы будем рассматривать это на протяжении следующих двенадцати дней, возвращаясь к этому снова и снова.
Pico может использовать множество различных языков программирования, однако наиболее популярным является MicroPython — именно его мы и будем использовать.
На плате есть порт Micro-USB, который обеспечивает питание и позволяет ей обмениваться данными с компьютером для программирования. У этой маленькой платы есть ещё много чего, но пока будем придерживаться основ.
Разве нет Pico W с WiFi/Bluetooth?
Да, есть! Pico W выглядит очень похоже, но предлагает возможности подключения для более продвинутых проектов, которым нужен доступ в интернет или связь с другими устройствами.
Мы не включили Pico W в этот календарь, поскольку начинающим не нужны возможности подключения при изучении основ, а также это помогло сделать календарь максимально доступным.
После того как вы завершите двенадцать дней и хорошо разберётесь с основами, вы, возможно, захотите изучить Pico W, чтобы продвигать свои проекты дальше.
Настройка программного обеспечения
Мы собираемся установить программное обеспечение под названием Thonny, которое позволит нам программировать Pico с помощью MicroPython.
MicroPython — это меньшая, более эффективная версия языка программирования Python 3, разработанная для использования с платами микроконтроллеров, такими как Raspberry Pi Pico. Если вы раньше программировали на Python, MicroPython покажется вам очень знакомым — но не беспокойтесь — мы будем проводить вас на каждом шагу.
Thonny — это IDE для Python. IDE — это **И**нтегрированная **С**реда **Р**азработки. IDE помогают нам писать код, предоставляя множество полезных функций для избежания ошибок, улучшения читаемости кода и многих других преимуществ.
Примечание: скриншоты ниже сделаны в октябре 2023 года. Номера версий или внешний вид могут немного отличаться, но общий процесс должен оставаться прежним.
Скачать Thonny
Итак, давайте получим Thonny! Перейдите на https://thonny.org/ и найдите вот такой маленький блок:
Если вы наведёте курсор на используемую вами систему (мы используем Windows в этом примере), вы должны увидеть несколько вариантов с рекомендуемым вариантом для вашей системы.
В нашем случае, используя 64-битную версию Windows, сайт рекомендует 64-битную версию. Ваша система может отличаться, поэтому обычно лучше просто взять версию, которую рекомендует сайт:
Скачайте правильную версию для вашего компьютера, а затем откройте файл для начала установки.
Thonny устанавливается как большинство программ и попросит вас принять лицензионное соглашение и подтвердить место установки. Мы оставили все параметры по умолчанию, и установка заняла менее минуты.
После установки выберите «Завершить» и откройте программу. В Windows 10/11 можно нажать кнопку «Пуск» и просто ввести «Thonny»:
Установка MicroPython на Raspberry Pi Pico
Теперь нам нужно установить прошивку MicroPython на Raspberry Pi Pico. Это даёт Pico базовое программное обеспечение, необходимое для запуска кода MicroPython, который мы будем отправлять ему позже.
**Важное примечание** У нескольких пользователей возникли проблемы при использовании метода, который мы предлагаем ниже (ошибки SSL и другие неприятности).
Попробуйте, но если у вас возникнут трудности с установкой MicroPython на Pico, попробуйте другой метод (Drag-and-Drop MicroPython).
Прежде чем это сделать, установим Pico в первую макетную плату с USB-портом на конце, где стоит цифра 1, затем подключите кабель Micro-USB к Pico.
Ваш Pico должен быть полностью вставлен так, чтобы не было видно ни одной металлической ноги/контакта — это может потребовать покачивания и умеренного, равномерного давления, и это совершенно нормально для таких макетных плат. Чёрный пластик на нижней стороне Pico должен лежать заподлицо с верхней поверхностью макетной платы, вот так:
После того как ваш Pico установлен в первую макетную плату, соедините вторую макетную плату с первой, чтобы создать одну большую макетную плату (мы соединяем две макетные платы таким образом, чтобы у нас было много места для ваших будущих проектов).
Для этого найдите маленькие выступы и пазы вдоль края и просто нажмите их вместе (здесь требуется некоторое усилие). Убедитесь, что нумерация макетных плат идёт в одном направлении.
Теперь найдите маленькую кнопку на верхней части вашего Pico. Это кнопка «BOOTSEL», которая при удержании во время подключения кабеля, позволяет нам установить другую прошивку на Pico:
Удерживайте эту кнопку нажатой, одновременно подключая USB-кабель к USB-порту вашего компьютера. Вы можете увидеть, как он появится как новое устройство на вашем компьютере — пока проигнорируйте это.
В Thonny в правом нижнем углу нажмите на текст (текст может отличаться) и выберите «Configure interpreter» (Настроить интерпретатор):
Теперь перед вами появится диалоговое окно. Выберите те же параметры, что и на скриншоте ниже, затем выберите «Install or update MicroPython» (Установить или обновить MicroPython):
Появится новое диалоговое окно. Выберите целевой том RPI-RP2, вариант Raspberry Pi Pico / Pico H и последнюю доступную версию (на момент написания это была версия 1.21.0):
Выберите «Install» (Установить), и вы увидите небольшую полосу прогресса во время установки. После завершения выберите OK/Close (ОК/Закрыть), и вы должны увидеть «MicroPython (Raspberry Pi Pico)» и номер COM-порта в правом нижнем углу Thonny, вот так:
Теперь вы также должны увидеть панель «Raspberry Pi Pico» в левой части Thonny и информацию в правом нижнем углу в окне **Shell**, как в примере ниже.
Совет: Если вы не видите свой Pico слева или не видите эту панель вообще, попробуйте выбрать «View» (Вид) в верхней панели навигации и выбрать «Files» (Файлы).
Настройка завершена, мы готовы к программированию!
Задание 1: Hello World!
Первое, что мы собираемся сделать — это заставить наш Pico разговаривать с нами. Мы скажем ему распечатать нам сообщение, а именно «Hello, World» — это традиционный первый проект для тех, кто только начинает программировать.
Когда мы говорим Pico «напечатать» слова (называемые строкой текста), они отображаются в окне **Shell** (блоке внизу Thonny).
Функция **print** — это то, что вы будете использовать ОЧЕНЬ ЧАСТО при программировании. Это полезный инструмент, чтобы видеть, что происходит с программой, какая часть программы выполняется, и может помочь при исправлении проблем в проектах (отладке).
В MicroPython есть много других встроенных функций… мы скоро покажем вам ещё больше!
Shell или скрипт?
Есть два способа запустить эту команду — напрямую в окне **shell** или через скрипт. Но что означают эти новые слова, в чём различия и почему вы выбираете то или иное?
Хотя здесь можно сказать многое, давайте оставим всё просто:
Shell — это интерфейс, который позволяет нам выполнять команды по одной. Мы вводим команду, выполняем её, и операционная система делает то, что мы просим.
Скрипт — это файл, содержащий серию команд (код). Скрипт затем можно запустить, что выполнит все команды по порядку. Это не так интерактивно, как оболочка, но вы можете сохранить скрипт как текстовый файл (.py), чтобы вернуться к нему позже.
Большинство проектов и заданий, которые мы будем выполнять в рамках календаря, будут запускаться в скриптах.
Hello Shell!
В окне shell (правое нижнее окно) скопируйте/вставьте или введите следующую строку после >>> и затем нажмите клавишу Enter на клавиатуре.
Совет: все наши примеры кода на протяжении этого календаря будут показывать маленькую кнопку «Копировать» справа при наведении на них. Вы можете нажать её, чтобы скопировать код, а не пытаться выделить его вручную.
print("Hello, world!")
Для подтверждения: вы должны смотреть на эту часть Thonny и ввести строку следующим образом:
Ваше окно shell теперь выполнит эту команду, то есть напечатает строку, и должно выглядеть так:
Почему бы не попробовать изменить текст внутри кавычек на что-то другое, например, своё имя.
Hello Script!
Мы завершили традиционное упражнение Hello World, введя команду в окне shell, но что если мы хотим создать скрипт для этого?
На самом деле это очень просто, когда вы хотите сделать что-то простое, например, напечатать текст — просто введите ту же строку в поле выше в Thonny, а затем запустите её с помощью маленькой зелёной кнопки на панели инструментов.
Вот куда вы вводите код для скрипта (мы будем делать это ОЧЕНЬ ЧАСТО):
И результат/вывод нашего скрипта будет показан в окне Shell ниже:
Задание 2: Простая математика в Shell
Давайте вернёмся в окно Shell на минуту и поиграем с математикой. Числа — распространённая тема в программировании, используемая многими способами: от подсчёта чисел до временных задержек и координат дисплея и многого другого.
Мы можем использовать окно Shell для вычисления чисел так же, как мы делали бы это в нашем коде/скрипте.
Базовая математика
Давайте попробуем простое — введите 1+2 в окне shell и нажмите Enter. Вы увидите 3 как результат ниже введённой команды, как на примере ниже.
То, что вы делаете здесь — это использование оператора (знак +) с двумя значениями (числами):
Другие математические операторы
Как вы можете догадаться, существует ещё много операторов для математики и более продвинутые способы их использования. Давайте попробуем ещё несколько:
Попробуйте использовать:
Оператор вычитания (-). Введите 5-2 в shell и нажмите Enter. Это 5 минус 2, что выдаст результат 3.
Оператор деления (/). Введите 10/5 в shell и нажмите Enter. Это 10 делённое на 5, что выдаст результат 2.
Оператор умножения (*). Введите 5*2 в shell и нажмите Enter. Это 5 умноженное на 2, что выдаст результат 10.
Мы понимаем… это пока не кажется веселым, но мы хотим, чтобы вы освоились с тем, как работают shell, скрипты и другие основы, прежде чем перейти к интересным вещам в следующих 11 коробках. Это закладывает фундамент для части кода, который мы будем писать позже.
Задание 3: Встроенный светодиод
Теперь, когда мы настроены и знаем, как работать в Thonny, давайте немного помигаем!
Хотя в сегодняшней коробке ещё нет мигающих элементов для программирования, в Raspberry Pi Pico есть маленький встроенный светодиод, который мы можем запрограммировать на включение и мигание.
Этот светодиод внутренне подключён к GPIO 25. Этот контакт не является одним из физических контактов, доступных по краям платы.
Мы можем сообщить нашей программе включать и выключать этот контакт в любое время — это отличный первый аппаратный проект и может быть удобным индикатором для ваших собственных проектов позже. Это начало управления вашим кодом реальными физическими объектами!
Входы и выходы
Наши контакты GPIO могут быть настроены как входы или выходы.
Мы используем входы, когда хотим, чтобы что-то отправляло сигналы/напряжение в Pico, например кнопка или датчик
Мы используем выходы, когда хотим, чтобы Pico отправлял сигналы/напряжение из себя в что-то другое, например светодиоды или зуммеры.
Здесь мы будем использовать выход, который будет подавать напряжение на встроенный светодиод для его включения.
Импорты
Бегло взгляните на первую строку примера кода ниже. Когда мы пишем код в Thonny, очень часто нам нужно добавлять импорты в начале.
Импорты подключают код из других мест (называемых «модулями» или «классами»), который нам нужен для работы нашей программы. Обычно это из встроенных модулей.
Для использования контактов GPIO нам всегда нужно импортировать Pin.
Код
Ещё раз взгляните на пример ниже. Итак, что он делает?
Первая строка импортирует «Pin» из модуля «machine» в первой строке, что просто позволяет нам использовать контакты GPIO.
Вторая строка настраивает один из контактов для использования в нашем коде. Она настраивает GPIO25 с именем «onboardLED». Мы используем Pin.OUT в конце, чтобы сообщить MicroPython установить этот контакт как выход.
Третья строка затем устанавливает значение этого контакта равным «1», что означает HIGH (включено). 1 всегда используется для HIGH (включено), а 0 — для LOW (выключено).
from machine import Pin
onboardLED = Pin(25, Pin.OUT)
onboardLED.value(1)
Скопируйте этот код в верхнюю правую панель, затем нажмите зелёную кнопку запуска. Светодиод должен загореться — ура — вы управляете своим первым физическим компонентом!
Теперь попробуйте изменить 1 на 0 — запустите код снова, и светодиод должен выключиться. Вы также можете попробовать добавить строку print внизу, чтобы показать сообщение одновременно, вот так:
from machine import Pin
onboardLED = Pin(25, Pin.OUT)
onboardLED.value(1)
print("Light on")
Обратите внимание, что мы добавили пробелы между строками для улучшения читаемости. Это совершенно нормально делать и очень удобно, когда ваш код начинает разрастаться!
Итоги дня #1
Официально — вы теперь мейкер! Что мы рассмотрели?
Введение в Raspberry Pi Pico
Установка и настройка Thonny
Базовое использование MicroPython
Использование Shell
Использование скриптов
Простая математика в Thonny
Импорты
Управление встроенным светодиодом Pico с помощью кода
Функция Print
Теперь отдохните и хорошо выспитесь. Завтра мы продолжим веселье с днём #2 (не подглядывать).