🎥 Камера та GPIO
Огляд апаратних можливостей Raspberry Pi: камера, GPIO піни та периферія.
Raspberry Pi Camera
Активуйте інтерфейс камери в налаштуваннях
- Підключіть камеру до CSI роз'єму (синя стрічка).
- Важливо: Для роботи
libcameraна нових OS (Bookworm/Bullseye) НЕ вмикайте "Legacy Camera" вraspi-config. Цей інтерфейс має бути вимкнений. Перезавантажте систему після підключення камери.
Команди для роботи з камерою
| Команда | Опис |
|---|---|
libcamera-hello |
Діагностика камери (відображення прев'ю на 5 секунд). |
libcamera-still -o photo.jpg |
Зйомка фотографії. |
libcamera-vid -t 10000 -o video.h264 |
Запис відео (тривалість 10с). |
Версії OS
У застарілих версіях OS (Buster та старіші) використовувалися утиліти raspistill та raspivid. У версіях Bullseye та новіших — набір інструментів libcamera-* (або rpicam-* на останніх оновленнях).
Python (picamera2)
Встановлення бібліотеки:
Приклад використання:
from picamera2 import Picamera2
import time
camera = Picamera2()
camera.start()
time.sleep(2) # Затримка для стабілізації експозиції
camera.capture_file("test.jpg")
camera.stop()
print("Фото збережено!")
🔌 GPIO (General Purpose Input/Output)
GPIO - інтерфейс введення-виведення загального призначення для підключення зовнішніх компонентів.
Нумерація пінів
Існує два стандарти нумерації контактів:
- BCM (Broadcom) - за логічними номерами GPIO (наприклад, GPIO17).
- BOARD - за фізичним розташуванням на платі (Pin 1, Pin 2...).
Стандарт BCM є рекомендованим.
Схема пінів (Pinout)
Виконайте команду:
Альтернативно, використовуйте інтерактивний ресурс: pinout.xyzPython (gpiozero) - Рекомендовано
Бібліотека gpiozero є сучасною заміною для RPi.GPIO. Вона має простіший API та підтримується офіційно.
Встановлення (зазвичай вже є в Raspberry Pi OS):
Приклад: Керування світлодіодом
from gpiozero import LED
from time import sleep
led = LED(17) # GPIO17
for i in range(10):
led.on()
sleep(0.5)
led.off()
sleep(0.5)
Приклад: Зчитування стану кнопки
from gpiozero import Button
button = Button(27) # GPIO27 з вбудованим pull-up
print("Очікування натискання...")
button.wait_for_press()
print("Подію зафіксовано!")
Python (RPi.GPIO) - Альтернатива
Сумісність та Raspberry Pi 5
Класична бібліотека RPi.GPIO не працює коректно на Raspberry Pi 5 через зміни в архітектурі.
Для старих проєктів рекомендовано використовувати rpi-lgpio — сумісну заміну.
Встановлення (через системний менеджер пакетів):
Або, якщо ви використовуєте старіші моделі Pi:Приклад: Керування світлодіодом
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
for i in range(10):
GPIO.output(17, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(17, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup() # Обов'язково!
Датчики (Sensors)
DHT11/DHT22 (Температура та вологість)
Python Virtual Environment
Сучасні версії OS вимагають використання віртуальних середовищ для бібліотек, встановлених через pip.
- Створіть віртуальне середовище:
- Встановіть бібліотеки у середовище:
- Встановіть системну залежність (потрібно зробити один раз):
Приклад коду:
import adafruit_dht
import board
sensor = adafruit_dht.DHT22(board.D4) # GPIO4
try:
temperature = sensor.temperature
humidity = sensor.humidity
print(f"Температура: {temperature}°C, Вологість: {humidity}%")
except RuntimeError as e:
print(f"Помилка зчитування: {e}")
I2C та SPI (Протоколи зв'язку)
Протоколи для підключення цифрової периферії (дисплеї, сенсори).
Активація I2C/SPI
Навігація меню: Interface Options → I2C / SPI → Enable.Діагностика шини I2C
Виводить таблицю адрес виявлених пристроїв (наприклад,0x27 для LCD дисплея).
Звук (Audio)
Відтворення звуку
# Встановити aplay (зазвичай вже є)
aplay sound.wav
# Або через mpg123 для MP3
sudo apt install mpg123
mpg123 music.mp3
Налаштування виходу (HDMI vs Jack)
Навігація: System Options → Audio → Виберіть потрібний пристрій.Для керування гучністю та виходами в терміналі (на нових OS з PipeWire) можна використовувати pactl або wpctl.