Talaan ng mga Nilalaman:

Arduino Controller para sa Automated na 360 ° Photography ng Produkto: 5 Hakbang (na may Mga Larawan)
Arduino Controller para sa Automated na 360 ° Photography ng Produkto: 5 Hakbang (na may Mga Larawan)

Video: Arduino Controller para sa Automated na 360 ° Photography ng Produkto: 5 Hakbang (na may Mga Larawan)

Video: Arduino Controller para sa Automated na 360 ° Photography ng Produkto: 5 Hakbang (na may Mga Larawan)
Video: 10 litres agriculture spraying drone hand landing 😎 2024, Nobyembre
Anonim
Image
Image
Ipunin ang Mga Bahagi at File
Ipunin ang Mga Bahagi at File

Bumuo tayo ng isang arduino based controller na kumokontrol sa isang steppermotor at isang shutter ng camera. Kasama ang isang steppermotor na hinimok na paikutan, ito ay isang malakas at mababang sistema ng gastos para sa awtomatikong 360 ° na potograpiyang larawan o photogrammetry. Ang shutter ng awtomatikong camera ay batay sa isang mahusay na silid-aklatan mula sa "Sebastian Setz" at gumagana para sa infrared triggered camera ng Nikon, Canon, Minolta, Olympus, Pentax, Sony.

Naghanda ako ng dalawang bersyon ng controller:

  • Isang pangunahing bersyon na pinapatakbo ng isang simpleng pushbutton at humantong sa isang katayuan.
  • Isang advanced na bersyon na gumagamit ng isang 16x2 LCD + keypad na kalasag at sa gayon ay may isang menu upang baguhin ang mga variable na "on the fly" at hindi lamang sa sourcecode.

Ano ang ginagawa ng taga-kontrol?

Kung magpapalitaw ka ng isang "photoshooting" sa pamamagitan ng pagtulak sa pindutan, ang turntable ay nagsasagawa ng isang buong rebolusyon, nahahati sa isang paunang natukoy na dami ng mga hakbang. Matapos ang bawat hakbang sa pag-ikot, ang controller ay gumagawa ng isang maikling pahinga at pagkatapos ay nagpapalitaw ng camera. Magagawa mong baguhin ang mga variable ng bilis ng pag-ikot, ang oras ng pagkaantala at ang bilang ng mga hakbang sa source code (para sa simpleng bersyon ng controller) o sa display menu (advanced na bersyon ng controller).

Hakbang 1: Ipunin ang Mga Bahagi at Mga File

Ipunin ang Mga Bahagi at File
Ipunin ang Mga Bahagi at File
Ipunin ang Mga Bahagi at File
Ipunin ang Mga Bahagi at File

Mga Bahagi:

  • Arduino Uno (o katulad)
  • Breadboard (umaangkop sa kalahating sukat na tinapay)
  • Easydriver Stepper Motor Driver
  • 2X Heatsink para sa Easydriver (opsyonal ngunit HINDI inirerekumenda) https://www.sparkfun.com/products/11510 Kakailanganin mo ng thermal tape upang ayusin ang heatsink sa maliit na tilad. Kung nag-order ka ng iyong heatsink, tiyakin na ang termal tape ay naipaloob o maaaring mag-order nang magkahiwalay.
  • Infrared LED 950nm (para sa IR camera trigger)
  • Resistor 220 ohms (pre-resistors para sa infrared-LED)
  • Elemento ng tunog ng Piezo (opsyonal, kung nais mong magkaroon ng mga tunog ng feedback)
  • Ilang Mga Jumper Wires
  • Panlabas na Power Supply para sa Steppermotor Gumawa ako ng magagandang karanasan sa isang 12V 1A power adapter upang himukin ang isang 1A NEMA 17 Steppermotor mula sa Trinamic. Mayroon din akong ginamit na 24V 3A power adapter. Sinusuportahan ng board ng Easydriver hanggang sa 30V at 750mA bawat yugto. Higit pa sa easydriver-specs dito:
  • Socket para sa panlabas na suplay ng kuryente ng steppermotor
  • Bipolar NEMA 17 Steppermotor at Turntable hal. ang FluxGarage "Automated Turntable With Steppermotor" Link:

Idagdag para sa pangunahing pushbutton-controller…

  • Pushbutton
  • Resistor 10k ohms (para sa pushbutton)
  • LED (humantong sa status)
  • Resistor 220 ohms (pre-resistors para sa status-LED)

… O idagdag para sa advanced na controller na may display + keypad menu:

Adafruit LCD Shield Kit na may 16x2 Character Display, hal

I-download ang mga Arduino code at Fritzing diagram para sa pangunahing at advanced na controller:

Kung nais mong buksan ang dokumento ng Fritzing para sa advanced na controller, tiyaking i-download at i-install ang mga elemento ng adafruit:

Mangyaring tandaan: Sa mga larawang ginagamit ko ang FluxGarage "Tinkerer's Baseplate" at ang FluxGarage "Front Plate para sa 16x2 LCD + Keypad Shield". Ang paggamit ng mga elementong iyon ay opsyonal, kung nais mo ring gamitin ang mga ito, mag-click sa mga link para sa patungkol sa mga itinuturo.

Hakbang 2: Magtipon ng Circuit

Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit

Solder Easydriver board para sa paggamit ng breadboard: Upang magamit ang easydriver sa isang breadboard, kailangan mong maghinang ng ilang mga male pin header sa board. Ang pinakamahusay na paraan ay ilagay ang mga header ng pin na lalaki sa breadboard, itabi ang easydriver sa itaas at pagkatapos ay solder ang mga pin.

Pag-kable sa up: I-wire ang mga bahagi tulad ng ipinakita sa patungkol sa Fritzing graphic para sa pangunahing o advanced na controller. I-download ang mga Firtzing diagram sa github, hanapin ang mga link sa hakbang 1.

I-double check kung ang lahat ay konektado tulad ng sumusunod:

  • Arduino digital pin 02 = dir pin ng Easydriver
  • Arduino digital pin 03 = step pin ng Easydriver
  • Arduino digital pin 09 = output para sa piezo
  • Arduino digital pin 12 = output para sa infrared LED (ilagay ang 220 ohms pre resistor bago humantong)

+ para sa Pangunahing Controller:

  • Arduino digital pin 04 = input para sa pushbutton (ilagay ang 10k ohms resistor bago pindutan ang lupa)
  • Arduino digital pin 13 = output para sa status LED (ilagay ang 220 ohms pre resistor bago humantong)

+ para sa Advanced Controller:

I-stack ang display + keypad na kalasag papunta sa arduino, talagang ginagamit ang mga pin na iyon: Arduino analog pin A4 + A5 at 5V + GND

Ikonekta ang Steppermotor: Ang mga kable up bipolar stepper motor (4 na mga wire) ay tungkol sa pagkonekta sa dalawang coil (A at B) ng motor sa mga tamang pin ng easydriver board. Tingnan ang graphic sa gitna ng pahinang ito at sa mga detalye ng iyong tukoy na stepper motor:

Maaari ka ring makahanap ng karagdagang impormasyon tungkol sa pag-kable ng iyong stepper motor at ang Easydriver dito:

Ikonekta ang External Power Supply. Ang board ng Easydriver ay may dalawang magkakahiwalay na mga power pin sa kanang itaas na kanang bahagi (M + at Ground). Habang ang board mismo ay nakakakuha ng lakas mula sa Arduino, ang magkakahiwalay na input ay nagbibigay ng lakas para sa steppermotor. Kung gumagamit ka ng isang tipikal na "labas ng kahon" na power adapter at isang socket, dapat mong ikonekta ang "+" wire sa "M +" pin ng easydriver at ang "-" wire sa easydriver ay ang "GND" pin. Karaniwan ang „+“ay nasa panloob na panig, samantalang ang „-“ay nasa panlabas na bahagi ng plug. Ngunit mag-ingat, pinapayagan ng ilang mga adaptor ng kuryente na ilipat ang polarity! Kung hindi mo wasto ang iyong easydriver, maaari at marahil ay masisira, isaisip iyon.

Hakbang 3: Mag-upload ng Sourcecode sa Arduino

Mag-upload ng Sourcecode sa Arduino
Mag-upload ng Sourcecode sa Arduino

I-download ang Arduino sourcecode sa Github:

I-download ang Arduino IDE:

www.arduino.cc/en/Main/Software

I-download ang mga third party na aklatan at kopyahin ang mga ito sa folder ng library ng iyong IDE:… para sa shutter ng camera: https://github.com/dharmapurikar/Arduino/tree/mast…… para sa Adafruit 16x2 Display + Keypad Shield: https:// github.com/adafruit/Adafruit-RGB-LCD-Shiel…

Ang code ay nasubok at gumagana nang maayos sa pinakabagong Arduino IDE (1.8.7 sa windows) at Arduino Uno + Easydriver Stepper motor Driver + Adafruit 16x2 Display + Keypad Shield, + isang Trinamic stepper motor at isang Nikon D60 camera.

Ayusin ang code upang gumana sa iyong tukoy na camera: Tulad ng nabanggit, ginamit ko ang "multiCameraIrControl.h" library ni Sebastian Setz. Upang mapagana ito para sa iyong camera, kailangan mong tanggalin ang mga slash ng komento bago ang pangalan ng tagagawa ng iyong camera at syempre magdagdag ng mga slash bago ang lahat ng iba pang mga pangalan ng tagagawa.

// Set Camera TypeNikon D5000 (12); // Canon D5 (12); // Minolta A900 (12); // Olympus E5 (12); // Pentax K7 (12); // Sony A900 (12);

Gawin ang katulad na pag-aayos sa pagpapaandar na "snap":

// Kumuha ng picturevoid snap () {D5000.shotNow (); // D5.shotNow (); // A900.shotNow (); // E5.shotNow (); // K7.shotNow (); // A900.shotNow ();}

Mangyaring tandaan: Sa kasamaang palad, hindi ko pa masubukan ang iba pang mga nag-trigger ng camera ng IR kaysa sa aking sariling Nikon D60. Ang library ng shutter camera ay dapat na gumana sa maraming mga camera ng iba't ibang mga tagagawa, hindi lamang ang mga tukoy na modelo ng camera na nabanggit sa code. Magaling kung mag-post ka ng isang puna sa iyong mga karanasan sa iyong Canon, Minolta, Olympus, Pentax o Sony camera.

Hakbang 4: Patakbuhin ang Controller

Patakbuhin ang Controller
Patakbuhin ang Controller
Patakbuhin ang Controller
Patakbuhin ang Controller

Ano ang ginagawa ng code ayon sa pagkakasunod-sunod ng controller? Kung pinindot mo ang pindutan, isang "photoshooting" ang na-trigger. Ang bawat Photoshooting ay isang finite loop ng sumusunod na pagkakasunud-sunod:

  1. Nag-trigger ang camera
  2. Maikling pagkaantala
  3. Paikutin ng Steppermotor ang isang paunang natukoy na dami ng mga degree
  4. Maikling pagkaantala

Ang isang photoshooting ay batay sa isang hanay ng mga variable na tumutukoy sa eksaktong pag-uugali. Maaari mong baguhin ang mga variable na ito sa sourcecode (para sa simpleng bersyon ng controller) o sa display menu (advanced na bersyon ng controller).

Pagpapatakbo ng pangunahing controller:

Sa pangunahing tagontrol ipinapakita ang Status LED kapag handa nang gampanan ang system. Patay ang LED kapag nagsimula ka ng isang photoshooting. Maaari mong maputol ang isang photoshooting sa pamamagitan ng pagpindot sa pindutan hanggang sa lumitaw ang "makagambala na tunog" at huminto ang paikutan. Tingnan ang video sa tuktok na seksyon ng itinuturo na ito upang makita ito sa "totoong buhay".

Ang mga variable ng photoshooting ay matatagpuan sa tuktok na seksyon ng code, at mababago upang mabago ang photoshooting. Sa ibaba makikita mo ang mga paunang halaga:

int shootsteps = 20; // bilang ng mga hakbang para sa isang buong rebolusyon, dapat na 10, 20 o 40float shootingspeed = 0.01; // speed rotation: any number from.01 -> 1 with 1 pagiging pinakamabilis - Mas mabagal ay mas malakas (mas mabagal = mas mahusay para sa "mabibigat na" mga bagay) int shootingdelay = 1000; // break sa milliseconds bago at pagkatapos ng bawat pag-ikot

Pagpapatakbo ng advanced na controller:

Kapag binubuksan ang advanced na controller, isang FosxGarage logosplash ay ipinapakita sa loob ng 4 na segundo. Pagkatapos nito, handa na ang gumana upang gumanap at nagpapakita ng isang listahan ng naaayos na hanay ng mga variable:

  • ST = Bilang ng Mga Hakbang, maaaring 10, 20 o 40
  • SP = Bilis ng Pag-ikot, maaaring maging 1-5 habang 1 na pinakamabagal
  • DE = Pag-antala bago at pagkatapos ng bawat hakbang sa ikasampu ng isang segundo, maaaring 5, 10, 25, 50
  • LI = Natutukoy kung ang ilaw ng background ng display ay naka-on o naka-off habang kinukunan. Maaaring maging 1 = on o 0 = off

Maaari kang mag-navigate sa pamamagitan ng mga variable na uri gamit ang kaliwa at kanang mga pindutan at palitan ang mga halaga gamit ang pataas at pababang mga pindutan. Magsimula ng isang photoshooting sa pamamagitan ng pagpindot sa pindutan ng piling at makagambala sa isang photoshooting sa pamamagitan ng pagpindot sa piling pindutan hanggang sa lumitaw ang "makagambala tunog". Tingnan ang video sa tuktok na seksyon ng itinuturo na ito upang makita ito sa "totoong buhay".

Hakbang 5: Simulan ang Pagbaril

Simulan ang Pagbaril
Simulan ang Pagbaril

Kung nakabuo ka ng iyong sariling controller + paikutan at ang iyong camera ay nasa lugar, handa ka nang magsimulang mag-shoot… halos. Hayaan akong magbahagi ng ilang mga natutunan mula sa aking sariling mga eksperimento:

  • Gumamit ng isang light tent upang maipaliwanag nang pantay ang iyong mga bagay. Maaari kang makahanap ng maraming magagandang mga tutorial dito sa instructables.com na nagpapakita kung paano lumikha ng isang lightbox ng diy. Gayundin, may mga murang mura na mga tent na ilaw sa tela na mabibili sa maraming mga online shop.
  • Gumamit ng mga bombilya na may parehong temperatura ng kulay (Kelvin)
  • Manu-manong ituon ang object sa paikutan, i-deactivate ang autofocus ng iyong camera
  • Patayin ang stabilizer ng imahe ng iyong camera, kung gumagana sa isang tripod
  • Pumili ng saklaw ng pagsukat sa background, kung saan hindi lilitaw ang shot object. Sa pamamagitan nito, maiiwasan mo ang pag-flicker sa iyong pagkakasunud-sunod ng imahe. Ang isa pang paraan ay upang manu-manong itakda ang mga oras ng pagkakalantad ng iyong camera atbp.
  • Kung nais mong isama ang iyong 360-Mga Larawan sa iyong website, gumamit ng mga plugin ng javascript tulad ng "Jquery Reel Plugin" ni Petr Vostřel alias "PISI" → https://jquery.vostrel.cz/reelalye360 Mga Degree Viewer ng Produkto "ni" Codyhouse “→

Ito ang resulta ng isa sa aking mga pagbaril (nilikha gamit ang setting sa itaas):

Inirerekumendang: