Представляю вам образовательный проект — “Охота на светлячка” разработанный в рамках учебно-методического комплекса на базе одноплатного компьютера Repka PI 4.
Игра состоит из 10 раундов, в каждом из которых пользователю необходимо наклонить гироскоп в случайно выбранном направлении и нажать кнопку в течение заданного времени. За правильное выполнение задания игрок получает балл, а за ошибку теряет один. Результат каждого действия отображается с помощью RGB-светодиода и зуммера.
Проект будет собираться с использованием “Учебно-методический комплекс REPKA”. Схему сборки можно найти в разделе "Примеры готовых проектов" учебного пособия УМК “REPKA”.
Также все необходимые материалы и схемы подключения доступны в репозитории на платформе Gitflic.
Компоненты проекта
1. Дисплей OLED 0.96″ I2C см. рисунок 1. Отображает игровой процесс.
2. Зуммер пассивный модуль (Passive buzzer KY-006) см. рисунок 2. Сигнализирует о результате действия игрока.
3. Четырехконтактный светодиодный RGB модуль (RGB LED) см. рисунок 3. Отображает состояние игры: успех или ошибка.
4. Модуль трехосевого гироскопа и акселерометра (GY-521; MPU-6050) см. рисунок 4. Отслеживает наклон устройства.
5. Кнопка см. рисунок 5. Требуется для нажатия по таймингу.
Вы можете приобрести все необходимые компоненты отдельно от "Учебно-методический комплекс REPKA". Ссылки на модули приведены в таблице ниже.
Компонент | Ссылка на приобретение |
---|---|
Монтажная/макетная плата | Ссылка |
Шлейф | Ссылка |
Переходник с шлейфа на макетную плату | Ссылка |
Соединительные провода | |
Дисплей OLED 0.96 | Ссылка |
Зуммер пассивный модуль (Passive buzzer KY-006) | Ссылка |
Четырехконтактный светодиодный RGB модуль (RGB LED) | Ссылка |
Модуль трехосевого гироскопа и акселерометра (GY-521; MPU-6050) | Ссылка |
Кнопка | Ссылка |
Подготовительный этап
1. Подключим дополнительное питание 5V к макетной плате:
2. После чего выведем дополнительное питание на макетную плату:
3. Подключим переходник с шлейфа на макетную плату:
4. Соединим шлейф с переходником для подключения к макетной плате и Repka Pi 4:
5. Итоговый результат должен выглядеть таким образом:
Сборка проекта
Во время сборки проекта будем регулярно обращаться к электрической принципиальной схеме и монтажной схеме, представленными в учебном пособии (см. рисунки 6 и 7). Эти схемы будут служить основным ориентиром на всех этапах подключения компонентов, обеспечивая точность и правильность сборки устройства.
Для разработки кода будет использоваться текстовый редактор Geany, который входит в состав стандартного ПО Репка ОС.
Электрическая принципиальная схема
Монтажная схема
1. Подключение дисплея OLED 0.96″ I2C.
Как видно из рисунков 6 и 7 устройство подключается через интерфейс I2C и питается от 5V.
1.1. Подключим дисплей OLED 0.96″ I2C к макетной плате согласно таблице 1.
Макетная плата | Дисплей OLED 0.96″ I2C |
5V | VDD |
GND | GND |
SCL1 | SCK |
SDA1 | SDA |
Таблица 1. Подключение дисплея OLED 0.96″ I2C к макетной плате.
1.2. Результат подключения будет выглядеть следующим образом, см. рисунок 8:
2. Для проверки правильности подключения используем python скрипт из репозитория repka-pi_iot-examples.
2.1. Клонируем репозиторий:
git clone git@gitflic.ru:repka_pi/repka-pi_iot-examples.git
2.2. Переходим в репозиторий:
cd repka-pi_iot-examples/
2.3. Выполним установку зависимостей.
2.3.1. Если хотите установить зависимости только дисплея, выполните:
make setup-OLED-SSD1306
2.3.2. Если хотите установить зависимости для всех датчиков и проектов, выполните:
make setup-all
2.4. Запускаем скрипт для проверки работоспособности прибора:
make OLED-SSD1306
2.5. Если на этапе 2.4. возникает ошибка, то измените в python скрипте номер шины – port или адрес на шине – address, если ошибок нет, то пропустите данный пункт.
# Инициализация подключения к OLED дисплею через шину I2C
port=1 # номер I2C-шины Repka PI (обычно 1)
address=0x3C # адрес OLED дисплея на шине I2C (часто 0x3C или 0x3D)
serial = i2c(port=1, address=0x3C
2.6. Из рисунка 9 видим, что скрипт успешно выполнился, тестовый текст успешно появился на дисплее.
3. Подключение пассивного зуммера.
Обратимся к рисункам 6 и 7. Из них видно, что устройство подключается через GPIO4 и питается от 3.3V.
3.1. Выполним подключение к макетной плате согласно таблице 2.
Макетная плата | Пассивный зуммер |
3.3V | VCC |
GPIO4 | IO |
GND | GND |
Таблица 2. Подключение пассивного зуммера к макетной плате.
3.2. Результат подключения будет выглядеть следующим образом, см. рисунок 10:
4. Аналогично пункту 2 выполним проверку подключения датчика.
4.1. Установим зависимости для зуммера, выполнив:
make setup-KY-006
4.2. Выполните команду:
make KY-006
4.2.1. Если нет никакой реакции, то проверьте номер GPIO указанный в скрипте по пути devices/executive/KY-006_example/py.
BEEP_PIN = 111 # Укажите номер пина, к которому подключен BEEP
4.2.2. Обратимся к пособию “УМК Репка. Учебно-методическое пособие”, в котором представлена распиновка Repka PI 4 (рисунок 11). Из нее следует, что уникальный идентификатор порта GPIO4 равен 362.
4.2.3. Внесем правки в код и выполним скрипт
BEEP_PIN = 362 # Укажите номер пина, к которому подключен BEEP
4.3. После запуска зуммер должен воспроизвести мелодию.
5. Подключение четырехконтактного светодиодного RGB модуля (RGB LED)
Обратимся к рисункам 6 и 7. Из них видно, что устройство подключается через GPIO17, GPIO27, GPIO22.
5.1. Подключим RGB LED к макетной плате согласно таблице 3:
Макетная плата | RGB LED |
GPIO17 | R |
GPIO27 | G |
GPIO22 | B |
GND | GND |
Таблица 3. Подключение RGB LED к макетной плате.
5.2. Результат подключения будет выглядеть следующим образом, см. рисунок 12.
6. Аналогично пункту 4 выполним проверку подключения модуля.
6.1. Если ранее не устанавливали все зависимости командой setup-all, то установим зависимости для RGB модуля, выполнив:
make setup-rgb-led
6.2. Запустим python скрипт:
make rgb-led
6.3. Если все подключено верно, то в консоли появится выбор работы программы, см. рисунок 13.
6.4. Выберем только красный цвет и оценим результат, см. рисунок 14.
7. Подключение трехосевого гироскопа и акселерометра (GY-521; MPU-6050).
Обратимся к рисункам 6 и 7. Из них видно, что устройство подключается по интерфейсу I2C и питается от 5V.
7.1. Выполним подключение к макетной плате согласно таблице 4.
Макетная плата | Трехосевой гироскоп |
5V | VCC |
GND | GND |
SCL | SCL |
SDA | SDA |
Таблица 4. Подключение трехосевого гироскопа и акселерометра к макетной плате.
7.2. Результат подключения будет выглядеть следующим образом, см. рисунок 15:
8. Аналогично пункту 4 выполним проверку подключения датчика.
8.1. Если ранее не устанавливали все зависимости командой setup-all, то установим зависимости для RGB модуля, выполнив:
make setup-gy-521
8.2. Запустим python скрипт:
make gy-521
8.3. Если все подключено правильно, в консоли отобразятся данные с датчика GY-521, как показано на рисунке 16.
9. Подключение кнопки.
Обратимся к рисункам 6 и 7. На них показано, что устройство подключается к GPIO18, а также имеется подтяжка к плюсу через резистор номиналом 4.7 кОм.
9.1. Выполним подключение к макетной плате согласно таблице 5.
Макетная плата | Трехосевой гироскоп |
GND | GND |
GPIO18 | GPIO |
Таблица 5. Подключение кнопки к макетной плате.
9.2. Результат подключения будет выглядеть следующим образом, см. рисунок 17.
10. Аналогично пункту 4 выполним проверку подключения датчика.
10.1. Установим зависимости для кнопки, выполнив:
make setup-one-button
10.2. Выполним python скрипт:
make one-button
10.2.1. Если нет никакой реакции, то проверьте номер GPIO указанный в скрипте по пути devices/input-output/one_button_example/py, в данном проекте для кнопки используется GPIO с id равным 203, см. рисунок 11.
PIN1 = 203 # GPIO17
10.3. После выполнения Python-скрипта в консоли должна появиться индикация нажатия кнопки.
Запуск проекта
Теперь, когда все компоненты подключены, можно запустить проект "Охота на светлячка". Для этого в репозитории repka-pi_iot-examples выполняем команду:
make hunting-fireflies
После запуска на дисплее можем наблюдать игровой процесс, а принимать участие в нем можем благодаря кнопки и гороскопу, см. рисунок 19.
Практическая значимость проекта
Проект "Охота на светлячка" имеет большую практическую значимость в образовательном процессе. Он представляет собой интерактивную игру, которая позволяет студентам и ученикам развивать навыки работы с одноплатными компьютерами, такими как Repka PI 4, а также освоить различные компоненты и модули, включая гироскопы, RGB-светодиоды и OLED-дисплеи. Помимо этого, проект помогает в обучении основам программирования на Python, а также в освоении принципов подключения и конфигурирования электронных компонентов с использованием интерфейсов I2C и GPIO.
Проект способствует развитию навыков в области электроники, программирования и взаимодействия с различными датчиками и модулями, что является необходимым в современных направлениях инженерии и IT. Он может быть использован в качестве основы для создания более сложных проектов, связанных с сенсорами, игровыми интерфейсами и робототехникой.
Расширение проекта
Проект может быть расширен и адаптирован для более сложных приложений. Например, можно добавить возможность многопользовательского режима, в котором несколько игроков могут соревноваться за наибольшее количество баллов. Для этого потребуется реализовать дополнительные входы для кнопок и гироскопов, а также использовать более сложные алгоритмы синхронизации данных.
Для интеграции с внешними системами можно добавить возможность сохранять результаты игры в облаке или на локальном сервере, что позволит отслеживать успехи игроков и создавать таблицы лидеров. Это расширение будет полезным для организации соревнований или образовательных турниров.
Видеообзор проекта
Для более детального ознакомления с проектом, вы можете посмотреть видеообзор на платформе Rutube.
Пример использования с Python
Проект полностью реализован на языке Python. Код для работы можно найти в репозитории на платформе Gitflic.