dalkova spoust pro zrcadlovku
Úvodní stránka › Fórum › Vaše projekty › Arduino › dalkova spoust pro zrcadlovku
Označeno štítky: senzor pohybu 433 mhz transmitter reciever
- Toto téma obsahuje celkem 28 odpovědí. Do diskuze (2 diskutující) se naposledy zapojil uživatel posjirka a poslední změna proběhla před 7 roky a 12 měsíci.
-
AutorPříspěvky
-
25.11.2016 v 20:14 #9301fidosÚčastník
Ahoj
obracim se na Vas s prosbou o radu, kde muze byt chyba v zapojeni dalkove spouste. Sestavil jsem podle navodu viz. :
http://www.instructables.com/id/Motion-Triggered-DSLR-Remote-System/
krom toho, ze jsem pouzil jine soucastky, nez ma on :
senzor pohybu: HC-SR501
433Mhz RF Transmitter + Receiver: http://www.dx.com/p/433mhz-rf-transmitter-module-receiver-module-link-kit-for-arduino-arm-mcu-wl-green-220194#.WDhmgdThBQJ
Jeden ochotny clovek mi poradil s kodem pro transmitter :
#include <VirtualWire.h>
#define PIN_MOTION 2
#define PIN_LIGHT 13
#define PIN_TX 12char *message;
void setup() {
pinMode(PIN_LIGHT, OUTPUT);
pinMode(PIN_MOTION, INPUT);digitalWrite(PIN_LIGHT, LOW);
vw_set_ptt_inverted(true);
vw_set_tx_pin(PIN_TX);
vw_setup(1200);delay(1000);
}void loop(){
byte input = digitalRead(PIN_MOTION);if (input == HIGH){
digitalWrite(PIN_LIGHT, HIGH);message = „1“ ;
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx();
delay(1000);
}
else{
digitalWrite(PIN_LIGHT, LOW);
}
}ktery se zda, ze funguje – nevim to jiste, jen vim, ze pri detekci pohybu se rozsviti ledka a snad i posila signal (nevim jak overit)
Dejme tomu, ze odesila.
Kod pro reciever jsem pouzil ze stranek autora projektu a to tento :
/*———————————————————————————-
Motion Activated DSLR Shutter Remote
Receiver Sketch (433mHz Serial RX)
Written By: Angelo Casimiro (ASCAS/ TechBuilder)
Date Written: October 18, 2014Pin Configuration:
– Digital#12 of Arduino to Data Out of RX module
– Digital#11 of Arduino to IR LED
———————————————————————————-*/
#include <multiCameraIrControl.h>
#include <VirtualWire.h>Canon D5(11);
void setup()
{
vw_set_ptt_inverted(true);vw_set_rx_pin(12);
vw_setup(4000);vw_rx_start();unsigned int data = 0;
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){uint8_t buf[VW_MAX_MESSAGE_LEN];uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)){
if(buf[0]==’1′){
digitalWrite(13,1);
D5.shutterNow();
}
if(buf[0]==’0′){
digitalWrite(13,0);
}
}
}ale transmitter pravdepodobne nic neprijima – nerosvicuje ir ani led na desce.
Jinak jsem zkousel samotne zapojit transmitter a reciever, zda komunikuji a zda se ze funguji. Jen bylo videt, ze signal je ruseny.
Proto se Vas tazi, kde muze byt chyba?
Na zaver musim rict, ze jsem zacatecnik a programovani neni moje silna stranka 🙂
27.11.2016 v 14:41 #9307posjirkaÚčastníktakže:
– máš rozdílné komunikační rychlosti (v setup() máš jednou vw_setup(4000); podruhé vw_setup(1200);)
– 433 Mhz je standardní řešení, jen je třeba dávat si pozor na napájení (aby to utáhlo vysílač). Pro vyšší výkon se dává vyšší napětí (tuším až okolo 9-12V) ale je to potřeba podívat se na datasheet tvého řešení.Nejsou všechyn stejné.
– nevím jak máš řešenou anténu. Její provedení výrazně ovlivňuje chování celého řešení hlavně pro dosah.
– když chceš něco odladit nech si vypsat na seriový port/monitor co ti vlastně přijímá.1.12.2016 v 0:16 #9348fidosÚčastníkDik za odpoved… upravil jsem rychlosti a funguje to 🙂 Akorat neplni funkci – ir ledka se rosviti, ale nespusti fotak… tak nevim proc
1.12.2016 v 7:44 #9349posjirkaÚčastníknech si vypsat co ti přijímá . viz exampl na stránkách tvůrce knihovny:
https://www.pjrc.com/teensy/td_libs_VirtualWire.htmlurčitě bych použil více než 1 znak. zrovna „1“ se vcelku blbě hledá v tom co ti bude chodit v návalu rušení.
1.12.2016 v 14:11 #9356fidosÚčastníknemuze to bejt ir ledkou, sice sviti, ale neznam presne jeji parametry?
…pak tady sem nasel kod, ktery by mel fungovat i pro moji zrcadlovku, ale v autorove zapojeni (pouze deska + ir led) :
Bit of a learning curve but spent the day looking into how to get the Canon 5DMkII and 7D MkII to work.
With an infrared detector and an Arduino sketch I found that the RC-6 remote from Canon outputs a 500uS burst, a delay of 6940us and then another 500uS burst. I then used a IR Led at 940nm – modified a sketch to send these bursts and lo and behold – it works.
The RC-6 is used for a number of Canon Dslr’s so should cover a few more models for your libraryclass CanonRC6{
public:
CanonRC6(int pin);
void shutterNow();
private:
int _pin;
int _freq;
};CanonRC6::CanonRC6(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
_freq = 33;
}void CanonRC6::shutterNow()
{
for(int i=0; i<16; i++) {
digitalWrite(_pin, HIGH);
delayMicroseconds(15);
digitalWrite(_pin, LOW);
delayMicroseconds(15);
}
delayMicroseconds(6940);
for(int i=0; i<16; i++) {
digitalWrite(_pin, HIGH);
delayMicroseconds(15);
digitalWrite(_pin, LOW);
delayMicroseconds(15);
}
}Zkousel se nahrat jeho knihovnu (download viz. jeho blog) a nic se nezmenilo.
2.12.2016 v 8:01 #9368posjirkaÚčastníkto se klidně může stát. IR LED má mimo jiné parametr jako vlnová délka. může být špatně nastavená i nosná frekvence a foťák ji pak nedetekuje. Jak píšeš, že jsi zkoušel ten „přímý“ program arduino- foťák a nefunguje , tak bych to na nesprávnou IR LED i typnul.
2.12.2016 v 8:09 #9369posjirkaÚčastníkuž an neumím česky 🙂 … samozřejmě tipnul …
2.12.2016 v 19:02 #9373fidosÚčastníktak ledku sem vymenil dokonce primo z ovladace rc-6 nespousti. Tim padem to musi bejt v uprave knihovny multiCameraControl nebo VirtualWire, ale netusim jak to mam upravit
2.12.2016 v 19:07 #9374fidosÚčastníktak ledku sem vymenil dokonce primo z ovladace rc-6 a nespousti. Tim padem to musi bejt v uprave knihovny multiCameraControl nebo VirtualWire, ale netusim jak to mam upravit
2.12.2016 v 20:47 #9375posjirkaÚčastníktak to zapoj jak to měl ten sebastian – z arduina přímo na ir led …
2.12.2016 v 22:50 #9376fidosÚčastníkjo tak podle jeho zapojeni to funguje, ale na mym projektu, kdyz pripojim ledku na reciever, tak to nefunguje. Jak je to mozny, kdyz spusti ledku vlastne stejne jako u Sebastiana?
3.12.2016 v 23:22 #9385posjirkaÚčastníknapadá mě varianta … zda knihovna virtual Wire nepoužívá stejné časovače/přerušení jako knihovna pro IR/foták…. jak budu mít chvilku zkusím se na to podívat…
9.12.2016 v 10:34 #9440fidosÚčastníkcau, jak to presne myslis?
10.12.2016 v 18:49 #9462posjirkaÚčastníktak jsem se konečně dostal no to tvoje řešení.
knihovny se netlučkou – vždyť to fungovalo v instructable.com , ale zaráží mě 2 věci:
1- spouštíš vysílač na urovńi HIGH. Ty opravdu připojuješ +5V přímo na pin? to je celkem sebevražda.
Vždy se dává odpor (1k0) mezi pin a +5V a pak se tlačítkem ten pin přizemní (takže úroveń LOW)
2 – proč máš pauzu 1000 ms (vysílač) ,po odelslání signálu, když v originále bylo 10ms. Takže mohl ten signál odeslat několikrát a pak byla větší pravdepodobnost, že se chytí.
JKeslti chceš omezit počet semoutí, tak to nech až u přijímače.11.12.2016 v 11:52 #9469fidosÚčastníkPauzu uz sem zkousel nastavit na 10ms, ale stejny. Vysilac mam zapojeny primo na +5V, proc se tam musi davat odpor? Jinak nerozumim “ a pak se tlačítkem ten pin přizemní “ – dam odpor na +5V a co dal?
11.12.2016 v 13:17 #9470posjirkaÚčastníkmyslím to takto.
Připojením pinu přímo na +5V je skvělá cesta do pekel. Nikdy se nepřipojuje napájení přímo bez ochranného odporu. Hrozí zničení vstupních obvodů.Attachments:
16.12.2016 v 15:34 #9566fidosÚčastníkon tam ale na instrucables odpor nema, myslis ze bych moh tim odpalit nejake obvody na vysilaci? Ir ledka ale blika – i kdyz nevim ,jestli blika tak jak ma no.
16.12.2016 v 15:38 #9567posjirkaÚčastníkví bůh … já tam radši odpor aspo¨n 100R dávám…
16.12.2016 v 15:49 #9568fidosÚčastníkjeste mi neni jasna jedna vec, a to ze, po prvnim signalu na reciever se zapne ledka na pinu 13 a sviti porad, i kdyz se ir led vypne. Pak se pri pohybu zase ir ledka zapne a vypne atd. Ale na pinu 13 ledka sviti porad, od prvniho prijmuti signalu…
16.12.2016 v 16:27 #9570posjirkaÚčastníkto bude tím, že cela zprava konci bitem 1. potom ve smycce se to už nenuluje.
zkus použít zpravu = „2“17.12.2016 v 10:02 #9599fidosÚčastníkzmenil sem, ale sviti porad
17.12.2016 v 12:38 #9609posjirkaÚčastníka nepřijímá ti to nějáký bordel ?
17.12.2016 v 12:47 #9611fidosÚčastníkto nevim, ale ir ledka normalne vypne, jen porad sviti led na pinu 13
17.12.2016 v 14:29 #9612posjirkaÚčastníkhod sem ten kod co používáš …. když se dívám zpětně na forum tak tam jsou asi 3 verze tak a´t máme stejěné informace …
21.12.2016 v 14:11 #9691fidosÚčastníkkod pro transmitter :
#include <VirtualWire.h>
#define PIN_MOTION 2
#define PIN_LIGHT 13
#define PIN_TX 12char *message;
void setup() {
pinMode(PIN_LIGHT, OUTPUT);
pinMode(PIN_MOTION, INPUT);digitalWrite(PIN_LIGHT, LOW);
vw_set_ptt_inverted(true);
vw_set_tx_pin(PIN_TX);
vw_setup(2000);delay(1000);
}void loop(){
byte input = digitalRead(PIN_MOTION);if (input == HIGH){
digitalWrite(PIN_LIGHT, HIGH);message = „1“ ;
vw_send((uint8_t *)message, strlen(message));
vw_wait_tx();
delay(10);
}
else{
digitalWrite(PIN_LIGHT, LOW);
}
}kod pro reciever :
/*———————————————————————————-
Motion Activated DSLR Shutter Remote
Receiver Sketch (433mHz Serial RX)
Written By: Angelo Casimiro (ASCAS/ TechBuilder)
Date Written: October 18, 2014Pin Configuration:
– Digital#12 of Arduino to Data Out of RX module
– Digital#11 of Arduino to IR LED
———————————————————————————-*/
#include <multiCameraIrControl.h>
#include <VirtualWire.h>Canon D5(11);
void setup()
{
vw_set_ptt_inverted(true);vw_set_rx_pin(12);
vw_setup(2000);vw_rx_start();unsigned int data = 0;
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){uint8_t buf[VW_MAX_MESSAGE_LEN];uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)){
if(buf[0]==’1′){
digitalWrite(13,1);
D5.shutterNow();
}
if(buf[0]==’0′){
digitalWrite(13,0);
}
}
}21.12.2016 v 22:33 #9718posjirkaÚčastník1. používej prosím funkci CODE (tlačítko nad textovým oknem odpovědi) jinak je ten kod špatně čitelný.
2. já bych o trochu pozměnil kod pro reciever:#include <multiCameraIrControl.h> #include <VirtualWire.h> Canon D5(11); void setup() { vw_set_ptt_inverted(true);vw_set_rx_pin(12); vw_setup(2000);vw_rx_start();unsigned int data = 0; pinMode(13, OUTPUT); pinMode(11, OUTPUT); } void loop(){ uint8_t buf[VW_MAX_MESSAGE_LEN];uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)){ if(buf[0]==’1′){ digitalWrite(13,1); D5.shutterNow(); } else { // změna // if(buf[0]==’0′){ // zmena digitalWrite(13,0); } } }
no a transmiter taky není moc dotáhnutý k dokonalosti:
#include <VirtualWire.h> #define PIN_MOTION 2 #define PIN_LIGHT 13 #define PIN_TX 12 char *message; void setup() { pinMode(PIN_LIGHT, OUTPUT); pinMode(PIN_MOTION, INPUT); digitalWrite(PIN_LIGHT, LOW); vw_set_ptt_inverted(true); vw_set_tx_pin(PIN_TX); vw_setup(2000); delay(1000); } void loop(){ byte input = digitalRead(PIN_MOTION); if (input == HIGH){ digitalWrite(PIN_LIGHT, HIGH); message = „1“ ; vw_send((uint8_t *)message, strlen(message)); vw_wait_tx(); delay(10); } else { digitalWrite(PIN_LIGHT, LOW); message = „0“ ; // zmena } }
22.12.2016 v 18:26 #9727fidosÚčastníkzmeneno a porad stejny, tak nevim. Jinak sem meril napeti na pinu pro ir ledku a bylo tam jenom asi 0,05V při sepnuti, není to nejak malo?
22.12.2016 v 18:59 #9729fidosÚčastníkna recieveru taky porad stejny, při první prijmuti signalu je na pinu 13 porad napeti cca. 5V
23.12.2016 v 15:59 #9737posjirkaÚčastníkmusím přiznat, že mě te´d nic nenapdá ….
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.