Orodha ya maudhui:

PIMP Cam yangu: Hatua 14 (na Picha)
PIMP Cam yangu: Hatua 14 (na Picha)

Video: PIMP Cam yangu: Hatua 14 (na Picha)

Video: PIMP Cam yangu: Hatua 14 (na Picha)
Video: Bien x Aaron Rimbui - Mbwe Mbwe (Official Music Video) 2024, Novemba
Anonim
PIMP Cam yangu
PIMP Cam yangu

Hapa ndipo mradi huu unatoka.

Wakati wa nyuma nilifikiria juu ya kupiga picha kwa nyakati zingine. "Vipi?" Nilijiuliza? Jibu la kwanza lilikuwa "Sawa.. unachukua filamu tu na kuharakisha na ndio hiyo". Lakini ni kweli rahisi? Kwanza, nataka kutumia DSLR yangu kwa hiyo, na Nikon D3100 yangu ina kikomo cha muda wa dakika 10 kwa video ya kurekodi. Pili, hata ikiwa ningekuwa na kamera bila kikomo cha wakati kwenye utengenezaji wa video, ni nini ikiwa ninataka kutengeneza muda mrefu tena, kama masaa 12 kwa muda mrefu? Ninafanya video ya masaa 12 kwa 1080p. Nina shaka kuwa betri ingedumu kwa muda mrefu na, sio vitendo sana, sivyo? Sawa, tunavuka "wazo la video ya video". Kweli, basi kuna picha. Kuchukua picha kwenye kamera kwa muda fulani na kuishia na mamia ya picha ambazo mimi hutengeneza kupitia programu kutengeneza video..?

Ilionekana kama wazo sawa kwa hivyo niliamua kuipiga risasi. Kwa hivyo niliishia kutaka kutengeneza kifaa ambacho ninaweza kuingiza kipindi cha muda, na kulingana na kipindi hicho kitasababisha kamera yangu kila wakati. Na wakati tuko kwenye hiyo, kwa nini usiongeze vitu vingine kama vile mwendo wa kusonga na kadhalika?

Hatua ya 1: Lakini.. Vipi?

Lakini.. Vipi?
Lakini.. Vipi?

VIPI? ni swali letu linalofuata ambalo linakosa jibu. Kwa sababu ya wakati, kuchochea, sensorer na vitu kama hivyo haishangazi kwamba ya kwanza iliyokuja akilini, kwa kweli, ilikuwa Arduino. Sawa, lakini bado, tunahitaji kujifunza jinsi ya kuchochea shutter kwenye kamera yetu. Hm.. servo moto glued kwa kamera ya mwili? La hasha, tunataka hii iwe kimya na ifanye kazi kwa nguvu. Ufanisi wa umeme - kwanini? Kwa sababu nataka kuifanya kubeba na kushika betri ndani yake, sitakuwa karibu na kuziba nguvu kila wakati. Kwa hivyo tunazisababishaje basi.. ni rahisi sana.

Nikon alikuwa tayari anajua kuwa utataka kijijini na vifaa vingine na wakasema "sawa, tutawapa yote hayo, lakini tutafanya bandari maalum ili tuweze kupata pesa zaidi kwa vifaa hivyo", aibu kwako Nikon. Bandari hiyo (kwa upande wangu) inaitwa MC-DC2, na njia ya bei rahisi zaidi ya kuishika mikono ni kununua kutolewa kwa kijijini kwenye eBay kwa $ 2-3 na tumia tu kebo.

* Kamera zingine zingine, kama Canon, zina kichwa rahisi cha 3.5mm kilichotengenezwa kwa matumizi sawa ili uweze kutumia kebo kutoka kwa spika za zamani / vichwa vya sauti.

Hatua ya 2: Kujifunza Jinsi ya Kuchochea Kamera

Image
Image
Njia za Kuchochea
Njia za Kuchochea

Kwa hivyo, huu ndio mpango, bandari itakuwa na miunganisho 3 ambayo itakuwa ya kupendeza kwetu (Ground, Focus na Shutter) na utakuwa nayo mwisho wa kebo yako ya shutter ya mbali iliyonunuliwa ambayo umeharibu tu. Viunganisho hivyo vitatu ni muhimu kwetu kwa sababu ikiwa tutapunguza Sehemu na Kuzingatia kamera itazingatia tu kama unabonyeza kitufe cha kuzingatia na kisha, wakati unganisho hilo likibaki, unaweza kufupisha Ground na Shutter na kamera itachukua picha kama vile ulibonyeza kitufe cha shutter kwenye kamera.

Unaweza kujaribu hii kwa kufupisha waya za moja kwa moja mwisho wa kebo ili kutambua waya ambayo ni ipi. Mara tu unapofanya hivyo, kwa sababu ya kutambua rahisi, tutawapaka rangi kama hii:

Ardhi = NYEUSI; Kuzingatia = NYEUPE; Shutter = NYEKUNDU.

Sawa, sasa tunahitaji kufundisha Arduino kutufanyia hivi.

Hatua ya 3: Njia za Kuchochea

Image
Image

Jambo rahisi zaidi tunaweza kumwambia Arduino kutuma kwa ulimwengu wa nje ni ishara ya pato la dijiti. Ishara hii inaweza kuwa ya juu (mantiki '1') au LOW (mantiki '0'), kwa hivyo jina "dijiti", au linapobadilishwa kuwa maana yake ya msingi: 5V kwa HIGH mantiki, na 0V kwa LOW ya kimantiki.

Je! Tunapaswa kufanya nini na ishara hizi za dijiti? Hatuwezi kuwaunganisha tu kwa kamera na kutarajia kamera kujua tunachotaka. Kama tulivyoona, tunahitaji kufupisha viunganisho kwenye kamera ili iweze kuguswa, kwa hivyo tunahitaji kutumia ishara za dijiti za Arduino kuendesha vifaa ambavyo vinaweza kufupisha vituo vyao kulingana na ishara hizi za umeme tunazotuma.. * Njia niliyoielezea, unaweza kuwa unafikiria "Ah, Relays!" lakini hapana hapana. Relay ingefanya kazi hiyo lakini tunashughulikia mikondo midogo sana ambayo tunaweza kutumia uchawi mweusi wa semiconductors.

Sehemu ya kwanza ambayo nitajaribu ni optocoupler. Nimewaona wakitekeleza zaidi kwa hili na labda ni suluhisho bora. Optocoupler ni sehemu ya umeme ambayo unadhibiti mzunguko wa pato wakati mzunguko wa pembejeo umetengwa kabisa nayo. Hii inafanikiwa kwa kupeleka habari kwa taa nyepesi, pembejeo za pembejeo zinaangazia LED, na Phototransistor kwenye swichi za pato ipasavyo.

Kwa hivyo tutatumia optocoupler kwa njia hii: tunaambia Arduino yetu itumie JUU ya dijiti kwa moja ikiwa ni pini za dijiti, ishara hiyo ni kivitendo 5V ambayo itaendesha LED ndani ya optocoupler na Phototransistor ndani yake itakuwa "fupi" ni vituo vya pato wakati inagundua taa hiyo, na kinyume chake, "itaondoa" vituo vyake kwani hakuna taa kutoka kwa LED wakati tunatuma LOW digital kupitia Arduino.

Kwa kweli, hii inamaanisha: moja ya pini za dijiti za Arduino zimeambatanishwa na pini ya ANODE ya optocoupler, GND ya Arduino imeambatanishwa na CATHODE, GND ya kamera imeambatanishwa na EMITTER na FOCUS (au SHUTTER) kwa Mkusanyaji. Rejelea karatasi ya data ya kifaa cha kutumia macho unachotumia kupata pini hizi kwako. Ninatumia 4N35 kwa hivyo unaweza kufuata mipangilio yangu kwa upofu ikiwa haujali sana kile kinachotokea ndani ya daladala. Bila kusema, tutahitaji mbili hizi, kwani tunahitaji kudhibiti MFUMO wa kamera na SHUTTER.

Kwa kuwa tuliona jinsi inavyofanya kazi, na phototransistor kwenye pato, kwa nini hatujaribu tu na transistor rahisi ya NPN. Wakati huu, tutaleta ishara ya dijiti moja kwa moja (kwenye kontena) kwa msingi wa transistor na unganisha kamera na GND ya Arduino kwa mtoaji na mwelekeo wa kamera / shutter kwa mtoza wa transistor.

Tena, tutahitaji mbili hizi kwa kuwa tunadhibiti ishara mbili. Ninatumia BC547B na kwa kweli unaweza kutumia NPN yoyote kwa hii kwani sasa tunayodhibiti ni milliamp moja.

Vipengele hivi vyote vitafanya kazi, lakini kuchagua optocoupler labda ni wazo bora kwa sababu ni salama. Chagua transistors tu ikiwa unajua unachofanya.

Hatua ya 4: Kuandika Nambari ya Kuchochea

Image
Image
Kuandika Nambari ya Kuchochea
Kuandika Nambari ya Kuchochea

Kama tulivyosema hapo awali, tutatumia pini za dijiti za Arduino kuashiria. Arduino inaweza kutumia hizi mbili kusoma data kutoka kwake, au kuiandikia hivyo jambo la kwanza tunalohitaji kufanya taja katika kazi ya kuanzisha () kwamba tutatumia pini mbili za dijiti za Arduino kwa pato kama hii:

pinMode (FOCUS_PIN, OUTPUT);

pinMode (SHUTTER_PIN, OUTPUT);

ambapo FOCUS_PIN na SHUTTER_PIN zinaweza kuelezewa na "#fafanua dhamana ya JINA" au kama int kabla ya kusanidi () kwa sababu unaweza kubadilisha pini kwa hivyo ni rahisi kubadilisha thamani kwenye sehemu moja tu badala ya nambari yote baadaye.

Jambo linalofuata tutafanya ni kuandika kichocheo cha () kazi ambacho kitafanya hivyo tu kinapoendeshwa. Nitajumuisha tu picha na nambari. Unachohitaji kujua ni kwamba kwanza tunashikilia FOCUS_PIN juu juu kwa kipindi fulani cha wakati kwa sababu tunahitaji kusubiri kamera ili kuzingatia mada tunayoielekeza na kwa muda mfupi tu (wakati FOCUS_PIN bado iko juu weka SHUTTER_PIN juu juu ili kuchukua picha.

Nilijumuisha pia uwezo wa kuruka kulenga kwa sababu hakutakuwa na haja yake ikiwa tunapiga rekodi ya wakati wa kitu kisichobadilisha umbali kutoka kwa kamera kupitia wakati.

Hatua ya 5: Muda wa Darasa {};

Image
Image
Kudhibiti muda kupitia Arduino
Kudhibiti muda kupitia Arduino

Sasa kwa kuwa tumesababisha kamera kutoka kwa njia tunayohitaji kuifanya kuwa kipima urefu kwa kuongeza utendaji wa kudhibiti kipindi cha muda kati ya risasi mbili. Ili tu upate picha ya kile tunachofanya hapa nambari kadhaa ya zamani kuonyesha utendaji tunayotaka:

kitanzi batili () {

kuchelewesha (muda); kuchochea (); }

Nataka kuweza kubadilisha kipindi hiki kutoka, wacha tuseme, sekunde 5 hadi dakika 20-30. Na hapa kuna shida, ikiwa ninataka kuibadilisha kutoka 5 hadi 16 au kitu chochote kati nitatumia nyongeza ya 1, ambapo kwa kila ombi langu la kuongeza muda, muda utaongezeka kwa 1s. Hiyo ni nzuri, lakini ni nini ikiwa ninataka kutoka 5s hadi 5min? Itanichukua maombi 295 kwa hiyo kwa nyongeza ya 1s kwa hivyo ninahitaji kuongeza thamani ya nyongeza kwa kitu kikubwa zaidi, na ninahitaji kufafanua juu ya thamani gani ya muda (kizingiti) kubadilisha nyongeza. Nilitekeleza hii:

5s-60s: nyongeza ya 1; 60- 300s: nyongeza ya 10; 300s-3600s: nyongeza ya 60s;

lakini niliandika darasa hili kuwa linaloweza kurekebishwa ili uweze kufafanua vizingiti vyako na nyongeza (kila kitu kinasemwa kwenye faili ya.h ili uweze kujua ni wapi ubadilishe maadili gani).

Mfano ambao nimetoa wa kudhibiti muda ni dhahiri umefanywa kwenye PC, sasa tunahitaji kuihamisha kwa Arduino. Darasa hili zima, Muda, umewekwa ndani ya faili moja ya kichwa ambayo hutumiwa kuhifadhi matamko na ufafanuzi (sio kweli, lakini inaweza kufanywa kwa mfano huu bila kufanya madhara yoyote) ya darasa / kazi zetu. Kuanzisha faili hii ya kichwa kwa nambari yetu ya arduino tunatumia "# pamoja na" Interval.h "" (faili lazima ziwe kwenye saraka sawa), ambayo inahakikisha kwamba tunaweza kutumia kazi zilizoelezewa kwenye faili ya kichwa kwenye nambari yetu kuu.

Hatua ya 6: Kudhibiti muda kupitia Arduino

Image
Image
Kudhibiti muda kupitia Arduino
Kudhibiti muda kupitia Arduino
Kudhibiti Muda kupitia Arduino
Kudhibiti Muda kupitia Arduino

Sasa tunataka kuweza kubadilisha thamani ya muda, ama kuiongezea au kuipunguza. Kwa hivyo hayo ni mambo mawili kwa hivyo tutatumia ishara mbili za dijiti ambazo zitadhibitiwa na vifungo viwili. Tutasoma tena na tena maadili kwenye pini za dijiti tulizopewa vifungo na tunganisha maadili hayo kwenye kitufe cha kuangalia kazi (int, int); ambayo itaongeza muda ikiwa kitufe cha "juu" kimesisitizwa na kupunguza muda ikiwa kitufe "chini". Pia, ikiwa vitufe vyote vimebanwa vitabadilisha thamani ya mwelekeo unaobadilika ambao unadhibiti ikiwa uzingatie au la wakati wa kuchochea.

Sehemu ya nambari ((millis () - prevBtnPress)> = debounceTime) hutumiwa kutamka. Njia niliyoiandika, inamaanisha kuwa ninasajili kitufe cha kwanza cha kitufe na kutofautisha kwa boolean btnPress na kumbuka wakati ilifanyika. Kuliko mimi kusubiri kwa muda fulani (debounceTime) na ikiwa kitufe bado kinabanwa mimi hujibu. Pia hufanya "pause" kati ya kila vyombo vya habari vya kitufe kwa hivyo inaepuka mashinikizo mengi ambapo hakuna.

Na mwishowe, na:

ikiwa ((millis () - prevTrigger) / 1000> = muda.getVal ()) {

prevTrigger = milimita (); kuchochea (); }

kwanza tunaangalia ikiwa muda kati ya kichocheo cha mwisho (prevTrigger) na wakati wa sasa (millis ()) (kila kitu kimegawanywa na 1000 kwa sababu iko katika milisekunde na muda uko kwa sekunde) ni sawa na au kubwa kuliko muda tunataka, na ikiwa ni hivyo tunakumbuka wakati wa sasa kama mara ya mwisho tulisababisha kamera na kisha kuisababisha.

Kwa kukamilisha hii, kimsingi tulitengeneza kipimo cha muda, lakini tuko mbali sana. Bado hatuoni thamani ya kipima muda. Inaonyeshwa tu kwenye Serial Monitor na hatutakuwa karibu na kompyuta kila wakati kwa hivyo sasa tutatekeleza kitu ambacho kitatuonyesha muda tunapoibadilisha.

Hatua ya 7: Kuonyesha muda

Image
Image
Kuonyesha muda
Kuonyesha muda
Kuonyesha muda
Kuonyesha muda
Kuonyesha muda
Kuonyesha muda

Hapa ndipo tunapowasilisha onyesho. Nilitumia moduli ya nambari 4 ambayo inaendeshwa na TM1637 kwa sababu ninahitaji kuitumia tu kwa kuonyesha wakati na sio kitu kingine chochote. Njia rahisi zaidi ya kutumia moduli hizi zilizotengenezwa kwa Arduino ni kutumia maktaba zilizotengenezwa tayari kwao. Kwenye wavuti ya Arduino kuna ukurasa unaoelezea chip ya TM1673 na kiunga cha maktaba iliyopendekezwa. Nilipakua maktaba hii na kuna njia mbili ambazo unaweza kuanzisha maktaba hizi kwa Arduino IDE:

  1. kutoka kwa programu ya Arduino nenda kwa Mchoro> Jumuisha Maktaba> Ongeza maktaba ya ZIP na upate faili ya.zip uliyopakua hivi karibuni.
  2. unaweza kufanya kile ambacho Arduino hufanya kwa mikono na fungua tu maktaba kwenye folda ambayo Arduino huhifadhi maktaba, kwenye Windows: C: / Watumiaji / Jina la mtumiaji / Nyaraka / Arduino / maktaba \.

Mara tu ikiwa umejumuisha maktaba unapaswa kusoma faili ya "ReadMe" ambayo utapata muhtasari wa kile kazi anuwai hufanya. Wakati mwingine hii haitoshi kwa hivyo utataka kwenda chini zaidi na kukagua faili za kichwa ambazo unaweza kuona jinsi kazi zinatekelezwa na kile zinahitaji kama hoja za kuingiza. Na kwa kweli njia bora ya kuhisi maktaba ina uwezo wa kutoa mfano ambao unaweza kukimbia kutoka kwa programu ya Arduino kupitia Faili> Mifano> Maktaba ya Jina> Mfano wa Jina. Maktaba hii inatoa mfano mmoja ambao ninapendekeza uendeshe kwenye onyesho lako tu kuona ikiwa onyesho lako linafanya kazi vizuri na kuliko ninavyokuhimiza utumie nambari unayoona katika mfano na ujione mwenyewe kila kazi inafanya nini na jinsi onyesho linavyoshughulikia ni. Nimefanya hivyo na hii ndio niligundua:

inatumia nambari 4 ambazo hazijasainiwa za bits 8 kwa kila tarakimu (0bB7, B6, B5, B4, B3, B2, B1, B0). Na kila moja ya bits B6-B0 hutumiwa kwa kila sehemu ya nambari fulani na ikiwa kidogo ni 1 sehemu inayodhibitiwa na hiyo inaangaza. Namba hizi zinahifadhiwa katika safu inayoitwa data . Kuweka bits hizi kwenye onyesho kunatimizwa na sehemu za kuonyesha. Seti (data); au unaweza kupata nambari yoyote haswa na kuiweka kwa mikono (data [0] = 0b01111001) au unaweza kutumia kazi ya encodeDigit (int); na ubadilishe tarakimu unayotuma iwe kulingana na bits (data [0] = display.encodeDigit (3));. Bit B7 hutumiwa tu na nambari ya pili, au data [1], kwa kuamsha koloni.

Kwa kuwa niliandika kazi katika mchawi wa darasa la INTERVAL ambayo ninaweza kupata nambari fulani za muda katika mfumo wa M1M0: S1S0, ambapo M anasimama kwa dakika na S kwa sekunde, ni kawaida kwamba mimi hutumia encodeDigitFunction (int); kwa kuonyesha muda kama hivyo:

onyeshaInterval () {

data [0] = onyesha.encodeDigit (muda.getM1 ()); data [1] = 0x80 | onyesha.encodeDigit (muda.getM0 ()); data [2] = onyesha.encodeDigit (muda.getS1 ()); data [3] = onyesha.encodeDigit (muda.getS0 ()); Sehemu za kuonyesha (data); }

Sasa, wakati wowote ninapohitaji kuonyesha muda kwenye onyesho, ninaweza kupiga kazi ya kuonyeshaInterval ().

* Kumbuka "0x80 | …" kwenye data [1]. Inatumika kuhakikisha kuwa B7 kidogo ya data [1] daima ni 1 kwa hivyo koloni inawaka.

Jambo la mwisho juu ya onyesho, matumizi ya nguvu. Inaweza kuwa sio ya umuhimu mkubwa kwani hatuwezi kuiweka kwa muda mrefu, lakini ikiwa una nia ya kuifanya betri iwe rafiki zaidi basi fikiria kupunguza mwangaza wa onyesho kwani huchota mara 3 zaidi ya sasa juu ya mwangaza wa kiwango cha juu. kuliko ya chini kabisa.

Hatua ya 8: Kuiweka Pamoja

Kuiweka Pamoja
Kuiweka Pamoja

Tunajua jinsi ya kuchochea kamera, jinsi ya kutumia muda na jinsi ya kuonyesha muda huo huo kwenye onyesho. Sasa tunahitaji tu kuunganisha vitu hivi vyote pamoja. Tutaanza, kwa kweli, kutoka kwa kitanzi () kazi. Tutakagua mara kwa mara vifungo vya kitufe na tuchukue hatua ipasavyo na vifungo vya kuangalia (int, int) na ubadilishe muda kulingana na kuonyesha kipindi kilichobadilishwa. Pia kwenye kitanzi () tutakuwa tukikagua kila wakati ikiwa wakati wa kutosha umepita kutoka kwa kitufe cha mwisho cha kuchochea au kitufe na kupiga simu ya trigger () ikiwa inahitajika. Kwa matumizi ya nguvu ya chini tutazima onyesho baada ya muda.

Niliongeza rangi iliyoongozwa na rangi mbili, (Nyekundu na Kijani, cathode ya kawaida) ambayo itawasha kijani wakati kichocheo () na itawaka nyekundu pamoja na onyesho ikiwa kulenga iko juu na itabaki mbali ikiwa kulenga ni imezimwa.

Pia, tutahamia Arduino ndogo zaidi, Pro Mini.

Hatua ya 9: Kuongeza Jambo la Mwisho

Kuongeza Jambo Moja La Mwisho
Kuongeza Jambo Moja La Mwisho
Kuongeza Jambo Moja La Mwisho
Kuongeza Jambo Moja La Mwisho
Kuongeza Jambo Moja La Mwisho
Kuongeza Jambo Moja La Mwisho

Hadi sasa.. tumeunda Intervalometer tu. Muhimu, lakini tunaweza kufanya vizuri zaidi.

Hapa ndivyo nilikuwa na akili: Intervalometer hufanya jambo kwa default ISIPOKUWA tunapounganisha aina fulani ya switch / sensor ambayo inasimamisha kipimaji na kujibu pembejeo ya switch / sensor. Wacha tuiite sensor, sio lazima iwe sensor iliyounganishwa lakini nitaiita kama hiyo.

Kwanza, ni vipi tunagundua kuwa tumeunganisha sensorer?

Sensorer tutazotumia / kutengeneza zote zitahitaji waya tatu kuziunganisha na arduino (Vcc, GND, Signal). Hiyo inamaanisha kuwa tunaweza kutumia kipaza sauti cha 3.5mm kama kiboreshaji cha sensorer. Je! Hiyo hutatuaje shida yetu? Kweli, kuna aina ya jack 3.5mm "na swichi" ambayo ina pini ambazo zimepunguzwa kwa pini za kiunganishi ikiwa hakuna kiunganishi cha kiume ndani yao, na hutengana wakati kuna kontakt iliyopo. Hiyo inamaanisha tuna habari kulingana na uwepo wa sensa. Nitatumia kontena la kuvuta chini kama inavyoonyeshwa (pini ya dijiti itasoma JUU bila sensa, na LOW na sensor iliyoambatishwa) kwenye picha au unaweza pia kushikamana na pini ya dijiti kwa pini ya kiunganishi ambayo kawaida ni imeunganishwa ardhini na kufafanua pini hiyo ya dijiti kama INPUT_PULLUP, itafanya kazi kwa vyovyote vile. Kwa hivyo sasa tunalazimika kurekebisha nambari yetu kwa hivyo inafanya yote ambayo tumeandika hadi sasa tu ikiwa sensor haipo, au wakati pini ya dijiti inayoangalia hiyo iko juu. Niliibadilisha pia kwa hivyo inaonyesha "SENS" kwenye onyesho badala ya muda ambao hauna maana katika hali hii, lakini kulenga bado ni muhimu kwetu tutaweka utendaji wa kubadilisha kulenga na waandishi wa habari wa vifungo vyote na kuonyesha hali ya kulenga kupitia nyekundu iliyoongozwa.

Je! Sensor hufanya nini?

Inachohitajika kufanya ni kuweka 5V kwenye pini ya Ishara wakati tunataka kuchochea kamera. Hiyo inamaanisha kuwa tutahitaji pini nyingine ya dijiti ya Arduino kuangalia hali ya pini hii na inapojisajili JUU, inachohitajika kufanya ni kupiga kazi ya trigger () na kamera itapiga picha. Mfano rahisi, na ile tutakayotumia kujaribu ikiwa hii inafanya kazi, ni kitufe rahisi na kipinga-kuvuta. Ambatisha kitufe kati ya Vcc ya sensa na pini ya Ishara na ongeza kontena kati ya pini ya Ishara na GND, kwa njia hii pini ya Ishara itakuwa kwenye GND wakati kitufe hakijabanwa kwa kuwa hakuna sasa inapita kupitia kontena, na wakati kitufe kinabanwa tunaweka pini ya Ishara moja kwa moja kwenye HIGH na Arduino inasoma hiyo na husababisha kamera.

Kwa hili tulihitimisha kuandika nambari.

* Ningependa kutambua shida kadhaa ambazo nilikuwa nazo na viboreshaji vya sauti nilizotumia. Wakati wa kuingiza jack ya kiume kwenye kontakt, GND na mojawapo ya pini mbili zingine wakati mwingine zinaweza kuwa fupi. Hii hufanyika mara moja na tu wakati wa kuweka kontakt, lakini bado ni ndefu ya kutosha kwa Arduino kusajili kifupi ili Arduino ianze tena. Hii haifanyiki mara nyingi lakini bado inaweza kuwa hatari na kuna uwezekano wa kuharibu Arduino kwa hivyo epuka viunganishi ambavyo nilitumia.

Hatua ya 10: Yenye Mess

Yenye Ujumbe
Yenye Ujumbe
Yenye Ujumbe
Yenye Ujumbe
Yenye Ujumbe
Yenye Ujumbe
Yenye Ujumbe
Yenye Ujumbe

Unaweza kuona kutoka kwa picha kwamba ubao wa mkate unakua machafuko na tumemaliza kwa hivyo tunahitaji kuhamisha kila kitu kwa ubao / PCB. Nilikwenda kwa PCB kwa sababu nadhani nitatengeneza zaidi ya hizi kwa njia hii naweza kuzaliana kwa urahisi.

Nilitumia Tai kwa kubuni PCB na nikapata miundo ya sehemu zote nilizotumia. Kuna kitu kidogo katika muundo wangu ambacho ninatamani nisingefanya na hiyo ni pedi ya waya kwa Vcc ya onyesho. Nimeona ni kuchelewa sana na sikutaka kuharibu kile nilichotengeneza hapo awali na kwenda kwa njia ya uvivu ya kuongeza pedi za waya na baadaye kulazimika kuongeza waya kwenye unganisho hili badala ya athari za shaba ili uwe na akili kwamba ikiwa unatumia muundo wa mgodi.

Bodi ya Arduino na onyesho vimeunganishwa na PCB kupitia vichwa vya pini vya kike badala ya kuuzwa moja kwa moja kwenye PCB, kwa sababu dhahiri. Kwa njia hii kuna nafasi nyingi kwa vifaa vingine chini ya onyesho la vifaa vingine kama vile vipingaji, transistors na hata sauti ya sauti.

Nimeweka vifungo vidogo vya kushinikiza ambavyo, kwa muundo, vinapaswa kuuzwa moja kwa moja lakini unaweza kutumia mashimo kwa vichwa vya kike vya pini na unganisha vifungo na waya ikiwa unataka vimewekwa kwenye ua na sio kwenye PCB.

Tutaweka pia jack nyingine ya sauti ya kike kuziba kebo inayounganisha na kamera. Kwa njia hii bodi inakuwa inayofaa zaidi kwa njia hiyo tutaweza kuungana na kamera zingine na viunganishi vingine.

Hatua ya 11: Sens0rs

Image
Image
Wataalam
Wataalam

Wacha tuangalie njia za kutekeleza sensor.

Kwa hivyo sensa itakuwa na voltage ya usambazaji ya 5V, na itahitaji kuweza kutoa HIGH ya dijiti kwenye pini ya ishara wakati tunataka kuchochea kamera. Jambo la kwanza lililokuja akilini mwangu ni sensor ya mwendo, PIR kuwa maalum. Kuna moduli zilizouzwa kwa Arduino ambazo zina kihisi hiki na fanya tu tunachotaka. Zinatumiwa kwenye 5V na zina pini ya pato ambayo huweka 5V wakati zinasababishwa, tunahitaji tu kuunganisha pini zake kwa jack ya sauti ya 3.5mm na tunaweza kuziba ndani ya bodi. Jambo moja la kuzingatia ingawa ni kwamba sensa hii inahitaji muda wa joto na kuanza kufanya kazi vizuri kwa hivyo usitarajie itafanya kazi vizuri mara tu utakapoziba, ipatie muda kisha uiweke na kila kitu hai kiingie ndani yake masafa yatasababisha kamera.

Kwa kuwa tunafikiria katika mwelekeo wa bodi za sensorer za Arduino zilizotengenezwa tayari nyingine inakuja akilini, sauti. Bodi hizi kawaida hufanywa kwa njia ambayo zina pini moja ambayo hutoa thamani ya analojia ya sauti inayochukua na nyingine, moja ya dijiti, ambayo hutoa HIGH mantiki ikiwa sauti inayochukua inavuka kiwango fulani. Tunaweza kuweka kiwango hiki kwamba sensor inapuuza sauti yetu lakini inasajili makofi. Kwa njia hiyo, wakati wowote unapopiga makofi, unasababisha kamera.

Hatua ya 12: PoweeEeEer

PoweeEeEer
PoweeEeEer
PoweeEeEer
PoweeEeEer

Nadhani njia rahisi ya kuwezesha jambo hili ni kwa benki ya nguvu, na sio nje. Tutaweka utendaji wa kuchaji simu yetu au chochote na kudhibiti mtiririko wa sasa kwa bodi kupitia swichi. Tutapata pini za kontakt USB ya pato kwenye bodi ya mzunguko katika benki ya umeme ambayo ni GND na Vcc (5V) na waya za Solder moja kwa moja kwenye hizo na kutoka hapo kwenye bodi yetu.

Hatua ya 13: Ufungaji.. Kinda

Ufungaji.. Kinda
Ufungaji.. Kinda
Ufungaji.. Kinda
Ufungaji.. Kinda
Ufungaji.. Kinda
Ufungaji.. Kinda

Nilijitahidi sana na hii. Nilipopiga sanduku nilitaka kuweka PCB iliyopo, niligundua kuwa hakuna njia nzuri ya kutoshea kila kitu kama nilivyotaka na kisha nikaamua kuunda PCB mpya, wakati huu na vifaa vya kutengeneza macho. Nilitaka kuweka PCB chini ya upande ambao nitachimba mashimo kwa vifaa fulani ambavyo vinahitaji kuonekana / kuguswa. Ili hii ifanye kazi ningehitaji kutengenezea onyesho na Arduino moja kwa moja kwa bodi, bila soketi au vichwa, na hapo ndipo shida ya kwanza iko. Ilikuwa ya kutisha kabisa kusuluhisha chochote kwani sikuwa tayari kuiunganisha mara moja hadi nitakapogundua kuwa kila kitu kinafanya kazi, na sikuweza kujaribu kitu chochote kwani sikuweza kukiuza na kadhalika.. don fanya hivi. Shida numero dos, kutengeneza mashimo kwenye kesi hiyo. Nadhani nilichukua vipimo vibaya kwa sababu hakuna shimo kwenye kesi hiyo iliyokaa sawa na vifaa kwenye PCB na ilibidi nipanue na vifungo vilikuwa juu sana kwenye PCB na vingeshinikizwa kila wakati nitakapoweka bodi mahali aa kwa kuwa nilitaka viboreshaji vya sauti pembeni, ilibidi nipanue mashimo hayo pia ili kutoshea jacks kwanza na kisha kupunguza bodi kwa onyesho na vifungo kuja.. matokeo ni mabaya.

Niliweka mashimo mabaya chini ya kutisha kwa kufunika juu na kadibodi nyembamba ambayo nilikata mashimo ya busara zaidi kwa vifaa na.. bado ni mbaya lakini ni rahisi kwa jicho nadhani.

Uamuzi, ninashauri ufanye hivi kwa kununua vifaa ambavyo vimeweka kwenye ua, na sio moja kwa moja kwenye PCB. Kwa njia hiyo una uhuru zaidi katika uwekaji wa vifaa na maeneo machache ya kufanya makosa.

Hatua ya 14: Fin

Image
Image
Mwisho
Mwisho

Nimemaliza, lakini hapa kuna jambo ambalo ningefanya tofauti:

Tumia viboreshaji bora vya sauti vya 3.5mm. Zile nilizokuwa nikitumia huwa zinafupisha vituo wakati wa kuingiza au kuvuta jack ambayo inasababisha kupunguzwa kwa usambazaji na hivyo kuweka upya Arduino au inazalisha tu vichocheo bandia. Nimesema hii katika hatua ya awali lakini nitasema tena.. usifunge bodi ya Arduino bila vichwa / tundu, inafanya tu aina yoyote ya utatuzi au kupakia nambari mpya na kadhalika ngumu zaidi. Nadhani pia kuwa kuwa na ishara inayoongozwa kuwa kitu kiko juu ingekuwa na faida kwa sababu mara nyingi siwezi kusema bila kubonyeza kitufe tangu onyesho likizima. Na jambo la mwisho, pause kazi. Nadhani ni muhimu wakati kwa mfano unapoingia kwenye sensorer ya PIR kwa sababu inahitaji wakati wa joto, au tu wakati wa kuzunguka hautaki iweze kusababisha ili uweze kusitisha kila kitu, lakini unaweza pia kugeuka tu mbali na kamera hivyo.. chochote.

Jambo lingine nadhifu ni kuifanya Velcro kwenye safari ya miguu mitatu kwani ina uwezekano mkubwa wa kutumika hapo.

Jisikie huru kuuliza chochote juu ya mradi huu kwenye maoni na ningependa kujua ikiwa unaijenga na jinsi ilivyokujia.

Ilipendekeza: