====== Интерфейсы Raspberry Pi ======
===== Интерфейс I²C =====
Шина I²C — самый простой способ обмена информацией. Каждое подключенное к линии I²C устройство имеет свой адрес, по которому к нему обращается Raspberry Pi.
Линии интерфейса имеют встроенную подтяжку к питанию резисторами. Соответственно их невозможно использовать в качестве общих портов ввода/вывода в случаях, требующих отключения подтяжки.
==== Включения шины ====
По умолчанию шина **I²C** отключена. Для включения выполните следующие действия.
- Откройте терминал с рабочего стола Raspberry Pi или [[rpi:installation:ssh#подключение_по_ssh|подключитесь по SSH-соединению.]]
- Зайдите в настройки Raspberry Pi.
sudo raspi-config
{{ :rpi:installation:raspberry-pi-raspi-config.png?nolink |}}
- Выберите пункт ''Interfacing options''{{ :rpi:installation:raspberry-pi-inrefacing.png?nolink |}}
- Далее пункт ''I²C''.{{ :rpi:installation:raspberry-pi-i2c.1.png?nolink |}}
- Нажмите ''Yes'' для подтверждения включения шины.{{ :rpi:installation:raspberry-pi-i2c.2.png?nolink |}}
- Для проверки включения шины **I²C** запустите листинг директории /dev:ls /dev/
В ответ вы должны увидеть полотно файлов, среди которых: ''i2c-1''.
{{ :rpi:installation:raspberry-pi-i2c.3x.png?nolink |}}
Теперь вы можете использовать интерфейс **I²C** для коммуникации с датчиками и модулями.
==== I²C сканер ====
Список с адресами устройств, подключенных к линии I²C можно получить программой ''i2cdetect'' из пакета ''i2c-tools'':
- Установите пакет i2c-tools:sudo apt-get install i2c-tools
- Выполните поиск устройств на шине:sudo i2cdetect -y 1
===== Интерфейс SPI =====
SPI — последовательный четырёх-проводной интерфейс передачи данных, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии.
Raspberry Pi имеет одну шину ''SPI'' — **SPI0**. Но более новые версии одноплатника — например, [[amp>product/raspberry-pi-4-model-b-2-gb?utm_source=man&utm_campaign=rpi&utm_medium=wiki|Raspberry Pi 4 Model B]] — обладают двумя шинами: **SPI0** и **SPI1**
==== Включения шины SPI0 ====
По умолчанию шина **SPI0** отключена. Для включения выполните следующие действия.
- Откройте терминал с рабоче стола Raspberry Pi или [[rpi:installation:ssh|подключитесь по SSH-соединению.]]
- Зайдите в настройки Raspberry Pi.
sudo raspi-config
{{ :rpi:installation:raspberry-pi-raspi-config.png?nolink |}}
- Выберите пункт ''Interfacing options''{{ :rpi:installation:raspberry-pi-inrefacing.png?nolink |}}
- Далее пункт ''SPI''.{{ :rpi:installation:raspberry-pi-spi.1.png?nolink |}}
- Нажмите ''Yes'' для подтверждения включения шины.{{ :rpi:installation:raspberry-pi-spi.2.png?nolink |}}
- Для проверки включения шины **SPI0** запустите листинг директории /dev:ls /dev/
В ответ вы должны увидеть полотно файлов, среди которых два: ''spidev0.0'' и ''spidev0.1''.
{{ :rpi:installation:raspberry-pi-spi.3x.png?nolink |}}
Это значит что у вас включён **SPI0** с возможностью подключения двух ведомых устройств.
Теперь вы можете использовать интерфейс **SPI** для коммуникации с датчиками и модулями.
==== Включения шины SPI1 ====
Если вы используете [[amp>product/raspberry-pi-4-model-b-2-gb?utm_source=man&utm_campaign=rpi&utm_medium=wiki|Raspberry Pi 4 Model B]], то вам доступно две шины **SPI**: ''SPI0'' и ''SPI1''.
Для включения шины **SPI1**, необходимо вручную отредактировать файл настроек загрузки системы''config.txt''.
- Откройте от пользователя ''root'' файл настройки загрузки системы.sudo nano /boot/config.txt
- В конец файла добавьте команду включения ''SPI1''.dtoverlay=spi1-3cs
{{ :rpi:installation:raspberry-pi-spi.4x.png?nolink |}}
- Сохраните файл сочетанием клавиш ''Ctrl''+''x''.
- Для вступления изменений в силу перезагрузите Raspberry Pi.sudo reboot
- Для проверки включения шины **SPI1** запустите листинг директории /dev:ls /dev/
В ответ вы должны увидеть полотно файлов, среди которых три отвечают за **SPI1**: ''spidev1.0'', ''spidev1.1'' и ''spidev1.2''.
Если у вас включена шина **SPI0**, то будут ещё два файла: ''spidev0.0'' и ''spidev0.1''.
{{ :rpi:installation:raspberry-pi-spi.5x.png?nolink |}}
Это значит что у вас включён **SPI0** с возможностью подключения двух ведомых устройств и **SPI1** с возможностью подключения трёх ведомых устройств.
===== Интерфейс UART =====
UART (Serial) — асинхронный интерфейс передачи данных, последовательно передающий биты из байта данных. Асинхронная передача позволяет осуществлять передачу данных без использования тактирующего сигнала от передатчика к приёмнику. Вместо этого приёмник и передатчик заранее договариваются о временных параметрах и специальных «стартовых битах», которые добавляются к каждому слову данных для синхронизации приёмника и передатчика. Существует множество устройств, с которыми Raspberry Pi может обмениваться данными по UART протоколу.
В Raspberry Pi 3 есть два аппаратных UART интерфейса:
* PL011 (/dev/ttyAMA0) – для своей работы использует тактирование видеоядра RPi, в связи с чем ограничивает его частоту.
* Mini UART (/dev/ttyS0) – полноценный UART интерфейс выполненный на отдельном блоке кристалла микроконтроллера.
Для удобства работы с этими выходами в Raspbian существуют алиасы:
* /dev/serial0 – всегда указывает на то TTY устройство, что подключено к GPIO портам.
* /dev/serial1 – всегда указывает на то TTY устройство, что подключено к Bluetooth модулю.
Отключить консоль:
sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service
===== Ресурсы =====
* [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=installation&utm_medium=wiki|Микрокомпьютеры Raspberry Pi]] в магазине
* [[https://www.advanced-ip-scanner.com/ru/|Advanced IP Scanner — сканирование всех устройств в локальной сети]]
* [[https://www.putty.org/|Putty — клиент для удалённого доступа к устройствам по протоколам SSH, Telnet и UART]]
* [[https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README|Внешняя ссылка]]