Оглавление:

Прокачай мою камеру: 14 шагов (с изображениями)
Прокачай мою камеру: 14 шагов (с изображениями)

Видео: Прокачай мою камеру: 14 шагов (с изображениями)

Видео: Прокачай мою камеру: 14 шагов (с изображениями)
Видео: Новая проблема в iPhone 14 pro, которую скрывают! 😮‍💨Как решить!🤬Весёлые обзоры и рофлы от Айтишника 2024, Ноябрь
Anonim
Прокачай мою камеру
Прокачай мою камеру

Вот откуда взялся этот проект.

Некоторое время назад я думал о съемках таймлапсов. "Как?" Я спросил себя? Первый ответ был: «Ну … вы просто снимаете что-то, ускоряете это и все». Но так ли все просто? Во-первых, я хочу использовать для этого свою зеркалку, а у моего Nikon D3100 ограничение по времени для видеосъемки составляет 10 минут. Во-вторых, даже если бы у меня была камера без ограничения по времени для видеосъемки, что, если я хочу сделать действительно длинный таймлапс, например, 12 часов? Я делаю 12-часовое видео 1080p. Я сомневаюсь, что батарея прослужит так долго, и это не очень практично, не так ли? Хорошо, переходите к пункту "идея для видеосъемки". Ну тогда есть картинки. Сфотографировать на камеру с определенным интервалом и получить сотни изображений, которые я затем обрабатываю с помощью программного обеспечения, чтобы сделать видео..?

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

Шаг 1: Но.. Как?

Но как?
Но как?

КАК? это наш следующий вопрос, на который нет ответа. Из-за тайминга, запуска, датчиков и тому подобных вещей неудивительно, что первым, что пришло в голову, конечно же, была Arduino. Хорошо, но все же нам нужно научиться запускать затвор на нашей камере. Хм.. сервопривод горячо приклеен к корпусу камеры? Абсолютно нет, мы хотим, чтобы это было тихо и энергоэффективно. Энергоэффективность - почему? Поскольку я хочу сделать его портативным и вставить в него батарею, я не буду каждый раз находиться рядом с розеткой. Так как же тогда его запустить … на самом деле это довольно просто.

Nikon уже знал, что вам понадобится пульт и другие аксессуары, и они сказали: «Хорошо, мы дадим им все это, но мы сделаем специальный порт, чтобы мы могли заработать больше денег на этих аксессуарах», позор вам, Nikon. Этот порт (в моем случае) называется MC-DC2, и самый дешевый способ получить его - купить дистанционный спуск затвора на eBay за 2-3 доллара и просто использовать кабель.

* Некоторые другие камеры, такие как Canon, имеют простой разъем для наушников 3,5 мм, предназначенный для того же использования, поэтому вы можете использовать кабель от старых динамиков / наушников.

Шаг 2. Изучение того, как активировать камеру

Image
Image
Способы срабатывания
Способы срабатывания

В любом случае, дело в том, что порт будет иметь 3 соединения, которые будут представлять наш интерес (Земля, Фокус и Затвор), и у вас будут те, которые находятся на конце вашего кабеля недавно купленной удаленной шторки, которую вы только что уничтожили. Эти три соединения важны для нас, потому что, если мы закоротим заземление и сфокусируемся, камера сфокусируется так же, как вы нажимаете кнопку фокусировки, а затем, пока это соединение остается, вы можете замкнуть заземление и затвор, и камера сделает снимок. как если бы вы нажали кнопку спуска затвора на фотоаппарате.

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

Земля = ЧЕРНЫЙ; Фокус = БЕЛЫЙ; Затвор = КРАСНЫЙ.

Хорошо, теперь нам нужно научить Arduino делать это за нас.

Шаг 3. Способы срабатывания

Image
Image

Самое простое, что мы можем сказать Arduino для отправки во внешний мир, - это цифровой выходной сигнал. Этот сигнал может быть ВЫСОКИЙ (логическая «1») или НИЗКИЙ (логический «0»), отсюда и название «цифровой», или при преобразовании в его основное значение: 5 В для логического ВЫСОКОГО уровня и 0 В для логического НИЗКОГО.

Что нам делать с этими цифровыми сигналами? Мы не можем просто подключить их к камере и ожидать, что камера будет знать, что мы хотим. Как мы видели, нам нужно замкнуть соединения на камере, чтобы она среагировала, поэтому нам нужно использовать цифровые сигналы Arduino для управления некоторыми компонентами, которые могут закоротить свои клеммы в зависимости от того электрического сигнала, который мы ему отправляем.. * Как я это описал, вы могли подумать: «Ах, реле!» но нет нет. Реле подойдет, но мы имеем дело с такими маленькими токами, что можем легко использовать черную магию полупроводников.

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

Итак, мы будем использовать оптопару следующим образом: мы говорим нашей Arduino отправить цифровой ВЫСОКИЙ уровень на один, если это цифровые контакты, этот сигнал составляет практически 5 В, который будет управлять светодиодом внутри оптопары, а фототранзистор внутри него будет "закоротить". это выходные клеммы, когда он обнаруживает этот свет, и наоборот, он «отсоединяет» свои клеммы, поскольку свет от светодиода не горит, когда мы отправляем цифровой НИЗКИЙ сигнал через Arduino.

Фактически это означает: один из цифровых контактов Arduino подключен к контакту ANODE оптопары, GND Arduino подключен к CATHODE, GND камеры подключен к EMITTER, а FOCUS (или SHUTTER) - к COLLECTOR. Обратитесь к паспорту оптопары, которую вы используете, чтобы найти эти контакты на своем. Я использую 4N35, поэтому вы можете слепо следовать моей схеме, если вас не волнует, что происходит внутри оптрона. Излишне говорить, что нам понадобятся два из них, поскольку нам нужно управлять как ФОКУСОМ, так и ЗАТВОРОМ камеры.

Поскольку мы видели, как это работает с фототранзистором на выходе, почему бы нам не попробовать это исключительно с простым транзистором NPN. На этот раз мы подадим цифровой сигнал напрямую (через резистор) на базу транзистора и подключим GND камеры и Arduino к эмиттеру, а фокус / затвор камеры - к коллектору транзистора.

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

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

Шаг 4: Написание кода для запуска

Image
Image
Написание кода для запуска
Написание кода для запуска

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

pinMode (FOCUS_PIN, ВЫХОД);

pinMode (SHUTTER_PIN, ВЫХОД);

где FOCUS_PIN и SHUTTER_PIN могут быть определены с помощью "#define NAME value" или как int перед функцией setup (), потому что вы можете изменить вывод, чтобы было легче изменить значение только в одном месте, а не во всем коде впоследствии.

Следующее, что мы сделаем, это напишем функцию trigger (), которая будет делать именно это при запуске. Я просто добавлю картинку с кодом. Все, что вам нужно знать, это то, что сначала мы удерживаем FOCUS_PIN на HIGH в течение определенного периода времени, потому что нам нужно дождаться, пока камера сфокусируется на объекте, на который мы указываем, а затем только на мгновение (пока FOCUS_PIN все еще HIGH) установите SHUTTER_PIN на ВЫСОКИЙ, чтобы сделать снимок.

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

Шаг 5: Интервал в классе {};

Image
Image
Управление интервалом через Arduino
Управление интервалом через Arduino

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

void loop () {

задержка (интервал); курок(); }

Я хочу иметь возможность изменять этот интервал, скажем, с 5 секунд до 20-30 минут. И вот проблема: если я хочу изменить его с 5 до 16 или что-то среднее, я буду использовать приращение 1 с, где для каждого моего запроса на увеличение интервала интервал будет увеличиваться на 1 с. Это здорово, но что, если я хочу перейти с 5 секунд на 5 минут? Мне потребовалось бы 295 запросов на это с шагом 1 с, поэтому мне, очевидно, нужно увеличить значение приращения до чего-то большего, и мне нужно определить, на каком точном значении интервала (пороге) изменить приращение. Я реализовал это:

5–60 с: шаг 1 с; 60–300 с: шаг 10 с; 300–3600 с: шаг 60 с;

но я написал, что этот класс настраивается, чтобы вы могли определять свои собственные пороговые значения и приращения (все комментируется в файле.h, чтобы вы могли знать, какие значения менять).

Приведенный мной пример управления интервалом, очевидно, выполняется на ПК, теперь нам нужно перенести его на Arduino. Весь этот класс, Interval, помещается в один файл заголовка, который используется для хранения объявлений и определений (не совсем, но это можно сделать в этом примере без какого-либо вреда) наших классов / функций. Чтобы ввести этот файл заголовка в наш код Arduino, мы используем "#include" Interval.h "" (файлы должны находиться в одном каталоге), что гарантирует, что мы можем использовать функции, определенные в файле заголовка, в нашем основном коде.

Шаг 6: управление интервалом через Arduino

Image
Image
Управление интервалом через Arduino
Управление интервалом через Arduino
Управление интервалом через Arduino
Управление интервалом через Arduino

Теперь мы хотим иметь возможность изменять значение интервала, увеличивать или уменьшать его. Итак, это две вещи, поэтому мы будем использовать два цифровых сигнала, которые будут управляться двумя кнопками. Мы будем многократно считывать значения на цифровых контактах, которые мы назначили кнопкам, и анализировать эти значения для функции checkButtons (int, int); который увеличит интервал при нажатии кнопки «вверх» и уменьшит интервал при нажатии кнопки «вниз». Кроме того, если обе кнопки нажаты, это изменит значение переменной focus, которая определяет, следует ли фокусироваться при срабатывании триггера.

Часть кода ((millis () - prevBtnPress)> = debounceTime) используется для устранения неполадок. То, как я это написал, означает, что я регистрирую первое нажатие кнопки с помощью логической переменной btnPressed и помню время, когда это произошло. Затем я жду определенное время (debounceTime), и если кнопка все еще нажата, я реагирую. Он также делает «паузу» между каждым другим нажатием кнопки, чтобы избежать многократных нажатий там, где их нет.

И, наконец, с:

if ((millis () - prevTrigger) / 1000> = interval.getVal ()) {

prevTrigger = millis (); курок(); }

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

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

Шаг 7: Отображение интервала

Image
Image
Отображение интервала
Отображение интервала
Отображение интервала
Отображение интервала
Отображение интервала
Отображение интервала

Здесь мы представляем дисплей. Я использовал 4-значный модуль, управляемый TM1637, потому что мне нужно использовать его только для отображения времени и ничего больше. Самый простой способ использовать эти модули, созданные для Arduino, - это использовать для них уже созданные библиотеки. На сайте Arduino есть страница с описанием микросхемы TM1673 и ссылка на предлагаемую библиотеку. Я загрузил эту библиотеку, и есть два способа добавить эти библиотеки в IDE Arduino:

  1. из программного обеспечения Arduino перейдите в Sketch> Include Library> Add. ZIP library и найдите файл.zip, который вы только что загрузили.
  2. вы можете сделать то, что делает Arduino, вручную и просто распаковать библиотеку в папке, в которой Arduino хранит библиотеки, в Windows: C: / Users / Username / Documents / Arduino / libraries \.

После того, как вы включили библиотеку, вы должны прочитать файл «ReadMe», в котором вы найдете сводку того, что делают различные функции. Иногда этого недостаточно, поэтому вам нужно пойти немного глубже и изучить файлы заголовков, в которых вы можете увидеть, как реализованы функции и что им требуется в качестве входных аргументов. И, конечно же, лучший способ почувствовать, на что способна библиотека, обычно предлагает пример, который вы можете запустить из программного обеспечения Arduino через Файл> Примеры> Имя библиотеки> Имя примера. Эта библиотека предлагает один пример, который я рекомендую вам запустить на вашем дисплее, чтобы убедиться, что ваш дисплей работает должным образом, и затем я рекомендую вам настроить код, который вы видите в примере, и лично увидеть, что делает каждая функция и как дисплей реагирует на Это. Я так и сделал, и вот что я понял:

он использует 4 целых числа без знака по 8 бит для каждой цифры (0bB7, B6, B5, B4, B3, B2, B1, B0). И каждый из этих битов B6-B0 используется для каждого сегмента определенной цифры, и если бит равен 1, сегмент, которым он управляет, загорается. Эти целые числа хранятся в массиве с именем data . Установка этих битов на дисплей осуществляется с помощью display.setSegments (data); или вы можете, естественно, получить доступ к любой из цифр и установить их либо вручную (data [0] = 0b01111001), либо вы можете использовать функцию encodeDigit (int); и преобразовать цифру, которую вы отправляете, в соответствующие биты (data [0] = display.encodeDigit (3));. Бит B7 используется только второй цифрой или данными [1] для активации двоеточия.

Поскольку я написал функции в классе INTERVAL, с помощью которых я могу получить определенные цифры интервала в виде M1M0: S1S0, где M означает минуты, а S - секунды, естественно, что я использую encodeDigitFunction (int); для отображения интервала так:

displayInterval () {

данные [0] = display.encodeDigit (interval.getM1 ()); данные [1] = 0x80 | display.encodeDigit (interval.getM0 ()); данные [2] = display.encodeDigit (interval.getS1 ()); данные [3] = display.encodeDigit (interval.getS0 ()); display.setSegments (данные); }

Теперь, когда мне нужно отобразить интервал на дисплее, я могу вызвать функцию displayInterval ().

* Обратите внимание на «0x80 |…» в данных [1]. Он используется для обеспечения того, чтобы бит B7 данных [1] всегда был равен 1, поэтому загорается двоеточие.

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

Шаг 8: Собираем все вместе

Собираем все вместе
Собираем все вместе

Мы знаем, как запускать камеру, как управлять интервалом и как отображать тот же интервал на дисплее. Теперь нам просто нужно объединить все это воедино. Начнем, конечно, с функции loop (). Мы будем постоянно проверять нажатия кнопок и соответствующим образом реагировать с помощью checkButtons (int, int) и соответственно изменять интервал и отображать измененный интервал. Также в loop () мы будем постоянно проверять, прошло ли достаточно времени с момента последнего запуска или нажатия кнопки, и при необходимости вызывать функцию trigger (). Для снижения энергопотребления через некоторое время выключим дисплей.

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

Кроме того, мы перейдем на Arduino еще меньшего размера, Pro Mini.

Шаг 9: добавляем последнюю вещь

Добавляем последнюю вещь
Добавляем последнюю вещь
Добавляем последнюю вещь
Добавляем последнюю вещь
Добавляем последнюю вещь
Добавляем последнюю вещь

Пока.. мы только создали интервалометр. Полезно, но мы можем сделать лучше.

Вот что я имел в виду: интервалометр делает это по умолчанию, ЗА ИСКЛЮЧЕНИЕМ, когда мы подключаем какой-то внешний переключатель / датчик, который затем останавливает интервалометр и реагирует на вход переключателя / датчика. Назовем это датчиком, это не обязательно будет датчик, который будет подключен, но я буду называть его так.

Во-первых, как определить, что датчик прикреплен?

Датчики, которые мы будем использовать / изготовить, будут нуждаться в трех проводах, соединяющих их с Arduino (Vcc, GND, Signal). Это означает, что мы можем использовать аудиоразъем 3,5 мм в качестве входного разъема для датчика. И как это решает нашу проблему? Что ж, есть типы 3,5-мм разъема «с переключателем», у которых есть контакты, которые закорочены на контакты разъема, если в них нет вилочного разъема, и они отсоединяются, когда есть разъем. Это означает, что у нас есть информация, основанная на наличии датчика. Я буду использовать понижающий резистор, как показано на рисунке (цифровой вывод будет показывать ВЫСОКИЙ без датчика и НИЗКИЙ при подключенном датчике) на изображении, или вы также можете присоединить цифровой контакт к контакту разъема, который обычно подключен к земле и определите этот цифровой вывод как INPUT_PULLUP, он будет работать в любом случае. Итак, теперь нам нужно настроить наш код, чтобы он выполнял все, что мы написали до сих пор, только в том случае, если датчик отсутствует или когда проверка цифрового вывода находится на ВЫСОКОМ уровне. Я также настроил его так, чтобы он отображал на дисплее "SENS" вместо интервала, который бесполезен в этом режиме, но фокусировка по-прежнему актуальна для нас, мы сохраним функциональность чередования фокусировки с нажатием обеих кнопок и отображение состояния фокуса с помощью красного светодиода.

Что на самом деле делает датчик?

Все, что ему нужно сделать, это подать 5 В на его сигнальный контакт, когда мы хотим запустить камеру. Это означает, что нам понадобится еще один цифровой вывод Arduino, проверяющий состояние этого вывода, и когда он регистрирует HIGH, все, что ему нужно сделать, это вызвать функцию trigger (), и камера сделает снимок. Самый простой пример, который мы будем использовать, чтобы проверить, работает ли это, - это простая кнопка с понижающим резистором. Присоедините кнопку между Vcc датчика и сигнальным выводом и добавьте резистор между сигнальным выводом и GND, таким образом, сигнальный вывод будет на GND, когда кнопка не нажата, поскольку нет тока, протекающего через резистор, и когда кнопка нажата, мы помещаем контакт сигнала прямо в ВЫСОКИЙ, и Arduino считывает это и запускает камеру.

На этом мы закончили писать код.

* Я хотел бы отметить некоторые проблемы, которые у меня были с аудиоразъемами, которые я использовал. При вставке штекерного разъема в разъем GND и любой из двух других контактов иногда закорачивались. Это происходит мгновенно и только при подключении разъема, но Arduino все еще достаточно долго, чтобы зарегистрировать короткое замыкание, поэтому Arduino просто перезапустится. Это случается не так часто, но все же может быть опасностью, и есть возможность вывести из строя Arduino, поэтому избегайте разъемов, которые я использовал.

Шаг 10: сдерживание беспорядка

Сдерживание беспорядка
Сдерживание беспорядка
Сдерживание беспорядка
Сдерживание беспорядка
Сдерживание беспорядка
Сдерживание беспорядка
Сдерживание беспорядка
Сдерживание беспорядка

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

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

Плата Arduino и дисплей подключаются к печатной плате через штыревые разъемы, а не припаиваются непосредственно к печатной плате по очевидным причинам. Таким образом, под дисплеем остается достаточно места для других компонентов, таких как резисторы, транзисторы и даже аудиоразъем.

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

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

Шаг 11: Sens0rs

Image
Image
Sens0rs
Sens0rs

Рассмотрим способы реализации датчика.

Таким образом, датчик будет иметь напряжение питания 5 В, и он должен будет иметь возможность обеспечить цифровой ВЫСОКИЙ уровень на своем сигнальном контакте, когда мы хотим запустить камеру. Первое, что пришло мне в голову, это датчик движения, а точнее PIR. Для Arduino продаются модули, на которых есть этот датчик, и они делают то, что мы хотим. Они питаются от 5 В и имеют выходной контакт, на который они подают 5 В при срабатывании, нам просто нужно подключить его контакты к аудиоразъему 3,5 мм, и мы можем подключиться прямо к плате. Однако следует отметить, что этому датчику нужно время, чтобы нагреться и начать работать должным образом, поэтому не ожидайте, что он будет работать должным образом, как только вы его подключите, дайте ему некоторое время, а затем настройте его, и все живое войдет в его диапазон вызовет срабатывание камеры.

Поскольку мы думаем в направлении уже сделанных сенсорных плат Arduino, на ум приходит еще одна - звуковая. Эти платы обычно делаются таким образом, что у них есть один вывод, который выводит аналоговое значение звука, который он улавливает, и другой, цифровой, который выводит логический ВЫСОКИЙ уровень, если звук, который он принимает, пересекает определенный уровень. Мы можем установить этот уровень так, чтобы датчик игнорировал наш голос, но регистрировал хлопок. Таким образом, каждый раз, когда вы хлопаете, вы запускаете камеру.

Шаг 12: PoweeEeEer

PoweeEeEer
PoweeEeEer
PoweeEeEer
PoweeEeEer

Я считаю, что проще всего запитать эту штуку с помощью пауэрбанка, а не извне. Мы сохраним функцию зарядки нашего телефона или чего-то еще и будем контролировать ток на плату с помощью переключателя. Мы найдем контакты выходного USB-разъема на печатной плате в блоке питания, которые являются GND и Vcc (5 В), и припаяем провода прямо к ним, а оттуда в нашу плату.

Шаг 13: Вложение.. вроде

Приложение.. Kinda
Приложение.. Kinda
Приложение.. Kinda
Приложение.. Kinda
Приложение.. Kinda
Приложение.. Kinda

Я действительно боролся с этим. Когда я купил коробку, в которую хотел вставить существующую печатную плату, я понял, что нет хорошего способа уместить все, как я хотел, и тогда я решил спроектировать новую печатную плату, на этот раз с оптопарами. Я хотел разместить печатную плату прямо под той стороной, на которой я буду просверливать отверстия для определенных компонентов, которые нужно увидеть / потрогать. Чтобы это сработало, мне нужно было бы припаять дисплей и Arduino прямо к плате, без разъемов и заголовков, и в этом заключается первая проблема. Было абсолютно ужасно устранять какие-либо неполадки, так как я не был готов сразу паять это, пока не проверю, что все работает, и я не мог ничего проверить, так как я не мог паять это и так далее … не делай этого. Problem numero dos, проделывая дырочки на корпусе. Думаю, я ошибся в измерениях, потому что ни одно из отверстий на корпусе не было совмещено с компонентами на печатной плате, и мне пришлось их увеличить, а кнопки были слишком высоко на печатной плате, и они всегда нажимались, когда я ставил плату на место аа, а так как я хотел, чтобы аудиоразъемы были сбоку, мне пришлось сначала увеличить и эти отверстия, чтобы они соответствовали разъемам, а затем опустить плату, чтобы дисплей и кнопки проходили через них … результат ужасен.

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

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

Шаг 14: плавник

Image
Image
Плавник
Плавник

Я закончил, но вот кое-что, что я бы сделал иначе:

Используйте аудиоразъемы 3,5 мм более высокого качества. Те, которые я использовал, как правило, закорачивают клеммы при вставке или извлечении разъема, что приводит либо к короткому замыканию питания, что сбрасывает Arduino, либо просто создает ложные триггеры. Я сказал это на предыдущем шаге, но скажу еще раз … не припаивайте плату Arduino без заголовков / сокетов, это просто усложняет поиск и устранение неисправностей, загрузку нового кода и так далее. Я также думаю, что наличие светодиода, сигнализирующего о том, что вещь включена, было бы полезно, потому что я часто не могу сказать, не нажимая кнопку, поскольку дисплей выключается. И последнее, функция паузы. Я полагаю, что это будет полезно, когда, например, при подключении датчика PIR, потому что ему нужно время, чтобы нагреться, или просто при его перемещении вы не хотите, чтобы он срабатывал, поэтому вы можете просто приостановить все, но вы также можете просто повернуть выключить камеру так.. что угодно.

Еще одна интересная вещь - прикрепить его к штативу на липучке, так как он, скорее всего, будет там использоваться.

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

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