Raspberry Pi — это микрокомпьютеры. И, поскольку это микрокомпьютеры, то они имеют свою операционную систему. Следовательно, разработка программного обеспечения для этой операционной системы имеет свои особенности, которые и описаны в данной книге (щёлкните по картинке, чтобы перейти на страницу книгу).
Raspberry Pi — это действительно микрокомпьютер. Его размеры сопоставимы с размерами кредитной карты, а стоимость базовой модели во времена начала производства была всего 25 долларов. Сейчас, в связи с известными событиями, цены в России, конечно, выше. Но главное, что товар есть в продаже, и это всё равно намного дешевле стационарных компьютеров или ПЛК.
Изначально этот микрокомпьютер был основан на процессоре Broadcom архитектуры ARM11, с тактовой частотой 700 МГц. Но и этого с лихвой хватало для большинства задач.
Несмотря на свои размеры, Raspberry Pi — это полноценный системный блок, с помощью которого можно воспроизводить видео, программировать, пользоваться Интернетом, слушать музыку и выполнять другие действия, которые выполняет обычный компьютер. Но, в отличие от обычного компьютера, Raspberry Pi имеет набор специальных портов ввода-вывода, которые в сочетании с небольшим размером позволяют использовать этот компьютер в других устройствах, в том числе и в робототехнике.
Питание компьютера обычно выполняется через USB, а потребление сравнительно небольшое: для большинства задач достаточно 0,5…07 А.
К компьютеру подключается SD-карта, без которой он не включится, поскольку операционная система записана на SD-карте.
Монитор можно подключить через HDMI. При желании можно использовать переходники и более привычные интерфейсы, такие как VGA.
Кроме всего прочего имеются разъёмы для подключения внешних устройств, таких как платы расширения, датчики, внешние контроллеры и т.п. И это позволяет строить на основе Raspberry Pi разнообразные устройства, применение которых почти не имеет ограничений.
То есть Raspberry Pi — это, можно сказать, навороченная версия Ардуино, с более мощным процессором и с операционной системой.
В качестве операционной системы можно использовать некоторые версии Linux. Однако есть и другие операционные системы, причём список их довольно обширен (в том числе и Андроид).
В общем, это очень крутая штука для “рукастых”. На основе Raspberry Pi можно собрать что угодно — от умного дома до робота. Или встроить его в клавиатуру и получить домашний компьютер без системного блока, который вечно мешается где-то под ногами.
Конечно, для этого придётся немного помучиться с изучением как самого компьютера, так и с изучением способов его программирования. Один из способов как раз и рассмотрен в книге:
Основы программирования Raspberry Pi на Python.
Raspberry Pi 4: GPIO все что нужно знать для начала работы
Продолжаем наш курс по Raspberry Pi, продвигаемся от самых основ, и сегодня разберем, как выполнять программы, написанные на Python. Как водится, напишем базовый пример, конечно же, «Hello, World». Итак, начнем с настройки Raspberry. В операционной системе Raspberry Pi OS пакет Python уже установлен, но если бы он отсутствовал, то команда для установки:
sudo apt-get install python
При этом по умолчанию установлены версии 2 и 3. Чтобы узнать, какая из версий используется, вводим команду:
python —version
Если результат будет таким (конкретная версия может отличаться), то значит по умолчанию используется Python 2:
И для того, чтобы это изменить, необходимо отредактировать файл ~/.bashrc. Этот файл находится в домашнем каталоге текущего пользователя и представляет из себя скрипт, который выполняется каждый раз, когда пользователь открывает консоль, подключается по SSH и т. д. Файл используется для настройки окружения пользователя. Используем редактор nano:
nano ~/.bashrc
После вызова команды файл будет открыт непосредственно в консоли. Обратите внимание на сочетания клавиш для работы с редактором, которые указаны внизу. К примеру, для закрытия редактора используем Ctrl + X:
Прокручиваем файл до самого конца и добавляем строку:
alias python=’/usr/bin/python3′
- Ctrl + X
- далее Y для подтверждения сохранения
- вводим имя файла и жмем Enter
Перезапускаем терминал, перелогиниваемся в случае SSH, либо запускаем скрипт командой:
source ~/.bashrc
И теперь уже видим другую картину:
С подготовкой на этом закончили
Для того, чтобы выполнять команды при помощи интерпретатора Python возможны несколько вариантов. К примеру, можно запустить интерпретатор командой:
python
Символы >>> приглашают нас вводить команды непосредственно в командную строку. Печатаем:
print(«Hello, World!»)
Что получается в итоге? Мы запустили интерпретатор Python и передали ему команду на выполнение, собственно, сразу и увидели результат в виде напечатанной строки «Hello, World!». Кстати для выхода используется сочетание Ctrl + D, либо команда:
exit()
Но такой способ, конечно, нас не очень интересует. Гораздо более практичным будет создание файла или файлов с кодом программы, которая уже будет выполняться (однократно или многократно — зависит от целей).
Итак, создадим новый файл. Причем разберем универсальный случай, когда Raspberry Pi используется без дисплея, то есть все действия будем производить через командную строку, подключившись по SSH. При наличии дисплея и элементов управления (клавиатуры, мыши), конечно, также можно использовать исключительно терминал, но кроме того, можно и создавать/редактировать файлы средствами операционной системы.
Действуем. Создаем файл test.py:
nano test.py
По умолчанию файл будет создан в папке /home/pi. После ввода команды мы снова оказывается в редакторе nano, поэтому прямо в консоли изменяем файл. А именно добавляем строку:
print(«Hello, World!»)
Сохраняем изменения файла так же как делали это ранее. И теперь для запуска просто вводим команду:
python test.py
Результат ожидаемый и аналогичный:
Вот, собственно, на этом и заканчиваем рассмотрение базовых способов использования Python на Raspberry Pi. В ближайших статьях курса рассмотрим работу с периферией платы (GPIO, I2C, SPI и т. д.).
Установка 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 выполните следующую последовательность команд:
Использование OpenOCD и GDB
Чтобы использовать отладку через SWD, вам необходимо запустить openocd как сервер и gdb как клиент:
$ openocd -f interface/picoprobe.cfg -f target/rp2040.cfg -s tcl
Open On-Chip Debugger 0.10.0+dev-g18b4c35-dirty (2021-08-12-18:55)
Licensed under GNU GPL v2
For bug reports, read http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect ‘swd’
Warn : Transport «swd» was already selected adapter speed: 5000 kHz
Info : Hardware thread awareness created
Info : Hardware thread awareness created
Info : RP2040 Flash Bank Command
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 5000 kHz
Info : SWD DPIDR 0x0bc12477
Info : SWD DLPIDR 0x00000001
Info : SWD DPIDR 0x0bc12477
Info : SWD DLPIDR 0x10000001
Info : rp2040.core0: hardware has 4 breakpoints, 2 watchpoints
Info : rp2040.core1: hardware has 4 breakpoints, 2 watchpoints
Info : starting gdb server for rp2040.core0 on 3333
Info : Listening on port 3333 for gdb connections
$ sudo apt install gdb-multiarch -y
(gdb) target remote loacalhost:3333
Конечно же вы можете отлаживать свое приложение в своей любимой IDE, в этом случае IDE работает как клиент.
Автоматическая генерация проекта
Для автоматического создания нового проекта вы можете использовать скрипт Python, который может работать как в режиме графического интерфейса пользователя, так и в режиме командной строки.
Чтобы воспользоваться этим, вам нужно будет клонировать скрипт создания проекта из Git репозитория :
$ cd ~/pico git clone https://github.com/raspberrypi/pico-project-generator.git
Не забудьте установить библиотеку TKInter для использования GUI:
$ sudo apt-get install python3-tk
Затем его можно запустить в графическом режиме:
Установка Geany на Raspberry Pi
По умолчанию на Raspberry OS установлен Geany, но возможна ситуация когда его удалили вручную или была установлена обрезаная версия операционной системы Raspberry OS.
Geany можно легко установить через терминал из репозитория следующей командой.
sudo apt install geany
Возможно перед установкой потребуется обновить информацию о новых версия программ в репозитории и обновить установленные программы.
sudo apt update sudo apt upgrade
Запуск Geany
После установки запустить Geany можно через меню или через терминал.
geany
Программа для мигания светодиодом на 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) #выключаем
Начало работы с Raspberry Pi Pico с использованием языков программирования MicroPython и C
Плата Raspberry Pi Pico была выпущена только в прошлый четверг, и благодаря Cytron мы получили образец уже через несколько часов после выпуска. У нас было достаточно времени поэкспериментировать с платой, используя языки программирования MicroPython и C.
Для начала работы мы обратились к официальной документации. Однако, чтобы добиться того, что мы хотели сделать, а именно попеременно мигать светодиодами, нам пришлось немного потрудиться, поэтому представим вам наш опыт работы с Raspberry Pi Pico с использованием компьютера, работающего на операционной системе Ubuntu 20.04. Инструкции будут аналогичными для Windows и Mac OS.
Подготовка оборудования
Мы могли бы просто начать работу только с платы, но мы решили так же воспользоваться возможностью опробовать паяльник Pinecil Pine64, работающий от источника питания MINIX NEO P2 USB-C.
Паяльник работал отлично около минуты, а потом начались проблемы… Посмотрев на экран, мы увидели, что устройство перешло в спящий режим и температуру упала. Видимо, мы недостаточно сдвигали паяльник и, не обнаружив никакой активности, устройство погрузилось в спящий режим. Изменение чувствительности к движению или интервала сна может легко решить эту проблему.
Было бы обидно не использовать эти разъемы, поэтому мы вставили Raspberry Pi Pico в макет и добавили светодиод с сопутствующей схемой.
5 В подключен к VBUS (контакт 40), GND – к контакту 38, и мы решили использовать GPIO, ближайший к светодиоду, а именно GP15 (контакт 20). Маркировка GPIO на Raspberry Pi Pico отображается только на нижней части платы, поэтому, когда плата подключена к макетной плате, помогает распиновка.
На этом настройка оборудования завершена, и все, что нам нужно, это кабель Micro USB-USB-A для подключения платы к ноутбуку.