Dienstag, 2. Oktober 2012

Indirect & Zoom lightholder. (eng)

Hello everybody.

I did not write anything for a long time. Even though there is something to write about. Allow me to introduce to you my summer's work (development).

I'll start with the budget attachments for reflected light with zoom. If you follow the novelties of brands, then you probably noticed, that practically all of them have parabolic reflectors, and some even with Indirect, and the coolest brands, of course, offer zoom too. What should an advanced amateur do here? The answer is obvious. Do it himself, especially since the workshop is nearby anyways. One can't pay 500€ for every novelty after all. That way one could find himself without pants. But the desire to do photography stays, and I'm accustomed to using good light. I made some drafts on paper, took a few attachments and went to an acquainted turner for help. So here everything started. He looked at the drafts and the attachments, and asked a very simple question:

- Do you even know what you want yourself?

- I want this part to this one, and this to another one.

The turner listened to my wishes and asked me to bring proper blueprints, and STEP models with them. That's how I was politely (nicely) sent **to hell**. No, nobody sent me **to hell** of course, they said they would help, but blueprints are required. After arming myself with tutorials about SolidWorks on Youtube in the evenings, I mastered this wonderful piece of software. Now I actively use it for 3D photography. All my constructions are made for the use with any kind of softboxes, strips and octa softboxes from Elinchrom, monolights BXRi can be used, Style RX, Ranger Quadra RX, and system flashlights, what could be very useful outdoors (on nature).

So lets start. All the construction consists of the holder for the attachments, three axes for zoom and three holders for the light.

I didn't want to make the holder more complicated, so instead of a lock like Elinchrom, I use bolts to fixate the attachments on the holder. To fixate the axes, I use a collet. I tried to copy the holder for Ranger Quadra RX precisely, good that in SolidWorks one can make a model from a picture.

Everything but the axes is made of a light and hard (dense) plastic. The reflecting surfaces are covered with aluminum foil. To one of the axes I attached a lock washer, to not accidentally break the lamp while fixating.

To limit the movement of the axes on the ends I installed blind nuts. When it's all put together, it looks like a spaceship, and with the rack, like a telescope. Smiley

The only thing I miss in all constructions, is a counter weight when I work with studio blocks, but in the near future I'll try to fix this. On these two pictures you can see how the spot of light changes when the depth of the light source is changed in the octa.

But with light everything is relative. I made this light for my taste. I like making portraits in renaissance style with one, or maximum two light sources. Indirect with Zoom guarantees soft light, but with good micro contrast.

Successful shots to you.

© Andrew Buckin.

P.S.:

Many thanks to the mechanics Robin and Andrey for the support and the hands. I would have done something on the turning rack myself, but German safety rules prohibit an electronics engineer to work on a turning rack.

Samstag, 29. September 2012

Indirect & Zoom lightholder.

 

Всем привет.

Давно я ничего не писал. Хотя есть о чем. Разрешите представить мои летние наработки.

Начну с бюджетной насадки для отражённого света с zoom. Если вы следите за новинками брендов, то наверное заметили, что практически у всех в ассортименте появились параболические отражатели, а у некоторых даже с Indirect, ну и самые крутые бренды предлагают и zoom. Куда податься продвинутому любителю? Ответ очевиден. Сделать самому, да и мастерская под боком. Ну не выкладывать же за каждую новинку по 500€. Так можно и без штанов остаться, а фотографировать хочется, да и привык уже хорошим светом пользоваться. Сделал я наброски на бумаге, взял пару насадок и обратился к знакомому токарю за помощью. Вот тут все и началось. Человек посмотрел на наброски и насадки и задал очень простой вопрос

  • Ты хоть сам то понял, что хочешь?

  • Я хочу эту часть к этой, а ту - к другой.

Токарь послушал мои пожелания и попросил принести нормальные чертежи и к ним STEP модели. Вот так вот красиво меня послали. Smiley Нет конечно никто меня не посылал, сказали, что помогут, но чертежи нужны. Вооружившись учебниками на Youtube по SolidWorks по вечерам за неделю освоил эту чудную программу. Сейчас активно использую для 3D фотографии. Вся моя конструкция рассчитана на использование с любыми софт боксами, стрипами и октами от Elinchrom можно применять блоки BXRi, Style RX, Ranger Quadra RX и системные вспышки, что очень удобно на природе.

И так. Вся конструкция состоит из держателя для насадок, трёх осей для зума и трёх держателей для света.

Я не стал усложнять держатель для насадок и вместо замка, как у Elinchrom фиксирую насадки к держателю винтами. Для фиксации осей использую цанговый зажим. Держатель для Ranger Quadra RX постарался повторить один в один, благо в SolidWorks можно сделать модель по фотографии.

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

Для ограничения движения осей на торце установил глухую гайку. Когда все в сборе похоже на космический корабль, а вместе с октой на телескоп.

 

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

В свете все относительно. Этот свет я делал под свои вкусы. Люблю я снимать портреты в стиле ренессанса с одним, максимум двумя источниками света. Indirect с Zoom обеспечивает мягкий свет, но с хорошим микро контрастом.

Успешных вам кадров.

© Andrew Buckin.

PS:

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


Shutterstock Dreamstime

Fotostream http://www.flickr.com

Montag, 9. April 2012

Mobile WUSB.

Всем привет,

Сегодня я хочу коротко рассказать как использовать Wireless USB – WUSB в студии для управления камерой. Я не знаю почему, но, как оказалось, не многие фотографы знают что такое WUSB. WUSB — это безпроводный USB. По интерфейсу WUSB вы можете подключить к компьютеру любое USB устройство — это может быть камера, сканер, принтер, внешний диск, планшет и т. д. Обычно базовый комплект состоит из двух устройств Device и Device PC.

 

Не надо путать WLAN и WUSB. У WUSB другой частотный диапазон, небольшая дальность работы, устойчивая работа только в прямой видимости, поддерживается полная скорость USB устройства и, как по мне, это главное достоинство данного стандарта. Скорость передачи 480Мбит. После того, как вы купили и распаковали комплект, у вас будет диск с драйверами, два USB устройства и адаптер для подключения других USB устройств. Я попробовал установить родные драйверы, но у меня ничего не получилось. Под W7 x64 работало все криво. Так что я рекомендую поискать в сети драйверы от похожего устройства фирмы HAMA и драйверы поставить более новые. http://www.hama.de/ После инсталляции драйверов и авторизации устройств вы можете подключить камеру к переходнику и попробовать управлять камерой. Программ для управления камерой сейчас много, полный обзор можно найти здесь shooting software .Я использую DcamCapture — бесплатная, есть LV и запись видео, работает на NetBook. Теперь о том, как это все сделать мобильным. Для этого вам понадобиться старая мама, из которой нужно выпаять USB штекер на два гнезда, держатель для аккумуляторов и пружинный контакт. На USB штекере соединить парные контакты.

К контакту +5V подсоединить плюс блока батарей. К контакту GND подсоединить минус блока батарей и экран разъема.

Обязательно убедитесь, что плюс с минусом не перепутали. Во избежания драм подключения лучше пару раз проверить USB. Применять рекомендую аккумуляторы или немного подсевшие батарейки. :) У свежих батареек напряжение на одном элементе может быть до 1.6V. Можно спалить или камеру или WUSB адаптер.  Или купите готовый Power Bank с двумя USB разъемами. После этого нужно припаять пружинный контакт как показано на фотографии.

Для этого нужно установить WUSB Device в наш разъём, соединить пружинный контакт с маленьким контактом на WUSB и экраном разъёма и запаять.

Для удобства работы я поместил все в чехол от старого мобильного телефона.

Ну вот вроде и все. Подключаем устройства и работаем. О практической стороне использования. По началу я применял WUSB на всех сессиях, но со временем понял, что бегаю я к компу меньше, но все же бегаю. Так что сейчас использую я этот девайс все реже и реже. Есть очень весомый аргумент почему использовать WUSB с камерами Nikon неудобно. Очень быстро садятся аккумуляторы в камере, нужен внешний источник питания или бат - блок. Использовать камеру в портретном режиме неудобно — мешает USB разъём. Так что мой выбор такой. WUSB самый быстрый и самый удобный вариант управления камерой и загрузки снятого материала на компьютер. Для каких видов съемки удобно применять - съемка для каталогов, когда камера на штативе, использовать LV для макро фотографии. Наводить фокус можно более аккуратно и точно, так как есть возможность наводить фокус по увеличенной LV картинке, не трогая камеру на расстоянии до 10 метров. Если кому что не понятно пишите.

Успешных вам кадров.

© Andrew Buckin.

PS:

Для Автопортрета Must have.

Shutterstock Dreamstime

Fotostream http://www.flickr.com

Samstag, 10. März 2012

The lithium battery for Elinchrom Ranger RX Quadra


Всем привет,
Если вы как и я подсели на Elinchrom, эта статья как раз для вас.
Не хочу распевать дифирамбы этой марке.  В двух словах, качество света у Elinchrom очень хорошее. Некоторым продуктам просто нет аналогов у других брендов. Вот об модернизации одного из них я и хочу рассказать. В прошлом году приобрёл себе для выездных сессий аккумуляторный генератор Ranger RX Quadra.  Маленький, компактный, радио управление, 400 Дж, в целом - замечательный прибор. Но по складу своего характера мне всегда чего- то не хватает. Так и у этого прибора сразу нашлось два недостатка. Большой вес аккумуляторов 1.6кг и малая емкость 3.6Ач, нет возможности подключить к сети в студии. Честно сказать не понимаю, почему фирма поставила в этот малыш свинцовый аккумулятор. Технология старая, энергетическая плотность маленькая. Единственный плюс - свинцовые более безопасны чем литиевые АКБ. У вас не будет проблем при посадке в самолет со свинцовым АКБ,  свинцовые АКБ меньше боятся глубокой разрядки. До покупки прибора пытался найти в сети полную спецификацию Ranger RX Quadra. Этого не получилось. Одним словом, рискнул и заказал. Когда достал генератор из коробки и увидел пределы входного напряжения от 10 до 18 вольт понял, что решение купить только один аккумуляторный блок более чем правильное, так как платить 190€ за свинцовый АКБ в наше время не позволительная роскошь. Если бы я знал все что знаю сейчас, то АКБ не покупал бы и вовсе. Но за знания надо платить - так устроена жить. Trauriges Smiley
И так для очумелых ручек. Вооружаемся линейкой и делаем чертеж контура платы.
 
Схему мне даже стыдно публиковать - она очень проста, штекер для внешнего АКБ, предохранитель на 20А и диод для защиты от неправильного подключения. Печатаем контуры платы на прозрачной пленке на лазерном принтере и вытравливаем плату на двухстороннем текстолите. После этого вспоминаем уроки труда и лобзиком выпиливаем плату. Последовательность процесса изготовления платы у каждого радиолюбителя своя, можно просто заказать плату с сети. Готовая плата выгладит вот так.

А это после монтажа.

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

Зубья с одной стороны длиннее чем с другой. Все механические и электрические части готовы. Теперь всё подключаем и снимаем.






Литиевые АКБ.
Я использую различные АКБ 4Ач, 5Ач и 10Ач.


Теперь не падайте со стула. Сейчас вы поймете почему производитель не поставил современные аккумуляторы. Родная батарея имеет ёмкостью 3.6Ач на 12В что составляет 43.2Втч и вся эта радость весит 1.6кг. 4Ач литиевая батарея на 14.8В (59.2Втч) весит всего 466г. Что  белее чем на треть легче. 5Ач литиевая батарея на 14.8В (74Втч) весит 506г. 10Ач литиевая батарея на 14.8В (148Втч) весит 812г это в два раза легче родной но более чем в три раза больше по ёмкости. Это мелочи, но приятно, если свет носишь на плечах. Но это не единственное, чем интересен переходник на внешний АКБ. Вместо литиевой батареи можно подключить автомобильный АКБ на 12В. Работая в студии можно подключить блок питания на 120вт, в момент заряда конденсаторов генератор потребляет 7А.


О безопасности литиевых АКБ.

Так как генератор не знает о том, что его питают от батарей с другой химией, за состоянием батарей  должен следить сам фотограф. Это очень важно, так как литиевые АКБ не любят глубокого разряда, если напряжение на ячейке падает до 1V то ячейку можно выбросить. Производители не рекомендуют опускаться ниже 2.7V. Для своих батарей я не опускаюсь ниже 3в на элемент. Для 4S не ниже 12V. Покупаю АКБ со встроенным тестером и звуковым сигналом.  За год эксплуатации на выезде мне обычно хватает двух батарей по 4Ач или одной 10Ач. Не забудьте, что для зарядки литиевых АКБ нужно купить другую зарядку. Ну и последняя страшилка при работе в литиевыми АКБ. Не допускайте механических повреждений. В лучшем случае батарея выдохнется, в худшем - может возгореться. Температура горения у лития 2000°.    
Вся конструкция в сборе похожа на бомбу. Весит 1.8кг и занимает меньше места.
Успешных вам кадров.
© Andrew Buckin.

PS:
плату можно вырезать прямоугольную и не упражняться с лобзиком и напильником. Smiley  Чертежи в статье не указаны специально. Черт их знает какие законы авторства в Швейцарии.   

Shutterstock Dreamstime

Fotostream http://www.flickr.com

Sonntag, 1. Januar 2012

Triangle control Arduino, PC, Camera.


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

Шаг первый - ИК пульт.
 
Вы случайно под новый год не решили поменять телевизор или выбросить старый DVD проигрыватель. Если нет, то жаль, так бы вам очень пригодился дистанционный пульт. У меня таких накопилось штук восемь. Но это не все, чем полезна старая электроника. Вооружившись отверткой можно вытащить ИК приемник.  Приемник обычно размещаются под передней крышкой прибора.

Подойдет любой IR приемник TSOP17, TSOP13, SM3374, TK19 и им подобные. После того, как приемник найден, собираем маленькую схему на Arduino и приступаем к изучению пульта управления.

Пульт желательно использовать не самый новый, но и не самый старый, чтоб было максимум рабочих кодов. Для сканирования нужно загрузить библиотеку IRremote. Создать Sketch для Arduino IR_code_to_232.pde


#include <IRremote.h>

int RECV_PIN = 2;
int STATUS_PIN = 13;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
}

int codeType = -1; // The type of code

void loop() {
if (irrecv.decode(&results)) {
codeType = results.decode_type;
if (codeType != UNKNOWN) {
if (results.value != REPEAT) {
Serial.println(results.value, HEX);
}
}
irrecv.resume();  
}
}
и загрузить код в Arduino. Открыть терминал и, нажимая кнопки на пульте управления, записать код для каждой кнопки. Для ленивых как я. :) открываем командное окно



Start > «cmd», перейти в рабочую директорию, туда же скопировать программу RS232read.7z

> RS232read.exe 7 115200 > rs232.txt.

Где 7 - номер COM порта, 115200 - скорость, rs232.txt файл куда сохраняются принимаемые данные. После этого открыть rs232.txt и скопировать коды в Sketch  должно получиться вот так.

#define button1 0xFF906F
#define button2 0xFFB847
#define button3 0xFFF807
#define button4 0xFFB04F
#define button5 0xFF9867
#define button6 0xFFD827
#define button7 0xFF8877
#define button8 0xFFA857
#define button9 0xFFE817
Теперь можно запрограммировать кнопку «1» на спуск камеры.

IR_Shutter.pde


#include <IRremote.h>

#define button1 0xFF906F
#define button2 0xFFB847
#define button3 0xFFF807
#define button4 0xFFB04F
#define button5 0xFF9867
#define button6 0xFFD827
#define button7 0xFF8877
#define button8 0xFFA857
#define button9 0xFFE817

const int Shot  = 11;
const int Focus  = 12;

int RECV_PIN = 2;
int STATUS_PIN = 13;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
pinMode(STATUS_PIN, OUTPUT);
pinMode(Shot, OUTPUT);
pinMode(Focus, OUTPUT); 
}

int codeType = -1; // The type of code

void loop() {
digitalWrite(STATUS_PIN, LOW );
if (irrecv.decode(&results)) {
codeType = results.decode_type;
if (codeType != UNKNOWN) {
if (results.value != REPEAT) {
if (results.value == button1) {
digitalWrite(Focus, HIGH);
digitalWrite(Shot, HIGH);
delay(1000);                  // waits for a second
digitalWrite(Focus, LOW);
digitalWrite(Shot, LOW); 
}
if (results.value == button2) {
Serial.println("Button 2");
}
if (results.value == button3) {
Serial.println("Button 3");
}
if (results.value == button4) {
Serial.println("Button 4");
}
if (results.value == button5) {
Serial.println("Button 5");
}
if (results.value == button6) {
Serial.println("Button 6");
}
if (results.value == button7) {
Serial.println("Button 7");
}
if (results.value == button8) {
Serial.println("Button 8");
}
if (results.value == button9) {
Serial.println("Shutter");
}
//Serial.println(results.value, HEX);
//irrecv.resume(); // Receive the next value
}
}
digitalWrite(STATUS_PIN, HIGH);  
irrecv.resume();  
}
}

Шаг второй - Windows Image Acquisition (WIA).

Почему WIA? Потому что позволяет управлять камерой, не углубляясь в  Nikon SKD или Canon SDK. Свободно распространяется Microsoft, управлять можно из VBScript. Чтобы лучше понять, что может WIA, запустите пару скриптов из командной строки. Camera_Properties.wsf



' before!!!! run cmd as Administrator and "cscript.exe //H:cscript" 
<job>
<reference object="wia.DeviceManager" />
<object id="DevMan" progid="Wia.DeviceManager" />
<object id="dlg" progid="WIA.CommonDialog" />
<script language="VBScript">

' Copyright 2011 All Rights Reserved
' Use and distribution for non-commercial purposes permitted
' http://karu2003.blogspot.com/
Option Explicit

Dim WiaDev 'As wia.Device
Dim WiaItm 'As wia.Item

Dim dev 'As Device
Dim i 'As Integer
Dim s 'As String
Dim p 'As Property

Set dev = dlg.ShowSelectDevice

For Each p In dev.Properties
s = p.Name '& "(" & p.PropertyID & ")"
'MsgBox s
WScript.echo s
Next

</script>
</job>


получим список всех Properties (свойства) камеры.
Display_Detailed_Property.wsf 


' before!!!! run cmd as Administrator and "cscript.exe //H:cscript" 
<job>
<reference object="wia.DeviceManager" />
<object id="DevMan" progid="Wia.DeviceManager" />
<object id="dlg" progid="WIA.CommonDialog" />
<script language="VBScript">

' Copyright 2011 All Rights Reserved
' Use and distribution for non-commercial purposes permitted
' http://karu2003.blogspot.com/

Option Explicit

Dim WiaDev 'As wia.Device
Dim WiaItm 'As wia.Item

Dim dev 'As Device
Dim p 'As Property
Dim s 'As String
Dim i 'As Integer

Set dev = dlg.ShowSelectDevice

For Each p In dev.Properties
s = p.Name & "(" & p.PropertyID & ") = "
If p.IsVector Then
s = s & "[vector of data]"
Else
s = s & p.Value
If p.SubType <> UnspecifiedSubType Then       
If p.Value <> p.SubTypeDefault Then
s = s & "(Default = " & p.SubTypeDefault & ")"
End If
End If
End If

If p.IsReadOnly then
s= s & " [READ ONLY]"
else
Select Case p.SubType
Case FlagSubType
s = s & " [ valid flags include:"
For i = 1 To p.SubTypeValues.Count
s = s & p.SubTypeValues(i)
If i <> p.SubTypeValues.Count Then
s = s & ", "
End If
Next
s = s & " ]"
Case ListSubType
s = s & " [ valid values include:"
For i = 1 To p.SubTypeValues.Count
s = s & p.SubTypeValues(i)
If i <> p.SubTypeValues.Count Then
s = s & ", "
End If
Next
s = s & " ]"
Case RangeSubType
s = s & " [ valid values in the range from " & _
p.SubTypeMin & " to " & p.SubTypeMax & _
" in increments of " & p.SubTypeStep & " ]"
Case Else 'UnspecifiedSubType
End Select
End If

'MsgBox s
WScript.echo s
Next

</script>
</job>


получим список всех Properties и все возможные value (значение). Обратите внимание на два свойства "F Number" - диафрагма и "Exposure Time" — выдержка, значения этих свойств отличаются от привычных фотографу. Чтобы установить выдержку в 1 секунду нужно отправить в камеру значение 10000, для диафрагмы F8 нужно отправить значение 800. Диафрагму нужно умножить на 100. С выдержкой искомое значение получается несколько сложнее. Чтобы установить выдержку 1/160 нужно 10000/160 и отбросить дробную часть. Получим 62. 

(1,"6400");
(2,"4000");
(3,"3200");
(4,"2500");
(5,"2000");
(6,"1600");
(8,"1250");
(10,"1000");
(12,"800");
(13,"750");
(15,"640");
(20,"500");
(25,"400");
(28,"350");
(31,"320");
(40,"250");
(50,"200");
(55,"180");
(62,"160");
(80,"125");
(100,"100");
(111,"90");
(125,"80");
(166,"60");
(200,"50");
(222,"45");
(250,"40");
(333,"30");
(400,"25");
(500,"20");
(666,"15");
(769,"13");
(1000,"10");
(1250,"8");
(1666,"6");
(2000,"5");
(2500,"4");
(3333,"3");
(4000,"2.5");
(5000,"2");
(6250,"1.6");
(6666,"1.5");
(7692,"1.3");
(10000,"1\"");
(13000,"1.3\"");
(15000,"1.5\"");
(16000,"1.6\"");
(20000,"2\"");
(25000,"2.5\"");
(30000,"3\"");
(40000,"4\"");
(50000,"5\"");
(60000,"6\"");
(80000,"8\"");
(100000,"10\"");
(130000,"13\"");
(150000,"15\"");
(200000,"20\"");
(250000,"25\"");
(300000,"30\"");
Для примера из командной строки запустите скрипт 160f8.wsf


' before!!!! run cmd as Administrator and "cscript.exe //H:cscript" 
<job>
<reference object="wia.DeviceManager" />
<object id="DevMan" progid="Wia.DeviceManager" />
<object id="dlg" progid="WIA.CommonDialog" />
<script language="VBScript">

' Copyright 2011 All Rights Reserved
' Use and distribution for non-commercial purposes permitted
' http://karu2003.blogspot.com/

Option Explicit

Dim WiaDev 'As wia.Device

Set WiaDev = dlg.ShowSelectDevice
WiaDev.properties("Exposure Time").value = 62 
WiaDev.properties("F Number").value = 800 

</script>
</job>


и камера поменяет экспозицию на 1/160 F8. Очень важный момент: количество свойств и их значения могут меняться от камеры к камере и они могут быть только для чтения. Так что, перед тем, как изменять какие-либо свойства, убедитесь, что они доступны для записи.

Шаг три — Arduino > WIA > Camera.

Первым делом организуем срабатывание затвора по пути Arduino > PC > Camera. Для этого загрузим Sketch IR_Shutter.pde где на код кнопки «1» камера срабатывать на прямую от Arduino, а на код кнопки «9» Arduino будет отсылать в компьютер «Shutter». Со стороны компьютера из командной строки запустим скрипт  Shutter.wsf


' before!!!! run cmd as Administrator and "cscript.exe //H:cscript" 
<job>
<reference object="wia.DeviceManager" />
<object id="DevMan" progid="Wia.DeviceManager" />
<object id="dlg" progid="WIA.CommonDialog" />
<script language="VBScript">

' Copyright 2011 All Rights Reserved
' Use and distribution for non-commercial purposes permitted
' http://karu2003.blogspot.com/

Option Explicit

Dim WiaDev 'As wia.Device
Const ForReading = 1
dim fso
dim com
dim s
Dim strPortName' As String

strPortName = GetComPort

Set fso = CreateObject("Scripting.FileSystemObject")
Set com = fso.OpenTextFile(strPortName & ":115200,N,8,1", ForReading)

Set WiaDev = dlg.ShowSelectDevice

WScript.echo "Shutter Camera Control with Arduino Script 1.0 "
WScript.echo "Copyright 2011 All Rights Reserved"
WScript.echo "Use and distribution for non-commercial purposes permitted"
WScript.echo "http://karu2003.blogspot.com/"
Wscript.echo "Controlling  " & WiaDev.Properties("Description").Value

' set raw
WiaDev.Properties("Format").Value = "{B96B3CA9-0728-11D3-9D7B-0000F81EF32E}"
Wscript.echo "Shooting in RAW Format"
' set jpg
'WiaDev.Properties("Format").Value = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
'Wscript.echo "Shooting in JPG Format"

WScript.echo "Start to read data from " & strPortName
WScript.echo "Press Ctrl-Break to exit"

Do While 1 
Do While com.AtEndOfStream <> True
WScript.Sleep(100)
s = com.ReadLine
'WScript.echo (s)
If s = "Shutter" Then
WiaDev.ExecuteCommand (wiaCommandTakePicture)
WScript.echo (s)
End If
Loop
Loop

com.Close()

'************************************************************************
Function GetComPort()
Dim strComputer
Dim objWMIService
Dim colItems
Dim objItem
Dim objRgx 'As RegExp
Dim objRegMatches 'As MatchCollection
Dim strDevName

GetComPort = ""

strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PnPEntity")
For Each objItem In colItems
If ("FTSER2K" = objItem.Service) And ("FTDI" = objItem.Manufacturer) Then

set objRgx = CreateObject("vbScript.RegExp")

strDevName = objItem.Name
objRgx.Pattern = "COM[0-9]+"
Set objRegMatches = objRgx.Execute(strDevName)
If objRegMatches.Count = 1 Then
GetComPort = objRegMatches.Item(0).Value
Else
End If
End If
Next
End Function
' ********************************************************************

</script>
</job>
Теперь у нас есть две возможности электорального спуска затвора и все с одного пульта управления. Немного изменив код, можно добавить сохранение снятого кадра прямо на компьютер. Но об этом в другой раз. Информацию, как это сделать, можно найти на DIYPhotoBits.com. Теперь осталось изменить пару строчек исходного кода в скрипте и Arduino и получится универсальный командный пульт. Но перед этим стоит разобраться, какие свойства камеры можно изменять. Для своих фото экспериментов - макро, HDRi, предметки мне хватает шести основных:

("White Balance").value
("F Number").value
("Exposure Time").value
("Exposure Mode").value
("Exposure Index").value
("Exposure Compensation").value

IR_WIAComander.wsf


' before!!!! run cmd as Administrator and "cscript.exe //H:cscript" 
<job>
<reference object="wia.DeviceManager" />
<object id="DevMan" progid="Wia.DeviceManager" />
<object id="dlg" progid="WIA.CommonDialog" />
<script language="VBScript">

' Copyright 2011 All Rights Reserved
' Use and distribution for non-commercial purposes permitted
' http://karu2003.blogspot.com/

Option Explicit

Dim WiaDev 'As wia.Device
Const ForReading = 1
dim fso
dim com
dim s
Dim strPortName' As String
Dim k

strPortName = GetComPort

Set fso = CreateObject("Scripting.FileSystemObject")
Set com = fso.OpenTextFile(strPortName & ":115200,N,8,1", ForReading)

Set WiaDev = dlg.ShowSelectDevice

WScript.echo "Shutter Camera Control with Arduino Script 1.0 "
WScript.echo "Copyright 2011 All Rights Reserved"
WScript.echo "Use and distribution for non-commercial purposes permitted"
WScript.echo "http://karu2003.blogspot.com/"
Wscript.echo "Controlling  " & WiaDev.Properties("Description").Value

' set raw
WiaDev.Properties("Format").Value = "{B96B3CA9-0728-11D3-9D7B-0000F81EF32E}"
Wscript.echo "Shooting in RAW Format"
' set jpg
'WiaDev.Properties("Format").Value = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
'Wscript.echo "Shooting in JPG Format"

WScript.echo "Start to read data from " & strPortName
WScript.echo "Press Ctrl-Break to exit"

Do While 1 
Do While com.AtEndOfStream <> True
s = com.ReadLine
k = Len(s)
'WScript.echo (s)
If  s = "Shutter" Then
WiaDev.ExecuteCommand (wiaCommandTakePicture)
WScript.echo (s)
End If

If Left(s,2) = "WB" Then
WiaDev.properties("White Balance").value = CDbl(Mid(s,3,k-2))
End If

If Left(s,2) = "FN" Then
WiaDev.properties("F Number").value =  CDbl(Mid(s,3,k-2))
End If

If Left(s,2) = "ET" Then
WiaDev.properties("Exposure Time").value = CDbl(Mid(s,3,k-2))
End If

If Left(s,2) = "EM" Then
WiaDev.properties("Exposure Mode").value = CDbl(Mid(s,3,k-2))
End If

If Left(s,2) = "EI" Then
WiaDev.properties("Exposure Index").value = CDbl(Mid(s,3,k-2))
End If

If Left(s,2) = "EC" Then
WiaDev.properties("Exposure Compensation").value = CDbl(Mid(s,3,k-2))
End If    

WScript.Sleep(100)
Loop
Loop

com.Close()

'************************************************************************
Function GetComPort()
Dim strComputer
Dim objWMIService
Dim colItems
Dim objItem
Dim objRgx 'As RegExp
Dim objRegMatches 'As MatchCollection
Dim strDevName


GetComPort = ""

strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PnPEntity")
For Each objItem In colItems
If ("FTSER2K" = objItem.Service) And ("FTDI" = objItem.Manufacturer) Then

set objRgx = CreateObject("vbScript.RegExp")

strDevName = objItem.Name
objRgx.Pattern = "COM[0-9]+"
Set objRegMatches = objRgx.Execute(strDevName)
If objRegMatches.Count = 1 Then
GetComPort = objRegMatches.Item(0).Value
Else
End If
End If
Next
End Function
' ********************************************************************
</script>
</job>
IR_WIAComander.pde
#include <IRremote.h>
//WIA Format
//("White Balance").value =
//("F Number").value = 
//("Exposure Time").value =
//("Exposure Mode").value =
//("Exposure Index").value =
//("Exposure Compensation").value =

const char* WB = "WB"; //"White Balance";
const char* FN = "FN"; //"F Number";
const char* ET = "ET"; //"Exposure Time";
const char* EM = "EM"; //"Exposure Mode";
const char* EI = "EI"; //"Exposure Index";
const char* EC = "EC"; //"Exposure Compensation";

#define button1 0xFF906F
#define button2 0xFFB847
#define button3 0xFFF807
#define button4 0xFFB04F
#define button5 0xFF9867
#define button6 0xFFD827
#define button7 0xFF8877
#define button8 0xFFA857
#define button9 0xFFE817

const int Shot  = 11;
const int Focus  = 12;

int RECV_PIN = 2;
int STATUS_PIN = 13;
String sProperties;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // Start the receiver
pinMode(STATUS_PIN, OUTPUT);
pinMode(Shot, OUTPUT);
pinMode(Focus, OUTPUT); 
}

int codeType = -1; // The type of code

void loop() {
digitalWrite(STATUS_PIN, LOW );
if (irrecv.decode(&results)) {
codeType = results.decode_type;
if (codeType != UNKNOWN) {
if (results.value != REPEAT) {
if (results.value == button1) {
digitalWrite(Focus, HIGH);
digitalWrite(Shot, HIGH);
delay(1000);                  // waits for a second
digitalWrite(Focus, LOW);
digitalWrite(Shot, LOW); 
}
if (results.value == button2) {
sProperties = FN;
sProperties = sProperties + "800";
Serial.println(sProperties);
delay(100);
sProperties = ET;
sProperties = sProperties + "62";
Serial.println(sProperties);

}
if (results.value == button3) {
sProperties = FN;
sProperties = sProperties + "400";
Serial.println(sProperties);
delay(100);
sProperties = ET;
sProperties = sProperties + "166";
Serial.println(sProperties);
}
if (results.value == button4) {
Serial.println("Button 4");
}
if (results.value == button5) {
Serial.println("Button 5");
}
if (results.value == button6) {
Serial.println("Button 6");
}
if (results.value == button7) {
Serial.println("Button 7");
}
if (results.value == button8) {
Serial.println("Button 8");
}
if (results.value == button9) {
Serial.println("Shutter");
}
//Serial.println(results.value, HEX);
//irrecv.resume(); // Receive the next value
}
}
digitalWrite(STATUS_PIN, HIGH);  
irrecv.resume();  
}
}
Вот и все, что нужно. Дальше каждый расширяет код под Arduino под свои потребности.

Чтобы не работать постоянно, из командной строки написал программу  IR_WIAComander.7z . По логике работы программа ничем не отличается от скрипта , добавлено несколько проверок на подключение камеры и Arduino.

Но, чтобы программа работала, в системе нужно зарегистрировать библиотеку работы с  COM Port.   

1. загрузить MSCOMM32.ocx
2. copy MSCOMM32.ocx в C:\Windows\System32\
3. открыть cmd как администратор
4. > regsvr32 C:\Windows\System32\MSCOMM32.ocx
5. загрузить vbctrls.zip
6. добавить лицензию в регистер.

Надеюсь, что описал не очень запутано.
Удачи в эксперементах.

© Andrew Buckin.

Shutterstock Dreamstime

Fotostream http://www.flickr.com

TODO:
Multiple FTDI Chip.
Detect Arduino Bootloader
Send Properties to Arduino.