Raspberry Pi:Библиотеки/WiringPi

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


Библиотека WiringPi[1]

WiringPi – это библиотека для доступа к GPIO-контактам чипа BCM2835, используемого в Raspberry Pi. Написана на языке C, выпущена под лицензией GNU LGPLv3 и пригодна для использования в C, C++ и RTB (BASIC), а также в других языках (но для этого нужны специальные функции-обертки, более подробно читайте ниже). Библиотека WiringPi создавалась с прицелом на схожесть с языком Wiring, который используется в Arduino.

WiringPi была портирована на другие платформы, однако автор оригинальной WiringPi поддержкой этих версий не занимается. То есть если вы пытаетесь использовать WiringPi не на Raspberry Pi, а на какой-то другой платформе, то обращайтесь не к автору оригинальной WiringPi, а к создателю порта.

Оригинальные Raspberry Pi Model A и Model B (за 35 долларов) были одноплатными компьютерами с 26-контактным GPIO-коннектором, который поддерживал разные интерфейсы и прочие форматы передачи данных. Среди них были 8 цифровых GPIO-контактов – их можно было запрограммировать и на цифровой вход, и на цифровой выход. Кроме того, два из них (на 40-контактной Pi; на 26-контактной Pi такой контакт всего один) можно было выделить для выдачи аппаратной ШИМ. Вдобавок у них имелся 2-проводной интерфейс I2C, 4-проводной интерфейс SPI (плюс еще один контакт для SS, поэтому в целом получается 5 контактов) и последовательный интерфейс UART с 2 дополнительными контактами.

В дальнейшем на смену этим моделям пришли другие:

  • Raspberry Pi Model B версии 1.1 имела 4 дополнительных GPIO-контакта на отдельном коннекторе, который нужно было припаивать к плате
  • Raspberry Pi Model A+ и B+ стали результатами 2 лет исследований, разработок и тестирования – их оснастили 40-контактным GPIO-коннектором (распиновка для прежних 26 контактов осталась неизменной) и 4 USB-сокетами
  • Raspberry Pi Model 2 оснастили 4-ядерным процессором Arm A7 c 1 Гб памяти типа RAM. GPIO-контакты остались прежними
  • Raspberry Pi Model Zero стала уменьшенной версией Pi A+, но с увеличенной производительностью (1 ГГц). Также имеется 40-контактный GPIO-коннектор. Цена – 5 долларов
  • Raspberry Pi Model 3 оснастили 4-ядерным процессором Arm 8 (64 бита) с теми же RAM-памятью и GPIO-контактами, как и у Model 2, но со встроенными WiFi и Bluetooth. Цена – все те же 35 долларов

Если контакты интерфейсов I2C, SPI и UART не используются по прямому назначению, их можно использовать как обычные GPIO-контакты, что в целом дает 8 + 2 + 5 + 2 = 17 GPIO-контактов на коннекторе P1 (плюс 4 на коннекторе P5 на Raspberry Pi Model 2) и 28 GPIO-контактов на B+, Model 2 и Model 3. Впрочем, два контакта зарезервированы у них для интерфейса HAT I2C, но если HAT-плата не подключена, их можно использовать как обычные GPIO-контакты.

В комплекте с WiringPi идет gpio, утилита для командной строки, которую можно использовать для программирования и настройки GPIO-контактов. С ее помощью можно записывать и считывать данные с контактов, а также управлять ими при помощи shell-скриптов.

Библиотеку WiringPi можно расширить при помощи модулей. К примеру, один модуль позволяет использовать на Gertboard девайсы с аналоговым интерфейсом, другой – пользоваться MCP23x17 и MCP23x08, популярными чипами для увеличения количества GPIO-контактов, третий – использовать WiringPi для вывода 32 бит данных при помощи 4 сдвиговых регистров 74×595, последовательно подключенных друг к другу. Кроме того, есть модуль, который для увеличения количества GPIO-контактов использует ATmega (например, Arduino или Gertboard) – через последовательный порт Pi.

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

WiringPi поддерживает аналоговые запись и считывание. Хотя у Pi нет собственных компонентов для работы с аналоговыми данными, для этого можно использовать модули WiringPi – они добавляют поддержку аналоговых чипов Gertboard и других АЦ/ЦА девайсов.

Загрузка

Загрузить WiringPi можно отсюда.

Примечание: Не пользуйтесь версией WiringPi, загруженной на GitHub. Она существует лишь для того, чтобы помочь в конструировании функций-оболочек для языков Ruby и Python, написанных Gadgetiod’ом.

Драйверы devLib

В комплекте с WiringPi идет devLib – это набор драйверов, обеспечивающих доступ к некоторым популярным периферийным устройствам. Среди поддерживаемых устройств: LCD-дисплеи (на базе чипов Hitachi HD44780U) и графические дисплеи (например, обычные дисплеи с разрешением 128х64, работающие на чипе-драйвере 12864H). Также поддерживаются DS1302 (чип, работающий как часы реального времени), датчики на базе чипов Maxdetect (например, RHT003), платы Gertboard/PiFace и т.д.

Дополнительно

  • Благодаря Gadgetoid у WiringPi появились функции-обертки для Ruby, Python и Perl; скачать их можно тут
  • Благодаря Йеруну Крансену (Jeroen Kransen) функции-обертки есть для Java; скачать их можно тут
  • Благодаря Дейву Болтону (Dave Booulton) функции-обертки есть и для TCL, скачать их можно тут
  • Pi4J – это еще один проект, использующий WiringPi, и у него есть репозиторий на GitHub

Более подробно об этом можно почитать на страницах вики о Raspberry Pi.

Подключение[2]

Перед тем, как использовать GPIO-библиотеку WiringPi, вам нужно подключить к программе ее заголовочный файл:

#include <wiringPi.h>

Кроме того, при компиляции программы к команде, возможно, нужно будет добавить...

-I/usr/local/include -L/usr/local/lib -lwiringPi

...но это зависит от ОС, которую вы используете. Важным элементом здесь является –lwiringPi.

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

Функции

Расширения

Написание собственного расширительного модуля[3]

Вы можете написать собственный расширительный модуль для библиотеки WiringPi, если хотите подключить к Raspberry Pi какое-то новое устройство для работы с GPIO-контактами.

Придумать заголовок

См.также

Внешние ссылки