Меню Рубрики

Raspberry pi 3 model b программирование

Содержание

Самое интересное в разработке на Одноплатных компьютерах — это общение с внешним миром. Вот что позволяет «Малина» — это подключение датчиков, концевиков, двигателей, лампочек, различных исполнительных органов. В Raspberry Pi GPIO является самой привлекательной частью. Я считаю, что для роботов это просто идеальные «мозги».

Из этой статьи вы узнаете:

Приветствую вас, друзья!! Сегодняшняя тема статьи будет посвящена физическим входам и выходам на одноплатном компьютере Raspberry. Именно этим «Малина» и заслужила такую недетскую популярность. Очень много различных модулей сделано для Raspberry, и разрабатываются всё новые и новые.

Что можно подключить? Да все те же датчики и дополнительные платы, что и на Arduino. На борту есть два интерфейса, таких как SPI и I2C, по которым можно управлять электроникой. Можно сравнить с протоколом Modbus в системе ПЛК — модули ввода/вывода.

Недавно я научился управлять входами и выходами с помощью скриптов на Python. Показать как?

Знакомство с GPIO

Про старые модели, я так думаю, нет смысла писать. Начнём сразу с 3-ей модели. Давайте разбираться, что такое вообще GPIO.

Аббревиатура GPIO с английского расшифровывается как: General-purpose Input/Output — это интерфейс. который содержит Входы и Выходы общего назначения, к которым можно подключать разнообразные исполнительные устройства, датчики, дисплеи, контроллеры, разные модули и разную периферию.

Интерфейс GPIO выглядит как разъём со штырьками. в третьей «Малине» будет выглядеть следующим образом:

Где какой пин? А вот где они:

На картинке нарисована модель Raspberry Pi 2 model B, не пугайтесь, распиновка одна и та же.

Обратите внимание, что все пины могут быть как ВХОДАМИ, так и ВЫХОДАМИ. Присвоение функции пина происходит программно.

Распиновка Raspberry pi 3:

Некоторые из них являются многофункциональными, кроме входов/выходов могут выполнять функцию ШИМа, интерфейса SPI , I2C или UART.

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

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

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

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

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

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

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

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

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

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

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

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

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

Такая схема с ограничительными резисторами — это гарантия сохранения работоспособности «Малины» в различных ситуациях.

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

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

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

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

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

Программируем GPIO

Работать с GPIO можно двумя способами:

  1. Используя оболочку bash и файловую систему.
  2. Используя языки программирования.

Управление GPIO из оболочки bash

ОС Raspbian является дистрибутивом Linux, а концепция Linux представляет собой работу с текстовыми файлами, и конфигурирование этих файлов. Пользуемся оболочкой bash в любимом терминале.


Raspberry PI 3 Model B+

В этом мануале мы разберем основы использования Swift на Raspberry Pi. Raspberry Pi — небольшой и недорогой одноплатный компьютер, потенциал которого ограничен лишь его вычислительными ресурсами. Он хорошо известен техногикам и любителям DIY. Это отличное устройство для тех, кому нужно поэкспериментировать с идеей или проверить на практике определенную концепцию. Он применяется для самых разных проектов, легко помещается практически в любом месте — например, его можно смонтировать на крышке монитора и использовать в качестве десктопа, или подключить к макетной доске для управления электронной схемой.

Официальный язык программирования «малинки» — Python. Хотя Python достаточно прост в использовании, ему не хватает типобезопасности, плюс он потребляет много памяти. Swift, напротив, имеет ARC-управление памятью и почти в 8 раз быстрее Python. Ну а поскольку объем ОЗУ и вычислительные возможности процессора Raspberry Pi ограничены, использование языка вроде Swift позволяет максимально использовать потенциал железа этого мини-ПК.

Установка ОС

Прежде чем устанавливать Swift, нужно выбрать ОС. Для этого можно воспользоваться одним из вариантов, предлагаемых сторонними разработчиками. Наиболее обычный выбор — Raspbian, официальная ОС от Raspberry Pi. Есть несколько возможностей установить Raspbian на SD-карту; в нашем случае мы воспользуемся balenaEtcher. Вот что нужно делать:

  • Загружаем последнюю версию Raspbian OS отсюда.
  • Форматируем SD-карту в FAT при помощи Disk Utility.
  • Используем balenaEtcher для заливки на отформатированную карту.


Шаг второй: форматируем SD-карту в MS-DOS (FAT)


Шаг третий: используем balenaEtcher для заливки Raspbian на карту

Рекомендуем бесплатный интенсив по машинному обучению для начинающих:
Пишем первую модель машинного обучения за три дня — 2-4 сентября. Бесплатный интенсив, который позволяет разобраться в том, что такое Machine Learning и научиться работать с открытыми данными из интернета. Также учимся предсказывать курс доллара при помощи самостоятельно разработанной модели.

Настройка Raspberry Pi

Полпути уже пройдено! Теперь у нас есть SD-карта с ОС, которую мы будем использовать, но операционную систему еще предстоит установить. Для этого есть две возможности:

  • Использовать подключенные к устройству монитор, клавиатуру и мышь.
  • Сделать все с другого ПК по SSH или с использованием кабеля USB Console.

Если это ваш первый опыт работы с Pi, рекомендую опцию №1. После того как SD-карта с Raspbian OS вставлена в Pi, подключите HDMI-кабель, мышь, клавиатуру и кабель питания.

Читайте также:  Газовая плита deluxe evolution инструкция температура духовки

Pi должна загрузиться при включении. Поздравляю! Теперь вы можете потратить немного времени на изучение своего десктопа и его возможностей.

Установка Swift

Для того чтобы установить Swift на «малинку», нужно подключить ее к интернету (при помощи Ethernet или WiFi, в зависимости от модели платы). Как только интернет подключен, можно начинать установку Swift.

Ее можно выполнить двумя способами. Первый — самостоятельное создание билда Swift, второй — использовать уже скомпилированные бинарники. Я настойчиво рекомендую второй способ, поскольку первый потребует нескольких дней подготовки. Второй способ появился благодаря группе Swift-ARM. Ей принадлежит репо, с которого можно установить Swift, используя apt (Advanced Package Tool).

Это инструмент командной строки, нечто вроде App Store для приложений и пакетов для устройств с Linux. Работу с apt начинаем, введя в терминале apt-get. Далее нужно указать ряд команд, которые уточнят выполняемую задачу. В нашем случае требуется установить Swift 5.0.2. Соответствующие пакеты можно найти здесь.

Что ж, начнем. Теперь, когда мы знаем, что будем устанавливать Swift при помощи apt, нужно добавить репо в список репозиториев.

Команда добавления/установки репо swift-arm выглядит так:

Далее устанавливаем Swift из добавленного репо:

Вот и все! Теперь Swift установлен на нашей «малинке».

Создание тестового проекта

На данный момент Swift REPL не работает, но все остальное — да. Для теста давайте создадим Swift-пакет при помощи Swift Package Manager.

Сначала создаем директорию с именем MyFirstProject.

Далее изменяем текущую рабочую директорию на свежесозданную MyFirstProject.

Создаем новый исполняемый пакет Swift.

Эти три строки создают пустой пакет Swift, который называется MyFirstProject. Для его запуска вбиваем команду swift run.

Как только компилирование завершено, мы увидим фразу «Hello, world!» в командной строке.

После того как мы создали первую программу на Pi, давайте кое что изменим. В директории MyFirstProject внесем изменения в файл main.swift. В нем содержится код, исполняющийся, когда мы запускаем пакет командой swift run.

Меняем директорию на Sources/MyFirstProject.

Редактируем файл main.swift, используя встроенный nano-редактор.

Как только редактор открыт, вы сможете изменять код своей программы. Давайте заменим содержимое файла main.swift вот этим:

Разумеется, вы можете вставить свое имя. Для сохранения изменений нужно выполнить такие действия:

  • CTRL+X для сохранения файла.
  • Подтверждаем изменения нажатием «Y».
  • Подтверждаем внесение изменения в файл main.swift нажатием Enter.

Все изменения внесены, теперь самое время перезапустить программу.

Поздравляю! Как только код скомпилирован, терминал должен показать измененную строку.

Теперь, когда Swift установлен, вам есть чем заняться. Так, для управления железом, например, светодиодами, сервоприводами, реле, вы можете воспользоваться библиотекой «железных» проектов для плат Linux/ARM, которая называется SwiftyGPIO.

Удачи в экспериментах со Swift на Raspberry Pi!

К 2017 г. продано 12,5 млн. единиц Raspberry Pi , а количество оригинальных проектов, созданных на его основе, исчисляется десятками тысяч. По состоянию на 2019 г. популярность устройства не снижается, разработчик выпускает обновленные версии с актуальным железом, а база проектов регулярно пополняется интересными новинками.

Какой язык выбрать для Raspberry Pi

Это устройство напоминает Ардуино, но с уклоном в программирование. Если Arduino больше подходит для любителей поработать руками, то Raspberry Pi в большей степени – головоломка для мозга. На Хабре, да и на сайте разработчиков полно интересных проектов, основу которых составляет именно «малина». Это и датчики разного типа, и роботы, и аналоги планшетов (iPad, конечно, не заменит, но эксперимент отличный). Из ограничений здесь – только ваша фантазия и скилл в программировании.

Популярность сделала свое дело – под Raspberry Pi адаптированы практически все популярные языки программирования. КПД у всех разный и сегодня мы предлагаем не концентрироваться на каком-то одном проекте, а коротко пройтись по языкам, пригодным для работы с «малиной».

Scratch

Один из основных языков Raspberry Pi. Создавался как язык для детей, а его разработчики использовали принцип конструктора Лего. Создание программы на Scratch напоминает составление блок-схемы. Программы состоят из отдельных графических блоков, каждый подписан, в числе поддерживаемых есть и русский язык.

Читайте также:  Maunfeld mpa 60 нержавейка

Подходит для первых шагов в освоении IoT. Язык набирает популярность, а его исходники включены в Raspbian.

Один из базовых языков для работы с «малиной». Если ваш проект предполагает работу с серверными системами, например, в составе IoT, то C – идеальный выбор. Он позволяет отказаться от машинных команд и вывести производительность на максимум. Сама Raspbian – Unix система и C в ней базовый язык.

Если проект предусматривает работу с «яблочными устройствами», придется использовать Objective-C. Но и это проблемой не станет, компилятор без проблем понимает обычный C код.

Создавая проекты на Raspberry Pi работать придется в 2 направлениях:

  • непосредственно с железом;
  • настроить схему взаимодействия разных устройств.

С++ подходит под обе задачи. Язык обеспечивает безопасность, надежность и скорость работы – то, что нужно для Raspberry Pi.

Если выберете этот язык, то работать придется по такой схеме:

  • сперва пишется и отлаживается код на «настольной» ОС;
  • затем она переносится в Raspbian.

Создавать код сразу на Raspbian будет сложно, пока что полноценную среду для этого не создали. Критическим недостатком это назвать нельзя, концепция Java (возможность запуска на любой платформе) позволяет создавать приложения для «малины» без ограничения функционала.

JavaScript

Изначально создавался как «язык для непрограммистов». Нечто, обладающее функционалом Java, но с более низким входным порогом. Задача решена, и мы получили легкий и функциональный язык для создания веб- и десктопных приложений. В работе пригодится платформа Node JS и сторонние библиотеки, в частности jQuery.

Python

Отсылка к этому языку скрыта в названии самого устройства, Pi указывает именно на Python. Для новичков этот язык – идеальный старт. Его синтаксис несложный, код получается простой и удобочитаемый, используются стандартные английские слова, запомнить их несложно.

Даже среда разработки на Raspberry Pi (IDLE) работает на этом языке. На сайте разработчиков есть развернутое руководство по Python, также в сети полно исходников по Python Games.

Языку уже больше 30 лет, и он до сих пор востребован. Из особенностей отметим громадное количество модулей CPAN и возможности по работе с текстом. Лучше всего Perl характеризует его символ – верблюд. Код получается может и не слишком красивым, зато он надежен и подходит для решения сложных задач.

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

CSS3 и HTML5

Эту связку рекомендуем тем, кто решил на основе «малины» создать виртуальную оболочку для смарт дома (Raspberry Pi подходит не только для развлекательных проектов). В Raspberry Pi встроен браузер Epiphany, значит нам необходим веб язык. Решение таких задач с помощью CSS3 и HTML5 максимально экономичное и быстрое.

Erlang

Компания Ericsson создавала его для создания сложных распределенных вычислительных систем. Применяется главным образом для решения нетривиальных задач в духе создания параллельных высоконагруженных распределенных систем (телекоммуникационная сфера), масштабирующихся распределенных баз данных.

Прикладной язык с такими задачами не справится, но Erlang может. В случае с «малиной» подойдет только людям со стажем в программировании.

Заключение

Выбор языка для работы с Raspberry Pi должен проводиться с учетом того, какую задачу собираетесь решить. Для детской игрушки нелогично будет использовать Erlang, для умного дома лучше выбрать CSS3+HTML, чем Scratch. В остальном перед вами полная свобода действий, никто не загоняет вас в жесткие рамки. Занимайтесь творчеством, прокачивайте скилл в программировании и обязательно делитесь результатами своих экспериментов с Raspberry Pi.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *