Canon 1200D adv. udløser.


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
Kode:
_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.