""

Использование gpio выводов raspberry pi

Содержание

Проекты Raspberry Pi на Python с GPIO

В этой статье мы поговорим о том, как подключать к Raspberry Pi датчики и другие внешние устройства через GPIO порты платы. Для работы будем использовать Python и библиотеки. Если вы новичок в работе с распбери, рекомендуем прочитать статью об установке Python и библиотек для Raspberry Pi.

Подключение внешних устройств к Raspberry Pi

Отличие Raspberry Pi от Arduino

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

Из основных отличий можно выделить тактовую частоту – Raspberry работает в 40 раз быстрее Ардуино, и объем оперативной памяти – у Raspberry памяти больше примерно в 128000 раз. За счет простоты управления и использования разрабатывать аппаратные проекты на Ардуино предпочтительнее. Ардуино может работать с любыми датчиками или чипами, а Raspberry Pi не такая гибкая, для работы с датчиками требуются дополнительные аппаратные устройства. Raspberry Pi очень требовательна к питанию, напряжение должно быть строго 5 В на входе, в то время как для ардуино рекомендуемое питание 7-12 В, которое стабилизируется до 5 В.

Важное отличие заключается в среде, в которой пишется программа. С Arduino IDE работать намного проще, чем с Linux. Установка библиотек для написания программы требуется для обеих систем, но код на Ардуино будет написан проще и короче.

Raspberry Pi возможно использовать в режиме многозадачности, как обычный компьютер. Одновременно может работать несколько программ в фоновом режиме.

Для расширения возможностей можно совместно использовать обе платы. Для управления датчиками и сенсорами использовать Ардуино, а сложные вычислительные задачи оставить для Raspberry Pi.

Описание GPIO

Количество портов в более старых и новых моделях Raspberry Pi отличается –model A и model B оснащены 26 выводами общего назначения GPIO, в следующих версиях количество выводов увеличено до 40.

Существует несколько видов обозначений выводов:

  • BCM – нумеруются выходы микропроцессора Broadcom. Используются при работе со специальными пакетами Rpi.GPIO. В большом количестве проектов используется именно эта нумерация.
  • WiringPi – нумеруются контакты для пакета Wiring Pi. Это библиотека, похожая на библиотеки для Ардуино, для работы с GPIO контактами.
  • Обычная цифровая нумерация выходов на самой плате.

Расположение контактов изображено на рисунке. На картинке для удобства последние 14 контактов отделены – это и есть новые выходы, которые были добавлены в новых версиях платы.

Описание контактов GPIO

Номер выводаBCMWiringPiОписание контакта
13v3Питающий контакт на 3,3В
25vПитающий контакт на 5 В
3BCM28SDA
45vПитающий контакт на 5 В
5BCM39SCL
6GNDЗемля
7BCM47GPCLK0
8BCM1415TXD – отвечает за передачу данных
9GNDЗемля
10BCM1516RXD – отвечает за прием данных
11BCM17Вывод общего назначения
12BCM181PCM_C – используется в сочетании с ШИМ-методом.
13BCM272Контакт общего назначения
14GNDЗемля
15BCM223Контакт общего назначения
16BCM234Контакт общего назначения
173V3Питающее напряжение 3,3В
18BCM245Контакт общего назначения
19BCM1012MOSI
20GNDЗемля
21BCM913MISO
22BCM256Контакт общего назначения
23BCM1114SCLK
24BCM810CS0
25GNDЗемля
26BCM711CS1
27BCM030ID_SD
28BCM131ID_SD
29BCM521Контакт общего назначения
30GNDЗемля
31BCM622Контакт общего назначения
32BCM1226Контакт общего назначения
33BCM1323Контакт общего назначения
34GNDЗемля
35BCM1924MISO
36BCM1627Контакт общего назначения
37BCM2625Контакт общего назначения
38BCM2028MOSI
39GNDЗемля
40BCM2129SCLK

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

Среди выводов общего назначения имеются UART-контакты (на восьмом и десятом контактах). Они позволяют обеспечить взаимодействие Ардуино и Raspberry Pi. Также 4 вывода поддерживают I2C, главной задачей которых является коммуникация с периферией. Для верификации в коде нужно добавить строки

sudo apt-get install i2c-tools

sudo i2cdetect -y 1

Для осуществления доступа к I2C нужно подключить библиотеку smbus.

SPIподдерживают 11 выводов общего назначения. С помощью этого интерфейса можно настроить подключение нескольких устройств с помощью одной группы контактов.

Пример проекта: мигание светодиодов

Для работы понадобятся плата Raspberry Pi, светодиод, резистор на 200 Ом и соединительные провода. Анод светодиода (длинная ножка) нужно подключить через резистор к одному из цифровых выводов, например GPIO24, катод (короткая ножка) – к земле. Макет подключения представлен на рисунке. Резистор в данной схеме нужен для того, чтобы уберечь светодиод от перегорания. Выбрать правильный номинал можно пользуясь законом Ома R=U/I. Плата работает от напряжения 3,3В. Номинал, который будет получен по формуле – минимальный, можно выбирать сопротивление больше, но в этом случае яркость светодиода будет несколько ниже.

Теперь нужно написать программу. Код будет написан в установленной версии Python 2. Для этого нужно открыть среду Python 2 (IDLE) и нажать «новый файл».

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

Сам код выглядит следующим образом:

from RPi import GPIO

from time import sleep //первые 2 строки включают библиотеки для совместной работы с GPIO и sleep

GPIO.setmode(GPIO.BCM) //этой строкой выбирается нумерация контактов

GPIO.setup(24, GPIO.OUT) //чтобы управлять светодиодом или другим устройством, нужно задать OUT. Для того чтобы считывать сигнал сенсора, нужно ввести IN.

GPIO.output(24, True) //подача истины на контакты

sleep(10) //светодиод загорается на 10 секунд, ожидание

GPIO.cleanup() //сброс всех настроек портов, чтобы они не мешали следующей программе.

Нужно нажать запуск программы с помощью F5 или меню Run/Run Module.

Код можно немного изменить, чтобы светодиод включался и выключался с определенной частотой. Для этого нужно добавить оператор while вместо строк GPIO.output и Sleep.В цикле нужно задать частоту, с которой будет мигать светодиод. В данном случае он будет мигать раз в 1 секунду.

Большим недостатком такой программы будет то, что она будет повторяться бесконечно и остановить штатным методом ее будет невозможно. Для этого нужно ввести дополнительно конструкцию, прерывающую работу при наборе на клавиатуре комбинации Ctrl+C.

Читайте также:  Блок питания с автоматическим зарядным устройством на компараторе

print ‘program stop’

Программу нужно сохранить, нажав ctrl+S. Затем нужно нажать F5, светодиод начнет мигать с периодичностью раз в секунду. Чтобы остановить выполнение программы, нужно нажать ctrl+C.

Выводы

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

Меняем MAC адрес на OnePlus One

Пытаясь поменять MAC адрес у Wi-Fi на своем OnePlus One, я перепробовал почти все приложения, доступные в Google Play, однако ни одно из них не работало: сообщалось об успешном изменении адреса, но, на самом деле, ничего не происходило. В итоге нашелся способ, который требует права root, но зато работает без каких-либо нареканий:

  1. [в первый раз] Открываем “Настройки” — “Wi-Fi” — “Дополнительные функции” (в верхнем меню) и отключаем функцию “Всегда искать сети”.
  2. При помощи любого файловогоменеджера, поддерживающего работу с правами root, открываем файл
  3. В этом файле содержится текущий MAC адрес Wi-Fi, который нам нужно изменить. Просто редактируем MAC и сохраняем изменения.
  4. Выключаем и обратно включаем Wi-Fi в настройках.

MAC адрес, измененный таким способом, сбросится на стандартный после перезагрузки устройства, поэтому его можно не возвращать обратно.

Wi-Fi в метро: Автоматическое подключение к сети MosMetro_Free на Andro > 22.12.2015 Android, Wi-Fi в метро, Интернет, Программное обеспечение MosMetro_Free, Программы The_Dr_Hax

НазваниеWi-Fi в метро
Ценабесплатно
СовместимостьAndroid 3.0 и выше
Исходный кодGitHub
Ссылка

Около полугода назад на этом сайте появилась статья о том, как настроить автоматическое подключение к Wi-Fi в метро на Android. Тот способ был довольно трудоемким и требовал установки нескольких сторонних программ, в том числе он требовал права администратора для работы и слетал после обновления системы.

Теперь можно сказать, что мучения закончились, так как состоялся релиз моего приложения “Wi-Fi в метро” для Android, выполняющего всё то же самое, что и старый вариант, но не требующего абсолютно никаких действий от вас. Достаточно просто установить эту программу и она сработает в нужный момент автоматически.
Читать дальше →

Ускорение LibreOffice

В последнее время мне приходится работать с огромными документами в LibreOffice, однако производительность Writer оставляет желать лучшего. В документе, состоящем из более, чем 100 страниц, и включающем в себя более 1000 формул, вставка новой формулы могла занимать более 5 секунд, что доставляет некоторый дискомфорт при работе с большим количеством часто встречающихся в тексте формул. К счастью, решение этой проблемы находится в настройках Writer.

Откроем настройки Writer через меню “Сервис” — “Параметры”. В открывшемся окне нужно поменять настройки следующим образом:

Внимание! При отключении Java могут отключиться некоторые функции, например панель параметров таблицы.

После этого производительность Writer заметно повысилась: вставка формул стала происходить меньше, чем за секунду, а навигация в документе перестала подтормаживать.

Автоматическое подключение к Wi-Fi MosMetro_Free в Andro > 30.06.2015 Android AutomateIt, MosMetro_Free, Python, Tasker The_Dr_Hax

Начав ездить в московском метро каждый день я, конечно же, обрадовался наличию бесплатного Wi-Fi на всех ветках. Однако необходимость каждый раз нажимать кнопку “Войти в интернет” на специальной странице (да еще и с рекламой) побудила меня начать писать скрипт, который будет делать это сам. Скрипт был написан на Python, чтобы его можно было запустить на любом устройстве, в том числе и смартфоне (на Android, конечно).

add-apt-repository: команда не найдена

Когда мне понадобилось после переустановки системы подключить PPA-репозиторий с Launchpad, оказалось, что команды add-apt-repository не существует. Данная проблема решается установкой пакета software-properties-common:

После этого команда add-apt-repository должна заработать, как надо.

Использование GPIO выводов Raspberry Pi

В этой статье описаны эксперименты с GPIO (General Purpose Input/Output, Входы/Выходы общего назначения) контактами Raspberry Pi. Я попробовал работать с ними тремя способами: Python, Bash и C. В этой статье будет описаны все три способа. Но для начала немного информации о настройке и подготовке.

Подключение к GPIO контактам RPi: Я использовал старый IDE шлейф от флоппи дисковода. Он имеет 34 контакта, а RPi имеет только 26 контактов, поэтому часть разъема не используется. На другом конце шлейфа припаяны BLS штырьки, которые вставлены в макетную плату и до сих пор очень хорошо работают.

Подключение выводов: По ссылкам есть таблица с значением выводов и схема их расположения. Выводы считаются слева на право, сверху вниз начиная с вывода 3.3В. Вот как использованы контакты у меня:
Вывод 2: 5В
Вывод 3: “GPIO0”. К нему подключен один из выводов выключателя, другой его вывод подключен к GND. Этот вывод GPIO имеет внутренний подтягивающий pull-up резистор. Это означает, что когда переключатель не замкнут, на выходе высокий уровень, а когда замкнут – низкий.
Вывод 6: GND (этот вывод подключен к GND макетной платы)
Вывод 7: “GPIO4”. К нему подключается анод светодиода через резистор 220 Ом.

Во всех следующих примерах будет использовано такое подключение. Различные библиотеки используют различные выводы, создавая путаницу, поэтому я постараюсь избавиться от неё. Также отметим, что всё это делается в режиме SSH, поэтому монитор не подключен.

Важное примечание: В RPi Wiki написано, что GPIO выводы небуферизованны и незащищены, поэтому короткое замыкание представляет опасность для всего RPi, поэтому будьте осторожны! Разрабатывается новая версия платы с защитой.

Важное примечание: Все программы, которые обращаются к GPIO контактам должны быть запущены с правами администратора, иначе вы получите сообщение об ошибке.

Python

Это один из моих любимых языков, поэтому я решил попробовать его. Во-первых, установите pip (Python package installer, пакет установки Python):

sudo curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

Затем установите RPi.GPIO модуль для Python:

sudo pip install rpi.gpio

Теперь вы можете войти в интерпретатор Python (sudo python), и делать такие вещи:

import RPi.GPIO as GPIO
GPIO.setup(7, GPIO.OUT)
GPIO.output(7, True)
GPIO.output(7,False)

Я всегда любил Unix за то, что основной его идеей является то, что все является файлом. GPIO контакты Raspberry Pi также являются файлами! С применением нашей макетной платы мы можем зажигать и гасить светодиод.

sudo su –
echo “4” > /sys/class/gpio/export
echo “4” > /sys/class/gpio/export
echo “out” > /sys/class/gpio/gpio4/direction
echo “1” > /sys/class/gpio/gpio4/value
echo “0” > /sys/class/gpio/gpio4/value

Для чтения входов используйте команду “cat” и путь файла.

echo “0” > /sys/class/gpio/export
echo “in” > /sys/class/gpio/gpio0/direction
cat /sys/class/gpio/gpio0/value

Старый добрый C. Базовый пример для C действительно сложный, но, к счастью Гордон написал Arduino подобную библиотеку, но для Raspberry Pi! Итак, вот что нужно сделать:

Загрузите и установите библиотеку:

cd /tmp
wget http://project-downloads.drogon.net/files/wiringPi-1.tgz
tar xfz wiringPi-1.tgz
cd wiringPi/wiringPi
make
sudo make install

В системе вашего Raspberry Pi теперь установлена библиотека wiringPi, поэтому мы можем написать небольшую программу с использованием её.

Скопируйте код данной программы:

gcc -o blink blink.c -L/usr/local/lib -lwiringPi

У вас должен получиться мигающий светодиод. Теперь можно сделать что-то более интересное:

А как же функция analogRead? К сожалению, в отличие от Arduino, RPi не имеет встроенного АЦП (аналого-цифрового преобразователя). Но некоторые из разрабатываемых плат будут включать в себя АЦП, например Gertboard

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

Посмотрим более подробно на распиновку новой платы Raspberry Pi 4 GPIO и подробно изучим каждую функцию.

Во многих отношениях Raspberry Pi 4 улучшает возможности более ранних моделей Pi. Одноплатный компьютер поддерживает не только больший объем оперативной памяти, более высокую скорость процессора и расширенные периферийные устройства, но выводы GPIO сохраняют свои стандартные функции, установленные предыдущими моделями, наряду с дополнительными функциями для существующих выводов. Давайте посмотрим, что делают стандартные 40 контактов на Raspberry Pi, а затем рассмотрим каждую из этих функций подробнее.

Читайте также:  Зарядное устройство из импульсного бп

Как я написал ранее, GPIO – это Интерфейс ввода/вывода общего назначения.

Универсальный интерфейс ввода/вывода – это, собственно, то, что означает GPIO и прекрасно описывает работу контактов плат Raspberry Pi. Они очень похожи на штыревые порты Arduino, так как их можно настроить для чтения входов или записи выходов. Эти контакты позволяют вашему Pi взаимодействовать с различными компонентами, такими как кнопки, потенциометры и зуммеры.

Есть две схемы именования, с которыми вы должны ознакомиться: нумерация WiringPi и Broadcom. Последняя – это то, как официально называют каждый пин, отображен зеленым цветом на изображении выше. WiringPi, библиотека интерфейса GPIO, которую вы, скорее всего, будете использовать. Имеет собственную аппаратно-независимую систему нумерации. Не забывайте проверять, с какому выводом вы на самом деле работаете при программировании Pi.

Пины питания и заземления

Контакты питания и заземления используются для питания внешних цепей. Все Raspberry Pi со стандартными контактами 40 GPIO будут иметь два контакта 5В и два контакта 3.3В, всегда в одном и том же месте.

Наряду с контактами 5 В и 3,3 В доступны 8 заземляющих контактов (GND). Контакты питания и заземления позволяют питать ваши компоненты Raspberry Pi, такие как светодиоды и двигатели. Однако помните, что перед тем, как на что-либо подавать питание через эти контакты, всегда следует устанавливать надлежащие компоненты или внешнюю схему. Питание чего-либо со слишком большим током или значительными скачками напряжения, например, двигатель без соответствующего контроллера мотора, повредит контакты и может сделать их непригодными для использования.

Альтернативные функции

В то время как многие проекты могут уживаться с выводами питания и ввода, иногда от Pi требуются разные способности. К счастью, некоторые выводы GPIO удваиваются как интерфейсы I2C, SPI и UART. Pi 4 расширил возможности многих выводов, поддерживая эти интерфейсы на большем количестве из них, чем в Raspberry Pi 3b+ и до неё. Ниже приведем краткое описание по каждому интерфейсу.

I2C, или протокол Inter-Integrated Circuit, позволяет вашему Raspberry Pi управлять несколькими датчиками и компонентами, известными как ведомые (slave, подчиненные). Связь осуществляется через SDA (вывод данных) и SCL (вывод тактовой частоты). Каждое ведомое устройство создается с уникальным адресом, чтобы обеспечить быструю связь со многими устройствами. Контакты ID_EEPROM также являются I2C, но используются для связи с дополнительными платами, а не подчиненными компонентами.

SPI, или последовательный периферийный интерфейс, также используется для управления компонентами с отношениями мастер-ведомый (ведущий-ведомый), хотя он не такой компактный. Для работы требуются часы (SCLK), контакты Master Out Slave In (MOSI) и Master In Slave Out. Выводы выполняют то, что подразумевают их названия, с помощью SCLK, регулирующего скорость передачи данных, MOSI используется для отправки указаний от Pi на подключенные устройства, а MISO делает наоборот.

Если вы раньше работали с Arduino, возможно, вы уже слышали о UART или Serial (последовательная связь). Универсальный асинхронный приемник/передатчик используется для подключения плат Arduino к компьютерам, которые их программируют, а также для связи между другими устройствами с приемными и передающими контактами. Эти контакты могут использоваться для управления вашим Pi через другой компьютер, если последовательная консоль включена в raspi-config, или для прямого управления Arduino, если вы не можете использовать кабель USB для своего проекта.

Наряду с другими функциями все контакты поддерживают программный ШИМ, а GPIO12, GPIO13, GPIO18, GPIO19 – аппаратную широтно-импульсную модуляцию.

Официальный 40-контактный список Raspberry Pi

Хотя стандартная распиновка для всех 40-контактных Raspberry Pi осталась прежней, вы можете найти обновленный список функций для Raspberry Pi 4 в официальном репозитории raspi-gpio на GitHub.

Если вы постоянно забываете какой пин что делает? Ниже вы можете распечатать распиновку Raspberry Pi B+, созданную Андреасом Гором (более известным как Splitbrain).

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

Построение контроллеров на Raspberry Pi #4: считывание аналоговых данных с помощью RPi

Продолжение полезной серии статей про построение контроллеров на Raspberry Pi. В данной статье мы рассмотрим, как можно считывать аналоговые данные с помощью Raspberry Pi.

Введение

RPi (Raspberry Pi) обладает возможностью выполнять различные электронные функции, такие как чтение цифровых данных с электрического кнопочного выключателя, управление двигателем постоянного тока, мигание светодиодами. Единственная недоступная для выполнения электронная функция – это считывание электрических сигналов и данных с аналоговых устройств. Хотя RPi и обладает множеством GPIO выводов, HDMI, разъемами аудио, LCD и камеры, он не способен считывать аналоговые сигналы, поскольку ему не хватает схемы АЦП (аналого-цифрового преобразователя, ADC). Подключить АЦП к Raspberry Pi довольно просто, но есть еще один метод, который может быть использован для считывания аналоговых электрических сигналов или данных: здесь вы узнаете, как считывать электрические сигналы с аналоговых устройств с помощью RPi, используя метод переходных процессов. Электронные компоненты и схема, необходимые для чтения аналоговых электрических сигналов, показаны на структурной схеме на рисунке 1. Кроме того, перечень элементов предоставляет список всех электронных компонентов, необходимых для сборки данного проекта.

Рисунок 1 – Электронные компоненты и схема, необходимые для сборки схемы аналогового интерфейса

Перечень компонентов

  • Raspberry Pi (Model A+,B, B+, Pi 2 или Pi 3);
  • (R1) резистор 1 кОм (коричневый, черный, коричневый, золотой), 0,25 Вт, 5%;
  • (R2) резистор 1 кОм (коричневый, черный, коричневый, золотой), 0,25 Вт, 5%;
  • (R3[POT1]) потенциометр 10 кОм;
  • (C1) конденсатор 220 нФ или 100 нФ (220 нФ = 0.2 мкФ и 100 нФ = 0.1 мкФ);
  • переходник для GPIO контактов Raspberry Pi;
  • беспаечная макетная плата;
  • перемычки;
  • (VCC1) батарейный отсек 6 вольт.

Метод переходных процессов: чтение аналоговых данных

Как кратко упоминалось в введении, Raspberry Pi не умеет считывать электрические аналоговые сигналы или данные. Причина отсутствия этого функционала заключается в том, что у микроконтроллера BCM (Broadcom) в Raspberry Pi нет встроенной схемы аналого-цифрового преобразователя. Два альтернативных метода, которые могут позволить RPi считывать электрические аналоговые сигналы, заключаются в подключении внешней микросхемы АЦП (MCP3008) или использовании простой схемы заряда-разряда. В данном проекте мы будем использовать схему заряда-разряда для чтения электрических аналоговых сигналов. Схема заряда-разряда позволяет RPi считывать непрерывные данные, используя метод переходных процессов. Работа метода переходных процессов основана на наблюдении, как реагирует RC цепь (резистор-конденсатор) на фронт импульса (переход от низкого уровня к высокому) в течение заданного периода времени. Поведение электрического отклика RC цепи основано на заряде и разряде конденсатора, принимающего электрический импульс или ступенчатый сигнал. Рисунок 2 показывает модель электрической схемы базовой RC цепи. Осциллограммы прикладываемого ступенчатого сигнала и отклика цепи заряда-разряда показаны на рисунке 3. Для создания RC цепи и получения формы сигнала отклика я использовал бесплатный программный пакет моделирования схем Micro-Cap.

Рисунок 2 – Базовая RC цепь, используемая в методе переходных процессов. Обратите внимание: R2 – это аналоговое устройство, предоставляющее схеме значения непрерывного сигнала Рисунок 3 – Входной импульсный сигнал [синий: V(1)(V)] и отклик RC цепи заряда-разряда [V(3)(V)]

Кроме того, как показано на рисунке 3, сигнал входного импульса подается на RC цепь на 5 мс (миллисекунд). Конденсатор (C1) заряжается в течение этого времени через резисторы R1 и R2. После того, как конденсатор полностью зарядится, при спаде импульса входного сигнала конденсатор разряжается через резистор R3. Время разряда устанавливается на 1 мс. Эти заряд и разряд конденсатора могут быть выполнены с помощью кода на питоне, реализованного на RPi. Поскольку этот цикл заряда и разряда выполняется непрерывно, в скрипте на питоне используется программный счетчик для предоставления эквивалентного непрерывного значения данных аналогового устройства, считываемых Raspberry Pi. Значение программного счетчика постоянно обновляется и отображается в основном коде приложения, находящемся в бесконечном цикле. Если вам интересно электрическое поведение RC цепи, ниже приведен файл Micro-Cap. Ниже приведены две принципиальные схемы, показывающие цепи заряда и разряда, подключенные к RPi. На рисунках 4 и 5 показано, что цепи заряда и разряда подключены к GPIO выводам 18 и 23 Raspberry Pi.

Читайте также:  Шумы и помехи в тракте звуковой частоты

Рисунок 4 – Интерфейс Raspberry Pi для цепи заряда конденсатора C1 Рисунок 5 – Интерфейс Raspberry Pi для цепи разряда конденсатора C1

Теперь, когда мы разобрались с базовыми знаниями о том, как считывать электрические аналоговые сигналы или данные, используя метод переходных процессов, давайте соберем схему устройства с аналоговым интерфейсом на Raspberry Pi!

Сборка схемы устройства с аналоговым интерфейсом на Raspberry Pi

С помощью электронных компонентов из списка выше вы теперь можете собрать схему устройства с аналоговым интерфейсом на Raspberry Pi. Размещение и соединение компонентов на макетной плате показано на рисунке 6 ниже. На рисунке 7 приведена принципиальная схема устройства.

Рисунок 6 – Схема соединений аналогового интерфейса устройства Рисунок 7 – Принципиальная схема аналогового интерфейса устройства

Ниже приведена фотография собранной схемы аналогового интерфейса устройства на Raspberry Pi.

Рисунок 8 – Аналоговый интерфейс устройства на RPi, собранный на макетной плате

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

Тестирование функции аналогового чтения и схемы интерфейса

Мы собрали схему аналогового интерфейса для Raspberry Pi и теперь готовы ее проверить! Для этого потребуется небольшой код приложения на Python. Код приложения приведен в листинге 1 ниже. Код приложения на питоне может быть напечатан в LXTerminal после открытия редактора nano командой sudo nano pot_step.py . Кроме того, код на питоне может быть сохранен на вашей SD карте для RPi.

После сохранения скрипта на питоне введите в консоли команду sudo python pot_step.py . На экране должен появиться поток аналоговых данных. При повороте потенциометра, аналоговые значения должны меняться, как показано на рисунке 9. Поздравляю с созданием аналогового интерфейса для Raspberry Pi! Я добавил небольшое видео, демонстрирующее работу этого этой удивительной схемы аналогового интерфейса. Вы можете продолжить эксперимент, заменив потенциометр 10 кОм на фотоэлемент. Размахивание рукой над фотоэлементом будет изменять измеряемую освещенность, показывая ее значение на экране.

Рисунок 9 – Аналоговые значения потенциометра, отображаемые на экране

В следующий раз, мы рассмотрим, как подключить LCD дисплей к Rapberry Pi и отобразить на нем сообщения, используя язык программирования Python.

Надеюсь, статья оказалась полезной. Оставляйте комментарии!

Работа с GPIO пинами Raspberry Pi.

В этом видео:
– Что такое GPIO на Raspberry Pi?
– Какие функции выполняют пины GPIO?
– Что можно делать с GPIO?
– Пример python скрипта для управления светодиодами.

Аббревиатура GPIO – расшифровывается как General Purpose Input/Output pins on the Raspberry Pi. Выглядят эти пины следующим образом:

Используя данные пины можно контролировать различные внешние устройства или расширять возможности raspberry pi подключая дополнительные микросхемы. Эти пины не имеют какого-либо привычного интерфейса вроде usb как вы сами можете видеть. Но используя различные провода, переходники или платы можно подключать ваш raspberry pi к нужному оборудованинию.
Сам по себе rasbperry pi был создан и позиционируется как устройство для обучения компьютерной технике и программированию- как высокопроизводительное устройство оно никогда не задумывалось. Стоит дёшево и установлено простое по современным меркам железо. Скорее всего в вашем смартфоне стоит что-то более производительное. Полноценной рабочей станцией raspberry pi я бы тоже не назвал – всю переферию нужно подключать самостоятельно. Если у вас всё есть (sd карточка, монитор, клавиатура, мышка, опционально wifi адаптер), то можно попробовать поработать с Rasbian-ом. Хотя особой причины этого делать я не вижу. Кто-то может захотеть использовать raspberry pi как устройство для ознакомления с Linux. У вас наверняка есть какой-либо компьютер или ноутбук – запустите виртуалку и попробуйте. Так намного проще и удобнее. Просто так держать пучёк проводов где-то на столе или у телека смысла нет. Ну это как по мне.
Другое дело если вы будете что-то делать со своим raspberry pi связанное с серверными функциями – бекапы, мониторинг, файловый сервер, какие-то специфические тесты. Я пользуюсь одним из своих pi как мониторинг и бекап сервером. Тут ничего необычного нет. Можно заменить pi на какой-либо другой мини-компьютер или просто старый компьютер.
Но у raspberry pi есть те самые GPIO. С ними можно делать разные интересные вещи, те что обычно вы не сможете делать с обычным комьютером или даже каким-либо мини-компьютером – просто нет подходящих интерфейсов. Обычно есть только usb. Например, для подключения самодельного домашнего освещения, датчиков движения, робототехники и многое другое. Возможет вы сможете повторить, сделать всё тоже самое, но это будет скорее всего сильно дороже или не такое компактное решение.
_В общем случае_ GPIO пины способны считывать сигналы приходящие на этот самый пин, могут посылать сигнал на пин. Например, можно включать светодиоды. Можно запускать какие-либо электродвигатели. В общем можно что-то включать-выключать. Можно посылать какие-либо сигналы. Если пин работает на вход, то можно получать сигналы и написанная программа будет как-то реагировать. Например, можно просто подключить кнопку, если вы её нажали, то поступит определённый сигнал или сигнал пропадёт. Написанная программа среагирует на сигнал и что-то сделает. Часто можно найти на ютубе видео где из raspberry pi делают gameboy и кнопки управления работают через GPIO.

Среди пинов есть ещё пины которые выдают постоянное напряжение в 3.3, 5 Вольт. Есть пины работающие как Масса или Ноль. Сразу скажу, что работать с пинами нужно очень аккуратно – некоторые пины подключены напрямую к центральному процессору и вообще сам raspberry pi работает с очень маленькими токами. Работайте аккуратно! Напрямую ничего напрямую не подключайте, всё через резисторы. Если никогда не занимались подсчётом необходимых сопротивлений, не пользовались законом Ома, то попробуйте скопировать уже имеющиеся решения в Интернете. Как поймёте что к чему – можно будет попробовать что-то своё.

То что вы можете видеть в ролике на youtube, то что происходит со светодиодами – работает с использованием простых python скриптов. Я уже рассматривал работу используемых циклов в моих предыдущих видео.
Пример скрипта из видео:
pi@raspberrypi:

$ cat ampel02-with-button.py
import RPi.GPIO as GPIO # .
import time # .

GPIO.setmode(GPIO.BCM)

red = 1; yellow = 2; green = 3; blue = 0; button = 4
light=[4,18,23,24,25]
GPIO.setup(light[red], GPIO.OUT, initial=False)
GPIO.setup(light[yellow], GPIO.OUT, initial=False)
GPIO.setup(light[green], GPIO.OUT, initial=True)
GPIO.setup(light[blue], GPIO.OUT, initial=False)
GPIO.setup(light[button], GPIO.IN)

print (“Press button to turn on pedestrian light, Ctrl+C exits the program”)
try:
while True:
if GPIO.input(light[button])==True:
GPIO.output(light[green],False)
GPIO.output(light[yellow],True)
time.sleep(0.6)
GPIO.output(light[yellow],False)
GPIO.output(light[red],True)
time.sleep(0.6)
for i in range(30):
GPIO.output(light[blue],True); time.sleep(0.05)
GPIO.output(light[blue],False); time.sleep(0.05)
time.sleep(0.6)
GPIO.output(light[yellow],True)
time.sleep(0.6)
GPIO.output(light[red],False)
GPIO.output(light[yellow],False)
GPIO.output(light[green],True)
time.sleep(2)

except KeyboardInterrupt:
GPIO.cleanup() # .

Наиболее интересные моменты следующие:
Нужно определить используемые модули – собственно указать скрипту что нужно использовать модуль GPIO для работы с пинами. Если вы используете в скрипте функции связанные с временем – подключаете модуль времени. Или если нужна генерация случайных чисел, то нужно подключить модуль генерации случайных чисел.
В конце скрипта нужно освободить пины, если этого не сделать, то установленный режим работы пина сохраниться и возможны проблемы, если будут запускаться другие скрипты или у вас работатет какое-либо подключённое устройство.

Надеюсь, что после просмотра этого видео у вас появится интерес собрать что-то своё. Raspberry pi и GPIO дают возможность сделать какое-либо устройство, игрушку или автоматизировать какие-либо вещи у вас дома. У вас есть возможно соединить навыки программирования и схемотехники – получить работающее так как вам самим хочется устройство в реальном мире, прямо у вас дома, не просто на экране компьютера.

Рейтинг
( Пока оценок нет )
Загрузка ...
×
×
Adblock
detector