Python для Raspberry Pi: как программировать GPIO для чайников

Что такое программа на Python?

Python — очень полезный язык программирования, который имеет простой для чтения синтаксис и позволяет программистам использовать меньше строк кода, чем это было возможно на таких языках, как ассемблер, C или Java.

Язык программирования Python фактически начинался как язык сценариев для Linux. Программы Python похожи на сценарии оболочки, где файлы содержат серию команд, которые компьютер выполняет сверху вниз.

Сравните программу «hello world», написанную на C, с той же программой, написанной на Python:

В отличие от программ на языке C, программы Python не нужно компилировать перед запуском. Однако для их запуска на вашем компьютере должен быть установлен интерпретатор Python. Интерпретатор Python — это программа, которая читает файлы Python и выполняет код.

Однако можно запускать программы Python без установленного интерпретатора Python. Такие программы, как Py2exe или Pyinstaller, упаковывают ваш код Python в автономные исполняемые программы.

Java

Возможность запускать код Java на любой платформе — это основная концепция языка. И эта концепция особенно полезна для таких платформ, как Raspberry Pi. Сначала вы отлаживаете код в «большой» операционной системе, а затем переносите его на Raspbian. В то же время разработка приложений на Java в системе «малина» затруднена: полноценной среды для этого языка нет.

Возможности программ на Python

Подобно сценариям оболочки, Python может автоматизировать такие задачи, как пакетное переименование и перемещение большого количества файлов. Может использоваться как командная строка с функцией IDLE, Python REPL (чтение, оценка, печать, цикл). Однако есть и другие полезные вещи, которые вы можете делать с Python. Например, вы можете использовать Python для программирования таких вещей, как:

  • Веб-приложения
  • Настольные приложения и утилиты
  • Выделенные графические интерфейсы
  • Небольшие базы данных
  • 2D игры

Python также имеет большую коллекцию библиотек для ускорения процесса разработки. Существуют библиотеки для всего, что приходит вам в голову: программирования игр, рендеринга графики, графического интерфейса пользователя, веб-фреймворков и научных вычислений.

Многие (но не все) из того, что вы можете делать на C, можно сделать на Python. Python обычно выполняет вычисления медленнее, чем C, но его простота использования делает Python идеальным языком для создания прототипов программ и разработки приложений, не требующих больших вычислительных ресурсов.

Особенности работы с GPIO

Перед сборкой и подключением внешних схем к Raspberry следует учесть следующие нюансы:

  • Общий максимальный ток обоих выводов 3,3 В составляет 50 мА, напрямую можно подключать только устройства с потребляемым током менее 50 мА.
  • Общий максимальный ток обоих контактов 5 В составляет 300 мА, напрямую можно подключать только устройства с потребляемым током менее 300 мА.
  • Ни при каких обстоятельствах не должно подаваться напряжение выше 3,3 В. В противном случае можно будет управлять входом или всем процессором.
  • Контакты 14 и 15 по умолчанию имеют альтернативную функцию и являются контактами UART (RXD и TXD), поэтому при включении они имеют высокое напряжение 3,3 В.
  • Все настраиваемые контакты GPIO, кроме GPIO0 (SDA) и GPIO1 (SCL), являются входами по умолчанию и, следовательно, имеют высокий импеданс без подтягивания, поэтому они начинают колебаться.

Вы должны понимать, что GPIO подключаются напрямую к процессору, и неграмотное подключение может повредить сам процессор. Осторожно!!!

Поэтому при проектировании устройств, использующих большое количество контактов GPIO, обязательно выполнять изоляцию с использованием дополнительных буферных схем, преобразователей уровня напряжения и электронных ключей.

Есть еще несколько нюансов. После включения Raspberry Pi и загрузки ОС Linux для контактов GPIO устанавливается низкий уровень (0 В), и так далее, пока какая-либо программа или сценарий не изменит состояние портов.

И все было бы хорошо, если бы не маленькое НО… Его суть заключается в том, что с момента подачи питания на платформу и до момента инициализации драйверов в операционной системе произвольные пины могут иметь высокие уровни на короткое время (3,3 В).

И поэтому хорошим решением было бы изолировать входы и выходы питания при запуске операционной системы.

Программа для мигания светодиодом на Raspberry Pi

Для автономной работы светодиода необходимо написать и выполнить программу. Для этого откройте предустановленную программу IDLE 3 и нажмите «Создать» в меню «Файл». В открывшемся окне мы можем написать программу.

Как писать и запускать программы на Python?

Здесь мы рассмотрим только основы написания и запуска программы Python, но отличный учебник, охватывающий все, что программист должен знать о Python, — это Learning Python 5th Ed. (O’Reilly) Mark Lutz.

Установка и обновление языка

Python 2 и Python 3 предварительно установлены в операционных системах Raspbian, но чтобы установить Python в другой операционной системе Linux или обновить его, просто выполните одну из следующих команд из командной строки:

Установите или обновите Python 3.

Установите или обновите Python 2.

Открываем Python REPL

REPL (цикл чтения-оценки-печати) — это форма организации простой интерактивной среды программирования в интерфейсе командной строки.

Чтобы получить доступ к Python REPL (где вы можете вводить команды Python так же, как в командной строке), введите python или python3 в зависимости от того, какую версию вы хотите использовать:

Введите Ctrl-D, чтобы выйти из REPL.

Пишем программу на Python

Чтобы продемонстрировать, как создать и запустить программу Python, мы создадим простую программу «Hello World». Сначала откройте текстовый редактор Nano и создайте новый файл с именем hello-world.py, набрав его в командной строке:

Введите этот код в Nano, затем нажмите Ctrl-X и Y, чтобы выйти и сохранить файл:

Все программные файлы Python должны быть сохранены с расширением «.py». Вы можете написать программу в любом текстовом редакторе, таком как Блокнот, Блокнот ++ или наш любимый Sublime Text 3, просто сохраните файл с расширением «.py».

Запуск программы

Чтобы запустить программу, не делая ее исполняемой, перейдите в папку, в которой вы сохранили файл, и введите в командной строке:

Разработка под RPI на Python

Python идеально подходит для Raspberry — он довольно прост в освоении, функционален и имеет множество функций. На Python разрабатываются как небольшие программы для личного пользования, так и крупные международные проекты. Этот язык станет хорошим стартом для новичков в мире ИТ и отличным инструментом для обучения компьютерному кодированию, дизайну и принципам.

raspberry Pi

С чего начать

Чтобы разработать «Python» для Raspberry, вам необходимо изучить некоторые базовые концепции. Программист должен обязательно освоить:

  • переменные;
  • циклы;
  • функции;
  • переходы;
  • табулирование (как способ ограничить отдельные блоки кода).

Несмотря на кажущийся объем, изучение синтаксиса языка и основных приемов работы с ним требует нескольких вечеров.

Python

Важно: желательно владеть английским хотя бы на уровне чтения. Хотя и RPI, и сам Python имеют большое количество документации на русском языке, некоторая информация представлена ​​более полно в английской версии или доступна только в ней. Кроме того, знание иностранного языка открывает доступ к ресурсам англоязычного сообщества, позволяет общаться с коллегами по всему миру, делиться опытом и так далее.

Так, например, взаимодействие с Malinka через Python хорошо описано в руководстве для начинающих под названием Python Programming with Raspberry Pi, которое не было переведено на русский язык.

Программирование на Python с Raspberry Pi

Инструменты разработки

Для программирования на Python нужны правильные инструменты. В случае Python это интерпретатор, компилятор и среда разработки, представленные в виде единого пакета и доступные для загрузки с официального сайта. Содержит дистрибутивы для разных платформ.

Также можно использовать адаптированный для «одноплатной» дистрибутив Raspbian, где все инструменты предустановлены.

Помимо среды разработки вам потребуются некоторые специфические библиотеки, в частности, для взаимодействия с Raspberry GPIO. Все они присутствуют в дистрибутиве официальной операционной системы.

Малинка

HTML5 и CSS3

Компьютеры Raspberry Pi подходят для построения систем Интернета вещей, а встроенный браузер Epiphany является подходящим клиентским интерфейсом. Это означает, что без языков Интернета не обойтись. HTML5 и CSS3 позволят решить задачу создания виртуальной оболочки умного дома с минимальными затратами времени и меньшими ограничениями.

Программирование на других языках под Raspberry

Программирование на C для Raspberry Pi или других языков программирования почти такое же, как написание кода на других платформах. Единственное, что нужны специальные библиотеки.

Библиотека WiringPi для работы с GPIO

Если вас интересует программирование Raspberry Pi на C / C ++ и работа с GPIO, тогда вам необходимо установить сам gcc в системе, поэтому библиотеку жгута Pi — можно найти на GitHub. В описании есть инструкция по эксплуатации.

Следует отметить, что для установки библиотек с GitHub требуется утилита GIT. Если его нет в вашей системе, вам необходимо установить его из репозитория (полное имя: git-core).

Программирование «Малины» при помощи Java

Тем, кто желает запрограммировать Raspberry Pi на Java, стоит обратить внимание на Pi4J, библиотеку, разработанную специально для работы с Raspberry. Вы можете скачать и узнать о его возможностях на официальном сайте проекта.

Программирование Raspberry Pi для детей

интересно, что изначально «Малина» была разработана непосредственно для обучения программированию детей. Создатель этого устройства отметил, что уровень понимания того, как работают компьютеры, у современных студентов намного ниже, чем у тех, кто учился в 1990-е годы. Он объяснил это тем, что вычислительные устройства стали предельно простыми: если раньше увлеченным электроникой детям и подросткам приходилось понимать команды терминала и даже писать код самостоятельно, то теперь все делается нажатием пары кнопок.

Программирование Raspberry Pi для детей

Поэтому, конечно, предусмотрено визуальное программирование Raspberry Pi. В частности, для этого используется язык Scratch со специальным сервером — GPIOSERVER. В сети есть множество руководств, которые помогут вам привыкнуть к соответствующим программам, поэтому нет смысла брать их во внимание.

Перечисленные языки не ограничиваются возможностями «Малинки». Вы можете взаимодействовать с ним, используя PHP, Ruby, Perl и другие языки программирования. Практически для всех популярных языков есть библиотеки, пусть и неофициальные, но рабочие и вполне функциональные. Однако нужно еще раз сказать, что для программирования Raspberry лучше использовать Python».

Управление светодиодом с помощью кнопки

Управляем светодиодом через внешнюю кнопку: при нажатии кнопки светодиод горит, при отпускании гаснет.

Программирование Raspberry Pi GPIO на языке Python

Для сегодняшнего урока мы выбрали язык программирования Python.

Python — это современный объектно-ориентированный язык. Чаще всего он используется для программирования GPIO на Raspberry Pi. Python включен в операционную систему Raspbian.

Сборка модели

Для работы нам потребуется собрать следующую схему:

schema_bb

Схема подключения светодиода и кнопки к Raspberry Pi

Обратите внимание, что порты GPIO на Raspberry Pi без подписи, полезно иметь распечатку распечатки.

Распиновка Raspberry Pi

Распиновка Raspberry Pi. Схема с ledgerlabs.us

шаблон

Модель в сборе со светодиодом и кнопкой

C++

C ++ полезен там, где необходимы скорость, безопасность и ясность работы. Спектр деятельности невероятно широк — от непосредственной работы с оборудованием до организации взаимодействия устройств и клиентов. C ++ перейдет на «малиновую» сторону опытных разработчиков прошлого века и тех, кто ранее писал код только для микроконтроллеров.

Схема подключения светодиода и кнопки

При подключении светодиода не забудьте подключить демпфирующий резистор (200-300 Ом). Это обеспечит низкое потребление тока, чуть менее 50 мА. Таким образом вы сохраните сам процессор и буфер GPIO.

При подключении кнопки тоже есть плафоны. Настоятельно рекомендуется установить токоограничивающие резисторы. Кто-то спросит, а почему нельзя просто поставить кнопку и все? Я тоже задавал себе этот вопрос. Оказывается, все просто.

Не забывайте, что при загрузке ОС или неправильной настройке режима GPIO на используемый вывод может поступать 3,3 В. Поэтому, если есть замыкание на массу, мы обеспечим короткое замыкание, а затем сожжем контакт или процессор.

Такая схема с ограничивающими резисторами — гарантия работоспособности Raspberry в различных ситуациях.

Что предлагает эта схема для подключения кнопки:

  • Пока кнопка SW1 не нажата, через резисторы R1 и R2 на входе двери устанавливается высокий уровень 3,3 В;
  • Когда кнопка SW1 замкнута, ток, равный I = U / R = 3,3 В / 10000 Ом = 0,33 мА, будет протекать через резистор R1 и кнопку, а низкий уровень 0 В будет установлен через ограничительный резистор R2 и кнопка при входе в дверь;
  • Если вывод порта установлен неправильно, ток не будет течь на выход 3,3 В через цепь R1, R2 (3,3 В = 3,3 В), а при нажатии кнопки через него будет протекать ровный ток с R = 3,3 В / 750. R2 и SW1 = 4,4 мА, что является безопасным значением и никоим образом не повредит схему и порт GPIO.

Схема подключения светодиодов и кнопок:

R1 — 10 кОм, R2 — 1 кОм, R3 — 220 кОм.

Не жалейте резисторов для этой схемы, лучше на каждый вывод повесить по 1 кОм. И настроить схему для безопасной работы. Не экспериментируйте с друзьями, согласитесь, сжечь 3000 рублей будет просто жалко.

Perl

Perl постепенно сдает позиции в мире больших машин, но в Raspberry Pi он по-прежнему остается одним из основных инструментов. Он выходит из коробки, имеет множество расширений и надстроек, с его помощью можно организовать сбор информации или переписать программу на C. Это скажется на производительности, но работать с такой код.

MicroPython на Raspberry Pi Pico

Во-первых, нам нужно скопировать прошивку MicroPython на плату. Для этого мы можем загрузить последнюю версию прошивки из руководства по началу работы (pico_micropython_20210121.uf2 на момент обзора), затем нажать кнопку BOOTSEL на плате при подключении к компьютеру с портом USB и отпустить ключ после подключения. Мы сделали, но ничего не произошло. Это потому, что мы использовали USB-кабель велосипедной фары, у которого нет линии передачи данных… Итак, мы выбрали правильный кабель micro USB — USB Type A, и Raspberry Pi Pico был правильно распознан на нашем ноутбуке:

и установлен как запоминающее устройство RPI-RP2.

После копирования файла pico_micropython_20210121.uf2 на диск он автоматически отключается, и карта Pico перезапускается как последовательное устройство:

На данный момент руководство по началу работы на веб-сайте Raspberry Pi не очень информативно, поэтому перейдите к документации Python SDK

В документации по последовательной консоли используется minicom, но мы предпочитаем Bootterm, так как он проще в использовании. В любом случае, если вы программируете карту в Linux, убедитесь, что ваш текущий пользователь добавлен в группу dialout, иначе вам придется запускать все программы как root:

Bootterm правильно обнаружил порт ttyACM0, поэтому просто запустите «bt», чтобы получить доступ к интерфейсу MicroPython REPL, и введите несколько команд MicroPython.

Нам удалось включить встроенный светодиод (GP25), но когда мы сделали то же самое для светодиода на макете (GP15), он не сработал. Мы перепроверяем схему и с помощью мультиметра проверяем уровни напряжения и обнаруживаем, что GP25 все еще низкий. После поиска в Интернете мы обнаружили, что GP15 отключен в CircuitPython, поскольку он мешает работе интерфейса USB.

Это сделано специально, GP15 использовать не следует, он используется внутренним USB-устройством.

Мы считаем, что то же самое произойдет и с MicroPython, поэтому перейдем к соседнему контакту (GP14, контакт 19)

и это сработало! Если вы хотите узнать больше об API MicroPyton, нажмите Ctrl + B и введите help ():

Мы можем выйти из bootterm, нажав «Ctrl +», а затем «q». Но что, если мы хотим сохранить нашу программу Python на плате и запускать ее автоматически? Возможно, мы что-то упустили, но в документации Python SDK об этом ничего не говорится, поэтому нам пришлось перейти к третьему руководству, чтобы узнать, как лучше всего использовать Thonny.

Ubuntu 20.04 имеет Thonny 3.2.7 в своем репозитории, который мы можем установить с помощью sudo apt install thonny, но он не поддерживает Raspberry Pi Pico, поэтому установите последнюю версию программы (v3.3.3) с помощью pip3:

Затем перейдите в «Выполнить» -> «Выбрать интерпретатор»… и выберите «MicroPython (Raspberry Pi Pico)».

В пользовательском интерфейсе введите код для выключения встроенного светодиода:

Чтобы встроенный светодиод и светодиод макета мигали попеременно с интервалом в одну секунду, мы скопировали и отредактировали код из документации Python SDK:

Сохраните файл как blink.py на своем ПК, все работает нормально. Но если вы хотите запустить код без ПК, вы можете сохранить его на Raspberry Pi Pico. Нажмите «Файл»> «Сохранить копию», затем нажмите кнопку «Raspberry Pi Pico»,

и сохраните программу как main.py. Теперь вы можете запустить программу автоматически, подключив карту к любому источнику питания USB.

Оцените статью
Блог про Arduino
Adblock
detector