Представляю вам образовательный проект — “Змейка”, разработанный в рамках учебно-методического комплекса на базе одноплатного компьютера Repka PI 4.
Проект реализован в двух вариантах. В первом варианте игровой процесс отображается на экране монитора. Игра написана на языке Python с использованием библиотеки Pygame, которая отвечает за визуализацию. Управление осуществляется при помощи двухосевого аналогового джойстика: игрок направляет змейку, собирает еду, увеличивает счёт и избегает столкновений с границами и собственным хвостом.
Во втором варианте проект адаптирован для автономной работы: графика выводится на компактный OLED-дисплей размером 0.96 дюйма, подключенным по интерфейсу I2C. Игра запускается на Repka PI 4, а управление также осуществляется с помощью джойстика. Вся информация о ходе игры отображается в реальном времени на OLED-экране, что делает этот вариант особенно интересным для портативных устройств и встроенных решений.
Проект будет собираться с использованием “Учебно-методический комплекс REPKA”. Схему сборки можно найти в разделе "Примеры готовых проектов" учебного пособия УМК “REPKA”.
Также все необходимые материалы и схемы подключения доступны в репозитории на платформе Gitflic.
Компоненты проекта
1. Дисплей OLED 0.96″ I2C для отображения игрового процесса во втором варианте проекта.
2. Двухосевой джойстик XY модуль (Joystick KY-023) для управления игровым процессом.
3. Потребуется аналогово-цифровой преобразователь (далее АЦП) модели ADS1115 для считывания показаний с джойстика.
Вы можете приобрести все необходимые компоненты отдельно от "Учебно-методический комплекс REPKA". Ссылки на модули приведены в таблице ниже.
Компонент | Ссылка на приобретение |
---|---|
Монтажная/макетная плата | Ссылка |
Шлейф | Ссылка |
Переходник с шлейфа на макетную плату | Ссылка |
Соединительные провода | |
Дисплей OLED 0.96″ I2C | Ссылка |
Двухосевой джойстик XY модуль (Joystick KY-023) | Ссылка |
ADS1115 (АЦП) | Ссылка |
Подготовительный этап
1. Подключим дополнительное питание 5V к макетной плате:
2. После чего выведем дополнительное питание на макетную плату:
3. Подключим переходник с шлейфа на макетную плату:
4. Соединим шлейф с переходником для подключения к макетной плате и Repka Pi 4:
5. Итоговый результат должен выглядеть таким образом:
Сборка проекта (вариант с выводом на монитор)
Во время сборки проекта будем регулярно обращаться к электрической принципиальной схеме и монтажной схеме, представленными в учебном пособии (см. рисунки 4 и 5). Эти схемы будут служить основным ориентиром на всех этапах подключения компонентов, обеспечивая точность и правильность сборки устройства.
Для разработки кода будет использоваться текстовый редактор Geany, который входит в состав стандартного ПО Репка ОС.
Электрическая принципиальная схема #
Монтажная схема #
- Подключение АЦП (ADS1115).
Как видно из рисунков 4 и 5 АЦП подключается через интерфейс I2C и питается от 5V.
1.1. Подключим АЦП (ADS1115) к макетной плате согласно таблице 1:
Макетная плата | АЦП (ADS1115) |
---|---|
5V | V |
GND | G |
SCL1 | SCL |
SDA1 | SDA |
Таблица 1. Подключение АЦП (ADS1115) к макетной плате.
1.2. Результат подключения будет выглядеть следующим образом, см. рисунок 6:
Проверку работоспособности АЦП будем проводить после подключения джойстика, чтобы убедиться в правильности считывания аналогового сигнала и корректности преобразования данных.
2. Подключение двухосевого джойстика XY.
Как видно из рисунков 4 и 5, двухосевой джойстик подключается к аналоговым входам A0 и A1 внешнего АЦП, что позволяет считывать его положение по осям X и Y. Питание модуля осуществляется от линии 5V, обеспечивая стабильную работу устройства. Кроме того, джойстик оснащён функцией нажатия, которая реализуется через цифровой вход GPIO4. Для корректной работы этой функции необходимо подключение подтягивающего резистора номиналом 4.7 кОм к линии 3.3V, обеспечивающего надежное определение состояния кнопки при замыкании.
2.1. Подключаем джойстик к к макетной плате согласно таблице 2.
Макетная плата | Джойстик | АЦП |
---|---|---|
5V | VCC | |
GND | GND | |
URX | A0 | |
URY | A1 | |
GPIO4 | SW |
Таблица 2. Подключение джойстика к макетной плате.
2.2. Результат подключения будет выглядеть следующим образом, см. рисунок 7:
3. Выполним проверку подключения устройств АЦП и джойстика. Для этого будем использовать python скрипт из репозитория repka-pi_iot-examples.
3.1. Клонируем репозиторий:
git clone git@gitflic.ru:repka_pi/repka-pi_iot-examples.git
3.2. Переходим в репозиторий:
cd repka-pi_iot-examples/
3.3. Выполним установку зависимостей.
3.3.1. Если хотите установить зависимости только для джойстика, выполните:
make setup-KY-023
3.3.2. Если хотите установить зависимости для всех датчиков и проектов, выполните:
make setup-all
3.4. Запускаем скрипт для проверки работоспособности прибора:
make KY-023
3.5. Если на этапе 3.4. возникает ошибка, необходимо внести изменения в Python-скрипт, расположенный по пути devices/input-output/KY-023_example/py, корректируя номер – i2c = I2C("/dev/i2c-1") и адрес шины – ADS1115_ADDR. В случае отсутствия ошибок, данный шаг нужно пропустить.
#Адрес по умолчанию для ADS1115 (может быть 0x48, 0x49, 0x4A, 0x4B)
ADS1115_ADDR = 0x48
# Создание I2C интерфейса
i2c = I2C("/dev/i2c-1")
3.6. Из рисунка 8 видно, что скрипт был успешно выполнен, и данные о положении джойстика корректно отображаются в консоли.
Запуск проекта
Теперь, когда все компоненты подключены, можно запустить проект "Змейка". Для этого в репозитории repka-pi_iot-examples выполняем команду:
make snake
Игровой процесс отображается на экране в реальном времени, и пользователь может полноценно взаимодействовать с ним с помощью джойстика. Управление движением змейки осуществляется путём наклона стика в нужном направлении, а для постановки игры на паузу достаточно нажать на стик — встроенная кнопка срабатывает, приостанавливая игру до следующего действия игрока.
Видеообзор проекта (вариант с выводом на монитор)
Для более детального ознакомления с проектом, вы можете посмотреть видеообзор на платформе Rutube.
Пример использования с Python (вариант с выводом на монитор)
Проект полностью реализован на языке Python. Код для работы можно найти в репозитории на платформе Gitflic.
Сборка проекта (вариант с выводом на дисплей OLED 0.96″)
Перед началом сборки проекта обратимся к электрической принципиальной схеме и монтажной схеме, представленной в учебном пособии (см. рисунки 11 и 12). По сравнению со схемами на рисунках 4 и 5, в данной конфигурации добавлен только OLED-дисплей, подключенный по интерфейсу I2C. Остальные компоненты — джойстик, АЦП и их подключения — остались без изменений,
Электрическая принципиальная схема #
Монтажная схема #
- Выполним подключение OLED дисплея.
Как видно из рисунков 11 и 12 устройство подключается через интерфейс I2C и питается от 5V.
1.1. Подключим дисплей OLED 0.96″ I2C к макетной плате согласно таблице 3.
Макетная плата | Дисплей OLED 0.96″ I2C |
5V | VDD |
GND | GND |
SCL1 | SCK |
SDA1 | SDA |
Таблица 3. Подключение дисплея OLED 0.96″ I2C к макетной плате.
1.2. Результат подключения будет выглядеть следующим образом, см. рисунок 13.
- Выполним проверку подключения устройства.
2.1. Если ранее не устанавливали все зависимости командой setup-all, то установим зависимости для дисплей модуля, выполнив:
make setup-OLED-SSD1306
2.2. Запустим python скрипт:
make OLED-SSD1306
2.3. Из рисунка 14 видим, что скрипт успешно выполнился, тестовый текст появился на дисплее.
Запуск проекта
Теперь, когда все компоненты подключены, можно запустить проект "Змейка". Для этого в репозитории repka-pi_iot-examples выполняем команду:
make snake-oled
Здесь реализована та же логика, что и в варианте с отображением на мониторе: игровой процесс выводится на OLED-дисплей в реальном времени, а управление осуществляется с помощью двухосевого джойстика. Направление движения змейки определяется наклоном стика, а для постановки игры на паузу достаточно нажатия — встроенная кнопка фиксирует это действие и приостанавливает игру до следующего взаимодействия.
Видеообзор проекта (вариант с выводом на OLED дисплей)
Для более детального ознакомления с проектом, вы можете посмотреть видеообзор на платформе Rutube.
Пример использования с Python (вариант с выводом на OLED дисплей)
Проект полностью реализован на языке Python. Код для работы можно найти в репозитории на платформе Gitflic.
Практическая значимость проекта
Проект “Змейка” на базе одноплатного компьютера Repka Pi 4 имеет высокую образовательную ценность и может быть использован в качестве практического задания в курсах по робототехнике, программированию и системам встраиваемой электроники. Он позволяет учащимся наглядно освоить принципы работы с аналоговыми и цифровыми сигналами, интерфейсом I2C, а также научиться создавать графические интерфейсы и реализовывать интерактивное управление. Использование джойстика, дисплея и АЦП развивает понимание взаимодействия различных компонентов в рамках одного проекта. Благодаря гибкости и открытой архитектуре, данный проект легко масштабируется и может служить основой для создания более сложных игровых или прикладных систем.
Расширение проекта
Проект “Змейка” предоставляет широкие возможности для дальнейшего расширения и развития. Одним из направлений может стать добавление новых игровых механик — препятствий, уровней сложности, счётчиков времени или бонусов. Также возможно интегрировать звуковое сопровождение с использованием зуммера или динамика, подключаемого к выходным GPIO-пинам.
Интересным расширением будет использование гироскопа или акселерометра вместо джойстика для управления движением змейки — это позволит реализовать управление наклоном устройства. Помимо этого, можно подключить RGB-светодиоды для визуальной индикации событий (например, при наборе очков или проигрыше), а также реализовать отображение счёта на отдельном семисегментном индикаторе или дисплее.
Для командной или сетевой игры можно рассмотреть организацию обмена данными между несколькими устройствами Repka Pi 4 по Wi-Fi или Bluetooth, с синхронизацией состояния игры между игроками.