Er ved at udvikle en adv. udløser til et Canon 1200D
Skal selvf. kunne remote udløse.
Udløse med et interval som brugeren har bestemt.
En slæde som cameraet kan kører på og tage billeder frem og tilbage, med ende stop på, så lænden selv kan bestemmes.
Andre udløser som man selv kan tilbygge. F.eks lyd, lys hvad man nu lige selv har lyst til at lave.
Har nu revurderet hele projektet og har besluttet at det ikke skal opbygges omkring en PIC.
Men har valgt at bruge en ESP12, da den bl.a giver mulighed for trådløs forbindelse.
Dette er jeg kommet rigtigt langt med.
Nu kan jeg bl.a styre mit kamera så jeg kan tage billeder i intervaller, dog skal det stadig programmeres i koden.
Så det er stadig i test men det virker.
Her er også et par billider.
Her er kode som er lagt i ESP12
_PROMPT=""
--MCP23017 x20
--MCP23017 X21
-- I2C Setup
id=0
intax20 = 5
intax21 = 1
sda=6
scl=7
PortA = 0x12
PortB = 0x13
print("Canon 1200D timeslider.")
print("Version 26022015 ")
print("-----------------------")
TimePicDelay = 6 -- Sekunder
TakeTotalPic = 5 -- Number of picture to take.
print("Antal billeder at tage : "..TakeTotalPic.." stk.")
print("Pause mellem billeder : "..TimePicDelay.. " sekunder")
-- initialize i2c, set pin6 as sda, set pin7 as scl
i2c.setup(id,sda,scl,i2c.SLOW)
-- user defined function: read from reg_addr content of dev_addr
function read_reg(dev_addr, reg_addr)
i2c.start(id)
i2c.address(id, dev_addr ,i2c.TRANSMITTER)
i2c.write(id,reg_addr)
i2c.stop(id)
i2c.start(id)
i2c.address(id, dev_addr,i2c.RECEIVER)
c=i2c.read(id,1)
i2c.stop(id)
return c
end
function write_reg(dev_addr, reg_addr, reg_val)
i2c.start(id)
i2c.address(id, dev_addr, i2c.TRANSMITTER)
i2c.write(id, reg_addr)
i2c.write(id, reg_val)
i2c.stop(id)
end
-- Int MCP23017 Addr 0x20
write_reg(0x20, 0x00, 0xff) -- set Port A to input
write_reg(0x20, 0x02, 0xff) -- set Port A to input invert.
write_reg(0x20, 0x0c, 0xff) -- set Port A to input and pullup.
write_reg(0x20, 0x01, 0x00) -- set Port B to output
-- Function til at tage billedet med.
-- Port Bx20 Bit 7 Hoej Saa lav
-- Port Bx20 Bit 6 Hoej Saa lav
function f_take_pic()
write_reg(0x20, PortB, bit.set(string.byte(read_reg(0x20, PortB)),6))
tmr.delay(500000)
write_reg(0x20, PortB, bit.clear(string.byte(read_reg(0x20, PortB)),6))
tmr.delay(500000)
write_reg(0x20, PortB, bit.set(string.byte(read_reg(0x20, PortB)),7))
tmr.delay(500000)
write_reg(0x20, PortB, bit.clear(string.byte(read_reg(0x20, PortB)),7))
end
--- Main program ----
for i = 1, TakeTotalPic do
tmr.delay(1000000*TimePicDelay)
reg = read_reg(0x20, PortA) -- Port A (input)
if string.byte(reg) > 0 then
print(string.byte(reg))
end
print("Billede nr. " .. i.." taget")
f_take_pic()
tmr.wdclr()
end
print("Alle billeder taget.\nProgram slut")
_PROMPT=nil
Muligheden med denne lille ESP12 er mange.
Den kan f.eks connecte til et AP, eller den kan selv funger som et AP
Det vil sige at man f.eks fra sin mobil telefon kan sende kommandoer til den, og man kan også lave det så man kan sætte programmet op via HTML.
Mulighederne er mange
Kan oplyse at det lille program fylder ca 1,5 KB ud af 512Kb.
Opdatering:
26022015 - Endeligt diagram lagt op., Nu er der en MCP23017 koblet på og kamara styring køre nu den vej igennem.
29032015 - Puha dette er et kæmpe projekt, Har fået lodet en prototype op på et hul print, og er ved at prøve at få hul igennem til 1602 displayet, men da der ikke findes eksempler på hvordan det skal gøres er jeg selv ved den, helt fra bunden af, som det kan ses sidder displayet jo på en MCP23017 så ja det er status herfra ang. displayet.
Motor er dog oppe at køre, og taster lige så, der vil snart blive langt mere kode op, når jeg har fin pusset det.