Как использовать GPIO на Raspberry Pi (Raspbian-Wheezy)
Оценка пользователей: / 9
ПлохоОтлично 
GPIO-Raspberry-PiЕсть два различных метода для записи и чтения с периферийных устройств на встраиваемых системах, использующих Linux.
Первый из них - создавая доступ через типы файлов к периферии в файловой системе, а второй - запись/чтение базовых адресов памяти, выделенной в GPIO или модуля SoC, используя указатели. Эти ячейки памяти можно найти в данных для BCM2835 в случае Raspberry Pi.
Примечание: Назначение GPIO для Raspberry Pi отличается в версиях 1 и 2.
GPIO-Raspberry-Pi-1
Не используйте уровни напряжения, превышающие 3.3 В, потому что Raspberry Pi не поддерживает 5В и не имеет защиты от перенапряжения.
Первый метод (файловая система)
*Перед стартом startx
Используйте учетную запись администратора (SuperUser) (после каждой перезагрузки) или используйте команду sudo перед любой командой:
sudo su
Подключите светодиод через резистор между GPIO11 и GND.
GPIO-Raspberry-Pi-2
Создание файлового доступа к GPIO с помощью консольных команд
Если Вы запишете в файл ./export в подкаталоге /sys/class/gpio/, то система создаст файл со структурой GPIO согласно входа. В нашем случае мы хотим создать доступ для записи непосредственно в GPIO11 для управления светодиодом.
Создайте файл доступа GPIO:
echo 11 > /sys/class/gpio/export
Настройте направление передачи вывода (вход/выход):
echo out > /sys/class/gpio/gpio11/direction
Записываем значение для включения светодиода с помощью GPIO11:
echo 1 > /sys/class/gpio/gpio11/value
Теперь Ваш светодиод должен загореться!
GPIO-Raspberry-Pi-3
Запишите значение, чтобы погасить светодиод, подключенный к GPIO11:
echo 0 > /sys/class/gpio/gpio11/value
Теперь Ваш свелодиод не должен гореть!
Удалите созданный GPIO (11):
echo 11 > /sys/class/gpio/unexport
Вы можете организовать доступ к GPIO с помощью python или иного языка программирования. Мы написали сценарий на python, чтобы показать, как с ним работать. Загрузить.
Откройте новый термиінал и выполните сценарий:
wget https://sites.google.com/site/semilleroadt/raspberry-pi-tutorials/gpio/ADT_blink.py
python ADT_blink
Сценарий задаст вопросы, чтобы Вы указали, к какому выводу присоединили диод и сколько раз он должен мигать:
Введите номер GPIO, через который Вы хотите мигать диодом: 11
Введите число раз, сколько он должен мигнуть, например: 10
Теперь Ваш диод на GPIO 11 мигает как новогодняя елка.
Откройте сценарий python с помощью текстового редактора и изучите все строки (попробуйте понять, что представляет собой простой сценарий, который используется для доступа к файлам).
Второй метод (указатели)
Если Вы хотите читать/писать в GPIO с использованием указателей, то лучшим способом будет установить библиотеку bcm2635, а чтобы понять, как все работает, прочитать справочник bcm2835, начиная с раздела 1.2.2.
Установка библиотеки bcm2835:
wget http://www.open.com.au/mikem/bcm2835/bcm2835-1.15.tar.gz
tar zxvf bcm2835-1.15.tar.gz
./configure
make
make check
make install
Теперь Вы можете просто использовать эту библиотеку для доступа к GPIO, библиотека использует указатели, чтобы писать/читать с GPIO или изменять значения в регистрах HW, модифицировать функции каждого периферийного устройства (PWM-модулей, UART и т.д.).
Загрузите пример кода, написанного на C.
Откройте терминал и используйте gcc для компиляции кода:
wget https://sites.google.com/site/semilleroadt/raspberry-pi-tutorials/gpio/main.c
gcc -o main -l rt main.c -l bcm2835
Выполните скомпилированный код:
./main
Теперь Ваш светодиод, подключенный к GPIO11, мигает! Как и в примере со сценарием на python.
Откройте код C с помощью текстового редактора и изучите все его строки.
Теперь вопрос: какой способ лучше, чтобы получить доступ к GPIO на Linux? Ответ здесь:  http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/
ШИМ
Проект WiringPi - это библиотека, которая включает в себя приложение для простого доступа к GPIO.
Для ШИМ она позволяет настроить аппаратные модули для специальных выводов PWM, а также использовать программное обеспечение для реализации PWM на других выводах.
Установите WiringPi (WiringPi использует git, систему управления исходным кодом):
sudo apt-get install git-core
Скачайте или "клонируйте" проект WiringPi и постройте его:
git clone git://git.drogon.net/wiringPi
./build
Если Вы уже его загрузили, то можете обновить до последней версии:
cd wiringPi
git pull origin
./build
Для того, чтобы использовать приложение WiringPi, Вам нужно знать назначение контактов, связанных с ним, которые объясняются на этом сайте:  https://projects.drogon.net/raspberry-pi/wiringpi/pins/
Использование модуля HW для ШИМ.
Подключите светодиод с помощью резистора между GPIO18 и GND. (Вывод 1 для WiringPi)
Обратитесь к "справочной странице" ("man page") в недавно установленной программе WiringPi под названием "gpio":
man gpio
Обратите внимание, что можете настроить вывод, чтобы он был входом, выходом, ШИМ, up, down или имел три состояния.
В соответствии с этим, настройте GPIO18 (WiringPi вывод 1) для режима HW ШИМ с помощью командной оболочки:
gpio mode 1 pwm
Запишите значение в модуль PWM (от 1 до 1023):
gpio pwm 1 500
Чтобы удалить конфигурацию вывода, используйте:
gpio unexport 1
Чтобы удалить все конфигурации:
gpio unexportall
Не бойтесь использовать программу GPIO для настройки других выводов, как входных так и выходных (ШИМ только для специальных функциональных выводов типа GPIO18 (WiringPi 1), другие выводы ШИМ занятые на 3,5 мм аудио разъем).
UART
Для того, чтобы использовать выделенные выводы для UART на Raspberry Pi, сначала они должны быть удалены из их применения по умолчанию, которое налажено. Для этого надо отредактировать "/boot/cmdline.txt" і "/etc/inittab".
Можно сделать резервную копию этих файлов, если хотите вернуться позже к конфигурации по умолчанию:
cp /boot/cmdline.txt /boot/cmdline.bak
cp /etc/inittab /etc/inittab.bak
Удаляем параметры конфигурации "console=ttyAMA0,115200" и "kgdboc=ttyAMA0,115200" из конфигурационного файла "/boot/cmdline.txt" с помощью редактора нано:
nano /boot/cmdline.txt
Комментируем последнюю строку в файле "/etc/inittab". Поставьте '#' перед "T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100:
nano /etc/inittab
Теперь контакты RXD (GPIO15) и TXD (GPIO14) доступны для общего использования UART.
Ниже пример программы использования выводов UART с помощью Python и библиотеки pyserial:
Для установки Pyserial загрузите последнюю версию с  http://sourceforge.net/projects/pyserial/files/pyserial/
Установите, запустив setup.py:
python setup.py install
Откройте терминал Python (помните, что всегда надо запускать под управлением суперпользователя с помощью sudo или su):
python
Для проверки без необходимости подключения другого устройства, а просто подключим TXD и RXD выводы Raspberry друг к другу.
Выполните следующие команды из терминала python:
import serial
ser = serial.Serial("/dev/ttyAMA0")
ser.write("UART the Font")
read = ser.read()
print read
ser.close()
Команда печати должна вывести строку, отправленную с помощью команды записи. Для конфигурирования порта UART, прочитайте следующую инструкцию: http://pyserial.sourceforge.net/shortintro.html
Установите "minicom" для эмуляции терминала:
apt-get install minicom
Вы можете использовать minicom с помощью следующих строк команды:
minicom -b 9600 -o -D /dev/ttyAMA0
И, в заключение, короткое видео о том, как использовать выводы GPIO на Raspberry Pi с помощью WebIOPi - веб-интерфейса для переключения входов и выходов по сети:
Тая Максимчук, магистрант НТУУ «КПИ» (По материалам sites.google.com)
 
>
КнигаНовости Практика поискаПартнерыО нас
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting