Оглавление:

CheminElectrique (игра навыков) - SRO2002: 9 шагов
CheminElectrique (игра навыков) - SRO2002: 9 шагов

Видео: CheminElectrique (игра навыков) - SRO2002: 9 шагов

Видео: CheminElectrique (игра навыков) - SRO2002: 9 шагов
Видео: Как сделать крутое обучение в игре — лучшие туториалы в игровой индустрии 2024, Май
Anonim
CheminElectrique (игра навыков) - SRO2002
CheminElectrique (игра навыков) - SRO2002
CheminElectrique (игра навыков) - SRO2002
CheminElectrique (игра навыков) - SRO2002
CheminElectrique (игра навыков) - SRO2002
CheminElectrique (игра навыков) - SRO2002

Сегодня я представляю вам игру, которую я сделал для школьной вечеринки для своего сына. Во Франции мы называем эти фестивали «кермесами», я не знаю, существуют ли они в других странах и как они называются…

В этих партиях часто бывают одни и те же игры, это то, что я бы назвал классическими играми, и в этом году я решил сделать более современную версию одной из этих классических игр: «Chemin electrique» или «Main chaude».

Цель игры очень проста: есть провод, по которому проходит электрический ток, затем у вас есть «джойстик», состоящий из металлического круга на его конце, который проходит вокруг электрического провода, и цель игры - пройти через провод от одного конца до другого, не касаясь его, в противном случае сигнальная лампа и / или звук погаснут, и вы проиграете.

Традиционно для создания этой игры нет никакой электроники, достаточно простой батареи на 12 В с лампочкой и электрического провода, но у меня было несколько интересных идей, чтобы сделать игру более современной.

Итак, давайте посмотрим, что я добавил в качестве функциональности!

Шаг 1: особенности

Как я только что сказал, эта игра просто включает свет, когда игрок непреднамеренно касается провода «джойстиком», также довольно часто игра издает звук во время контакта. В моей версии игры будет всего 6 блоков по 4 светодиода (зеленый-желтый-желтый-красный), которые будут гореть одновременно, зуммер, который будет издавать звук, а также вибратор, встроенный в контроллер, который активируется. при контакте электрического провода с «джойстиком».

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

Я также добавил выбор уровня сложности (простой-нормальный-сложный), а также возможность включать / отключать вибратор и звук. Громкость звука также можно будет регулировать с помощью потенциометра.

Выбор сложности - это на самом деле просто более или менее длительная задержка между моментом контакта между проводом и джойстиком и моментом, когда игра начинает светиться / звенеть / вибрировать. Я устанавливаю предопределенное время путем программирования, например, в простом режиме игра ждет 1 секунду, прежде чем срабатывать предупреждения, в то время как в сложном режиме предупреждения будут срабатывать немедленно.

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

Шаг 2: отказ от ответственности и дополнительная информация

Заявление об ограничении ответственности и дополнительная информация
Заявление об ограничении ответственности и дополнительная информация

Заявление об ограничении ответственности:

Игра будет питаться от 4 батареек по 1,5 В, общее напряжение 6 В, я также ограничиваю ток, который проходит по проводу, до нескольких микроампер. Таким образом, мы находимся в области очень низкого безопасного напряжения (SELV) с чрезвычайно низким значением тока, доступным для пользователя.

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

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

Дополнительная информация:

Этот проект работает очень хорошо и имеет все функции, которые я хотел, но у него есть некоторые недостатки. Когда я создаю электронный проект, я стараюсь, чтобы все было максимально оптимизировано с точки зрения стоимости, количества компонентов, пространства и особенно, чтобы работа всего была как можно более «логичной».

Пока я работал над этим проектом и после его завершения, я думаю, что некоторые варианты, которые я сделал, не самые лучшие, но я был ограничен временем, у меня было всего 2 недели, чтобы сделать все с нуля (дизайн, программирование, заказ компонентов, создание конструкция, а особенно сборка всех элементов).

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

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

Я доволен этим проектом, потому что он имел большой успех на школьной вечеринке моего сына, так что давайте посмотрим, что в чреве зверя;)

Шаг 3: Обязательства

- Должен питаться от аккумулятора (для безопасности и мобильности) - Игра должна быть безопасной (ею будут пользоваться дети от 2 до 10 лет)

- Настройки должны быть доступны (выбор активации звука / вибратора и выбор сложности)

- Настройки должны быть простыми для понимания и легкодоступными (следует исходить из того, что человек, который будет заниматься игрой во время вечеринки, ничего не знает в электронике / технике)

- Звук должен быть достаточно громким (игра будет использоваться на улице в довольно шумной обстановке).

- Система должна быть максимально съемной для хранения и легко заменяемыми физическими частями (джойстик, электрический провод …)

- Должен быть привлекательным для детей (это главная цель, ради которой они играют…:))

Шаг 4: Компоненты (BOM)

Для корпуса: - деревянная доска

- рисование

- некоторые инструменты для сверления и резки….

Для «джойстика»: - 1 вибратор

- кабель jack 3.5 (стерео)

- разъем jack 3.5 (стерео)

- электрический провод 2,5мм²

- небольшая трубка из ПВХ

Электронные компоненты:

- 16Ф628А

- 12F675

- ULN2003A

- 2 х 2Н2222А

- стабилитрон 2.7В

- 12 синих светодиодов

- 6 зеленых светодиодов

- 6 красных светодиодов

- 12 желтых светодиодов

- 5 резисторов 10К

- 2 резистора 4,7К

- 1 резистор 470 Ом

- 6 резисторов 2.2К

- 6 резисторов 510 Ом

- 18 резисторов 180 Ом

- 1 потенциометр 1К

- 1 переключатель ВКЛ-ВЫКЛ

- 2 переключателя ВКЛ-ВЫКЛ-ВКЛ

- 1 зуммер

- 1 повышающий преобразователь постоянного тока

- электрический провод 2,5мм²

- 2 банановых разъема папа

- 2 банановых разъема мама

- разъем jack 3.5 (стерео)

- держатель для 4 батареек LR6

- некоторые макеты печатных плат

Электронные инструменты: - Программатор для ввода кода в микросхемы Microchip 16F628A и 12F675 (например, PICkit 2) -

Я советую вам использовать Microchip MPLAB IDE (бесплатное ПО), если вы хотите изменить код, но вам также понадобится компилятор CCS (условно-бесплатная). Вы также можете использовать другой компилятор, но вам потребуется много изменений в программе.

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

Шаг 5: Функциональный анализ

Функциональный анализ
Функциональный анализ
Функциональный анализ
Функциональный анализ

Микроконтроллер 16F628A (Func1): это «мозг» всей системы, именно этот компонент определяет положение переключателей настроек, определяет, есть ли контакт между «джойстиком» и электрическим проводом, и запускает предупреждения (световые, звуковые и вибрационные). Я выбрал этот компонент, потому что у меня довольно большой запас и потому что я привык программировать с ним, и поскольку у меня не было много времени для этого проекта, я предпочел взять некоторый материал, который я хорошо знаю.

Интерфейс питания ULN2003A (Func2): этот компонент служит интерфейсом питания между 16F628A и цепями, которые потребляют больше энергии, чем может обеспечить микроконтроллер (светодиод, зуммер, вибратор).

Управление зуммером (Func3):

PIC 16F628A не может обеспечить достаточный ток для питания зуммера, тем более что зуммер должен получать питание через повышающий преобразователь, чтобы увеличить его звуковую мощность.

Действительно, поскольку сборка питается от 6 В и зуммеру требуется 12 В для работы на максимуме, я использую преобразователь для получения хорошего напряжения. Поэтому я использую транзистор в качестве переключателя (режим коммутации) для управления источником питания зуммера. Я выбрал классический 2N2222A, который очень подходит для этого использования.

Вот характеристики зуммера: 12 В 25 мА, это означает, что ему требуется теоретическая мощность P = UI = 12 x 25 мА = 0,3 Вт.

Таким образом, требуется мощность 0,3 Вт от повышающего преобразователя постоянного тока, модуль повышения постоянного тока имеет эффективность 95%, поэтому потери составляют около 5%. Следовательно, на входе преобразователя требуется минимальная мощность 0,3 Вт + 5% = 0,315 Вт.

Теперь мы можем вычислить ток Ic, который пройдет через транзистор Q1:

P = U * Ic

Ic = P / U

Ic = P / Vcc-Vcesat

Ic = 0, 315 / 6-0, 3

Ic = 52 мА

Теперь рассчитаем базовый резистор, позволяющий транзистору хорошо насыщаться:

Ибсатмин = Ic / Бетамин

Ibsatmin = 52 мА / 100

Ibsatmin = 0,5 мА

Ibsat = K x Ibsatmin (я выбираю коэффициент перенасыщения K = 2)

Ибсат = 2 х Ибсатмин

Ibsat = 1 мА

R12 = Ur12 / Ibsat

R12 = Vcc - Vbe

R12 = (6 - 0,6) / 1 мА

R12 = 5,4 К

Нормализованное значение (E12) для R12 = 4,7K

Управление вибратором (Func4):

Что касается зуммера, то 16F628A не может подавать достаточный ток на вибратор, для которого требуется ток 70 мА, более того, он должен быть максимально запитан с напряжением 3 В. Поэтому я решил использовать стабилитрон в сочетании с транзистором, чтобы сделать стабилизатор напряжения 2,7 В для вибратора. Работа ассоциации стабилитрон-транзистор проста, стабилитрон фиксирует напряжение 2,7 В на базе транзистора, а транзистор «копирует» это напряжение и подает питание.

Таким образом, ток, который будет проходить через транзистор Q2, равен Ic = 70 мА.

Теперь рассчитаем сопротивление базы, позволяющее транзистору хорошо насыщаться:

Ибсатмин = Ic / Бетамин

Ibsatmin = 70 мА / 100

Ibsatmin = 0, 7 мА

Ibsat = K x Ibsatmin (я выбираю коэффициент перенасыщения K = 2) Ibsat = 2 x Ibsatmin

Ibsat = 1, 4 мА

Минимальный ток в стабилитроне должен быть не менее Iz = 1 мА для его работы, поэтому мы можем вывести ток, проходящий через резистор R13:

Ir13 = Ibsat + Iz

Ir13 = 1, 4 мА + 1 мА

Ir13 = 2, 4 мА

Чтобы гарантировать, что ток стабилитрона Iz всегда находится в правильном рабочем диапазоне, запас прочности берется с: Ir13_fixed = 5 мА (совершенно произвольный выбор значения)

Теперь посчитаем значение R13:

R13 = U13 / Ir13_fixed

R13 = VCC-Vz / Ir13_fixed

R13 = 6-2, 7/5 мА

R13 = 660 Ом

Нормализованное значение (E12) для R13 = 470 Ом

Я мог бы выбрать 560 Ом в серии E12, но у меня не было этого значения, поэтому я взял предыдущее значение …

Может быть оптимизирован

Когда я делал дизайн проекта, я не думал о Vbe транзистора, поэтому вместо 2,7 В для питания вибратора у меня есть только 2,7–0,6 В = 2,1 В. Я должен был взять стабилитрон на 3,3 В, например, вибратор был бы немного мощнее, даже если бы результат был вполне удовлетворительным, я не использую всю мощность вибратора …

Предупреждающие светодиоды (Func5):

Светодиоды расположены вертикально, как если бы они образовывали шкалу: красный

Желтый2

Жёлтый1

Зеленый

При обнаружении контакта между «джойстиком» и электрическим проводом они постепенно загораются от зеленого к красному.

Светодиоды подключаются к VCC группами по цвету:

- Все аноды зеленых светодиодов соединены вместе

- Все аноды светодиодов yellow1 соединены вместе

- Все аноды светодиодов yellow2 соединены вместе

- Все аноды красных светодиодов соединены вместе

Затем микроконтроллер активирует их, заземляя их катод через ULN2003A.

Примечание:

На схеме есть только один светодиод каждого цвета с символом «X6» рядом с ним, потому что я использую бесплатную версию Cadence Capture, и я ограничен максимальным количеством компонентов на диаграмме, поэтому я не мог отобразить все светодиоды. …

Управление уровнем звука зуммера (Func6):

Это просто потенциометр, соединенный последовательно с зуммером, который позволяет регулировать громкость звука.

Светодиоды "украшения" (Func7 - Схема / Страница 2):

Назначение этих светодиодов - создать погоню для украшения игры. Они загораются слева направо. Всего имеется 12 синих светодиодов: 6 в начале трассы, представляющие стартовую линию, и 6 в конце трассы, представляющие финишную линию.

Я решил сделать для этих светодиодов мультиплексирование дисплея, потому что для их заказа потребовалось бы намного больше контактов (6 контактов с мультиплексированием, 12 контактов без мультиплексирования).

Более того, в их техническом описании указано, что Vf составляет 4 В, поэтому я не мог подключить 2 светодиода последовательно (VCC составляет 6 В), и я не мог также подключить параллельно, потому что им ТЕОРИЧЕСКИ требуется 20 мА, а микроконтроллер может подавать только 25 мА. max на вывод, поэтому 40 мА было бы невозможно.

Подводя итог, я не смог объединить светодиоды (последовательно или параллельно), и у меня не было достаточно выводов на микроконтроллере, чтобы управлять ими … Поэтому я решил использовать другой микроконтроллер (12F675) с 8 выводами, чтобы иметь возможность Чтобы управлять ими. Благодаря этому микроконтроллеру я контролирую активацию светодиодов, устанавливая высокий логический уровень (VCC) на их анодах, и я использую PIC 16F628A и ULN2003A для выполнения мультиплексирования.

Можно оптимизировать:

При проведении тестов на макетной плате я понял, что при том же токе I = 20 мА светодиоды имеют большую разницу в яркости в зависимости от их цвета. Например, при 20 мА синие светодиоды были намного ярче зеленых. Мне не показалось эстетичным, что некоторые светодиоды были намного ярче других, поэтому я последовательно менял сопротивление с синими светодиодами, пока не получил ту же силу света, что и зеленые светодиоды, питаемые током 20 мА.

И я понял, что синие светодиоды имеют такую же яркость, как и зеленые светодиоды с током всего 1 мА! Это означает, что если бы я знал об этом раньше, я бы решил подключить синие светодиоды последовательно (группами по 2). И мне нужно было только еще 3 контакта на 16F675A (которые доступны), поэтому мне не нужно было добавлять еще один микроконтроллер, предназначенный для управления этими светодиодами.

Но на тот момент о конструкции я этого не знал, иногда есть существенная разница между характеристиками технической документации и реальными характеристиками компонентов …

Ограничение тока (Func0):

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

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

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

Поэтому я хотел установить резистор с высоким номиналом, чтобы снизить ток до минимально возможного значения, но, поскольку я уже закончил проект и, следовательно, все сварили и подключили разные карты, я больше не мог снимать понижающий резистор на 10 кОм. Поэтому мне пришлось выбрать значение сопротивления, чтобы получить 2/3 VCC на выводе BR0 (вывод 6 16F628A), чтобы микроконтроллер обнаруживал, хотя это высокий логический уровень, когда есть контакт между джойстиком и электрическим проводом. Если бы я добавил слишком большое сопротивление, у меня был бы риск, что микроконтроллер не обнаружил бы изменения между низким логическим состоянием и высоким логическим состоянием.

Поэтому я решил добавить сопротивление 4,7 кОм, чтобы получить на контакте напряжение около 4 В при контакте между джойстиком и электрическим проводом. Если добавить к этому сопротивление кожи человека в случае контакта электрического провода с рукой, например, ток, протекающий через тело, будет меньше 1 мА.

И даже если человек прикоснется к проводу, он будет контактировать только с положительной клеммой батарей, а не между положительной и отрицательной клеммами, но, как я сказал в заявлении об отказе от ответственности, ВСЕГДА обращайте внимание на то, что вы делаете с электрическим током.

Примечание: я долго не решался добавить это сопротивление, поскольку электрический ток, доступный пользователю (через электрический провод), слабый, и что сборка питается от батареи с напряжением всего 6 В, и что, возможно, в этом нет необходимости. ограничить ток от батарей, но поскольку это для детей, я предпочел принять как можно больше мер предосторожности.

Шаг 6: программирование

Программирование
Программирование

Программы написаны на языке C с помощью MPLAB IDE, а код компилируется с помощью CCS C Compiler.

Код полностью прокомментирован и довольно прост для понимания, но я быстро объясню основные функции двух кодов (для 16F628A и 12F675).

Первая программа -CheminElectrique.c- (16F628A):

Управление мультиплексированием светодиодов: Функция: RTCC_isr ()

Я использую timer0 микроконтроллера, чтобы вызывать переполнение каждые 2 мс, что позволяет управлять мультиплексированием светодиодов.

Управление обнаружением контактов:

Функция: void main ()

Это основной цикл, программа определяет, есть ли контакт между джойстиком и электрическим проводом, и активирует светодиоды / зуммер / вибратор в соответствии с временем контакта.

Управление настройкой сложности:

Функция: long GetSensitivityValue ()

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

Управление настройкой будильника:

Функция: int GetDeviceConfiguration ()

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

Вторая программа -LedStartFinishCard.c- (12F675):

Управление активацией синего светодиода: Функция: void main ()

Это основной цикл программы, он один за другим активирует светодиоды слева направо (для создания чейза)

См. Ниже zip-файл проекта MPLAB:

Шаг 7: Пайка и сборка

Пайка и сборка
Пайка и сборка
Пайка и сборка
Пайка и сборка
Пайка и сборка
Пайка и сборка
Пайка и сборка
Пайка и сборка

«Физическая» часть: я начал с создания коробки, поэтому я вырезал деревянные доски толщиной около 5 мм для верхней и боковых сторон и выбрал доску толщиной 2 см, чтобы нижняя часть имела больший вес и игра не двигалась.

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

Чтобы сделать игру более привлекательной, чем простая раскрашенная коробка, я попросил жену создать декор для верхней части коробки (потому что я действительно отстой в графическом дизайне…). Я попросил его проложить извилистую дорогу (чтобы иметь связь с проводом…) с банками / панелями по краям кривых, чтобы я мог включить свои предупреждающие светодиоды. Синие светодиоды украшений будут похожи на линии старта и финиша. Она создала пейзаж в стиле «Маршрут 66» с дорогой, которая пересекает своего рода пустыню, и после нескольких впечатлений, чтобы найти хорошее расположение светодиодов, мы были весьма довольны результатом!

Затем просверлил отверстия для всех разъемов, переключателей и, конечно же, светодиодов.

Электрический провод скручен, чтобы создать зигзаги, чтобы увеличить сложность игры, и каждый конец вкручивается в штекер типа «банан». Затем разъемы будут подключены к разъемам типа «банан» с внутренней резьбой, которые прикреплены к крышке корпуса.

Электронная часть:

Я разбил электронную часть на несколько небольших карт-прототипов.

Есть:

- карта на 16Ф628А

- карта на 12F675

- 6 предупреждающих светодиодных карт

- 4 карточки для декоративных светодиодов (линия старта и линия финиша)

Все эти карты я закрепил под крышкой ящика, а в нижнюю часть ящика поставил батарейный отсек с зуммером и модулем DC Boost.

Все электронные элементы соединены обмоткой проводов, я сгруппировал их как можно больше в соответствии с их направлением, скрутил их вместе и закрепил горячим клеем, чтобы они были как можно более «чистыми», и особенно, чтобы они были нет ложных контактов или разъединяющих проводов. Мне действительно потребовалось много времени, чтобы правильно отрезать / зачищать / сваривать / позиционировать провода!

Часть «Джойстик»:

В качестве джойстика я взял небольшой кусок ПВХ-трубки (диаметром 1,5 см и длиной 25 см), а затем припаял штекер гнездового типа вот так:

- клемма, подключенная к проводу на конце джойстика (ContactWire на схеме)

- клемма, подключенная к положительной клемме вибратора (2А на разъеме J1A на схеме)

- клемма, подключенная к отрицательной клемме вибратора (1A на разъеме J1A на схеме)

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

Шаг 8: видео

Шаг 9: Заключение

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

Я предоставляю архивный файл, содержащий все документы, которые я использовал / создал для проекта.

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

Если у вас есть какие-либо вопросы или комментарии по поводу этого проекта, дайте мне знать!

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