Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Arduino » Электронная панель - игрушка для детей и опыт для «ардуинщиков»

    Электронная панель - игрушка для детей и опыт для «ардуинщиков»


    Зачастую многие начинающие ардуищники, «загоревшись» идеей освоить данное устройство, покупают набор Ардуино и немного поигравшись не знают, что с ним делать дальше.

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

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

    Инструменты и материалы:
    -Две платы Arduino Uno;
    -2,8-дюймовый ЖК-экран TFT Arduino;
    -Модуль поворотного энкодера KY-040 (с ручкой);
    -Модуль джойстика Arduino;
    -Два модуля расширения MCP23017 I2C GPIO;
    -8-битный модуль аналого-цифрового преобразователя PCF8591 8-бит I2C;
    -LGB LED модуль Arduino;
    -Robotdyne 4-значный 7-сегментный дисплейный модуль;
    -Модуль светодиодной матрицы 8x8;
    -Модуль клавиатуры 4x4;
    -4 тактильные кнопки;
    -Мембранная буквенно-цифровая клавиатура 4x4;
    -Индикатор уровня заряда батареи;
    -4 тумблера;
    -30 винтов M2x10;
    -4 винта M3x5;
    -Перемычки;
    -Макетная плата или плата расширения Ардуино;
    -Два литий-ионных аккумулятора 18650 с держателем;
    -Разъем и штекер постоянного тока 2.1 / 5 DC;
    -Модуль зарядки 2S BMS;
    -11 светодиодов диаметром 3 мм, разных цветов;
    -4 резистора 220R
    -Фанера;
    -Отвертка;
    -Лазерный резак;

    Шаг первый: концепция
    Приблизительное представление о том, насколько большой должна быть панель для размещения всех компонентов, является необходимым условием.

    Первоначальная идея заключалась в том, чтобы смоделировать панель управления по образцу бортовой электроники самолетов: три приборных панели соединены с основным корпусом с помощью винтов M2. Каждая панель будет иметь слоты для компонентов: светодиодная матрица и клавиатура слева, 7-сегментный дисплей и несколько светодиодов в центре вверху, а также ЖК-экран с поворотной ручкой, джойстиком и некоторыми кнопками справа.

    Изначально все светодиоды в конструкции - как автономные, так и сегментные / матричные дисплеи - предполагалось подключить через модули расширения GPIO к Arduino. Как оказалось, GPIO в этих устройствах не дают достаточно тока для питания светодиода. Все светодиоды должны быть подключены напрямую к Arduino.

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


    Шаг второй: корпус
    Для проектирования корпуса мастер использовал программу FreeCAD Part Design и Sketcher. Корпус состоит из девяти частей:
    Передняя панель
    Задняя панель
    Четыре стенки
    Трехкомпонентные панели
    В FreeCAD дизайн детали начинается с эскиза. Каждая панель рисуется, если смотреть сверху, со всеми краями, вырезами и отверстиями для винтов / креплений, а затем выдавливается вдоль оси.

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

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






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


    Стенки коробки мастер покрывает морилкой.



    Чертежи для резки деталей корпуса можно скачать ниже.
    kids control panel cutout drawings.svg

    Шаг третий: сборка
    Теперь, когда корпус готов, можно производить сборку устройства.
    Поскольку этот проект сильно зависит от интерфейса I2C, мастер начинает с нее. На Arduino Uno выводы I2C есть как на отдельных выводах, так и на выходах A4 / A5. Мастер предлагает использовать отдельные выводы - P3.1 и P3.2 на схеме. Все устройства I2C также должны быть запитаны, поэтому все четыре линии (SCL, SDA, + 5V и GND) должны быть подключены к коммутационной плате I2C (или макетной плате). Эти линии должны идти как к модулям расширения GPIO ( GPIO_A и GPIO_B для упрощения), так и к модулю ADC.

    Оба модуля расширения GPIO должны иметь подключенные контакты сброса и адресации. Сброс - это активный вывод низкого уровня, поэтому он должен быть подключен к + 5В (желательно через резистор). Контакты адреса должны быть настроены так, чтобы оба устройства могли работать на I2C под разными адресами, то есть их можно было отличить друг от друга. Мастер установил адресные контакты на GPIO_A на ноль (все подключены к земле), а на GPIO_B на один (A0 подключен к + 5V, остальные к земле). Эти настройки преобразуются в адреса I2C 0x20 и 0x21 соответственно. Адрес по умолчанию для модуля АЦП - 0x48, поэтому никаких конфликтов здесь не будет.

    Контакты A и B поворотного энкодера должны быть подключены к контактам 2 и 3 Arduino Uno.
    Светодиодный модуль RGB необходимо подключить к контактам с поддержкой ШИМ (отмечены знаком «~» на плате Arduino). ШИМ позволяет регулировать яркость.

    Питание 7-сегментного дисплея, питание светодиодной матрицы и второй Arduino (Arduino B, как указано на схеме; те, которые управляют ЖК-экраном) подключаются через переключатели.

    Также есть два рычажных переключателя без фиксации (ВКЛ-ВКЛ). Один используется для включения светодиода уровня заряда батареи, другой подключается к земле и служит для сброса Arduino A.

    Специальная четырехцветная светодиодная полоса использует 3-миллиметровые цветные светодиоды, подключенные к отдельным контактам на Arduino через резисторы 220R.






    Большинство компонентов приклеены и / или прикручены к передней панели. Как Arduino, так и прочее, связанное с подачей питания (элементы батареи, плата защиты батареи, плата отключения питания), установлены внутри корпуса. Светодиодный модуль RGB также установлен (в данном случае приклеен) внутри, прямо под модулем клавиатуры 4х4. Расстояние между печатной платой клавиатуры и самим светодиодом составляет примерно 2 см, поэтому светодиод RGB освещает всю плату.

    Второй Arduino Uno - Arduino B - подключается только к экрану LCD TFT. Обратите внимание, что все восемь линий данных, все контакты интерфейса SPI и + 5V и + 3.3V должны быть подключены.





    Шаг четвертый: программирование
    Учитывая набор используемых компонентов, мастер запланировал следующие возможности панели для Arduino A:
    Отображать символы с буквенно-цифровой клавиатуры на 7-сегментном дисплее
    Включать светодиоды на матрице 8x8 при нажатии клавиш на клавиатуре 4x4
    Отображать некоторые шаблоны с помощью цветной светодиодной полосы
    Использование четырех тактильных кнопок для переключения режимов работы джойстика и энкодера:
    управлять светодиодной полосой
    контролировать цвет светодиода RGB
    светодиоды управления на матрице 8х8
    Поскольку Arduino B подключается только к ЖК-дисплею TFT, он будет запускать своего рода приложение для рисования.
    Здесь очень мало пользовательских аппаратных компонентов, поэтому большая часть программного обеспечения будет обрабатываться библиотеками Arduino. Используемые библиотеки:
    Энкодер - для поворотного энкодера
    Adafruit MCP23017 - для расширителей GPIO
    TM1637 для 7-сегментных и светодиодных матричных модулей
    Клавиатура - для всех видов клавиатур (библиотека достаточно универсальна, чтобы правильно работать даже с четырьмя тактильными кнопками, используемыми здесь)
    Adafruit PCF8591 - для модуля АЦП
    MCUFRIEND_kbv - для управления LCD TFT дисплеем, в том числе сенсорным
    Мастер добавил несколько пользовательских оболочек для некоторых из этих библиотек.

    Оболочка для светодиодов RGB
    Эта оболочка используется для обеспечения высокоуровневого интерфейса для управления светодиодом RGB, включая преобразование декартовых координат XY в значения красный-зеленый-синий.

    Во фрагменте кода ниже показано применение функции Arduino atan2. Расчет угла выполняется только при наклоне джойстика в любом направлении (координаты от джойстика плавающие в диапазоне -1..1).
    если (abs (x)> 0,1 или abs (y)> 0,1) <br> { 
        theta = atan2 (y, x) + PI; 
    } 
    float ro = sqrt (x * x + y * y);

    Функция, отвечающая за преобразование угла в цветовую координату.
    auto cval = [](float theta, float ro, float phase, float neg_phase) {<br>            float val = sin(0.666 * theta - phase);
                if (val < 0)
                    val = sin(0.666 * theta - neg_phase);
                return val;
            };

    float r = cval(theta, ro, -PI / 2, PI);<br>float g = cval(theta, ro, 0, 3 * PI / 2);
    float b = cval(theta, ro, PI / 2, 5 * PI / 2);
    Color c = Color(r, g, b);


    Отображение оболочки
    Оболочка дисплея поддерживает функции, которые преобразуют необработанные символы, полученные с клавиатуры, в необработанные битовые значения, необходимые библиотекам дисплея для фактического отображения символа.
    const uint8_t digitToSegment[16] = {<br>        //XGFEDCBA
            0b00111111, // 0
            0b00110000, // 1
            0b01011011, // 2
    ...


    Клавиатура
    Все клавиатуры подключаются через GPIO, что исключает использование собственных функций. Перегрузка методов pin_mode (), pin_read () и pin_write () в подклассе позволяет переопределить их поведение, чтобы использовать расширители GPIO, а не собственные функции Arduino, без необходимости изменять какое-либо поведение в родительском классе.


    Оболочка светодиодной полосы


    Оболочка джойстика
    Этот код переносит все логические операции на джойстик, а также маскирует тот факт, что джойстик подключен к внешнему аналого-цифровому преобразователю.

    Модуль джойстика - это, по сути, двухосевой потенциометр. Контакты X и Y модуля джойстика выводят напряжение, масштабированное от GND (0) до VCC (в данном случае + 5 В), где 0 и + 5 В соответствуют максимальному наклону по любой оси. Из-за этого джойстик в нерабочем положении выдает 0,5 * VCC на выводах X и Y.
    Метод Joystick :: read () выполняет чтение напряжения с выводов X и Y и преобразует результат в число с плавающей запятой в диапазоне -1..1:
    auto convert = [](int value, uint16_t size) {<br>            float x = (((float)value / size) - 0.5) * 2;
                return x;
            };


    Эскиз Arduino
    Сам скетч Arduino представляет собой обычную инициализацию требуемых объектов с их конфигурацией, выполняемой в функции setup (). Loop непрерывно считывает все входы (клавиатуры, джойстик, кодировщик), обновляет общую переменную, которая содержит положение кодировщика, вычисляет направление его движения и вызывает обработчики экранов, светодиодов и т. д.


    Ардуино В
    Мастер попытался использовать один Arduino Uno для обработки всех входов / источников света и экрана LCD TFT, но это оказалось довольно сложно, в основном из-за ограниченного количества доступных контактов. Для экрана LCD TFT требуется как 5-проводный интерфейс SPI (сенсорный), так и 8-проводный параллельный интерфейс данных (дисплей). Все эти контакты должны использоваться совместно с другими устройствами ввода.

    Arduino В запускает приложение tftpaint, из библиотеки MCUFRIEND_kbv , без изменений. Это базовое приложение для рисования, которое позволяет рисовать точки с использованием нескольких предопределенных цветов.
    Скачать для него код можно здесь.


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

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    RFID-замок на базе Arduino

    Бесконтактный ИК-термометр с датчиком расстояния

    6.7
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    8.7
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    7
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 7.44 из 10 (голосов: 3 / История оценок)

    Добавить комментарий

    2 комментария
    iDevilZ
    Автор идиот, ей богу, 2х летнему ребёнку открытый дисплей, шлейф и самое главное металлические тумблера... Делал похожий проект малому (3 года) почти все утоплено в корпус, закрыто все прозрачным пластиком и ни 1 самореза, который можно увидеть или зацепить 

    Иван_Похмельев
    Доступность малому ребёнку шлейфа от клавиатуры к дисплейному модулю - сомнительное решение.

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии