Оглавление:

Цифровые шахматы - отслеживайте свою игру в шахматы онлайн: 5 шагов
Цифровые шахматы - отслеживайте свою игру в шахматы онлайн: 5 шагов

Видео: Цифровые шахматы - отслеживайте свою игру в шахматы онлайн: 5 шагов

Видео: Цифровые шахматы - отслеживайте свою игру в шахматы онлайн: 5 шагов
Видео: ТОП-10 ИГРОВЫХ ШАХМАТНЫХ САЙТОВ 2024, Ноябрь
Anonim
Цифровые шахматы - отслеживайте свою игру в шахматы онлайн
Цифровые шахматы - отслеживайте свою игру в шахматы онлайн

Я много играл в шахматы с юных лет, и, поскольку в Интернете есть огромное количество веб-сайтов, на которых можно играть в шахматы против компьютеров или живых оппонентов, я ни разу не нашел веб-сайт, который отслеживал бы вашу игру в шахматы, которую вы на самом деле играя в реальной жизни. Так что с этим проектом я надеюсь это реализовать!

Я надеюсь:

  • Уметь отслеживать движение шахматных фигур
  • См. Списки лидеров прошлых игр.
  • Следите за временем и играйте быстро, как в профессиональной игре.

Это очень сложный проект, поскольку для его завершения потребуются 64 световых датчика и 8 чипов. Это уже большая задача, и мы даже не считаем другие датчики.

Мой колледж дал нам большой список дел:

  1. Создайте схему для нашего проекта
  2. Создайте базу данных для хранения и получения данных.
  3. Создайте веб-сайт с помощью Adobe XD
  4. Восстановите этот сайт с помощью CSS и HTML
  5. Считайте датчики с помощью python
  6. Покажите данные датчика на сайте с помощью фляги.

В этом руководстве я расскажу вам о своем путешествии и обо всех проблемах и моментах спасения, которые я пережил за последние пару недель.

Шаг 1. Расходные материалы / инструменты

Принадлежности, материалы и инструменты - это первый шаг к успешному проекту!

Инструменты:

  • Паяльник
  • Паяльное олово
  • Плоскогубцы
  • Дрель
  • Лента

Запасы:

  • Raspberry Pi с картой micro SD (4 ГБ должно быть достаточно)
  • Т-сапожник Rasberry Pi
  • Шахматная доска с фигурами
  • 7-сегментный дисплей (TM 1637)
  • 2 сенсорных датчика (TTP223B)
  • Считыватель RFID с картами (MFRC522)
  • MCP3008 (в зависимости от того, как далеко вы хотите зайти, для каждого MCP вы можете прочитать 8 шахматных координат)
  • Светозависимый резистор типа 5288 (8 на каждую имеющуюся MCP)
  • Заголовки (от мужчины к мужчине и от женщины к мужчине)

Если вам нужно купить все, ориентировочная цена должна составить около 125 евро, включая стоимость доставки (только расходные материалы)!

В приложении есть файл Excel со ссылками и ценами на все, что вам нужно!

Шаг 2: Схема и планирование

Схемы и планирование!
Схемы и планирование!
Схемы и планирование!
Схемы и планирование!

Следующим шагом в этом проекте является создание схемы. Я сделал 2: один на макетной плате и один чисто электронный. Эти схемы нам понадобятся, чтобы содержать все в чистоте и не подключать лишнее!

Я использовал программу под названием «Fritzing» для создания этих схем, если кому-то интересно.

Цветовое кодирование:

  • Красный = источник питания
  • Зеленый = соединение
  • Синий = земля

Подключения Raspberry Pi:

  • 3V3 => Линия ВК на макетной плате, питающая все
  • 5V => VCC 7-сегментного дисплея
  • GND:

    • Земля на макете
    • Основание 7-сегментного дисплея
  • GPIO4 => Clock Select pin на MCP3008
  • GPIO10 => вывод MOSI MCP3008
  • GPIO9 => вывод MISO MCP3008
  • GPIO11 => вывод CLK MCP3008
  • GPIO7 => вывод SDA MFRC522
  • GPIO19 => вывод DIG первого сенсорного датчика
  • GPIO26 => DIG контакт второго сенсора Touch
  • GPIO20 => вывод CLK семисегментного дисплея
  • GPIO21 = вывод DIO седьмого сегмента дисплея

Пара примечаний к схемам:

  • Эта схема содержит только 1 MCP, это означает, что только 8 координат смогут быть прочитаны полностью.
  • Я буду использовать контакты GPIO в качестве своего Chip Select. Поскольку только 2 контакта выбора микросхемы доступны с потенциально 8 MCP.
  • 7-сегментный дисплей предложен учителем, требуется только 4 провода, так как он работает по собственному протоколу.
  • Резисторы на цифровом выводе сенсорных датчиков не нужны полностью, но рекомендуется.

Объяснение компонентов:

  • МКП со световыми датчиками:

    • MCP3008 - это 8-канальный 10-битный АЦП:

      • MCP3008 будет считывать аналоговое значение световых датчиков, это значение зависит от количества света, попадающего на датчик в данный момент.
      • В моем коде Python я получу это аналоговое значение и конвертирую его в 1 или 0
  • Сенсорные датчики:

    Работает как кнопка, я использую для этого класс с методом обратного вызова. Подробнее об этом позже

    Считыватель RFID (MFRC 522):

    • Использует определенный протокол (SPI) с установленным пакетом.
    • Нетрудно кодировать с установленным пакетом
    • Считывает тег и возвращает значение тега
    • Вы также можете записать значение в тег, поэтому вместо того, чтобы возвращать шестнадцатеричное значение, он возвращает имя, например

    7-сегментный (TM1637)

    • Также использует установленный пакет для упрощения кодирования
    • Создайте переменную с целочисленным значением, затем разделите ее на 4 символа и покажите эти символы

Шаг 3: База данных SQL

База данных SQL
База данных SQL

Третий шаг к этому проекту - создание нормализованной базы данных SQL 3NF!

Это понадобится нам для:

  • Вставка данных
  • Получение данных и отображение их на нашем сайте
  • Возможность точно увидеть, сколько ходов прошло в текущей шахматной партии!

Объяснение таблиц:

  • Игры

    • Отслеживает, кто выиграл определенную игру и когда игра была сыграна.
    • Первичный ключ здесь - GameID
    • Дата имеет стандартное значение текущей даты.
    • Победитель и счет будут добавлены позже, после окончания игры!
  • Игроки (Spelers на голландском)

    • Они вставляются вручную, но также могут быть вставлены с помощью системы RFID-карт.
    • Напишите имя на своей карточке, затем прочтите карточку и вставьте имя в эту таблицу
    • Он также отслеживает записи побед / поражений каждого игрока, которые будут отображаться на веб-сайте.
  • Historiek (История)

    • Это история поворота
    • когда шахматная фигура будет перемещена, она будет обновлена здесь
    • Имеет 3 внешних ключа, игрок, игру и фишку.
    • ReadDate (InleesDatum) - это дата, когда датчик был прочитан
    • ReadTime - это то же самое, что и ReadDate, но с отметкой времени.
    • LocationID (LocatieID) - это имя координаты, в которой он расположен. например "а3"
  • Шахматные фигуры (Schaakstukken на голландском)

    • У каждой шахматной фигуры есть идентификатор, команда, имя и статус.
    • В команде 1 или 2, черные или белые;
    • Название любой фигуры будет, например, «Пешка 1».
    • Статус означает, что произведение живо или мертво!

Шаг 4: Оборудование

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

Теперь, когда у нас есть все необходимые детали, мы можем начать что-то создавать!

Давайте разделим эту часть на подэтапы, так как это будет легче объяснить:

  • Шаг 1: вы хотите просверлить отверстие в каждой координате вашей шахматной доски, как показано на первом рисунке, также просверлите отверстие, где вы хотите разместить сенсорные датчики, считыватель RFID и 7-сегментный дисплей.

    Не забудьте просверлить несколько отверстий на боковой стороне платы, они предназначены для проводов различных компонентов наверху платы. Я знаю, что много сверлить

  • Шаг 2: Попробуйте подключить один или два датчика к Raspberry Pi, проверьте, работают ли они. Вы хотите подключить их к аналоговому считывателю MCP, как описано ранее в шаге 2 (схемы).
  • Шаг 3: Это может быть сложно и очень нервно, так как заголовки перемычек не сильно застревают на месте, вы можете захотеть приклеить их все к плате по отдельности или сразу несколько. Вы должны убедиться, что они застряли на шахматной доске, иначе вы не сможете успешно прочитать датчики.

    КОНЧИК! Если вам так будет проще, немного клея может помочь удерживать датчики на месте при их приклеивании, я обнаружил это на собственном горьком опыте

Шаг 5: Программное обеспечение

Программное обеспечение
Программное обеспечение

После того, как вы создали оборудование, которое можно протестировать, давайте попробуем написать для него код! Если вы хотите взглянуть на мой код, перейдите на мой github.

Back-end: Сначала нам нужно установить пару пакетов, я пошел дальше и составил для вас список:

  • фляга

    Это то, на чем будет работать ваш код Python

  • Фляга-сокетIO

    Для связи между интерфейсом и сервером

  • тупой

    Полезно для считывания датчиков освещенности, работает с матричными

  • netifaces

    Чтобы распечатать свой собственный IP-адрес на 7-сегментном дисплее

  • Flask-CORS

    Совместное использование ресурсов из разных источников позволяет использовать пакеты в разных доменах

Кроме того, я написал несколько классов, и вы можете их использовать.

Внешний интерфейс

Код сайта также доступен на моей странице github!

Для интерфейса я буду использовать Chessboard.js. Это вставляет простую в использовании шахматную доску с легко перемещаемыми фигурами!

Все на доске можно настроить, так что получайте удовольствие! После загрузки последней версии вам нужно будет перетащить файлы в свой проект и связать их со страницей, на которой вы хотите показать шахматную доску!

После этого попробуем создать доску, не особо сложно:

Во-первых, в вашем html:

Во-вторых, в вашем файле javascript:

board1 = ChessBoard ('доска1', 'начало');

Вот и все, теперь вы должны увидеть шахматную доску! Не стесняйтесь настраивать доску в файлах CSS!

Теперь мы хотим увидеть несколько ходов на шахматной доске, не слишком сложных. Но нам нужно настроить его так, чтобы команда перемещения отправлялась серверной частью. Я не буду вдаваться в подробности, но мы хотим сделать что-то вроде этого:

new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (коммандос);

Мы получаем список от нашей внутренней программы и ставим тире между двумя координатами, а затем используем команду board.move для выполнения перемещения!

Это мое объяснение того, что нам нужно от плагина chessboard.js, зайдите в мой github, чтобы самому взглянуть на код

Рекомендуемые: