Київський клуб аматорів астрономії "Астрополіс"

astromagazin.net
* *
Ласкаво просимо, Гість. Будь ласка, увійдіть або зареєструйтеся.
29 Листопада 2024, 08:56:46

Увійти

google


Автор Тема: Программируемый IR-интервалометр на Arduino для Sony Nex 5n  (Прочитано 3517 раз)

0 Користувачів і 1 Гість дивляться цю тему.

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)

Немного истории...
В конце прошлого года появилась у меня беззеркалка Sony Nex 5n. И все бы в ней хорошо но расстраивало отсутствие возможности нормальной, програмируемой серийной съемки к которой успел привыкнуть с програмируеным пультом на Canon-е. Из всех интерфейсов у Sony Nex 5n только ИК. Даже с компом не дружит. :( Понадобился год мечтаний и мощный пинок от Николая (М_М) что бы наконец решиться на этот минипроект. Ничего особо нового мы не открыли, но может кому то пригодится и сэкономит время...
Сразу отвечу на потенциальный вопрос - Почему год тянул с такой элементарщиной?
Ответ: Ардуино до 25 октября этого года видел только на картинках. Никаких базовых знаний и навыков програмирования не имею. Слова "скетч" "оператор" "переменная" ничего мне не говорили. В электронике полный 0. Паять не умею, паяльника нет, ну и т.д. Но Коля сказал - "Давай-давай! Я помогу!" И как говорили в одной из восточных республик во времена ссср - "Партия сказала ГЫГА! Комсомол ответил ШЫКН БАТЫР!"
25 октября лед тронулся... Сходил в "Микроампер" купил все что необходимо для работы: Arduino UNO, готовый шилд с LCD дисплеем 2Х16 и кнопками, ну и немного мелочевки-рассыпухи. (поиграться с макеткой, проводочками и светодиодами) Когда понял что такое pinMode, digitalWrite(5, LOW); , чем void setup отличается от void loop и что такое "переменная" и "массив данных" приступили непосредственно к скетчу под пульт. В процессе его создания открыл для себя еще очень много новых слов... Жаль только что смысл многих из них до сих пор остается загадкой :) Но надеюсь что освою. Это только первое знакомство с Arduino...  Все общение происходило по скайпу. Скетч в основном был написан (не подумайте что мной) за пару дней в режиме "глупый вопрос" - "терпеливый ответ" и два разговора в скайпе - 1ч. 09м. и 2ч.51м. Использовали одновременно и скайп и TeamViewer и совместную работу с документами на Гугл драйве. Кое что я даже понял... Но сказать что я смог бы это повторить или сильно модернизировать - неее, пока еще нет.
Порой чувствовал себя персонажем анекдота - Поле чудес, отгадал все буквы, не смог прочитать слово. Вообщем спасибо Николаю. Когда ЭТО почти сразу заработало удивлены были оба.  "Теория первого блина на сработала" Ну а дальше была покупка паяльника, два ожога, перепаивание с "не того" пина на "тот который нужен" и т.д....


Теперь собственно про функционал пульта:
Установка экспозиции (exposure) 0-999с. (0 можно использовать для режима  не-бульб с выдержками меньше 1с. выставленными на камере - светодиод посылает два импульса подряд, камера делает два снимка подряд, потом пауза и следующие два снимка и т.д. Когда подучусь добавлю в скетч параметр что бы при exp=0 не посылался второй (закрывающий) импульс)
Установка интервала между снимками (interval) 0-999с.
Установка колличества снимков (count) 0-999.
На экране отображаются:
в процессе настройки - параметр "exposure" "interval" или "count" А так же "work" - значение колличества отснятых кадров в сессии)
перебираются по кругу краткими нажатиями на кнопку 1. Установка - кнопки 3, 4 = +-1, кнопки 2 и 5 = +-10.
Кнопка6 - reset
Запуск программы - длинное нажатие кнопки 1.
Во время исполнения программы на экране:
Running и (в зависимости экспозиция или пауза) "Exp" или "Int" с обратным таймером в секундах. А так же в конце строки число отснятых кадров.
После окончания сессии: "Done X shots" где X=work. Висит на экране до нажатия любой кнопки. После нажатия пульт возвращается к установкам прописаным по умолчанию в скетче.
Пульт работает без замечаний. IR светодиод на метровом шнурке. Отстегивается от пульта. С расстояния 75-80см. от  камеры работает стабильно.
Финансовая составляющая:
Arduino UNO R3 (китайская реплика) - 195грн.
LCD 1602 KEYPAD SHIELD - 95грн.
Резистор 200 Ом - 0,3грн.
IR светодиод - 4грн.
Термоусадка 2грн.
Разъем 3,5мм "мама-папа" с кабелем валялся в ящике стола.
Итого 296,3грн.
Осталось придумать во что запаковать ардуину с шилдом что бы "было красыво" :) и при этом кнопки удобно нажимались. Чувствую придется еще и 123D Design осваивать...
 
Вот в кратце и все... Фото прилагаю.
Обсуждения, осуждения, меткая сатира и старый добрый юмор приветствуются.
« Останнє редагування: 08 Листопада 2016, 18:09:58 від Yum »
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function
Подякували

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #1 : 08 Листопада 2016, 17:19:57 »
. - .

 :)
Сам скетч наверно завтра.
« Останнє редагування: 08 Листопада 2016, 18:09:09 від Yum »
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #2 : 08 Листопада 2016, 20:20:35 »
. - .

Цитувати
Arduino UNO R3 (китайская реплика) - 195грн.
Можно чуток сэкомить, но бывают проблемы с нахождением драйвера. У меня на одном ноуте драйвер установился сам, на втором пришлось поискать, но недолго.
Записаний

Kalbasnik

  • Offline Offline
  • Повідомлень: 575
  • Подяк: 118
  • Dreamer, Simferopol, R7KCY
    • Прогулки по звездам
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #3 : 08 Листопада 2016, 20:44:09 »
. - .

СН340 в сети есть, работает нормуль. Есть замечание к плате по ссылке, брал с подобным расположением деталей (а может и таким). Сдохла на ровном месте через 1-2 недели работы на метеостанции... Сперва по питанию траблы были, пофиксил, сдохла толи мега толи хз что, прошивку залить в нее не удается, загрузчик обновить тоже...
До этого стояла с "диагональным" расположением проца, отпахала пол года без замечаний, лежит как макетка.
Записаний
YouTube, EQ-Drive SL+, EQ-6 Pro, GSO 250/4, MPCC III, Canon 600D, SW 804, QHY 5II, Celestron UpClose 10x50х6,8°монтировку ИПГ

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #4 : 08 Листопада 2016, 21:00:03 »
. - .

У меня она живет уже год, правда на улице только эпизодически, хотя в росе купана не раз.

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

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #5 : 09 Листопада 2016, 13:30:36 »
. - .

Мелкие подробности:
Библиотеки LiquidCrystal.h  IRremote.h  EPROM.h EEWrap.h
IR светодиод на D3
На D13 прописан еще один обычный светодиод. Горит во время "EXP" Можно использовать для визуального контроля издалека.
Установки по умолчанию:
"exposure  ", 5
  "interval  ", 10
  "count     ", 5
  "work      ", 0
  "brightness", 30

Добавлена передача данных по блютузу. Подробности тут

Ну и сам скетч в скрепке и в спойлере:
Скрытый текст
#include <LiquidCrystal.h>

#include <EEPROM.h>
#include <EEWrap.h>


#include <IRremote.h>


IRsend irsend;
void NexCmd()
{
  for (int i = 0; i < 3; i++)
  {
    irsend.sendSony(0xb4b8f, 20); // 1011 0100 1011 1000 1111
    delay(40);
  }
}


LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

#define numStates 5
char* stateNames [numStates] =
{
  "exposure  ",
  "interval  ",
  "count     ",
  "work      ",
  "brightness",
};


int stateValues[numStates] = {5, 10, 5, 0, 30};
int16_e stateValuesSaved[numStates] EEMEM;

#define exposure stateValues[0]
#define interval stateValues[1]
#define count stateValues[2]
#define work stateValues[3]
#define brightness stateValues[4]

int isRunning = 0;

unsigned long time1, time2;
unsigned long tstart, tstop, tnext;
long dt;


const int analogInPin = A0;
const int analogOutPin = 10;

int keyValue = 0;

int state = 0;
int oldKey = 0;

char buf[34];

byte key() {
  int val = analogRead(0);
  if (val < 50) return 5;
  else if (val < 150) return 3;
  else if (val < 350) return 4;
  else if (val < 500) return 2;
  else if (val < 800) return 1;
  else return 0;
}

void Load()
{
  if (stateValuesSaved[0]<0)
    return;
  for (int i = 0; i< numStates; i++)
    stateValues = stateValuesSaved;
 
}

void Save()
{
  for (int i = 0; i< numStates; i++)
    stateValuesSaved = stateValues;
}

void setup() {
  lcd.begin(16, 2);
  lcd.clear();
  pinMode(13, OUTPUT);
  analogWrite(analogOutPin, brightness);
  Load();

  Serial.begin(9600);
}

void loop()
{
  keyValue = key();
  if (keyValue != oldKey)
  {
    if (oldKey == 0) // key down
    {
      time1 = millis();
    }
    else // key up
    {
      time2 = millis();
      dt = time2 - time1;

      if (dt > 1000)
      {
        switch (oldKey)
        {
          case 1:
            isRunning++;
            break;
          case 2:
            isRunning = 0;
          case 5:
            Save();

            break;
        }
      }
      else
        switch (oldKey)
        {
          case 1:
            state ++;
            if (state >= numStates)
              state = 0;
            break;
          case 2: // <---
            stateValues[state] = stateValues[state] - 10;
            break;

          case 3:  // +
            stateValues[state]++;
            break;
          case 4:  // -
            stateValues[state]--;
            break;
          case 5:  // --->
            stateValues[state] = stateValues[state] + 10;

            break;
        }
        analogWrite(analogOutPin, brightness);
    }


    oldKey = keyValue;
  }
  if (isRunning == 0)
  {
    lcd.setCursor(0, 0);
    lcd.print(stateNames[state]);
    Serial.print(stateNames[state]);

    lcd.setCursor(0, 1);
    lcd.print(stateValues[state]);
    Serial.print(stateValues[state]);
    lcd.print("                     ");
    Serial.print("\n");

    delay(20);
  }
  else // running
  {
    lcd.setCursor(0, 0);
    lcd.print("Running  ");
    Serial.print("Running\n");

    delay(20);

    switch (isRunning)
    {
      case 1: // start camera;
        digitalWrite(13, HIGH);
          // send IR command
          NexCmd();
        if ( exposure == 0 )
          {
            digitalWrite(13, LOW);
            tstop = millis();
            isRunning = 3;
          }
        else
          {
            isRunning = 2;
          }
        tstart = millis();
        lcd.setCursor(0, 1);
        lcd.print("started      ");
        Serial.print("started\n");
        break;
      case 2: // stop camera
        tstop = millis();
        dt = tstop - tstart;
       
        lcd.setCursor(0, 1);
        sprintf (buf, "Exp =%5ld %5i ", exposure - dt / 1000, work);
       
        lcd.print(buf);
        Serial.print(buf);
        if (dt >= exposure * 1000)
        {
         
            // send IR command
            NexCmd();

          digitalWrite(13, LOW);
          isRunning = 3;
        }
        break;

      case 3: // next
        tnext = millis();
        dt = tnext - tstop;
        lcd.setCursor(0, 1);
        sprintf (buf, "Int =%5ld %5d ", interval - dt / 1000, work);
        /*        lcd.print("Int = ");
                lcd.print(interval - dt/1000,3);
                lcd.print("     ");
                lcd.print(work);
                lcd.print("  "); */
        lcd.print(buf);
        Serial.print(buf);
        if (dt >= interval * 1000)
        {
          work++;
          if (work >= count)
          {
            lcd.setCursor(0, 1);
            lcd.print("Done  ");
            Serial.print("Done\n");
            lcd.print(work);
            Serial.print(work);
            lcd.print(" shots     ");
            Serial.print(" shots\n");
            while (key()== 0) delay(20);
            while (key()!= 0) delay(20);
            work = 0;
            isRunning = 0;
          }
          else
            isRunning = 1;
        }
        break;
    }
  }

}


« Останнє редагування: 12 Грудня 2016, 12:39:53 від Yum »
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #6 : 21 Листопада 2016, 17:35:01 »
. - .

В скетч для интервалометра добавлено несколько удобных опций. Спасибо Николаю (М_М:SLA:
1. При значении exp=0 автоматически убирается второй (закрывающий) импульс светодиода и корректно  отрабатывается количество снимков с короткой выдержкой выставленной в тушке.
2. Добавлен еще один пункт в настроечном меню "brightness" регулировать яркость экрана можно прямо с кнопок. (0-255)
3. Добавлена возможность запоминания настроек - длинное нажатие кнопки №5 (Right)
Скетч  обновлен.
« Останнє редагування: 21 Листопада 2016, 17:40:52 від Yum »
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function


gordon2903

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 748
  • Подяк: 1147
  • концентрація.......
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #7 : 22 Листопада 2016, 01:33:45 »
. - .

Сергей, поздравляю с ,почти, завершенным  проектом и с кучей ,попутно, приобретенных знаний.
Respect, одним словом. :beer:
Записаний

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #8 : 22 Листопада 2016, 11:40:39 »
. - .

Спасибо! Поздравить можно конечно меня :) Но благодарить за этот проект нужно Колю.  :SLA: Без него ничего бы не было...
Финальная версия которую планируем будет еще иметь блютуз-связь со смартфоном. Можно будет издалека получать на экран информацию что происходит в процессе сессии.
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

M_M

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5068
  • Подяк: 1094
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #9 : 22 Листопада 2016, 17:25:29 »
. - .

Финальная версия еще кофе должна заваривать  :shuffle:
Записаний

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #10 : 22 Листопада 2016, 17:29:58 »
. - .

Финальная версия еще кофе должна заваривать  :shuffle:
:rofl:
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

mpyat2

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1654
  • Подяк: 1596
  • Nothing lasts forever but the earth and sky.
    • Above us only sky
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #11 : 23 Листопада 2016, 00:43:42 »
. - .

Очень интересно! Люблю такие простые и полезные законченные проекты на несколько вечеров ;)

Придумаете, что делать с корпусом, напишите, пожалуйста! Корпуса -- это больная тема для таких самопальных штучек...
Записаний
EQ5+EQDrive; SW 15075 | PMAK (AAVSO). 134 new variables discovered; 19 revisions/submissions of known objects.

meandr

  • Offline Offline
  • Повідомлень: 587
  • Подяк: 17
  • Свалившийся с трех Лун
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #12 : 30 Листопада 2016, 09:23:31 »
. - .

Немного истории...
В конце прошлого года появилась у меня беззеркалка Sony Nex 5n. И все бы в ней хорошо но расстраивало отсутствие возможности нормальной, програмируемой серийной съемки к которой успел привыкнуть с програмируеным пультом на Canon-е...
А что это за программируемый пульт на Canon ?
В моем Canon 350 на разъем пульта выходит только кнопка спуска (понятно, что это можно автоматизировать), а все остальное - выдержки, просмотр и т.п .- руками на самом аппарате.
Но это полбеды
Больше всего достает то, что скачивание на комп только через Win-Мастер работы с фотографиями (там есть какой-то драйвер), и в это время аппарат не снимает (busy - занят сразу как только подключаю кабелем к компу и до тех пор пока не откину кабель).
Никакое родное ПО с сайтов Canon не становится или не работает - требует наличия программ, уже установленных с загрузочного диска, которого у меня нет (реанимировал убитый аппарат).
Может быть у Вас есть такой загрузочный диск или какие дельные советы ? - буду весьма признателен.
Или выход - менять  Canon на такой, в котором есть LiveView?
« Останнє редагування: 30 Листопада 2016, 09:33:27 від meandr »
Записаний
SW 130/650, МТО 11 СА, Юпитер 21,  Canon 350, QHY5,  Монти EQ-3,  EQ-1, ArduinoDrive
Водяной рефрактор "Бутылка", Спектроскоп SpectRoyal, астроинтрферометр Interstellar
Наблюдения кинетической аберрации света звезд

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #13 : 30 Листопада 2016, 10:24:09 »
. - .

Для  Canon  у меня такого типа только для 650-ого
http://www.astroclub.kiev.ua/forum/index.php?topic=36147.0
Не знаю есть ли такие для 350-ого
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function
Подякували

Kalbasnik

  • Offline Offline
  • Повідомлень: 575
  • Подяк: 118
  • Dreamer, Simferopol, R7KCY
    • Прогулки по звездам
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #14 : 30 Листопада 2016, 11:02:30 »
. - .

Записаний
YouTube, EQ-Drive SL+, EQ-6 Pro, GSO 250/4, MPCC III, Canon 600D, SW 804, QHY 5II, Celestron UpClose 10x50х6,8°монтировку ИПГ
Подякували

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #15 : 30 Листопада 2016, 12:22:44 »
. - .

Вот еще вариант http://www.astroclub.kiev.ua/forum/index.php?topic=38166.msg471894#msg471894
У меня с Сони проблема была в том что кроме инфракрасного порта никаких вариантов тушка не поддерживает.
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #16 : 30 Листопада 2016, 13:18:52 »
. - .

С 350-м вариант проще... Есть програмируемые пульты именно под него
https://www.amazon.co.uk/Neewer-Shutter-Release-Hasselblad-PowerShot/dp/B003VIEDRO
И на Али есть недорогие
https://ru.aliexpress.com/item/Sidande-LCD-Time-Lapse-Intervalometer-Remote-Control-Timer-Shutter-Release-for-Canon-1000D-650D-550D-500D/32587906163.html?spm=2114.03010208.8.4.pkR8vw
Нужно просто подобрать с таким штеккером как в 350-ом
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #17 : 12 Грудня 2016, 12:36:31 »
. - .

Ну вот и допилена программная часть - интервалометр передает данные по блютузу в смартфон.
Блютуз модуль Bluetooth-HC-06
Скорость обмена данными 9600 Подключен к TX платы
Та смартфоне принимал вот этим:  https://play.google.com/store/apps/details?id=nextprototypes.BTSerialController
и даже вот этим: https://play.google.com/store/apps/details?id=appinventor.ai_g916414.Temperature_sensors_Bluetooth_Arduino

Скетч обновлен.  :SLA: Собственно всё.
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

Yum

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 5146
  • Подяк: 721
  • Сергей, и на ты... :)
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #18 : 12 Червня 2018, 13:16:32 »
. - .

Попользовался девайсом... а сегодня обнаружил что он мне практически не нужен  :gigi:
В Гуглплей програмулю нашел которая все что ваяли + еще несколько плюшек делает прямо со смартфона: https://play.google.com/store/apps/details?id=com.abril.camera_ir_remote_plus   И вроде не только для Sony но и для Canon и Nikon.
Связку Sony Nex5n - Xiaomi MiMax2 уже проверил. Всё работает.
Записаний
Dob130\650 & SW1025 & SWMaxView90 на Celestron NexStar SE & SW multi function

mpyat2

  • Клуб Астрополіс
  • Offline Offline
  • Повідомлень: 1654
  • Подяк: 1596
  • Nothing lasts forever but the earth and sky.
    • Above us only sky
Re: Программируемый IR-интервалометр на Arduino для Sony Nex 5n
« Відповідь #19 : 12 Червня 2018, 14:11:02 »
. - .

но при условии, что на смартфоне есть IR излучатель.
У меня на старом LG работало как-то неуверенно.

P.S. Сам пользуюсь https://dslrdashboard.info, довольно удобная штука, пользуюсь кабельнім соединением по USB.
Записаний
EQ5+EQDrive; SW 15075 | PMAK (AAVSO). 134 new variables discovered; 19 revisions/submissions of known objects.