Raspberry Pi — идеальный компьютер для обучения. В ОС Raspbian на основе Linux встроен Python, что делает ее отличной первой системой для начинающих программистов. Его выводы ввода / вывода общего назначения (GPIO) позволяют начинающим производителям экспериментировать с электронными проектами.
Это особенно легко, когда вы используете библиотеки кода, которые управляют этими выводами, и популярная библиотека Python RPi.GPIO является отличным примером такой библиотеки. Но лучший ли это путь для начинающих? Присоединяйтесь к нам, как мы расследуем.
Что такое GPIO Zero?
Библиотека GPIO Zero — это библиотека Python для работы с выводами GPIO. Он был написан менеджером сообщества Raspberry Pi Беном Наттолом . Направленный на то, чтобы быть интуитивно понятным и «дружественным», он оптимизирует код Python для большинства обычных случаев использования Raspberry Pi.
Сочетая простые методы именования и описательные функции, GPIO Zero более доступен для начинающих. Даже опытные пользователи библиотеки RPi.GPIO могут предпочесть ее — и чтобы понять почему, давайте посмотрим, как RPi.GPIO сравнивается с GPIO Zero.
Что не так с RPi.GPIO?
Ничего такого. Вообще ничего RPi.GPIO был выпущен в начале 2012 года разработчиком Беном Кростоном. Это надежная библиотека, позволяющая пользователям управлять выводами GPIO из кода. Он присутствует практически в каждом проекте мы уже рассмотрели.
Несмотря на широкое использование, RPi.GPIO никогда не был предназначен для конечных пользователей. Это свидетельство хорошего дизайна RPi.GPIO, который используют многие начинающие.
Что хорошего в GPIO Zero?
Когда вы изучаете код Python , вы узнаете, что он должен быть легким для чтения и максимально коротким. GPIO Zero стремится охватить обе точки. Созданный на основе RPi.GPIO в качестве интерфейсной языковой оболочки, он упрощает настройку и использование GPIO.
Рассмотрим следующий пример настройки и включения светодиода:
Приведенный выше код должен быть знаком всем, кто использовал свои пи для управления светодиодами .
Библиотека RPi.GPIO импортирована, и объявлен вывод для светодиода. Тип расположения выводов (режимы BCM и BOARD описаны в нашем руководстве по GPIO. ), и этот вывод настраивается как выход. Затем штифт включен.
Этот подход имеет смысл, но способ GPIO Zero сделать это гораздо проще:
GPIO Zero имеет модуль для светодиодов, импортируемый при запуске. Это означает, что вы можете объявить номер пин- кода и вызвать метод led.on () .
Почему подход GPIO Zero лучше?
Есть несколько причин, почему этот метод работы является улучшением RPi.GPIO.
Во-первых, он отвечает требованию «легко читать, как можно меньше». Хотя операторы настройки RPi.GPIO достаточно просты для понимания, они не нужны. Светодиод всегда будет выходом, поэтому GPIO Zero устанавливает контакты за кулисами. Результат — всего три строки кода для настройки, а затем загорается светодиод.
Вы можете заметить, что в примере GPIO Zero нет настройки режима платы. Библиотека использует только нумерацию Broadcom (BCM) для выводов. Дизайнер библиотеки Бен Наттолл объясняет, почему в интервью RasPi.tv 2015 года:
«Нумерация платы может показаться более простой, но я бы сказал, что это заставляет новых пользователей думать, что все выводы имеют общее назначение, а это не так. Подключите светодиод к контакту 11, почему бы не подключить еще несколько к контактам 1, 2, 3 и 4? Скважина 1 3V3. 2 и 4 5В. Недостаточная осведомленность о назначении контактов может быть опасной ».
Говоря таким образом, имеет смысл использовать цифры BCM. Учитывая, что GPIO Zero будет стандартом в документации Raspberry Pi, стоит учиться!
Действительно ли GPIO Zero лучше?
Хотя это кажется более простым на первый взгляд, есть ли у новой библиотеки какие-либо проблемы? Как и с любой новой библиотекой кодирования, это вопрос мнения. С одной стороны, удаление установочного кода отлично подходит как для начинающих, так и для опытных программистов. Написание кода проще и быстрее.
С другой стороны, знание того, что происходит, важно для обучения. Возьмите пример настройки кнопки из документации GPIO Zero :
Модуль кнопок упрощает настройку кнопок. Он знает, что кнопки являются входными данными, поэтому использует заявленный номер контакта для настройки. Проверить нажатие кнопки также проще, с помощью .is_pressed для обнаружения нажатий кнопок.
Мы использовали эту точную функциональность в учебнике , это отличный способ ознакомиться с различиями в библиотеках.
Пользователи библиотеки RPi.GPIO заметят, что внутренние понижающие / понижающие резисторы Pi не заданы в коде. Это поднимает интересный вопрос. Обязательно ли для новичков знать резисторы с повышением / понижением? И снова у Бена Наттолла есть ответ на этот вопрос:
«Вы можете утверждать, что хорошо знать о подтягиваниях и спусках, и вы были бы правы, но почему я должен учить этому в первый день? […] Если вы хотите научить электронике более глубоко, есть много возможности для этого — но это не должно быть обязательным, если вы только начинаете ».
В целом, простой подход GPIO Zero, вероятно, полезен как для начинающих, так и для ветеранов. Кроме того, RPi.GPIO никуда не денется. Он всегда будет там, чтобы переключиться обратно в случае необходимости.
Является ли Python единственным вариантом?
Python — это язык, которым известен Pi, но это не единственный вариант. Если вы уже знакомы с программированием на языке Си, то Wiring Pi вам поможет.
Кроме того, если вы уже программируете на JavaScript, Node.js можно легко установить на Pi. Доступ к GPIO доступен через библиотеку rpi-gpio npm . Ruby on Rails также может быть установлен на Raspberry Pi, хотя Pi может быть не лучшим способом изучения Rails !
Все эти альтернативы, наряду с многоязычными библиотеками, такими как превосходный pigpio, могут сделать выбор библиотеки запутанным. Именно здесь GPIO Zero выделяется: для начинающих, задающихся вопросом, как и с чего начать.
Если вы находитесь в точке, где вам нужно что-то, чего она не предоставляет, вы будете более чем готовы погрузиться в эти другие библиотеки в своем собственном темпе.
Начало работы с GPIO Zero Yourself
GPIO Zero является новейшей библиотекой, созданной для Pi, и для этого есть все основания. Для большинства пользователей это делает кодирование для выводов GPIO более простым для чтения и более быстрым.
Учитывая использование Raspberry Pi в образовании, все, что делает обучение более естественным, является хорошей вещью. Хотя RPi.GPIO до сих пор был идеальным, GPIO Zero берет хорошую идею и делает ее еще лучше.
Отличный способ начать работу с GPIO Zero — это взять проект для начинающих, например, « Музыкальный датчик двери». и перенесите его в новую библиотеку.