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

Вопросы и ответы

Python – это основной язык Raspberry Pi

Большинство владельцев Raspberry Pi понимают, что означает первое слово в названии единственной платы: «малина». Однако последнее многие неправильно понимают.

Некоторые думают, что это означает «Пи» (3,14…), другие думают, что это первые две буквы слова Pie (пирог, и это имеет смысл — «малиновый пирог»). Однако на самом деле все иначе.

Pi — это сокращение от Python, заменяющее y на i. Это часто делается в программировании. Возьмем, к примеру, KDE, где во многих программах вместо C пишется K (из соображений стиля): Konsole (правильно — Console), Konqueror (Conqueror) и т.д.

Питон Raspberry Pi

То есть, как вы понимаете, Python является основным языком Raspberry. Поэтому владельцу «Малины», не знающему пока ни одного языка программирования, рекомендуется изучить именно этот. Есть много причин, по которым программирование на Raspberry Pi 3 Python — ваш лучший выбор.

Здесь только несколько:

  • нестандартно работать в Raspbian;
  • наличие большой и хорошо документированной официальной библиотеки, уже включенной в пакет;
  • простота языка и так далее

Примеры кода на Python для Raspberry

Здесь по понятным причинам мы не будем говорить о языке и особенностях программирования на нем — это можно и нужно делать на официальных ресурсах (или, если не позволяет плохое знание английского языка, на специализированных).

Примеры кода Python для Raspberry

Вместо этого будет рассмотрено, насколько легко запрограммировать малину. В качестве примера возьмем программирование GPIO на Raspberry Pi 3. Предположим, что все необходимое есть в наличии: кабели, светодиод, резистор и т.д. И еще есть понимание распиновки — нумерации выводов. Также предположим, что светодиод подключен к порту 11.

Указанный код можно скопировать, вставить в документ и сохранить с расширением .py, которое можно найти, например, в домашнем каталоге. Затем вам нужно запустить его с помощью команды: python ~. / Имя файла.py.

Если все работает, значит оборудование исправно.

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

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

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

Открываем Python REPL

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

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

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

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

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

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

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

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

JavaScript

JavaScript — это динамическая сила Raspberry Pi. Вы сможете работать с ним благодаря фреймворку Node.js, который позволяет создавать настольные и веб-приложения. Не забудьте про библиотеку jQuery, которая работает в любом браузере и наполняет ее обычными динамическими функциями.

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

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

Сохраним программу в папку / home / pi.

Теперь мы можем запустить программу из LXTerminal с помощью команды
sudo python progname.py

Настройка Pi для запуска скриптов Python

Хорошо, ваш Pi запущен и работает, теперь вам просто нужно настроить его для запуска скриптов Python. Хорошая новость заключается в том, что если вы используете Raspbian, вам нечего делать, так как Python устанавливается сразу, единственное, что вы можете сделать, это загрузить последнюю версию, вероятно, потому что у Raspbian нет последней версии. Перейдите на python.org и при необходимости обновите. Но в остальном тебе хорошо. Вы можете скопировать существующие файлы .py и сразу же начать использовать их с помощью встроенной среды IDE или терминала. Кстати: если вы копируете файлы, которые использовали в Windows или OS X, помните, что в Linux вам понадобится другая строка shebang. Вы, наверное, знаете, где это искать, но это для справки:

Скриншот от 05.09.2018, 18.18.11.png

  • В Windows строка shebang — #! python3 .
  • В OS X строка shebang — #! / Usr / bin / env python3 .
  • В Linux строка shebang — #! / Usr / bin / python3. (строки shebang — это первые строки в файлах сценариев python, которые сообщают системе, где найти интерпретатор)

Также, если вы хотите запускать скрипты из терминала, вам необходимо выполнить несколько дополнительных шагов:

  • Поместите их файлы .py в свою домашнюю папку
  • Сделайте их исполняемыми с помощью следующей команды: chmod + x script.py Теперь вы можете запустить скрипт, набрав ./script.py на терминале (если вы поместите их куда-нибудь, кроме вашей домашней папки, вам нужно будет описать полный путь запустить их)

Сценарии автоматизации на Pi с CRON

Теперь самое интересное. Пока что мы настроили наш Pi и начали запускать на нем скрипты Python. Но вход через RealVNC или SSH всякий раз, когда мы хотим запустить скрипт, не очень удобен (кроме случаев, когда мы хотим автоматически запускать скрипты через SSH с другого устройства или службы, но это будет рассмотрено в другом посте).

Если у нас есть скрипт веб-парсера, который ежедневно просматривает информацию в Интернете и возвращает некоторую информацию (например, средство уведомления о еде, описанное в моем предыдущем посте), нам нужна полная автоматизация. Сценарий должен запускаться сам, выполнять свою работу и возвращать информацию. К счастью, мы можем сделать это с помощью встроенного в Linux инструмента под названием CRON .

Как настроить CRON

  • Войдите в свой Pi с помощью RealVNC и запустите терминал.
  • В терминале введите crontab -e. Если вы хотите, чтобы команда запускалась с разрешениями системы, используйте команду sudo crontab-e, чтобы открыть файл crontab учетной записи root.
  • Вас могут попросить выбрать издателя. Если это произойдет, выберите Nano (для меня это было по умолчанию)
  • Вам будет представлен следующий экран:Любая строка, начинающаяся с #, является просто комментарием и не будет выполняться.
  • Используйте стрелки или Page Down для прокрутки вниз страницы
  • Любая добавленная здесь строка будет выполнена.

Параметры имеют следующий формат: Минуты Часы День месяца Месяц День недели Команда Если вы хотите пропустить параметр, просто добавьте * в качестве ввода.

Давайте посмотрим на несколько примеров:

15 9 5 7 * /home/pi/yourscript.py будет запускать yourscript.py, находящийся в вашей домашней папке, каждое 5 июля в 9:15.

30 10 * * 1-5 / home / pi / yourscript.py будет запускать yourscript.py каждый день недели (с понедельника по пятницу) в 10:30.

0 8 1-10 * * / home / pi / yourscript.py будет запускать yourscript.py каждый день с 1 по 10 число каждого месяца в 8:00.

Вот как выглядит строка Crontab для моего FoodNotifier.py: 0 11 * * 1-5 / home / pi / FoodNotifier.py Это запрограммирует его запуск каждый день недели в 11:00.

После добавления строки нажмите CTRL + O, чтобы ввести, и нажмите Enter, чтобы сохранить. Выйдите из crontab с помощью CTRL + X

Другие полезные параметры Crontab

  • Если вы используете скрипт, который постоянно работает или слушает, и вы хотите, чтобы он завершился в определенное время, вы можете сделать это с помощью параметра killall -9 yourscript.py. Пример: 0 13 * * 1-5 killall -9 tuoscript.py будет останавливать tuoscript.py в 13:00 каждый день недели.
  • Вы можете выключить Pi, используя параметр sudo shutdown -h now. Пример: 0 21 * * 6 sudo shutdown -h now отключит ваш Pi каждую субботу в 21:00.

Управление светодиодом с клавиатуры

Сделаем другую программу. Он изменит состояние светодиода при получении пустой строки и закончится при получении другой строки.
На этом завершается четвертый урок Raspberry Pi для начинающих, который продолжается!

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

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

schema_bb

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

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

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

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

шаблон

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

C++

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

Программирование на других языках под 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».

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

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

Для этого подключите кнопку к порту 5.

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 перезапускается как последовательное устройство:

В документации по последовательной консоли используется 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.

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

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

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

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

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

Первые шаги

Как вы уже догадались, первым делом нужно купить Pi. Я рекомендую получить его с SD-картой с предустановленным Raspbian .

Также будьте осторожны, так как в стандартной упаковке нет адаптера питания. Вы можете использовать его с более мощным зарядным устройством для телефона, если у вас есть дополнительные прокладки. Для первой настройки вам также понадобятся дисплей, клавиатура и мышь.

После первого запуска Pi подключитесь к нему через локальную сеть. Он может быть проводным или Wi-Fi. Затем запустите и настройте RealVNC (который поставляется с Raspbian), так как это действительно удобный способ получить доступ к вашему Pi, даже удаленно. Настройка очень проста, просто зарегистрируйте учетную запись и следуйте инструкциям мастера. После этого используйте программу просмотра VNC на любом устройстве для входа в систему. (Windows, Mac OS, iOS, Android)

Как только это будет сделано, вам больше не нужно будет подключать какие-либо периферийные устройства к Pi. Raspbian определит, запускаете ли вы его без дисплея, клавиатуры или мыши, и автоматически загрузится в так называемый режим заголовка. В режиме заголовка вы можете подключиться к Pi через SSH или RealVNC с любого устройства — телефона, планшета, ноутбука. Причем не только из локальной сети, но и удаленно.

HTML5 и CSS3

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

Управление светодиодом на Raspberry Pi из консоли

Перейдите в LXTerminal и введите:

  • sudo python

Впоследствии вместо имени пользователя в начале строки оно должно отображаться.

Вставляем следующие строки:

  • импортировать RPi.GPIO как GPIO # импортировать библиотеку
  • GPIO.setmode (GPIO.BOARD) # «включить» GPIO
  • GPIO.setup (7, GPIO.OUT) # объявляем седьмой вывод как выход

Затем вы можете использовать команду для включения светодиода

  • GPIO.output (7, 1)

И выключить

  • GPIO (выход (7, 0)

После работы с GPIO желательно выполнить команду

  • GPIO.cleanup()

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

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

С чего начать

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

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

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

Python

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

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

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

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

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

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

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

Малинка

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

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

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

Java

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

Perl

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

Читайте также: Распиновка Ардуино Мега 2560 Про

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