Оглавление:
- Шаг 1. Что нам нужно?
- Шаг 2: Создание прототипа:
- Шаг 3: Код:
- Шаг 4: Теперь о кейсе:
- Шаг 5: Конечный результат должен выглядеть примерно так:
- Шаг 6: Пайка
- Шаг 7: Готово
Видео: Интерактивный бесконтактный светильник: 7 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Всем привет! Я хотел бы поделиться здесь проектом, над которым я работал. Я вдохновился экспериментами с емкостным распознаванием прикосновений в рамках проекта в моем университете. Я узнал об этой технологии из инструкций и использовал то, что узнал здесь и из других мест в Интернете, чтобы создать свой собственный бесконтактный контроллер, который я использую для смешивания различных значений RGB для создания интересных светлых цветов.
Во-первых, когда я начал этот проект, я почти ничего не знал ни об электронике, ни о емкостном сенсорном датчике.
Некоторые проблемы, с которыми я столкнулся на раннем этапе, были вызваны непониманием того, что происходит на самом деле. Итак, краткое введение из того, как я это понимаю:
Емкостной датчик состоит из нескольких компонентов, в основном:
Конденсатор (в этом проекте мы используем алюминиевую фольгу, но также можно использовать токопроводящие жидкости и т. Д.), провода (конечно, его электроника)
и резистор, что-либо ниже 10 МОм - слишком маленькое сопротивление для большего, чем прямое прикосновение.
Принцип его работы заключается в измерении разницы во времени между точкой A и точкой B. От начального контакта он посылает сигнал на конечный штифт, время, необходимое для этого, измеряется таймером. Уменьшая значение сопротивления (перемещая конденсатор (в данном случае рукой) ближе к конденсатору датчика (алюминиевая фольга), это время сокращается, разница во времени - это то, что датчик возвращает в качестве значения.
Из-за того, что на сенсор влияют емкостные поверхности, данные могут быть очень нестабильными из-за помех. По большей части это можно решить, правильно изолировав конденсатор, а также используя заземление (позже я покажу, как это сделать).
Итак, теперь мы можем начать инвентаризацию всего, что нам нужно:
Шаг 1. Что нам нужно?
Электроника:
1. 2 резистора по 22 МОм + (чем больше значение сопротивления, тем дальше реагирует ваш датчик, я лично использовал 22 МОм, минимальное значение для получения полезных данных, которые я испытал, было 10 МОм)
2. 3 резистора 330 Ом
3. провода
4. Макетная плата
5. Печатная плата (у меня были непрерывные медные полоски).
6. Несколько обычных катодных светодиодов RGB (я использовал 8, но у вас может быть больше или меньше, в зависимости от того, сколько света вы хотите).
7. алюминиевая фольга
8. Пищевая пленка.
9 Ардуино Уно
10. Лента
Дело:
1. Дерево. Я использовал МДФ размером 50 x 50 x 1,8 см (на самом деле вы можете использовать все, что угодно. Это зависит от желаемого эффекта и инструментов, которые есть в вашем распоряжении).
2. Акриловое оргстекло размером 50 x 50 x 0,3 см (или любой другой прозрачный / полупрозрачный материал, например, рисовая бумага).
3. наждачная бумага (мелкая наждачная бумага)
4. Дерево-клей
5. шпон (по желанию)
6. акриловый клей
Инструменты:
Инструмент для зачистки проводов
Паяльник + олово
Стэнли нож
дрель
Пила (я использовал настольную пилу)
Шаг 2: Создание прототипа:
Теперь у нас есть все, и мы можем приступить к созданию прототипа, чтобы посмотреть, как это работает:
Подготовительные работы:
Вырежьте из алюминиевой фольги 4 прямоугольника (у меня примерно 10 на 5 см), оберните их пищевой пленкой, чтобы изолировать их от прямого прикосновения, и приклейте проволоку к алюминиевой фольге. Я просто приклеил к фольге отрезанный конец ленты (пока они соприкасаются).
Чтобы убедиться, что алюминий надежно изолирован, я завернул его в пищевую пленку и прогладил между бумагами (всего на несколько секунд, чтобы он не расплавился полностью).
Затем настройте схему, как показано на изображении.
Контакт 4 используется в качестве контакта отправки для обоих датчиков, а контакты приема - это контакты 2 и 5. Вы можете использовать несколько контактов отправки, но это вызывает проблемы, поскольку они не полностью синхронизированы.
используйте эту настройку для целей отладки, прежде чем паять все вместе, чтобы убедиться, что все действительно работает так, как задумано.
Шаг 3: Код:
Теперь у нас все есть и можно приступить к отладке датчиков.
Чтобы использовать мой код, вы должны загрузить библиотеку емкостных датчиков с Arduino и установить ее в соответствии с указаниями, приведенными на справочной странице: Щелкните меня
Код: (Я не очень разбираюсь в коде, поэтому, если вы знаете, как это сделать лучше, сделайте это)
#include // импортировать библиотеку кода
CapacitiveSensor cs_4_2 = Емкостной датчик (4, 2); // Отправляем pin = 4, получаем 2 и 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // размер массива const int numIndexG = 10; int colorR = 0; int colorG = 0; float colorB = 0; int indexR [numIndexR]; int posIndexR = 0; long totalR = 0; // он должен быть длинным, потому что весь мой массив был слишком большим для целого числа. int averageR = 0; int indexG [numIndexG]; int posIndexG = 0; long totalG = 0; int averageG = 0; void setup () {pinMode (redPin, ВЫХОД); pinMode (greenPin, ВЫХОД); pinMode (bluePin, ВЫХОД); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// устанавливает массив в 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// ограничьте значения датчика до максимально допустимого значения, это не то же самое для каждого значения резистора, а также может немного отличаться от среды к среде, вам может потребоваться настроить это, чтобы ваши собственные потребности. total1 = 4500; } если (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // здесь создается массив, который непрерывно добавляет выходной сигнал датчика и выдает среднее значение. indexR [posIndexR] = total1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; если (posIndexR> = numIndexR) {posIndexR = 0; } averageR = totalR / numIndexR; // мы используем среднее значение вместо необработанных данных для сглаживания вывода, это немного замедляет процесс, но также создает действительно приятный плавный поток. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = total2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; если (posIndexG> = numIndexG) {posIndexG = 0; } averageG = totalG / numIndexG; if (averageR> = 2000) {// мы не хотим, чтобы светодиоды постоянно меняли значение, если только нет ввода от вашей руки, поэтому это гарантирует, что все более низкие показания окружающей среды не будут приняты во внимание. colorR = map (averageR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } иначе, если (averageR = 1000) {colorG = map (averageG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } иначе, если (averageG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B работает немного иначе, потому что я использовал только 2 датчика, поэтому я сопоставил B с обоими датчиками colorB = map (colorR, 255, 125, 0, 127.5) + map (colorG, 255, 125, 0, 127,5); analogWrite (bluePin, colorB); } else {colorB = map (colorR, 255, 125, 127,5, 0) + map (colorG, 255, 125, 127,5, 0); если (цветB> = 255) {цветB = 255; } если (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - начало); // это для целей отладки Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Серийная печать (цвет G); Serial.print ("\ t"); Serial.println (цветB); задержка (1); }
Этот код извлекает необработанные данные из датчика (эти данные всегда будут немного нестабильными из-за различных факторов, влияющих на датчик), и непрерывно помещает необработанные данные в массив, когда массив достигает максимального значения (в моем случае 10) он очищает последнее значение и добавляет новое. Каждый раз, когда добавляется значение, оно вычисляет среднее значение и помещает его в новую переменную. Эта средняя переменная используется для сопоставления значения со значением от 0 до 255, это значение, которое мы записываем на выводы RGB для увеличения яркости каждого канала (каналы R G и B).
Теперь, если вы загрузите свой код в Arduino и откроете последовательный монитор, вы должны увидеть, что значения RGB ниже, когда вы наводите руку на каждый датчик, а также цвет светодиода должен измениться.
Шаг 4: Теперь о кейсе:
Кейс: я сделал это, используя инструменты, доступные в моем университете, поэтому этот рабочий процесс применим не для всех. Однако в этом нет ничего особенного, ему нужно отверстие с одной стороны для порта USB, но в остальном это просто коробка с открытым верхом.
Размеры следующие:
15 x 15 см для прозрачного верха
а также
15 х 8 см для деревянной основы (толщина дерева для меня была 1,8 см).
Я использовал настольную пилу, чтобы разрезать пластину МДФ до нужных мне размеров (это 4 панели 15 x 8 см и 1 шлифованная панель 15 x 15 см), после чего срезал углы под углом 45 градусов. Все детали я склеил с помощью столярного клея и зажимов (дайте высохнуть не менее 30 минут), применил ту же процедуру для оргстекла, но со специальной пилой.
На одной из деревянных сторон должно быть отверстие в центре на высоте USB-штекера Arduino, чтобы можно было подключить Arduino.
Я закончил основу фанерой. Я разрезала его на кусочки размером чуть больше поверхности каждой стороны.
Я приклеил его, затем зажал по 30 минут с каждой стороны (лучше делать это индивидуально, чтобы убедиться, что он не скользит, и после того, как он высохнет, я отрезал все, что торчало.
Колпачок я склеил с помощью специального клея Acryl под названием Acryfix.
Имейте в виду, что если вы используете акриловое оргстекло, клей немного растворяет оргстекло, поэтому будьте как можно точнее и быстрее (он сохнет в течение нескольких минут, но на воздухе в течение нескольких секунд).
Чтобы закончить колпачок, я заморозил куб пескоструйным аппаратом, но вы также можете использовать мелкую наждачную бумагу, просто на то, чтобы он выглядел ровным, требуется гораздо больше времени. Имейте в виду, что если вы используете наждачную бумагу, она должна быть мелкозернистой, а также склеивать детали вместе после процедуры глазури (чтобы вы случайно не сломали ее, применив большое давление)
Чтобы крышка не скользила слишком сильно, я приклеил к краям деревянного куба пару деревянных брусков.
Шаг 5: Конечный результат должен выглядеть примерно так:
Шаг 6: Пайка
Если у вас есть печатная плата, вы можете приступить к пайке всех частей вместе, используя ту же схему, что и на вашей макетной плате.
Моя печатная плата имеет непрерывные медные полоски для простоты использования.
Для каждого датчика я отрезал небольшой квадрат, к которому припаял резисторы и провода.
Провода отправки (провода, идущие от контакта 4 к каждому датчику) припаиваются последовательно к отдельному квадрату, причем 1 провод идет к контакту 4.
Я сохранил длинный прямоугольник, чтобы сделать импровизированную светодиодную полосу (измерьте ее так, чтобы она поместилась внутри крышки, но по краям основания). Вы можете просто припаять светодиоды последовательно друг за другом (имейте в виду, что на изображении я случайно припаял светодиоды и резисторы с неправильной стороны печатной платы, медные полоски всегда должны быть на нижней стороне).
Когда вы закончите пайку отдельных частей, вставьте их в корпус. Я не спаял отдельные провода вместе, поэтому при необходимости могу легко их заменить.
Пришло время разместить все в основании: это в значительной степени самый простой шаг, arduino должен быть первым вставлен с USB-портом через отверстие на задней стороне корпуса. Теперь добавьте датчики, убедитесь, что фольга датчика плотно прилегает к дереву с обеих сторон, а фольга заземления - прямо напротив нее. Когда все встанет на свои места, подключите светодиоды RGB к правым контактам (9, 10, 11) и дайте им прислониться к краям основания.
Шаг 7: Готово
Если вы выполнили все это, теперь у вас должен быть рабочий свет с емкостным сенсорным смешиванием цветов. Повеселись!
Рекомендуемые:
Бесконтактный MIDI-контроллер: 6 шагов (с изображениями)
Бесконтактный Midi Controller: В настоящее время в моде бесконтактный доступ. Я создал простой MIDI-контроллер, используя Arduino Pro micro и плату некоторых ИК-датчиков приближения, которая имеет встроенный компаратор, это должно быть доступно довольно легко и дешево. Этот проект может
Бесконтактный дозатор дезинфицирующего средства для рук своими руками без Arduino или микроконтроллера: 17 шагов (с изображениями)
Бесконтактный дозатор дезинфицирующего средства для рук своими руками без Arduino или микроконтроллера: как мы все знаем, вспышка COVID-19 поразила мир и изменила наш образ жизни. В этом состоянии спирт и дезинфицирующие средства для рук являются жизненно важными жидкостями, однако их необходимо использовать должным образом. Касание контейнеров со спиртом или дезинфицирующих средств для рук инфицированными руками c
Бесконтактный ИК-термометр: 8 шагов (с изображениями)
Бесконтактный ИК-термометр.Мой местный департамент здравоохранения связался со мной, потому что им нужен был способ ежедневно отслеживать температуру тела здоровья их сотрудников во время кризиса Covid-19 2020 года. Обычных, готовых к продаже инфракрасных термометров стало не хватать
Бесконтактный детектор напряжения: 5 шагов (с изображениями)
Бесконтактный детектор напряжения: в этой инструкции я покажу вам, как создать бесконтактный детектор напряжения для проверки проводов под напряжением. Используемые инструменты и материалы (партнерские ссылки): Transistors http://s.click.aliexpress.com / e / bWomecjILEDs http://s.click.aliexpress.com/e
Бесконтактный детектор напряжения: 15 шагов (с изображениями)
Бесконтактный детектор напряжения: 3 способа создать свой собственный бесконтактный детектор напряжения менее чем за доллар Введение ------------ Когда с электричеством не обращаются должным образом, это приводит к поражению электрическим током с неприятными последствиями; вот почему безопасность должна быть на первом месте при работе