- Основы программирования Raspberry Pi на Python.
- Программирование Raspberry Pi Pico с помощью C/C++ SDK
- Краткое введение в Raspberry Pi Pico
- Установка C/C++ SDK для Raspberry Pi Pico на Linux систему
- Raspberry Pi: первое знакомство. Урок 4. Работа с GPIO, мигание светодиодом, Python
- Для урока нам понадобится:
- Программирование Raspberry Pi GPIO на языке Python
- Сборка модели
- Управление светодиодом на Raspberry Pi из консоли
- Программа для мигания светодиодом на Raspberry Pi
- Управление светодиодом с помощью кнопки
- Управление светодиодом с клавиатуры
- Все уроки курса «Raspberry Pi: первое знакомство»
- Где купить Raspberry Pi
Основы программирования Raspberry Pi на Python.
Продолжаем наш курс по Raspberry Pi, продвигаемся от самых основ, и сегодня разберем, как выполнять программы, написанные на Python. Как водится, напишем базовый пример, конечно же, «Hello, World».
Итак, начнем с настройки Raspberry. В операционной системе Raspberry Pi OS пакет Python уже установлен, но если бы он отсутствовал, то команда для установки:
sudo apt-get install python
При этом по умолчанию установлены версии 2 и 3. Чтобы узнать, какая из версий используется, вводим команду:
Если результат будет таким (конкретная версия может отличаться), то значит по умолчанию используется Python 2:
И для того, чтобы это изменить, необходимо отредактировать файл ~/.bashrc. Этот файл находится в домашнем каталоге текущего пользователя и представляет из себя скрипт, который выполняется каждый раз, когда пользователь открывает консоль, подключается по SSH и т. д. Файл используется для настройки окружения пользователя. Используем редактор nano:
После вызова команды файл будет открыт непосредственно в консоли. Обратите внимание на сочетания клавиш для работы с редактором, которые указаны внизу. К примеру, для закрытия редактора используем Ctrl + X:
Прокручиваем файл до самого конца и добавляем строку:
alias python='/usr/bin/python3'
Выходим из редактора и сохраняем файл:
Перезапускаем терминал, перелогиниваемся в случае SSH, либо запускаем скрипт командой:
И теперь уже видим другую картину:
С подготовкой на этом закончили 👍
Для того, чтобы выполнять команды при помощи интерпретатора Python возможны несколько вариантов. К примеру, можно запустить интерпретатор командой:
Символы >>> приглашают нас вводить команды непосредственно в командную строку. Печатаем:
Что получается в итоге? Мы запустили интерпретатор Python и передали ему команду на выполнение, собственно, сразу и увидели результат в виде напечатанной строки «Hello, World!». Кстати для выхода используется сочетание Ctrl + D, либо команда:
Но такой способ, конечно, нас не очень интересует. Гораздо более практичным будет создание файла или файлов с кодом программы, которая уже будет выполняться (однократно или многократно — зависит от целей).
Итак, создадим новый файл. Причем разберем универсальный случай, когда Raspberry Pi используется без дисплея, то есть все действия будем производить через командную строку, подключившись по SSH. При наличии дисплея и элементов управления (клавиатуры, мыши), конечно, также можно использовать исключительно терминал, но кроме того, можно и создавать/редактировать файлы средствами операционной системы.
Действуем. Создаем файл test.py:
По умолчанию файл будет создан в папке /home/pi. После ввода команды мы снова оказывается в редакторе nano, поэтому прямо в консоли изменяем файл. А именно добавляем строку:
Сохраняем изменения файла так же как делали это ранее. И теперь для запуска просто вводим команду:
Результат ожидаемый и аналогичный:
Вот, собственно, на этом и заканчиваем рассмотрение базовых способов использования Python на Raspberry Pi. В ближайших статьях курса рассмотрим работу с периферией платы (GPIO, I2C, SPI и т. д.).
Программирование Raspberry Pi Pico с помощью C/C++ SDK
В 2012 году организация Raspberry Pi Foundation представила миру свой одноплатный компьютер Raspberry Pi, который первоначально предназначался для обучения детей основам компьютерной техники и программирования, но позже для него нашлось и множество других применений. Спустя 9 лет после этого, в 2021 году, свет увидела микроконтроллерная плата Raspberry Pi Pico. По сути, это достаточно бюджетный микроконтроллер, цены на который начинаются от $4. Однако несмотря на низкую цену он содержит в своем составе двухъядерный ARM процессор и цифровые/аналоговые контакты ввода/вывода, способные выполнять еще и ряд специальных функций. Поэтому данный микроконтроллер отлично подходит для применения во встраиваемых системах.
В данной статье мы рассмотрим основы программирования платы Raspberry Pi Pico с помощью C/C++ SDK (Software Development Kit – набор инструментальных средств разработки программного обеспечения). Также на нашем сайте вы можете посмотреть всю серию обучающих статей по Raspberry Pi Pico.
Краткое введение в Raspberry Pi Pico
Сердцем платы Raspberry Pi Pico является двухъядерный ARM процессор на ядре Cortex M0+, который может быть разогнан до частоты 133MHz. Плата содержит 264 Кб ОЗУ (SRAM) и 2 Мб встроенной флеш-памяти, которую можно увеличить до 16 Мб с помощью внешнего модуля памяти, подключаемой через шину Quad-SPI.
Плата Raspberry Pi Pico содержит 26 многофункциональных контактов ввода/вывода (GPIOs), которые работают с цифровыми уровнями напряжения 3.3v, три из этих контактов могут работать в качестве аналоговых входов, то есть выполнять функции АЦП в плате. Плата может получать питание через разъем micro-USB, внешних источников питания или батареек. Также важным достоинством платы является то, что не требуется никакого внешнего программатора для ее программирования поскольку она поддерживает технологию “Drag-and-Drop” и автоматически определяется компьютером при ее подключении по USB (технология mass storage).
Внешний вид платы Raspberry Pi Pico с обозначением элементов на ней показан на следующем рисунке.
Как мы видим из представленного рисунка, плата Raspberry Pi Pico имеет 40 контактов, 26 из которых являются многофункциональными контактами ввода/вывода (GPIOs). Также плата содержит встроенный светодиод, подключенный к контакту GPIO25. Одним из недостатков платы является отсутствие у нее кнопки сброса, но зато у нее есть контакт RUN, который выполняет функцию контакта сброса если мы замыкаем его на землю (Ground).
Назначение контактов (распиновка) платы Raspberry Pi Pico представлено на следующем рисунке.
Установка C/C++ SDK для Raspberry Pi Pico на Linux систему
Для установки C/C++ SDK для программирования платы Raspberry Pi Pico автор данного проекта (ссылка на оригинал приведена в конце статьи) использовал операционную систему Ubuntu 20.04 LTS.
Организация Raspberry Pi Foundation поставляет скрипт установки для операционных систем Linux и Raspberry Pi OS, который автоматически создает и устанавливает все необходимые компоненты для C/C++ SDK и кросс-платформенной IDE Visual Studio Code. Для скачивания скрипта установки (setup script) C/C++ SDK выполните следующую последовательность команд:
Raspberry Pi: первое знакомство. Урок 4. Работа с GPIO, мигание светодиодом, Python
Урок ориентирован на начинающих пользователей и представлен в текстовом и видео-форматах.
Также рекомендуем ознакомиться с:
Для урока нам понадобится:
- плата Raspberry Pi;
- кабель питания;
- USB-клавиатура;
- USB-мышь;
- монитор или телевизор с HDMI/RCA/DVI интерфейсом;
- кабель, один конец которого RCA или HDMI, а другой соответствует вашему монитору;
- SD-карта с уже установленной ОС Raspbian (как ее установить);
- светодиод;
- кнопка;
- резистор на 220 Ом
- 3 провода «мама-папа»
- 2 провода «папа-папа».
Программирование Raspberry Pi GPIO на языке Python
Для сегодняшнего урока мы выбрали язык программирования Python.
Python — современный объектно-ориентированный язык. Он наиболее часто используется для программирования GPIO на Raspberry Pi. Python входит в состав операционной системы Raspbian.
Сборка модели
Для работы нам потребуется собрать следующую схему:
Схема подключения светодиода и кнопки к Raspberry Pi
Обратите внимание, что порты GPIO на Raspberry Pi не подписаны, полезно иметь распечатанную распиновку.
Распиновка Raspberry Pi. Схема с ledgerlabs.us
Собранная модель со светодиодом и кнопкой
Управление светодиодом на Raspberry Pi из консоли
Заходим в LXTerminal и набираем:
После этого вместо имени пользователя в начале строки должно отобразиться >>>.
Вводим следующие строки:
import RPi.GPIO as GPIO #импорт библиотеки
GPIO.setmode(GPIO.BOARD) #»включение» GPIO
GPIO.setup(7, GPIO.OUT) #объявление 7-го пина как выход
Затем для включения светодиода можно использовать команду
GPIO.output(7, 1)
А для выключения
GPIO(output(7, 0)
После работы с GPIO желательно выполнить команду
GPIO.cleanup()
Программа для мигания светодиодом на Raspberry Pi
Для автономной работы светодиода нам потребуется написать и запустить программу. Для этого откроем предустановленную программу IDLE 3 и в меню File нажмем New. В открывшемся окне мы можем писать программу.
Напишем:
import RPi.GPIO as GPIO #импорт библиотеки для работы с GPIO
import time #импорт библиотеки для ожидания
GPIO.setmode(GPIO.BOARD) #»запуск» GPIO
GPIO.setup(7, GPIO.OUT) #объявление порта 7 как выход
while True: #бесконечный цикл
____GPIO.output(7, 1) #включение светодиода
____time.sleep(1) #ожидание 1 секунды
____GPIO.output(7, 0) #выключение светодиода
____time.sleep(1) #ожидание 1 секунды
Сохраним программу в папке /home/pi.
Теперь мы можем запустить программу из LXTerminal с помощью команды
sudo python programname.py
Управление светодиодом с помощью кнопки
Поуправляем светодиодом с помощью внешней кнопки: когда кнопка зажата — светодиод горит, когда отжата — не горит.
Для этого подключим кнопку к порту 5.
Для управления нам потребуется следующая программа:
import RPi.GPIO as GPIO #импорт библиотеки GPIO
GPIO.setmode(GPIO.BOARD) #»включение GPIO»
GPIO.setup(7, GPIO.OUT) #объявление порта 7 как выход
GPIO.setup(3, GPIO.IN) #объявление порта 3 как вход
while True: #бесконечный цикл
____if GPIO.input(3) == False: #если кнопка зажата
________GPIO.output(7, 1) #включаем светодиод
____else: #иначе
________GPIO.output(7, 0) #выключаем
Управление светодиодом с клавиатуры
Сделаем еще одну программу. Она будет менять состояние светодиода при получении пустой строки и заканчиваться при получении другой строки.
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
while True:
____str = input(«Enter — включение, другое — выход «);
____if str != «»:
________break
____else:
________GPIO.output(7, 1)
____str = input(«Enter — выключение, другое — выход «);
____if str != «»:
________break
____else:
________GPIO.output(7, 0)
GPIO.cleanup()
На этом четвертый урок по Raspberry Pi для начинающих закончен, продолжение следует!
Все уроки курса «Raspberry Pi: первое знакомство»
Где купить Raspberry Pi
Raspberry Pi и наборы с ней можно купить у официальных дилеров и их партнеров и в многочисленных интернет-магазинах. Наиболее привлекательные цены, постоянные спецпредложения и бесплатная доставка на сайтах китайских магазинов AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазин Амперка.
Будьте аккуратны при выборе – в продаже имеются разные модели A, A+, B, B+, Raspberry Pi 2 и Raspberry Pi Zero.
Курс будет пополняться дополнительными уроками. Подпишитесь на нас ВКонтакте или Facebook, чтобы быть в курсе обновлений.
Автор: Александр А. Гагарин