Raspberry pi 3 программирование на python. Программирование Raspberry Pi – это легко, особенно на Python. Для урока нам понадобится

Программирование Raspberry Pi 3 - это как раз то, для чего большинство людей и берет этот одноплатный компьютер. Здесь сразу же следует отметить, что в этом материале не будет изложено инструкций, подробно раскрывающих, как и что нужно делать - таких в «сети» полно. Однако, рекомендуется читать официальную документацию и специализированные формы. Вместо этого в статье будут рассмотрены основные моменты, из которых станет понятно, что на Raspberry Pi программирование не отличается сложностью.

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

Почти все владельцы Raspberry Pi понимают, что означает первое слово в названии одноплатника - "малина". Однако второе многие интерпретируют неверно.

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

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

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

Вот лишь некоторые из них:

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

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

Вместо этого будет рассмотрено, насколько легко можно программировать "Малину". Для примера возьмем Raspberry Pi 3 GPIO программирование. Сделаем предположение, что в наличии имеется все необходимое: провода, светодиод, резистор и прочее, а также присутствует понимание распиновки - нумерации пинов. Также предположим, что светодиод подключен к 11 порту.

Написанный ниже код включает лампочку на 5 секунд, а затем выключает ее:

# вначале подключим необходимую библиотеку

import RPi.GPIO as GPIO

# также понадобится библиотека, которая отвечает за ожидание (она нужна, чтобы установить интервал включения и выключения лампочки)

# чтобы запустить GPIO, понадобится выполнить следующую функцию

GPIO.setmode(GPIO.BOARD)

# теперь Python знает о GPIO, и ему можно указать на то, с каким портом нужно будет работать и что он должен делать (в данном случае - 11-м и он будет работать на выход)

GPIO.output(11, 1)

# теперь выключим (0 - значит false)

GPIO.output(11, 0)

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

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

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

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

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

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

Если интересует Raspberry Pi программирование на C/С++ и работа с GPIO, то требуется установить в систему непосредственно сам gcc, а затем библиотеку wiringPi - ее можно найти на GitHub. В описании к ней присутствует мануал по использованию.

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

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

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

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

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

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

7. Знакомство со средствами программирования, установленными на Raspberry Pi

Для изучения программирования в Raspbian ОС предустановлены пакеты Python, Scratch, Node-RED, SonicPi и Wolfram Mathematica. Именно ради того, чтобы сделать максимально доступным и удобным для всех изучение програмирования и физического компьютинга проект Raspberry Pi и создавался несколько лет назад! Так что же представляют в трех словах предустановленные на RasPi средства разработки?

Python представлять не надо - это самый популярный в университетской и научной среде язык программирования. Для работы с датчиками через GPIO для Python написана и предустановлена библиотека. Вообще говоря, через инструмент pip можно доустановить тысячи библиотек для Python буквально для решения всех практических задач физического компьютинга и научных вычислений.
Помимо самого языка Python версий 2 и 3 со средой разработки IDLE, в Raspbian ОС предустановлена специальная версия популярной игры Minecraft Pi и библиотеки на Python для управления игрой. (Введение см. и )
Node-RED - визуальный редактор от IBM с открытым исходным кодом для создания "интернета вещей", позволяющий практически без программирования, соединением готовых модулей "собирать" довольно сложные приложения для систем типа "умный дом". (Введение см. и ).
Язык Scratch - инструментарий визуального программирования, позволяющий детям создавать анимации и игры методом Drag&Drop. (Введение см. и )
Уникальный в своем роде язык SonicPi позволяет программировать музыку. (Введение см. )
Пакеты Wolfram и Mathematica - наиболее полная система для современных технических вычислений в мире. Она будет незаменимым помощником для технических вычислений как учащихся школ, так и студентов ВУЗов. Хотя продукт для Windows платный, на Raspbian ОС установлена полнофункциональная бесплатная версия.
(Введение см. и )
Кроме того, в Raspbian ОС по умолчанию предустановлены Node.js, Perl и Ruby.
Для удобной работы с кодом на Raspberry Pi предустановлен один из лучших редакторов с подсветкой синтаксиса и среда разработки Geany.

8. Восстановление работы Raspberry Pi после сбоев


Может возникнуть ситуация, когда несовместимость вновь установленного аппаратного или программного обеспечения вызовет ошибку при запуске системы. Напирмер, хотя в настройках Raspberry Pi 3 имеется пункт Open GL, как показала практика, включение этой опции вызовет ошибку загрузки системы.
Как показала практика, у Raspberry Pi имеется несколько возможностей восстановления после сбоя загрузки.

1) Откат до последней резервной копии microSD-карты при помощи Win32DiskImager.
Делайте почаще образы стабильной версии системы программой Win32DiskImager и можете быть уверены, что в случае сбоя система будет востановлена за считанные минуты.

2) Редактирование конфигурационного файла config.txt с microSD-карты на компьютере при помощи кард-ридера.
К примеру, в случае сбоя с Open GL надо закомментировать символом # последнюю строчку "dtoverlay=vc4-kms-v3d" в файле config.txt и система запустится нормально.

3) Удаленное подключение к Raspberry Pi по сети через SSH-терминал.
Во многих случаях, например, в случае того-же сбоя загрузки при включении Open GL, после загрузки ядра системы успевает запуститься SSH-сервер и продолжает работу в фоновом режиме. Можно зайти в консоль Raspberry Pi через SSH-терминал, отредактировать конфигурационные файлы (boot/config.txt), либо запустить raspi-config и отключить сбойные опции.

4) Чистка системы.

Удалите кеш пакетов:
sudo apt-get clean
Удалите осиротевшие пакеты:
sudo apt-get autoremove
Обновите список пакетов:
sudo apt-get update
Исправьте зависимости:
sudo apt-get -f install
Переустарновите пакет, если установка пакета была прервана
sudo apt-get install --reinstall имя_пакета

9. Удаленное управление Raspberry Pi (SSH/VNC)



Как и любой Unix-системой, Raspberry Pi можно управлять удаленно несколькими способами.
Самый простой - управление в консоли по протоколу SSH. Чтобы это стало возможным, необходимо зайти в настройки Raspberry Pi (sudo raspi-config), выбрать пункт меню "Interfacing options", в следующем окне выбрать пункт "SSH" и подтвердить включение сервера SSH при запуске. Рекомендуется сразу поменять пароль по умолчанию пользователя "pi" с "raspberry" на какой-нибудь другой, содержащий не менее 8 символов в английской раскладке.
Затем можно скачать на другом компьютере бесплатный SSH-клиент PuTTY , запусить его и ввести в строку "Host Name (or IP address)" локальный IP-адрес Raspberry Pi. В консоли появится запрос на логина, а за ним - пароля. Если все введено верно, появится приветствие Raspberry Pi и зеленый курсор ввода команд. Через SSH-терминал можно устанавливать и удалять программы, копировать, перемещать и удалять файлы, исполнять консольные команды системы и скрипты (BASH, Python, Perl...), работать с конфигурационными файлами Raspberry Pi. Словом, делать все многообразие операций, доступных в консоли Unix-систем. Многие вещи удобнее делать в консольных редакторах типа файл-менеджера MC, которые также работают через SSH-терминал.
Помимо терминального доступа к консоли, в Raspberry Pi встроена возможность полноценного управления в графическом интерфейсе. Для этого на Raspberry Pi предустановлена бесплатная версия VNC-сервера. Включить его автозапуск можно там-же, где до этого мы включили SSH-сервер. Надо выбрать следующий пункт меню "Iinterfacing options" - "VNC" и подтвердить влючение сервера. Для полноценного доступа к Raspberry Pi необходимо будет скачать бесплатный VNC-viewer , запустить его, и также как в случае с SSH ввести локальный IP-адрес Raspberry Pi. Пройдя процедуру авторизации, вы попадете на Raspberry Pi, как если бы находились перед подключенным к нему дисплеем, нажимали на клавиатуру и кликали мышью. Скорость работы в VNC-клиенте лишь немного медленнее, чем на самом Raspberry Pi. Меню открываются почти с той же скоростью, только графические файлы при открытии прорисовываются не мгновенно, с неболшой задержкой в доли секунды.
При удаленном подключении к Raspberry Pi по SSH и VNC необходимо только, чтобы устройство было подключено к локальной сети и сети питания. Клавиатура, мышь и монитор при этом могут быть и не подключены к Raspberry Pi . Это удобно в случае настройки "малинки" в качестве веб-сервера, или сервера IoT (сервера управления датчиками "умного дома").

К слову, по умолчанию размеры виртуального экрана в VNC слишком малы - всего 640х480 пикселей. Приведу мой маленький "хак" по настройке комфортного разрешения экрана (1024х768) при удаленном подключении по VNC:

Откроем для редактирования файл конфиргурации Raspberry Pi:
sudo nano /boot/config.txt
Раскоментируем (удалим слева символ #) и слегка подправим следующие строки:
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=16

10. Установка комплекта ПО интернет-разработчика LAMP

Поскольку не только я считаю, что за интернетом - будущее, на компьютере юного программиста должен быть установлен пакет программ, обеспечивающийх возможность обучения основам интернет-программирования, создания и администрирования вебсайтов. Общепризнанным стандартом среды интернет-разработчика в ОС Linux является комплект программ, стостояший из вебсервера Apache, СУДБ MySQL и языка программирования PHP (LAMP). Для удобства администрирования баз данных также рекомендуют установить ПО PHPMyAdmin (все программы распространяются бесплатно). Следуя пошаговым инструкциям с офсайта Raspberry Pi , за полчаса LAMP и самая популярная система управления сайтами (CMS) Wordpress были установлены на "малинку" и настроены для работы. Привожу пошаговую инструкцию с пояснениями, чтобы у вас этот процесс не занял больше времени, чем у меня.


1. Установка сервера Apache2 (<1 мин)
sudo apt-get install apache2 -y
Проверка работы Apache
links2 http://192.168.0.100
Просмотр папки сайта
cd /var/www/html
ls -al

2. Установка PHP 5 (1 мин)
sudo apt-get install php5 libapache2-mod-php5 -y
sudo service apache2 restart
Создание тестовой страницы
sudo rm index.html
sudo nano index.php

Проверка работы PHP
links2 http://192.168.0.100

3. Установка mysql 5 (3 мин)
sudo apt-get install mysql-server php5-mysql -y
sudo service apache2 restart

Присвоение прав пользователю Apache
sudo chown -R www-data: .

Создание базы MySQL
mysql -uroot -ppassword
mysql> create database wordpress;

Включение Apache mod rewrite
sudo a2enmod rewrite

Включение возможности указывать настройки в.htaccess
sudo nano /etc/apache2/sites-available/000-default.c onf

Добавим следующий код

< VirtualHost *:80 >
< Directory "/var/www/html" >
AllowOverride All
< /Directory >

4. Установка PHPMyAdmin (3 мин)
sudo apt-get install phpmyadmin

5. Установка Wordpress

Скачивание Wordpress

cd /var/www/html/

Распаковка Wordpress

sudo tar xzf wordpress-4.7.2-ru_RU.tar.gz

sudo mv wordpress/* .

sudo rm -rf wordpress-4.7.2-ru_RU.tar.gz

Установка и настройка Wordpress
Заходим в броузере по вашему текущему адресу, например http://192.168.0.100 , либо по адресу http://localhost .
В соответствующих полях указываем имя, адрес (localhost), логин и пароль пользователя созданой вами ранее базы данных, название сайта, логин и пароль администратора сайта (не используйте простые имена типа "root" и "admin", придумайте пароль не короче 8 символов, содержащий цифры и буквы в разных регистрах), а также ваш e-mail.
Через несколько секунд после подрвеждения ввода данных Wordpress установится и уже будет готов к работе! Комплекты необходимых плагинов, таких как cyr3lat, wp-edit, hyper-cache, wp-db-backup и т.п., можно установить позже, просто введя их названия в форме поиска страницы Plugins консоли Администратора Wordpress.
Теперь Raspberry Pi готов стать домашним веб-сервером интернет-разработчика.

11. Знакомство с языком Python

Объектно-ориентированный интерпретируемый язык программирования Python появился в конце 80-начале 90х годов в центре математики и информатики в Нидерландах благодаря усилиям Гвидо ван Россума.
Изначально язык был ориентирован на повышение производительности разработчика и читаемости кода.
Python характеризуется минималистичным синтаксисом при высокой функциональности, поддерживает все основные парадигмы программирования, поддерживает динамическую типизацию, автоматическое управление памятью, обработку исключений, многопоточность вычислений, модульность.
В настоящее время Python активно используется как универсальная среда для научных расчётов. Во многих популярных программах трёхмерной графики, таких как Blender, язык Python используется для расширения стандартных возможностей программ.
Python используется во многих крупных компаниях, таких как Dropbox, Google, Facebook, Instagram.
Особенностью синтаксиса языка Python является выделение блоков кода с помощью отступов, поэтому в Python отсутствуют операторные скобки begin/end и фигурные скобки. Также в Python отсутствую явные завершающие символы конца строк, такие «;» как в Perl.
Одной из привлекательных сторон Python стала богатая библиотека стандартных модулей. Помимо стандартной библиотеки существует огромное множество прикладных библиотек для Python в самых разных областях. Для Python созданы программные каркасы для разработки веб-приложений, самым популярным из которых является Django.
С Python поставляется библиотека tkinter для создания кроссплатформенных программ с графическим интерфейсом. Также для Python существуют расширения для всех основных библиотек графических интерфейсов.
Существуют расширения Python для создания игр (Pygame), работы с мультимедиа, 3D-моделирования, обработки графики, построения графиков, астрономических вычислений (Astropy).
Установка и обновление пакетов для Python осуществляется через интерфейс PyPI (Python Package Index). Модули задействуются в начале программ командой import.
Изначально Python предполагался в качестве основного языка программирования на Raspberry Pi. Не случайно devboard имеет символическое окончание «Pi» в названии.
Для работы с внешними датчиками, подключаемыми к Raspberry Pi для Python написаны и предустановлены в Rasbian несколько библиотек, таких как RPi.GPIO.
Вместе с Python на Raspberry Pi предустанавливаются стандартный интерфейс разработки и тестирования приложений IDLE и удобный редактор Geany.
В Интернет имеется масса руководств по знакомству с языком Python и готовых примеров для создания IoT-приложений на Raspberry Pi, понятных даже школьникам младших классов.
Надо учитывать, что большинство примеров в Интернет написаны для версии Python 2.х, не совместимой с 3.Х Поэтому, на Raspberry Pi предустановлены обе версии Python. Также вместе с Python 3.Х поставляется программа (скрипт) «2to3», конвертирующая код с версии 2.х в 3.Х.

В итоге, прочитав за выходные пару онлайн-руководств и одну умную книжку в электронном виде на английском, я написал небольшую программку, подсчитывающую частоту наиболее популярных слов на странице сайта с указанным URL и позже "прикрутил" к ней визуальный интерфейс на основе библиотеки Tkinter. Так легко, быстро и приятно приложения с графическим интерфейсом я еще не создавал...

(Введение в основы языка Python см. и )

12. Работа с Python и GPIO, мигание светодиодом

После знакомства с основами синтаксиса и базового набора команд языка Python, решающим шагом на пути физического компьютинга является решение, вроде бы, простой задачи: «помигать светодиодом».
Именно с этого шага многие школьники, студенты и взрослые «гики» всего мира начинали свой путь в IoT-программировании.
Для этого мне в первую очередь потребовалось приобрести несколько радиодеталей: несколько пар резисторов от 100 до 300Ом (как предлагается в руководствах) и несколько светодиодов разного цвета (я взял красный, синий и белый). В ходе поиска подходящего радиоларька выяснилось, что радиодеталями в моем городе торгует только одна, конкретная точка. Стоимость деталей оказалась невысокой (3-5 рублей за штуку).
При сборе простенькой схемы, состоящей из светодиода и резистора, я обнаружил, что 40-пиновый кабель к моей монтажной плате (breadboard) не маркирован красной полосой по краю, а состоит из разноцветных кабелей. В интернете схемы подключения для такого кабеля к breadboard и Raspberry Pi 3 слету я не нашел. Пришлось открыть схему GPIO и прозванивать контакты кабеля цифровым тестером, чтобы понять, как его подсоединять.
Также оказалось, что «гребенка» для подключения кабеля к breadboard у меня не имеет отводов для вывода на линии питания breadboard, так что пришлось подключить Ground на гребенке к минусу на breadboard.
Собрав схему таким образом, чтобы длинный контакт (+) светодиода был подключен к 21 порту GPIO, а короткий — через резистор сопротивлением в 100 Ом — к «земле» (-), запустил Raspberry Pi 3 и подключился к нему по VNC.
Создал в IDLE3 программу мигания светодиодами flashpi.py, описанную на сайте http://edurobots.ru/ , и сохранил ее в папке /home/pi."
Запустил программу с помощью F5 в IDLE3 (можно также запустить программу командой "sudo python3 flashpi.py" в LXTerminal) и... светодиод не загорелся.
Проверив все контакты и правильность сборки схемы, понял, что дело не в аппаратной, а в программной части системы. Из примера в одной из электронных книжек по Raspberry Pi 3 выяснилось, что вместо команды
GPIO.setmode(GPIO.BOARD) надо инициализировать порты командой GPIO.setmode(GPIO.BCM). После правки кода и запуска программы, вслед за нажатием клавиши Enter светодиод, наконец, загорелся ярким светом!
Повторное нажатие клавиши Enter выключало светодиод. Нажатием любой другой клавиши осуществлялся выход из программы и корректное завершение работы с портами GPIO.
Вот код рабочей программы ("__" заменяем на пробелы - это необходимые отступы в Python):

Из цикла закрытие работы с GPIO

Никогда в жизни я так не радовался горящему светодиоду! Да и давно так не радовался вообще! Как это, надеюсь, рано или поздно сделали 10 миллионов покупателей Raspberry Pi, я таки "помигал светодиодом"! Причем, «помигал» программно!

Заключение - напутствие юным кибернетикам

Надеюсь, что мой долгий, но захватывающий путь длиной в 3 месяца, от решения купить одноплатный компьютер Raspberry Pi 3 до программного «мигания светодиодом», был пройден не зря.
Он познакомил меня с новым миром Unix и физического компьютинга, а заодно подготовил пошаговое руководство для всех, кто хочет войти в него (в первую очередь — для преподавателей школ и старшеклассников) и создал платформу для дальнейшего освоения физического компьютинга, веб-программирования и системного администрирования. На базе Raspberry Pi 3 стоимостью чуть больше 2 т.р. стало возможным создание домашнего вебсервера и мультимедиа-центра, интересных решений по автоматизации выполнения рутинных задач и более сложных IoT-систем, в том числе, решений для концепции «Умный дом».
Лично для меня в мои 43 года было занимательным и полезным приключением осваивать незнакомый мне язык программирования Python и новую, не похожую на распространенные у нас, операционную систему.
Компьютер Raspberry Pi 3, настроенный и проверенный в работе, вместе с breadboard, радиодеталями и комплектом из 16 датчиков я изначально планировал подарить дочке на День рождения для использования в качестве учебного ПК и перспективного исследовательского инструмента в кружке информатики местной гимназии. Договорился с учителем информатики о предоставлению помощи по приобретению и внедрению Raspberry Pi во внеурочных занятиях по информатике среди заинтересованных ребят и олимпиадников. Надеюсь, как и мне, Raspberry Pi даст моей дочери и ребятам в гимназии мощный импульс в учебе и развитии, раскроет новые возможности изменения себя и окружающего мира к лучшему при помощи современных технологий.

Raspberry PI - это устройство имеющее достаточную производительность для того чтобы на его основе могли быть построены роботы способные распознавать образы, выполнять работу людей и прочие подобные устройства для автоматизации и выполнения сложных вычислительных действий. Т.к. тактовая частота процессора Raspberry PI 3 м.б. 1.2 ГГц а его разрядность 32 бита то Raspberry PI 3 значительно превосходит обычное Arduino у которого тактовая частота как правило 16 МГц а разрядность микроконтроллера 8 бит, Arduino безусловно занимает своё место в выполнении операций не требующих большой производительности но когда её уже не хватает Raspberry PI "приходит на помощь" и перекрывает такой большой диапазон возможных применений что можно быть абсолютно уверенным в целесообразности приобретения данного одноплатного компьютера Raspberry PI 3 (можно заказать по ссылке) . Т.к. Raspberry PI - это компьютер то для того чтобы его использовать нужно на него установить операционную систему (хотя существуют обходные пути но всё же лучше и проще установить операционную систему (ос далее)). Существует много ос которые можно установить на Raspberry Pi но одной из самых популярных (для использования с Raspberry Pi), наиболее подходящих для начинающих является ос Raspbian. Для того чтобы установить ос на Raspberry Pi понадобиться micro sd карта с расширителем для того чтобы её можно было вставить в обычный компьютер и записать на неё ос. Sd карта должна иметь не менее 4Гб памяти при установке полной версии Raspbian и не менее 8Гб для установки минимальных версий Raspbian. Минимальные версии могут не иметь (и скорее всего не имеют) графического интерфейса и много всего остального что может считаться лишним и занимает место. Для избежания проблем с отсутствием необходимых файлов, можно поставить полную версию. Можно использовать SD карту 10го класса и с 32Гб памяти (проверено работает (как см. видео ниже)). После приобретения карты памяти её надо вставить в компьютер в соответствующий разъём, после этого посмотреть с какой буквой появился диск в разделе "мой компьютер" и запомнить, потом надо скачать ос с официального сайта https://www.raspberrypi.org/downloads/raspbian/ нажав кнопку "Download ZIP" под "RASPBIAN JESSIE" для скачивания полной версии или под "RASPBIAN JESSIE LITE" для скачивания облегчённой но, для начинающих, лучше выбрать "RASPBIAN JESSIE" т.е. полную версию. После скачивания архива "RASPBIAN JESSIE" его нужно разархивировать, потом скачать программу (или от сюда https://yadi.sk/d/SGGe1lMNs69YQ), установить её, открыть, далее нужно в правом верхнем углу указать букву диска (запомненную ранее), найти разархивированный образ ос

И нажать кнопку "write".

После чего выведется окно с предупреждением и в этом окне надо нажать кнопку "Yes",

После того как запись закончиться и появится окно сообщающее об успешной записи (Write Successful) нужно нажать кнопку "Ok" в этом окне.

Потом закрыть программу, вытащить SD карту безопасным способом и вставить в Raspberry Pi.

Далее можно подключить к Raspberry Pi usb клавиатуру (или ps2 через переходник), usb мышь и монитор или телевизор через hdmi кабель или можно подключить ethernet кабель (но это для опытных пользователей поэтому далее рассмотрим первый вариант). После этого надо подключить питание через micro usb например от зарядного устройства от смартфона. После подключения питания начнётся установка операционной системы. Как правило в новых (на момент написания данной статьи) версиях ос уже настроена возможность связи с Raspberry Pi по SSH и поэтому для того чтобы настроить связь с Raspberry Pi 3 по wifi достаточно настроить только wifi, Для этого в правом верхнем углу экрана есть значёк на который нужно нажать и выбрать wifi,

После чего вписать пароль от данного wifi в появившееся текстовое поле,

После этих действий wifi на Raspberry Pi 3 будет настроен и дальше можно будет не используя провода программировать Raspberry Pi 3 удалённо по wifi. После настройки Raspberry Pi 3 можно выключить вписав в командной строке (в программе LXTerminal которую можно открыть двойным кликом по иконке программы) команду sudo halt или нажав соответствующие кнопки выключения в графическом режиме, после окончательного выключения можно отключить питание и при следующей подаче питания Raspberry Pi 3 включиться с wifi. Теперь чтобы программировать Raspberry Pi 3 по wifi нужно выяснить какой у него ip адрес. Для того чтобы это сделать надо подать питание на Raspberry Pi 3, дождаться окончания загрузки ос, зайти в веб интерфейс маршрутизатора (вписав в строке браузера 192.168.1.1 или то что надо для входа в веб интерфейс, ввести логин и пароль), найти вкладку DHCP Leases или что то подобное, найти там строку с raspberry и ip адрес Raspberry Pi 3.

Далее нужно открыть программу PuTTY (если её нет то перед этим скачать (или ) и установить) поставить порт 22, соединение по SSH, вписать в поле "Host Name (or IP Adress)" ip адрес Raspberry Pi 3,

После чего нажать кнопку "Open" внизу окна, далее появиться чёрное окно с предложением ввести логин. По умолчанию логин "pi" - его надо ввести и нажать enter. Далее надо ввести пароль, по умолчанию "raspberry". При вводе пароля он не отображается - это нормально. После того как пароль введён невидимыми буквами нужно нажать enter и если всё было сделано правильно то мы получим доступ к Raspberry Pi 3 если нет то нужно повторить действия. После того как получен доступ к Raspberry Pi 3 можно его программировать, для начала нужно войти в папку "pi" для этого надо вписать команду

И нажать enter (после cd обязательно пробел).
Теперь можно открыть текстовый редактор nano. Nano - это специальный текстовый редактор который есть на большинстве ос на подобии Linux и в котором можно написать программу для Raspberry Pi. Для открытия этого редактора и одновременно с этим создания файла с названием "first" и расширением "py" нужно вписать команду

И нажать enter. Откроется редактор nano и можно заметь что его интерфейс немного отличается но в основном - это то же чёрное поле в которое надо вписывать команды. Т.к. мы хотим управлять портами ввода вывода общего (GPIO) то прежде чем запустить программу по управлению этими портами, нужно подключить к ним какое нибудь устройство чтобы можно было видеть что управление получилось. Надо также отметить что пины настроенные как выходы у Raspberry Pi могут выдавать очень небольшой ток (предполагаю что до 25мА) и учитывая что Raspberry Pi это всё таки не самое дешёвое устройство то настоятельно рекомендуется позаботиться от том чтобы нагрузка на выводы не была слишком большой. Маломощные индикаторные светодиоды, как правило, могут использоваться с Raspberry Pi т.к. им для того чтобы светиться достаточно небольшого тока. Для первого раза можно сделать приспособление с разъёмом, двумя встречно параллельно включёнными светодиодами и резистором с сопротивлением 220Ом включённым последовательно со светодиодами. Т.к. сопротивление резистора 220Ом, ток обязательно проходит через этот резистор и нет параллельных путей его прохода, напряжение на выводах 3.3В то ток не будет больше чем 3.3/220=0.015А=15мА. Подключить это можно к свободным GPIO например к 5 и 13 как на схеме

(распиновка взята с https://en.wikipedia.org/wiki/Raspberry_Pi), выглядеть это может примерно так:

После того как всё аккуратно и правильно подключено и есть уверенность в том что ничего не сгорит можно скопировать в редактор NANO первую простенькую программу на языке Python

Import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(5, GPIO.OUT)
GPIO.output(13, True)
GPIO.output(5, False)
time.sleep(1)
GPIO.output(13, False)
GPIO.output(5, True)
time.sleep(1)
GPIO.output(13, True)
GPIO.output(5, False)
time.sleep(1)
GPIO.output(13, False)
GPIO.output(5, True)
time.sleep(1)
GPIO.output(13, True)
GPIO.output(5, False)
time.sleep(1)
GPIO.output(13, False)
GPIO.output(5, True)
time.sleep(1)
GPIO.cleanup()

Потом нажать

После выхода из редактора NANO можно ввести команду

Sudo python first.py

После чего светодиоды помигают некоторое количество раз. Т.е. получилось управлять портами ввода вывода общего назначения по wifi! Теперь давайте рассмотрим программу и выясним как это получилось.
Строка:

Import RPi.GPIO as GPIO

Это подключение библиотеки "GPIO" для управления выводами.
Строка:

Это подключение библиотеки "time" для задержек.
Далее идёт установка режима GPIO:

GPIO.setmode(GPIO.BCM)

Конфигурация выводов 5 и 13 как выходы:

GPIO.setup(13, GPIO.OUT)
GPIO.setup(5, GPIO.OUT)

Установка логической единицы на выводе 13, установка логического нуля на выводе 5:

GPIO.output(13, True)
GPIO.output(5, False)

Задержка

Установка логического нуля на выводе 13, установка логической единицы на выводе 5:

GPIO.output(13, False)
GPIO.output(5, True)

Переводит все выводы в исходное состояние и программа завершается. Т.о. можно управлять любыми свободными пинами по wifi и если сделать питание 5В от аккумулятора то уже можно сделать какого нибудь автономного робота или устройство не привязанное проводами к чему либо стационарному. Язык программирования Python (питон) отличается от си подобных языков, например вместо точки с запятой, для завершения команды, в питоне используется перевод строки, вместо фигурных скобок используется отступ от левого края который делается клавишей Tab. В общем Python это очень интересный язык на котором получается легко читаемый простой код. После того как работа (или игра) с Raspberry PI 3 закончена можно его выключить командой

И после полного выключения убрать питание. При подаче питания Raspberry PI 3 включается и с ним снова можно работать (или играть). Заказать Raspberry pi 3 можно по ссылке http://ali.pub/91xb2 . О том как делается настройка Raspberry PI 3 и управление его пинами можно посмотреть на видео:

После успешного мигания светодиодами можно приступить к полномасштабному изучению данного компьютера и созданию проектов используя возможностями Raspberry PI 3 которые ограничены лишь вашим воображением!

Сегодня четвертый урок, на котором мы поработаем с портами GPIO, в частности помигаем светодиодом в разных режимах.

Урок ориентирован на начинающих пользователей и представлен в текстовом и видео-форматах.

Видео четвертого урока:

Для урока нам понадобится:

  • плата 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.output(7, 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 для начинающих закончен, продолжение следует!

В 2011 году одноплатный компьютер Raspberry Pi был выпущен для тех, кто устал искать готовые решения и решил творить технологическое окружение самостоятельно. В то время как Arduino – это игрушка в большей степени для любителей работать руками, «малиновый» продукт – разминка мозга для программистов.

Всего за 6 лет под Raspberry были адаптированы почти все популярные языки программирования. Какие-то имеют существенные ограничения, какие-то работают на полную катушку. Рассмотрим 9 представителей второй категории.

Scratch

Официальный сайт предлагает пользователям Raspberry первый делом обратиться к Scratch. Исходники языка уже включены в стандартную операционную систему Raspbian. Начать создание IoT с помощью Scratch может как взрослый специалист, так и совсем ещё ребёнок. Недаром он всего за 10 лет выбился в топ-20 языков по числу запросов в поисковиках.

Python

Возможно для вас это будет сюрпризом, но Pi в названии – это не математическая константа, а отсылка к Python. IDLE, стандартная среда разработки программ на Raspberry, работает как раз на змеином языке. На официальном сайте в разделе документация вы найдёте базовое руководство . Кроме того, благодаря Python Games и их исходникам, вы познакомитесь с возможностями языка.

HTML5 и CSS3

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

JavaScript

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

Java

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

С

Так как Raspbian – ОС на базе Unix, в качестве базового языка здесь выступает С. С его помощью вы получите максимальную производительность без использования машинных команд. Это особенно важно для серверных систем в составе IoT. Надмножество языка, Objective-C, используется для написания приложений для iPhone и iPad, что также может пригодиться вам с «малиной».

C++

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

Perl

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

Erlang

Erlang - язык программирования для создания сложных систем. Допустим вы разрабатываете на своем одноплатном друге атомную электростанцию или нейронно-вычислительную сеть. C++ или другой прикладной язык не подойдёт. А вот Erlang позволит вам минимизировать ошибки и извлечь максимум возможностей из Raspberry Pi. Конечно, если вы дорастете до этого уровня.

Как вы поняли, язык разработки для Rasberry Pi имеет третьестепенное значение. Выбор зависит от вкусовых предпочтений, от типа решаемой задачи и вашего опыта. А значит, Rasberry Pi станет вашим верным спутником в программировании, какой бы путь вы ни выбрали.




Top