Пользователь
0,0
рейтинг
27 декабря 2010 в 08:15

Плёночная камера из Lego


А почему бы и нет?


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

В этом посте я бы хотел рассказать о том, как я делал автоматическую камеру из Lego, как её программировал и что из этого получилось.



Камера обскура


Я начал с самого начала, с камеры-обскуры. Это основа любого фотоаппарата: через дырочку на плёнку (или сенсор) попадает свет и оставляет там изображение. Я решил сделать дырочку в кусочке фольги. С помощью одного из мини-свёрел я проделал отверстие диаметром где-то 0,3 мм.



Теперь надо было собрать светонепроницаемую камеру, в которой будет находиться плёнка. Мне очень помогли калькуляторы с сайта Mr. Pinhole. Они позволили рассчитать оптимальные размеры камеры. Всё очень просто: при размере дырочки в 0,3 мм, расстояние от дырочки до плёнки должно быть где-то 60мм.



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





Мне хотелось, чтобы камера-обскура предоставляла три интерфейса: контроль основной катушки (которую пользователь поставил), контроль свободной катушки (куда плёнка отматывается) и управление задвижкой. Это выглядит так:



В дальнейшем моторчики модуля автоматизации будут крутить эти три шестерёнки. А пока, мне надо было удостоверится, что камера не пропускает свет. Я потащил свою конструкцию в фотолабораторию. Я решил использовать фотобумагу для поиска световых пробоин. Фотобумага чувствительна к свету: там, где попал свет, появляется чёрное пятно. Я напихал в свою камеру-обскуру фотобумаги, вынес на свет, подождал несколько минут и проявил бумагу. Вся поверхность была покрыта чёрными шрамами. Мне потребовалось несколько часов, чтобы найти все пробоины и замотать их изолентой. Вот что получилось:





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

Автоматизация


Кирпичики Lego были у меня и в детстве. Однако набор Lego Mindstorms я купил лишь недавно. Набор содержит три мотора, пару кнопок, датчик света и программируемый модуль. Всё, что надо для современной камеры.

Модуль автоматизации должен содержать три мотора – два для управления перемоткой и один для контроля задвижки, – кнопку спуска, датчик освещённости и датчик, определяющий, вставлена ли камера-обскура. Последний датчик довольно важен: именно он определяет момент, когда камера только вставлена и надо отматывать плёнку. Должно было получиться что-то такое:



Постоянно не хватало специфических деталей. На выручку пришел сайт BrickLink. На нём я нашел абсолютно все детали и смог купить их через PayPal. Надо сказать, что цены были очень разумные. Вскоре модуль автоматизации был собран. Камера-обскура аккуратно вставлялась в модуль автоматизации:





Железо, точнее, пластмасса была готова. Осталось лишь это дело запрограммировать.

Код



Программируемый модуль (контроллер) управляется операционной системой от Lego. Модуль можно программировать в визуальной среде разработки: таскать кирпичики-операторы, составлять блоки-циклы и т. п. Мне эта гуйня очень не понравилась. Так что, первое, что я сделал – это перепрошил модуль системой Lejos. Программы для неё можно писать на несколько урезанной джаве. То, что надо для нашего приключения.

Я выложил код камеры на http://code.google.com/p/legocamera/.

Программа содержит несколько любопытных фич:

Логика вычисления угла перемотки плёки

Плёнку оказалось перематывать куда сложнее, чем мне казалось сначала. Катушки с плёнкой очень похожи на спираль. То есть, угол на который надо повернуть катушку, чтобы намотать 40мм плёнки зависит от количества уже намотанной плёнки. Чтобы сделать расчёт пришлось использовать уравнение аж второго порядка. Такое не каждый день кодишь. Кому интересно посмотреть – логика в файле FilmTransportUtils.

Вычисление скорости задвижки

И тут ждала западня: сенсор лего возвращает уровень освещённости числом от 0 до 1023. Мне не удалось узнать, как это число соотносится с какими-либо физическими величинами. Так что пришлось строить соответствие методом научного тыка. Я арендовал экспонометр и пошел гулять. Делал замер лего-сенсором, записывал показание, потом делал замер прибором. В результате получилась довольно сносная таблица соответствий. Мне кажется, что её можно уточнить, однако для беты сойдёт. Кому интересно посмотреть – добро пожаловать в ExposureUtils.

Интерфейс пользователя

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






Результат


Всё было готово. Вот видео с демонстрацией работы камеры:



А вот получившиеся фотографии. Гидрант:



Сосед переезжает:



Буду снимать на свою камеру и дальше: ведь это так просто, нажал кнопку – и готово!
basil @apple_fan
карма
370,4
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

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

  • +13
    Вооооот такой респект вам!)

    Для промотки пленки было бы разумно не вычислять угол каждый раз, а использовать инфракрасный датчик для подсчета количества прокрученных дырочек, евпочя)
    • +2
      Спасибо.
      Про датчик я очень долго думал. Однако, всегда получалась чересчур сложная конструкция: размер камеры-обскуры страшно увеличивался (ну и, понятно, увеличивалась сложность светоизоляции). Так что пришлось вспомнить про математику…
      • +2
        а не проще на линейном участке плёнки поставить шестерёнку, которая поворачивается на фиксированный угол по количеству дырочек?
        • 0
          Так сделано почти во всех фотоаппаратах. Жаль, в наборе Lego я не нашел подходящей шестерёнки. Второй проблемой был сенсор поворота угла: моторчики по идее могут возвращать угол поворота, но, во-первых они делают это не очень точно, а во-вторых поворачиваются весьма туго.
          Однако, спасибо за идею!
          • 0
            Подходящая «шестеренка» легко делается из твёрдых стирательных резинок (сам делал пару раз недостающие детали), для подсчёта — самое оно.
            • 0
              Сложно представить. Поделитесь примерчиками?
              • 0
                Мне кажется имеется ввиду не шестеренка, а замена в виде валика. Соотношение угловой и линейной скорости будет одинаковым (в отличии от катушки), поэтому можно будет считать кадры без сложностей)
              • 0
                берёшь резинку, нож, вырезаешь диск (или монету), потом ребро довырезаешь, оставляя зубцы.

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

                решается электромеханически — на шестерёнке контакт, так что от размыкания до замыкания ровно 360°.
    • 0
      а разве ИК датчик не даст засветку пленки???
      • 0
        Инфракрасную пленку засветит. Обычную — в пределах погрешности, с учетом того, что включаться будет только при промотке.
  • 0
    Месье…?
    • +2
      Знает толк?
      • +1
        Кэп!
  • +8
    > Я решил сделать дырочку в кусочке фольги
    Жесткое палево :) А где «пустая пластиковая бутылка»?
    • +4
      Хм… Что-то я не понял. В этом проекте «пустая пластиковая бутылка» не участвовала. Должна была?
      • +5
        Комментатор хотел сделать тонкий намёк на передачу «Очумелые ручки» — мол, из пластиковой бутылки можно сделать всё, кроме пластиковой бутылки.
        • +7
          … или толстый намёк на бульбулятор.

          Сорри, отправил раньше времени =\
      • 0
        Сострить попытался :) Но с утра понедельника, видать, не сильно получается. А по делу — сам когда-то ваял «обскуру» на микрухе ПЗУ с УФ стиранием. Надо покопаться в загашниках — делал подробное описание процесса, да и примеры фоток вроде сохранились.
        • 0
          Здорово, выкладывайте! А что камера умел делать?

          Зато теперь у меня пустая пластиковая бутылка прочно ассоциируется с бульбулятором!
        • +1
          Правильно ли я понял, что в качестве светочувствительного датчика выступала микруха УФППЗУ....?
          Да, примеры фоток таким агрегатом очень интересно посмотреть.
    • 0
      Вместо нее детальки из лего. Интересно, а можно ли собрать бульбулятор из лего?
  • –3
    Зачоооот! (8
  • 0
    Всё круто, вы повышать качество съёмки будете? Может какой объектив прикрутите? :)
    • 0
      Качество повышать просто необходимо. Следующий проект – объектив с автофокусом. Это, однако, не очень тривиально.
      • 0
        Для простоты можно соорудить монокль, а уж потом и с системами линз играть.
        • 0
          Я как раз думал с него начинать. Есть даже статьи, описывающие процесс сборки. Надо только чуть-чуть свободного времени.
          • 0
            Зимние каникулы так вовремя :)
        • 0
          Проблема в том, что это-ж плёнка: делаешь, снимаешь кадр, проявляешь, подстраиваешь, снимаешь, проявляешь… Долго и муторно, а ускорить почти никак нельзя…
          • 0
            Зачем? Можно для настройки использовать матовое стекло, никто не запрещал так делать.
  • +3
    Сосед на ракете что ли переезжает?
    • +4
      Каждый раз к концу 13 бактуна. Домой возвращается.
      • 0
        И спасибо за рыбу!
  • 0
    Вот это круто! :)
  • +1
    Стоило назвать статью «Пинхол на колёсах».
    • +1
      Ну или «Лего на траве».
      • +2
        «Лего на „траве“» немного не для этого сайта ;)
  • 0
    Можно я ваши фото использую в своём блоге, в небольшой заметке о вашей камере?
    • 0
      Конечно, можно.
  • +1
    А можно небольшую финансовую выкладку?
    Во сколько обошлась такая штука?
    • 0
      Набор NXT — 270$, пара наборов серии Lego Technic – ещё 60$, ну и деталек с BrickLink баксов на 40. То есть, под 400 баксов.
      Из плюсов: все эти наборы можно переиспользовать в следующих проектах.
  • +2
    за BrickLink спасибо!
    Побежал заказывать на каком-то германском магазе отдельные моторы и оси-шестеренки. Цены действительно радуют демократичностью.
    • 0
      Для роботов подойдут?
      • 0
        Мне кажется, что там есть детали на все случаи жизни. Очень богатый рынок.
  • 0
    Маньяк!
  • +1
    А такую же, но цифровую сделать можно? Правда размер матрицы там на порядок меньше.
    • +1
      Думаю, можно. Надо только найти подходящую матрицу. Хочется, чтобы она была не очень дорогая и от неё можно было протянуть USB. Тогда можно было бы прикрутить какой-нибудь beagle-board…
  • +12
    image
    • +3
      Я не понял, а где бутылки то?
      • +5
        А зачем им бутылки? У них же Момент! Им скорей пакет нужен.
  • 0
    Здорово! Удивительное направление выбрали компании-производители игрушек. Теперь нет границ для реализации любопытству и фантазии. Хотел рассказать ХабраОбществу еще об одном конструкторе — Fischertechnik. Многие родители задают вопрос, что подарить своему чаду на Новый год или на День рождения. Долго пытался найти игрушку для мальчика, которая смогла бы по-настоящему его увлечь. И увлечение должно быть не мимолетным — игрушка должна меняться и помогать учиться новому.
    Прелесть конструктора Фишертехник заключается в подходе построения физической модели и управления ею с помощью компьютера. У ребенка появляется возможность придумать модель механизма из окружающего мира, спланировать как она будет воплощена, решить кучу инженерных проблем и, наконец, создать на компьютере программу по управлению моделью. В результате, у нас после серии экспериментов получилось создать простую модель лифта.
    www.youtube.com/watch?v=RofExducPeY
    И в конце концов, от конструктора пришли к созданию своего сайта и продолжили изучением английского. Надеюсь кому-нибудь покажется полезным мой опыт.
    • 0
      Здорово! Я не слышал о таком конструкторе.

      А как программировать Фишертехник? Может, напишете статью?
      • 0
        Мы с сыном создали простенький сайт sites.google.com/site/arseniyforfischertechnik/, на котором можно увидеть как создаются программы управления конструктором. Разработчики сделали очень красивый ход — вся программа создается не в виде программного кода, а на уровне блок-схем. Вышло — просто и доступно sites.google.com/site/arseniyforfischertechnik/models/1-elevator. Аплодисменты конструкторам.
    • 0
      Напишите статью, интересно.
  • +1
    Поглядите на вот такую идею, она на мой взгляд прекрасно подходит для Вашей камеры. Смысл — в съёмке движения Солнца по небосводу со сверхдлинной (год) выдержкой именно через камеру-обскуру. Прибор позволяет точно отслеживать метеообстановку, ну и вообще — интересно и познавательно. Лентопротяжка уже не требуется — так что программную часть комплекса можно переориентировать на решение каких-то иных задач.

    • +1
      Идея отличная! Вы правы: чтобы сделать такой снимок протяжки плёнки и правда не надо.
      Однако, если плёнку чуть-чуть протягивать, допустим, на кадр в месяц, то может получится очень интересный график изменения высоты солнца. Волна такая.
      • 0
        График изменения высоты Солнца Вы и так получите — каждый день будет проявляться в виде собственной полоски, прерывающейся при облачности. Собственно на снимке вверху каждая светлая полоска — это один солнечный день (Норвегия, таких дней немного...)
        Поброшу ещё идею — если плёнку/фотопластинку вставить цветную, можно откалибровать снимок при помощи светофильтров (допустим чередовать «синие» и «красные» месяцы). Тогда светофильтры можно менять программно, поставив управляемый таймером затвор…
        Если надо, ещё подброшу, но уже завтра…
    • +2
      Туманность, выходящая за график движения Солнца — Луна?
  • 0
    > Фотобумага чувствительна к свету: там, где попал свет, появляется чёрное пятно

    в детстве батя подарил пачку ненужной уже ему фотобумаги (завязал с фотографией). Так вот — там где попадал свет, она почему-то становилась фиолетовой, а не черной. Может срок годности вышел?
    • 0
      Или она только после проявления становится черной?
      • 0
        Совершенно верно. Когда свет попадает на бумагу, она чуть меняет цвет (оттенок и интенсивность зависят от бумаги). Это называется латентным изображением. Если бумагу с таким изображением подержать в проявителе, то латентное изображение чернеет.

        Вы справедливо отметели, что в посте я пропустил несколько шагов. В действительности последовательнось была такая: напихать бумагу в камеру — выйти из тёмной комнаты — войти обратно — опустить бумагу в проявитель — промыть бумагу в воде — опустить бумагу в стоп-ванну — опустить бумагу в фиксер — выйти из комнаты — осмотреть тёмные пятна.
        • 0
          Эх, помню, как батя проделывал подобные шаги при проявлении пленку, переносе избражения на бумагу, проявлении бумаги :)
        • 0
          Что в ЧБ фотобумаге хорошо — можно не выходить и глянуть под красной лампой!

          А стоп-ванну зачем? Вроде там техпроцесс «проявитель-закрепитель» + промывка?
          Промывку записали уже, а стоп-ванна, кажется, то-же самое?!
          • 0
            Вообще, стоп-ванна для остановки проявителя — иногда просто промывки не хватает, и фотография чернеет даже после промывки. Однако, в данном случае, я кидал в стоп-ванну скорее по привычке; на свои бумажки я смотрел очень недолго, так что можно было и не париться.
  • 0
    Учитывая, что вы не используете перфорацию плёнки для её перемотки (в промышленных камерах используется перфорация, а не сложны расчёт угла поворота), вы можете закупать «Тасму.

    www.tasma.ru/production/types/aerialfilm/type42l/
    • 0
      ой, недописалось :-(
      35-мм плёнка такая для аэрофотосъёмки такая
      www.tasma.ru/production/types/aerialfilm/type17/
      • 0
        Спасибо за наводку. 60 метров аэрофотопленки — это клёво!
  • 0
    Вообще — пять с плюсом. Жаль, что плюсовать можно только на единичку!
    Помню в своё время увлекался тоже фотографией на плёнке, с самостоятельной проявкой и печатью… ЧБ плёнка, проявитель-закрепитель, бачки для проявки… Фотоувеличитель до сих пор работает, вроде…

    Эпоху цветной фотографии я как-то умудрился проспать: там сложно самостоятельно проявлять, а сдавать плёнку в мастерскую — вызывало у меня как фотографа бурный протест…
    Да и 90-е годы шли — наша плёнка изт продаж пропала, а на кодак снимать мыльницами… Не то!

    Сейчас очередной виток: задумался над двумя направлениями — оцифровка плёнки в комп и… «Децифровка», когда наоборот с компа перегоняем на плёнку…
    Минус — дорогое это увлечение…
    • 0
      А зачем с компа на плёнку перегоняют?
  • 0
    Для показа в кинотеатре плёночном снятого на видеокамеру современную: цены в лабах, которые такое делают, просто невразумительные…
    • 0
      Таки Хабр иногда дурит — ведь 100% помню, что жал на ответить и форма была сдвинута ощутимо!
    • 0
      Хм. Разумно.
      Я, честно говоря, уже давно присматриваюсь к какому-нибудь хорошему отцифровщику негативов. Чтоб поддерживал хотя бы 70мм плёнку. Уж больно много геморроя с ручным доджем, бёрном и ретушью.

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