Нажатия на физическую кнопку

Ultrane0
Offline
Зарегистрирован: 05.03.2012

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

maksim
Offline
Зарегистрирован: 12.02.2012

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

leshak
Offline
Зарегистрирован: 29.09.2011

 не совсем ясно что вы подразумеваете под "устройство нажмет кнопку". Притянет к нулю линию, скоммутируюет высковольтную нагрузку?

Ну предположим что это какое-то реле, которовое включается при логической единице на пине.

Тогда код будет выглядить примерно так:

#define LED_PIN 13 // будем еще и светиком показывать состояния нажатия
#define START_BUTON_PIN 3 // пин на который подключена стартовая кнопка, предполагается что она соединяет пин с землей
#define ACTION_PIN 5 // пин на который плюкчено реле

#define DELAY_BEFORE_PRESS 1000 // время задержки в милисекундах перед нажатием

#define DELAY_PRESS1 2000// время первого нажания
#define DELAY_PRESS2 3000// время второго нажания

#define DELAY_MIDDLE 500// задержка между нажатиями



void setup(){
  //настроиваем режимы пинов
  pinMode(START_BUTON_PIN,INPUT); // не обязательно, но "что-бы видней было".
  digitalWrite(START_BUTON_PIN,HIGH); // включили подттягивающий резстор
  
  pinMode(LED_PIN,OUTPUT); // подключили светик

  pinMode(ACTION_PIN,OUTPUT);// подключили реле
  digitalWrite(ACTION_PIN,LOW);// на всякий случай выключили
  
  Serial.begin(9600);// для отладки будем сообщать в Serial у нас происходит
  
  Serial.println("Device Ready! Press Start Button...");
}


void loop(){
  if(!digitalRead(START_BUTON_PIN)){ // проверяем нажата ли стартовая кнопка
    
    Serial.println("Start detected");
    
    delay(DELAY_BEFORE_PRESS); // предстартовая задержка
    
    // первое нажатие
    digitalWrite(LED_PIN,HIGH);//показали светиком
    digitalWrite(ACTION_PIN,HIGH); //включили
    Serial.println("Press"); // отрепортили
    
    delay(DELAY_PRESS1);// ждем, держим кнопку нажатой
    
    //Отпускаем
    digitalWrite(LED_PIN,LOW);//показали светиком
    digitalWrite(ACTION_PIN,LOW); //выключили
    Serial.println("Release"); // отрепортили    
    
    

     delay(DELAY_MIDDLE); // пауза между нажатиями
     
     
   
    // второе нажатие
    digitalWrite(LED_PIN,HIGH);//показали светиком
    digitalWrite(ACTION_PIN,HIGH); //включили
    Serial.println("Press"); // отрепортили
    
    delay(DELAY_PRESS2);// ждем, держим кнопку нажатой
    
    //Отпускаем
    digitalWrite(LED_PIN,LOW);//показали светиком
    digitalWrite(ACTION_PIN,LOW); //выключили
    Serial.println("Release"); // отрепортили       
    
    
    //Останавливаем скетч для предотвращения повторых нажатий, 
    while(true){} //выкинуть эту строку если стартовую кнопку можно нажимать несколько раз
    
  }
}

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

leshak как я понял нужна коробка, которую крепишь рядом с кнонкой, наример на стене рядом с выключателем света в комнате.
 

Ultrane0
Offline
Зарегистрирован: 05.03.2012

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

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

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

leshak
Offline
Зарегистрирован: 29.09.2011

maksim пишет:

leshak как я понял нужна коробка, которую крепишь рядом с кнонкой, наример на стене рядом с выключателем света в комнате.
 

А к чему гадать? Пусть сам скажет. Может "вместо кнопки нужно", может "проходной выключатель" :)

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

leshak
Offline
Зарегистрирован: 29.09.2011

 > с нижней строны должен располагаться манипулятор

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

>Для чего это нужно, это вопрос вротой

Это первый вопрос. Вы же пришли не на биржу труда, а на "хобби форум". Где впервую очередь оценивается "интерестность задачи". На freelance.ru тогда кого-нибудь ищите. Это уже не говоря про то, что не понимания задачу целиком - трудно что-то советовать.

Моя личная параноя подсказывает два возможных предназначения:

  1.  Создание алиби
  2. К дверному звонку, вызвать человека за двери и лупануть снайперкой с расстояния.

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

 

Ultrane0
Offline
Зарегистрирован: 05.03.2012

 Реле вопрос не решит, в устройство вмешиваться нельзя.

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

Надеюсь хоть когото заинтересовал данным устройством, по мне оно простое.

Сможет ли кто нить помоч или нет?

leshak
Offline
Зарегистрирован: 29.09.2011

 >Сможет ли кто нить помоч или нет?

Спасение утопающих - дело рук самих утопающих :) 

Найти человека которые "изготовит устройство", конечно возможно, но IMHO очень трудно. Скорее в Real Life искать нужно. Все-таки тут все сильно "распределены" географически.

Так что скорее-всего собирать железо прийдется самому (тем более что, судя по описанию, там "собирать" - пару проводков воткнуть). А вот найти помощника для скетча-программирования - уже намного реальней.

>Сможет ли кто нить помоч или нет?

А вы не заметили что вам уже начали помогать? Я счетч писал потому что у меня руки чешутся?

Вообщем-то "реле", переделать его в "кнопку" - пару строк поменять. Подключить библиотеку Servo

В setup добавить инициализацию сервы,

и digitalWrite(ACTION_PIN,HIGH); //включили

заменить на myServo.write(5); // где 5-ть - угол при котором серва нажимает кнопку, а "выключили" заменить на myServo.write(90); , где 90 - позиция сервы в гразусах когда кнопка "отпущена".

Заработает это, тогда уже можно LCD и доп. кнопки управления монстрячить.

Возможно не серва, а шаговик удобней будет

http://hackaday.com/2012/03/29/glue-stick-servo-linear-actuator/

Возможно сможете найти какой-то соленоид который "шток выдвигает". 

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

----------------------

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

Если желание нет - можно "нанимать". Но тогда, наверное имеет смысл опубликовать свои контакты. Шансы что кто-то откликнитеся - увеличатся.

Ultrane0
Offline
Зарегистрирован: 05.03.2012

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

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

Далее нужно какоето По на ПК и провод для подключения платы к компу и соотвествено надо накатать простенькое ПО для того чтобы это все оживить.

Теперь что получается, купить железо и все дело собрать, а потом попытаться оживить.

Кто подскажет Какие модели надо прикупить и чего это примерно будет стоить и самое главное где это можно прикупить?

step962
Offline
Зарегистрирован: 23.05.2011

 Перед тем, как начинать подбор механики - киньте сюда фотографию кнопки и места вокруг него.

Модель фотоаппарата.

Попробуйте оценить усилие нажатия и ход кнопки.

Одно дело - такя кнопка:

другое дело - такая:

leshak
Offline
Зарегистрирован: 29.09.2011

Ultrane0 пишет:

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

С покупки платы. По идее подойдет практически любая. Ну может смотреть что-бы камень был хотя-бы atmega328 что-бы не уперется в "не хватает памяти" (заранее предсказать трудно). Хотя 80% что хватит вообще любой платы.

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

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

Ultrane0 пишет:

источник автономного питания, плату для дисплея 3 кнопки и тублер включения. ничего не забыл?

Я бы даже отложил это. Вначале добился работы когда все параметры зашиты в скетч, питается от блока питания или USB. То есть плата+серва. Все нажимается и работает. А уж потом усложнял "интерфейсом". Делал "как это все настраивать". Может экраном, может просто светиками или пищалкой "утсановку значений" сделал-бы. Вдуг окажится что серва "слишком медленная", тогда зачем вообще нужен экран?

Ultrane0 пишет:

Далее нужно какоето По на ПК и провод для подключения платы к компу и соотвествено надо накатать простенькое ПО для того чтобы это все оживить.

Не нужно. Для создания прототипа хватит ArduinoIDE которая бесплатно качается c Arduino.cc, кабель - обычный USB. Обычно идет с платой (если у нее есть USB вход), да и отдельно купить его $1. (хотя мне трудно представить современную квартиру где не валяются не нужные USB-кабели).

Ultrane0 пишет:

Кто подскажет Какие модели надо прикупить и чего это примерно будет стоить и самое главное где это можно прикупить?

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

Можете посмотреть ветку "внимание конкурс". Его как раз проводят магазины которые торгуют подобным :)

Кстати может и со своим устройством в конкурсе поучавствуете ;)

maksim
Offline
Зарегистрирован: 12.02.2012

Кстати, можно сей девайс собрать на ATtiny25/45/85 и даже может на ATtiny13 т.к. для такого устройства жирновато целую дуину тратить, но это для начинающего будет сложновато. Но дуину все равно придется преобретать.

 

leshak
Offline
Зарегистрирован: 29.09.2011

maksim пишет:

Кстати, можно сей девайс собрать на ATtiny25/45/85 и даже может на ATtiny13 

А хватит ног/памяти для интерфейса? Кнопки + LCD.

Да в чем смысл, для еденичного устройства боротся за цену камня? Ну сколько он там стоит? $5? Времени на "адаптацию" - больше потратишь и убъешь возможность "расширятся", если еще какие-то идеи прийдут по ходу эксплуатации (например еще и сам фотоапарат крутить-поворачивать удаленно).

Я понимаю когда партия 10.000 штук, там 50 центов в $5000 экономии выливаются. А дома, при сборе трех устройств в год зачем этот секс и выдумывание "как обойти нехватку ресурсов"?

Ultrane0
Offline
Зарегистрирован: 05.03.2012

step962 пишет:

 Перед тем, как начинать подбор механики - киньте сюда фотографию кнопки и места вокруг него.

Модель фотоаппарата.

Попробуйте оценить усилие нажатия и ход кнопки.

Одно дело - такя кнопка:

другое дело - такая:

 

Аппарат canon av1 кнопка та которая справа от красного светового индикатора, усилие для нажатия я незнаю как определить, думаю грамм 500 хотя могу ошибаться 

maksim
Offline
Зарегистрирован: 12.02.2012

leshak пишет:

maksim пишет:

Кстати, можно сей девайс собрать на ATtiny25/45/85 и даже может на ATtiny13 

А хватит ног/памяти для интерфейса? Кнопки + LCD.

Да в чем смысл, для еденичного устройства боротся за цену камня? Ну сколько он там стоит? $5? Времени на "адаптацию" - больше потратишь и убъешь возможность "расширятся", если еще какие-то идеи прийдут по ходу эксплуатации (например еще и сам фотоапарат крутить-поворачивать удаленно).

Я понимаю когда партия 10.000 штук, там 50 центов в $5000 экономии выливаются. А дома, при сборе трех устройств в год зачем этот секс и выдумывание "как обойти нехватку ресурсов"?

Ну во-первых ЛСД дисплей для этого тоже жирно, а во-вторых если будет "доработка до крутить-поворачивать удаленно" то это все равно, что начинать строить дом с флюгера. И я еще раз говорю, что для новичка это сложно, просто я бы сделал на аттини. А для новичка на дуине и дисплее в самый раз.

leshak
Offline
Зарегистрирован: 29.09.2011

maksim пишет:

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

А как "доработка" коррелируется с "начинать"? Я же не сказал что с кручения нужно стартовать. Я вроде есно выразился что стартовать с "дуина+серва".  А вот "оставить возможность для расширения" - почему нет? Аппетит приходит во время еды. Да и, к тому времени уже не совсем новичок будет.

leshak
Offline
Зарегистрирован: 29.09.2011

 > кнопка та которая справа от красного светового индикатора, усилие для нажатия я незнаю как

Думаю тут нужно, для начала, найти механически спусковой тросик. Он как-бы "вручиваетя в нопку". Когда нажимаешь на противоположные его конец - он выдвигает штырь из свого нутра  и производит нажатие внутри кнопки. Тогда и серву можно будет поместить где-то "сбоку/снизу", а не громоздить на апарат. А второй конец тросика четко зафиксировать на рычаге сервы (возможно обкусив его и выкинув шляпку для пальца). IMHO это будет идельно.

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Вот такое попробуйте найти

Ultrane0
Offline
Зарегистрирован: 05.03.2012

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

leshak
Offline
Зарегистрирован: 29.09.2011

Ultrane0 пишет:

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

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

  1. Просто и надежно крепилась.
  2. Не имела люфтов
  3. Не создавала вибраций и встрясок, особенно на "больших скоростях".

Можно, вместо севрвы, подумать о какой-то электромагнитной катушке, с подпружиненным стержнем. Оно, по идее, может быстрее сервы работать (правда и ток жрать), но вот этот "удар по кнопке" может свести на нет все старания.

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

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

Тогда хоть с один фотоапаратом у вас будет надежная конструкция (вот про "скорость", не уверен). И "вибрации" от аппарата уведете.

maksim
Offline
Зарегистрирован: 12.02.2012

leshak пишет:

А как "доработка" коррелируется с "начинать"?

 

Строим флюгер, а потом например дорабатываем его до дома с флюгером. Я к тому что пример не совсем удачный и все.

 

Ultrane0
Offline
Зарегистрирован: 05.03.2012

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

maksim
Offline
Зарегистрирован: 12.02.2012

Если компактность важна, то NanoMini с USB Serial Адаптером или Pro Mini с USB Serial Адаптером, если не важна, то Uno или Mega. На подобие LEGO не знаю, а вот "текстовый конструктор для построения алгоритмов работы ардуины" с примерами есть - среда разработки Arduino IDE. И вот пример начала работы в Arduino IDE.

Ultrane0
Offline
Зарегистрирован: 05.03.2012

  А выходов и входов на все что требуется хватит? По идее будет серва, три кнопки, дисплей, вроде все.

Мне Uno приглянулась.

maksim
Offline
Зарегистрирован: 12.02.2012

Хватит.

Евгений74
Offline
Зарегистрирован: 08.05.2012

Ultrane0 пишет:

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

Раз питание автономное, то аккумулятор будет разряжаться. Соответственно скорость вращения сервы будет падать. И в один момент она начнет не доставать до кнопки, раз задержка постоянна. (Это мысли в слух новичка, поправте если не прав)

maksim
Offline
Зарегистрирован: 12.02.2012

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

ourlive
Offline
Зарегистрирован: 26.05.2012

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

maksim
Offline
Зарегистрирован: 12.02.2012

ourlive пишет:
а в качестве исполнительного устройства штоковое реле самое то(что нибудь из набора советского автопрома на 12В), у них и с усилием и со скоростью проблем быть не должно. (вот только они обычно втягивающие...).

1.Если вы имеете ввиду именно втягивающее реле стартера - то это реле весит больше чем фотоаппарат, если какое-то другое реле (лично я про другие реле не слышал) то оно в любом случае тяжелее, чем мини серва.

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

3.Серва может питаться от 5, а вы предлагаете 12.

4.В случае с использования реле потребуется дополнительно схема управления им (мощный транзистор, диод, резистор)

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

ourlive
Offline
Зарегистрирован: 26.05.2012

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

хотя необходимая < мощность = избыточный вес >(тут вы правы), либо <медленная реакция>. баланс придётся искать в любом случае.

maksim
Offline
Зарегистрирован: 12.02.2012

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

ourlive
Offline
Зарегистрирован: 26.05.2012

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

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

имхо попробовать для нажатия вырисовывается соленоид, который идет  в авто на двери...

maksim
Offline
Зарегистрирован: 12.02.2012

vworld пишет:

имхо попробовать для нажатия вырисовывается соленоид, который идет  в авто на двери...

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

maksim
Offline
Зарегистрирован: 12.02.2012

ourlive пишет:
хотя опять же, двухпозиционные кнопки цифровиков (автофокус=>съёмка=>серийная съёмка) релюхой не нажать, только сервой..

Для этого у всех таких фотоаппраратов предусмотрен разЪем.