DIY Image Sensor and Digital Camera
DIY Image Sensor and Digital Camera
DIY Image Sensor and Digital Camera

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

Я назвал этот проект "DigiObscura", что отражает идею цифровой камеры с минимальным количеством компонентов.

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

Шаг 1: Посмотрите видео-урок

Большую часть аспектов проекта я подробно объясняю в видео, оно должно направить вас в правильное русло.

Шаг 2: Собираем компоненты

Gather the Parts!

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

Для реализации этого проекта вам нужно уметь делать 3D‑печатные детали, паять печатные платы, программировать на Arduino и иметь базовое понимание работы камер.

Компоненты:

  • Печатная плата для микроконтроллера (GitHub)

  • Печатная плата для сенсора изображения (GitHub) — не забудьте заказать шаблон!

  • BOM для печатной платы микроконтроллера и сенсора изображения (FindChips)

  • Накручиваемые вставки M3 (McMaster‑Carr)

  • Кнопка

  • Шурупы M3

  • Лупа

  • OLED экран (по желанию)

  • SD карта

  • Аккумулятор 18 650 (стандартный литий‑ионный аккумулятор, по желанию)

Шаг 3: 3D-печать деталей

Start the 3D Prints
Start the 3D Prints

Если у вас уже есть платы и компоненты, пора приступать к 3D‑печати. Перейдите на Thingiverse и скачайте 3D‑модели. Если вам понадобится их изменить, вы можете скачать файлы Fusion 360 на GitHub.

Печать может занять несколько часов. Рекомендуется печатать с высотой слоя 0,2 мм и 5% заполнением, так как эти части не требуют высокой прочности.

Мой крепёж для объектива подходит только для старого объектива Canon 35–105. Их можно купить довольно дёшево, даже б/у или нерабочие, так как нам понадобится только внешнее стекло.

Шаг 4: Установка компонентов на плате сенсора изображения

Я всегда начинаю с самых сложных задач — и это, без сомнения, самая трудная часть сборки. Сенсор изображения состоит из 1024 светочувствительных сенсоров. Если у вас нет собственного оборудования для установки компонентов, процесс займёт у вас некоторое время. Я думаю, мне понадобилось около 2,5 часов без остановки, чтобы установить все компоненты, и при этом я считаю себя достаточно опытным в этом деле (я много занимался сборкой). Так что если вы новичок, обязательно потренируйтесь перед тем, как начать. Шея у меня после этого дико болела. Также вы можете заказать уже собранные платы у одного из производителей плат — если вы уже это делали, много труда это не потребует. Если вы ошибётесь при сборке этой платы, отладка может быть сложной, поэтому убедитесь, что вы устанавливаете все компоненты в одном направлении.

Распределите паяльную пасту и начинайте заполнять...

Шаг 5: Монтаж компонентов на плате микроконтроллера

Заполнить плату микроконтроллера гораздо проще, чем сенсор изображения. Если вы успешно собрали сенсор изображения, этот шаг будет для вас лёгким. Компонентов немного, так что просто следуйте схеме и файлам платы на KiCad, и это не займёт много времени.

После того как вы припаяете компоненты поверхностного монтажа, переходите к компонентам для установки через отверстия. Разъёмы для сенсора изображения будут располагаться на обратной стороне платы (напротив компонентов поверхностного монтажа).

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

Program the Bootloader

Теперь микроконтроллеру нужно установить загрузчик. Вы можете выбрать либо плату «Feather M0» из коллекции Adafruit, либо «SAMD Dev Breakout» от Sparkfun. Оба варианта подойдут, и я рекомендую использовать тот, который вам более знаком.

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

Шаг 7: Установка резьбовых вставок

Надеюсь, к этому моменту детали уже напечатаны.

3D‑печатные детали предназначены для установки нагреваемых латунных резьбовых вставок. Не торопитесь, устанавливайте их аккуратно, чтобы они были правильно выровнены. Вам нужно установить 4 вставки для сенсора изображения, 4 для платы Arduino, 4 для крепления объектива и 3 для крепления к штативу.

Для каждого из креплений платы, скорее всего, можно использовать 2 вставки вместо 4, так как на эти части не оказывается большого давления. Решение за вами.

Шаг 8: Сборка корпуса 

Assemble the Camera Body

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

Кнопка будет установлена в верхнем отверстии корпуса камеры и подключена к плате Arduino через JST‑разъём.

Шаг 9: Выбор объектива

Изначально я планировал сделать щелевую камеру, но не вышло. Тогда я решил разобрать старый сломанный объектив Canon 35–105 и использовать только переднее стекло. Это стекло по сути является увеличительным стеклом, но оно производит меньше искажений на изображении. Если вам не удастся найти сломанный объектив, обычное увеличительное стекло подойдёт. Попробуйте найти стекло с увеличением 2x или 3x, иначе расстояние до сенсора изображения будет слишком большим. Возможно, вам потребуется изменить файл для 3D‑печати крепления объектива, чтобы он подходил под ваши нужды. При создании нового файла вам нужно будет найти фокусное расстояние, то есть расстояние от объектива до сенсора изображения, на котором изображение будет в фокусе.

Шаг 10: Программирование и тестирование прошивки на Arduino

Programming and Testing the Arduino
Programming and Testing the Arduino

Я залил две разных прошивки на GitHub. Обе прошивки полезны, но прошивка «Webcam» лучше подходит для отладки, поэтому рекомендую начать с неё.

Загрузите прошивку на Arduino.

Теперь проверим, правильно ли припаяны все компоненты. Если у вас ещё нет программы «Processing», скачайте её. Прошивка Webcam состоит из двух частей. Одна работает на камере, другая — на компьютере в программе Processing.

Когда прошивка будет загружена на камеру, откройте и запустите программу Processing. Убедитесь, что вы выбрали правильный COM‑порт. Для теста убедитесь, что камера направлена на объект с хорошим контрастом и ярким освещением. Помогает, если вы знаете, что именно камера снимает.

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

Примечание: Файл с прошивкой для загрузки — digiOBSCURA_Webcam.rar.

Шаг 11: Установка финальной прошивки камеры

Если всё работает в Processing, оставшаяся прошивка превратит вашу 3D‑напечатанную коробку с электроникой в цифровую камеру (с самым низким разрешением из возможных).

Загрузите прошивку цифровой камеры.

Установите SD‑карту и батарею, чтобы камера могла работать. Камера не позволит вам делать снимки, если SD‑карта не установлена, и она отобразит это на OLED‑дисплее, если он подключен.

Теперь камера готова делать снимки!

Примечание: Файл для скачивания — digiOBSCURA_camera.rar

Шаг 12: Настройка фотосъёмки

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

Для обычной фотографии она не подходит. Чтобы что‑то разглядеть, вам нужно будет использовать высококонтрастные объекты и крупные предметы. Снимок моего лица получился лучше всего, когда фон был тёмным, а лицо — хорошо освещено.

Играйте с камерой, учитесь и, пожалуйста, попробуйте экспериментировать с прошивкой Arduino и улучшать её.

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


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

  1. Интеграционные тесты на Go — узнайте, как тестировать взаимодействие между компонентами, используя возможности Go. 21 мая

  2. Тестирование кода на Python — изучите лучшие практики для тестирования и обеспечения качества в Python-проектах. 22 мая

  3. API-тестирование: оптимальные библиотеки для вашего проекта — научитесь выбирать и применять библиотеки для эффективного тестирования API. 29 мая

Готовы проверить свои знания в автоматизации тестирования на Python? Пройдите вступительный тест — он поможет вам выявить сильные стороны и области для дальнейшего улучшения, открывая новые возможности для роста.

Комментарии (1)


  1. alekseypro
    20.05.2025 23:21

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

    P.S.

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