====== Интерфейсы 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|Внешняя ссылка]]