Turinys:

„Pimp My Cam“: 14 žingsnių (su nuotraukomis)
„Pimp My Cam“: 14 žingsnių (su nuotraukomis)

Video: „Pimp My Cam“: 14 žingsnių (su nuotraukomis)

Video: „Pimp My Cam“: 14 žingsnių (su nuotraukomis)
Video: How to Build a One Man Band - (Pimp My OMB #2) 2024, Lapkritis
Anonim
Pimp My Cam
Pimp My Cam

Štai iš kur kyla šis projektas.

Prieš kurį laiką galvojau apie tam tikrų laiko tarpų filmavimą. - Kaip? Aš savęs paklausiau? Pirmasis atsakymas buvo „Na.. tu tiesiog ką nors nufilmuoji ir pagreitini, ir viskas“. Bet ar tikrai taip paprasta? Pirma, tam noriu naudoti savo DSLR, o mano „Nikon D3100“turi 10 minučių trukmę vaizdo įrašams filmuoti. Antra, net jei turėčiau fotoaparatą be laiko apribojimų filmuojant vaizdo įrašą, ką daryti, jei noriu padaryti tikrai ilgą laiko tarpą, pavyzdžiui, 12 valandų? Aš kuriu 12 valandų 1080p vaizdo įrašą. Aš abejoju, ar baterija tarnaus taip ilgai, ir tai nėra labai praktiška, ar ne? Gerai, kertame „filmavimo vaizdo įrašo idėją“. Na, tada yra nuotraukos. Fotografuoti fotoaparate tam tikru intervalu ir baigti šimtais vaizdų, kuriuos aš apdoroju per programinę įrangą vaizdo įrašui sukurti?

Atrodė gera idėja, todėl nusprendžiau pabandyti. Taigi galų gale norėjau sukurti įrenginį, į kurį galėčiau įvesti tam tikrą laikotarpį, ir pagal tą laikotarpį jis nuolat suaktyvintų mano fotoaparatą. Ir kol mes tai darome, kodėl gi nepridėjus kitų dalykų, tokių kaip judesio paleidiklis ir pan.?

1 žingsnis: Bet.. Kaip?

Bet kaip?
Bet kaip?

KAIP? yra kitas mūsų klausimas, į kurį trūksta atsakymo. Dėl laiko, paleidimo, jutiklių ir tokių dalykų nenuostabu, kad pirmasis, kuris atėjo į galvą, žinoma, buvo „Arduino“. Gerai, bet vis tiek turime išmokti užrakinti fotoaparato užraktą. Hm.. servo karštai priklijuota prie kūno kameros? Visiškai ne, mes norime, kad tai būtų tylu ir energiją taupanti. Energijos taupymas - kodėl? Kadangi noriu, kad jis būtų nešiojamas ir į jį įdėčiau bateriją, kiekvieną kartą nebūčiau šalia maitinimo kištuko. Taigi kaip mes tai suaktyvinsime.. tai iš tikrųjų yra gana paprasta.

„Nikon“jau žinojo, kad norėsite nuotolinio valdymo pulto ir kitų priedų, ir jie pasakė: „Gerai, mes jiems viską atiduosime, bet padarysime specialų prievadą, kad galėtume uždirbti daugiau pinigų už šiuos priedus“, gėda jums „Nikon“. Šis prievadas (mano atveju) vadinamas MC-DC2, o pigiausias būdas tai padaryti yra nusipirkti nuotolinį užrakto paleidimą „eBay“už 2–3 USD ir tiesiog naudoti kabelį.

*Kai kurios kitos kameros, pvz., „Canon“, turi paprastą 3,5 mm ausinių lizdą, skirtą tam pačiam naudojimui, kad galėtumėte naudoti tam tikrą laidą iš senų garsiakalbių/ausinių.

2 žingsnis: Sužinokite, kaip suaktyvinti fotoaparatą

Image
Image
Triggerio būdai
Triggerio būdai

Bet kokiu atveju, čia yra sandoris, prievadas turės 3 jungtis, kurios mums bus naudingos („Ground“, „Focus“ir „Shutter“), o jūs turėsite jas ką tik sunaikintos naujai nupirktos nuotolinės langinės kabelio gale. Šios trys jungtys mums yra svarbios, nes jei sutrumpinsime pagrindą ir fokusavimą, fotoaparatas sufokusuos taip, kaip paspaudžiate fokusavimo mygtuką, o kol šis ryšys išliks, galite sutrumpinti pagrindą ir užraktą, o fotoaparatas nufotografuos lyg paspaudę fotoaparato užrakto mygtuką.

Tai galite išbandyti tiesiogine to žodžio prasme trumpindami laidus, esančius kabelio gale, kad nustatytumėte, kuris laidas yra. Kai tai padarysite, kad būtų lengviau juos atpažinti, nuspalvinsime juos taip:

Žemė = JUODA; Fokusas = BALTAS; Užraktas = RAUDONA.

Gerai, dabar turime išmokyti „Arduino“tai padaryti už mus.

3 žingsnis: suveikimo būdai

Image
Image

Paprasčiausias dalykas, kurį galime pasakyti „Arduino“siųsti į išorinį pasaulį, yra jo skaitmeninis išvesties signalas. Šis signalas gali būti HIGH (loginis '1') arba LOW (loginis '0'), taigi ir pavadinimas "skaitmeninis", arba paverčiamas į jo pagrindinę reikšmę: 5V - loginis HIGH ir 0V - loginis LOW.

Ką daryti su šiais skaitmeniniais signalais? Negalime tiesiog prijungti jų prie fotoaparato ir tikėtis, kad fotoaparatas žinos, ko mes norime. Kaip matėme, turime sutrumpinti fotoaparato jungtis, kad ji reaguotų, todėl turime naudoti skaitmeninius „Arduino“signalus, kad valdytume kai kuriuos komponentus, kurie gali sutrumpinti jų gnybtus, priklausomai nuo to, kokį elektrinį signalą siunčiame.. *Kaip aš tai apibūdinau, jūs galvojate: „Ak, relės!“bet ne ne. Relė atliks šį darbą, tačiau mes susiduriame su tokiomis mažomis srovėmis, kad galime lengvai panaudoti juodąją puslaidininkių magiją.

Pirmasis komponentas, kurį išbandysiu, yra optronas. Mačiau, kad jie labiausiai tam buvo įgyvendinti ir tai turbūt geriausias sprendimas. Optronas yra elektrinis komponentas, su kuriuo jūs valdote išėjimo grandinę, kol įvesties grandinė yra visiškai izoliuota. Tai pasiekiama perduodant informaciją šviesa, įvesties grandinė uždega šviesos diodą, o išvesties fototranzistorius atitinkamai perjungia.

Taigi mes naudosime optroną tokiu būdu: liepiame „Arduino“siųsti skaitmeninį AUKŠTĄ į vieną, jei tai yra skaitmeniniai kaiščiai, tas signalas yra praktiškai 5 V, o tai paskatins šviesos diodą optrono viduje, o fototranzistorius jo viduje bus „trumpas“tai išvesties gnybtai, kai aptinka tą šviesą, ir atvirkščiai, jis „atsijungs“nuo gnybtų, nes iš šviesos diodo nėra šviesos, kai siunčiame skaitmeninį LOW per „Arduino“.

Praktiškai tai reiškia: vienas iš skaitmeninių „Arduino“kaiščių yra prijungtas prie optrono ANODE kaiščio, „Arduino“GND yra prijungtas prie katodo, fotoaparato GND yra prijungtas prie EMITTER, o FOCUS (arba SHUTTER) - prie KOLEKTORIAUS. Norėdami rasti šiuos kaiščius, žiūrėkite naudojamo optrono duomenų lapą. Aš naudoju 4N35, kad galėtumėte aklai sekti mano schemą, jei jums tikrai nerūpi, kas vyksta optrono viduje. Nereikia nė sakyti, kad mums reikės dviejų iš jų, nes turime valdyti fotoaparato fokusavimą ir užraktą.

Kadangi matėme, kaip tai veikia, kai išvestyje yra fototransistorius, kodėl gi nepabandžius to naudoti tik naudojant paprastą NPN tranzistorių. Šį kartą skaitmeninį signalą tiesiogiai (per rezistorių) atnešime prie tranzistoriaus pagrindo ir prijungsime fotoaparato ir „Arduino“GND prie spinduolio, o fotoaparato fokusavimo/užrakto - prie tranzistoriaus kolektoriaus.

Vėlgi, mums reikės dviejų iš jų, nes mes valdome du signalus. Aš naudoju BC547B ir iš esmės tam galite naudoti bet kurį NPN, nes mūsų valdoma srovė yra vienas miliampas.

Abu šie komponentai veiks, tačiau pasirinkti optroną tikriausiai yra geresnė idėja, nes jis yra saugesnis. Pasirinkite tranzistorius tik tada, kai žinote, ką darote.

4 žingsnis: suaktyvinimo kodo rašymas

Image
Image
Sukūrimo kodo rašymas
Sukūrimo kodo rašymas

Kaip jau minėjome anksčiau, signalizavimui naudosime skaitmeninius „Arduino“kaiščius. „Arduino“gali juos naudoti tiek skaitydamas duomenis iš jo, tiek rašydamas į juos, todėl pirmas dalykas, kurį turime padaryti, nustatykite funkciją (setup), kad išvestyje naudosime du skaitmeninius „Arduino“kaiščius:

pinMode (FOCUS_PIN, OUTPUT);

pinMode (SHUTTER_PIN, OUTPUT);

kur FOCUS_PIN ir SHUTTER_PIN gali būti apibrėžti naudojant „#define NAME value“arba kaip int prieš nustatymo () funkciją, nes galite pakeisti kaištį, kad vėliau būtų lengviau pakeisti vertę tik vienoje vietoje, o ne visą kodą.

Kitas dalykas, kurį mes padarysime, yra parašyti trigerio () funkciją, kuri atliks tą patį. Tiesiog pridėsiu nuotrauką su kodu. Viskas, ką jums reikia žinoti, yra tai, kad pirmiausia FOCUS_PIN palaikome HIGH tam tikrą laiką, nes turime palaukti, kol fotoaparatas sutelks dėmesį į objektą, į kurį nukreipiame, o tada tik akimirką (kol FOCUS_PIN vis dar yra AUKŠTAS) uždėkite SHUTTER_PIN ant HIGH, kad nufotografuotumėte.

Aš taip pat įtraukiau galimybę praleisti fokusavimą, nes to nereikės, jei fotografuosime laiko pertrauką, kuri nekeičia atstumo nuo fotoaparato laikui bėgant.

5 veiksmas: klasės intervalas {};

Image
Image
Manipuliavimas intervalu per Arduino
Manipuliavimas intervalu per Arduino

Dabar, kai mes suaktyvinome fotoaparatą, turime tai padaryti intervallometru, pridedant galimybę manipuliuoti laikotarpiu tarp dviejų kadrų. Kad galėtumėte susidaryti vaizdą apie tai, ką mes darome, pateikiame primityvų kodą, parodantį norimą funkcionalumą:

void loop () {

vėlavimas (intervalas); trigeris (); }

Noriu, kad galėčiau pakeisti šį intervalą nuo, tarkime, 5 sekundžių iki gal 20–30 minučių. Ir čia yra problema, jei noriu jį pakeisti iš 5 sekundžių į 16 ar ką nors tarp jų, aš naudoju 1 s žingsnį, kai kiekvienam mano prašymui padidinti intervalą intervalas padidėtų 1 sekundę. Tai puiku, bet ką daryti, jei noriu pereiti nuo 5 iki 5 minučių? Man prireiktų 295 prašymų 1 žingsniu, todėl akivaizdu, kad turiu padidinti prieaugio vertę iki kažko didesnio ir turiu apibrėžti, kokia tiksli intervalo vertė (slenkstis) pakeisti žingsnį. Aš tai įgyvendinau:

5s-60s: 1s prieaugis; 60–300: 10 sekundžių; 300–3600: 60 sekundžių prieaugis;

bet aš parašiau šią klasę, kad ją būtų galima reguliuoti, kad galėtumėte nustatyti savo slenksčius ir žingsnius (viskas komentuojama.h faile, kad žinotumėte, kur keisti kokias vertes).

Mano pateiktas pavyzdys, kaip manipuliuoti intervalu, akivaizdžiai padarytas asmeniniame kompiuteryje, dabar turime jį perkelti į „Arduino“. Visa ši klasė, intervalas, yra patalpinta į vieną antraštės failą, kuris naudojamas mūsų klasės/funkcijų deklaracijoms ir apibrėžimams saugoti (ne iš tikrųjų, bet tai galima padaryti šiame pavyzdyje nedarant žalos). Norėdami įvesti šį antraštės failą į mūsų arduino kodą, naudojame „#include“Interval.h “(failai turi būti tame pačiame kataloge), kuris užtikrina, kad galėtume naudoti funkcijas, apibrėžtas antraštės faile mūsų pagrindiniame kode.

6 veiksmas: manipuliavimas intervalu per „Arduino“

Image
Image
Manipuliavimas intervalu per Arduino
Manipuliavimas intervalu per Arduino
Manipuliavimas intervalu per Arduino
Manipuliavimas intervalu per Arduino

Dabar norime, kad būtų galima pakeisti intervalo vertę, ją padidinti arba sumažinti. Taigi tai du dalykai, todėl naudosime du skaitmeninius signalus, kurie bus valdomi dviem mygtukais. Mes pakartotinai perskaitysime reikšmes skaitmeniniuose smeigtukuose, kuriuos priskyrėme mygtukams, ir išanalizuosime šias reikšmes į funkcijų patikrinimo mygtukus (int, int); kuris padidins intervalą, jei bus paspaustas mygtukas „aukštyn“, ir sumažins intervalą, jei mygtukas „žemyn“. Be to, jei paspausite abu mygtukus, pasikeis kintamo fokusavimo vertė, kuri kontroliuoja, ar sufokusuoti, ar ne.

Dalis kodo ((millis () - prevBtnPress)> = debounceTime) naudojama atjungimui. Tai, kaip aš parašiau, reiškia, kad pirmą kartą paspaudžiu mygtuką su loginiu kintamuoju „btnPressed“ir prisimenu laiką, kai tai įvyko. Aš laukiu tam tikro laiko (debounceTime) ir, jei mygtukas vis dar paspaustas, aš reaguoju. Tai taip pat daro „pauzę“tarp kiekvieno kito mygtuko paspaudimo, todėl išvengiama daugybės paspaudimų ten, kur jų nėra.

Ir galiausiai su:

if ((milis () - prevTrigger) / 1000> = interval.getVal ()) {

prevTrigger = milis (); trigeris (); }

pirmiausia patikriname, ar laiko tarpas nuo paskutinio paleidimo (prevTrigger) iki dabartinio laiko (milis ()) (viskas padalinta iš 1000, nes tai yra milisekundės, o intervalas yra sekundėmis) yra lygus ar didesnis už intervalą mes norime, o jei taip, prisimename esamą laiką kaip paskutinį kartą, kai suaktyvinome fotoaparatą, ir tada jį suaktyviname.

Baigę tai, mes iš esmės sukūrėme intervalometrą, tačiau dar toli gražu nesibaigėme. Mes vis dar nematome intervalometro vertės. Jis rodomas tik nuosekliajame monitoriuje ir mes ne visada būsime šalia kompiuterio, todėl dabar įdiegsime tai, kas parodys intervalą, kai jį pakeisime.

7 žingsnis: rodyti intervalą

Image
Image
Rodomas intervalas
Rodomas intervalas
Rodomas intervalas
Rodomas intervalas
Rodomas intervalas
Rodomas intervalas

Čia pristatome ekraną. Aš naudojau 4 skaitmenų modulį, kurį valdo TM1637, nes turiu jį naudoti tik laiko rodymui ir nieko kito. Lengviausias būdas naudoti šiuos „Arduino“sukurtus modulius yra naudoti jiems jau sukurtas bibliotekas. „Arduino“svetainėje yra puslapis, kuriame aprašomas TM1673 lustas, ir nuoroda į siūlomą biblioteką. Aš atsisiunčiau šią biblioteką ir yra du būdai, kaip šias bibliotekas pristatyti „Arduino IDE“:

  1. iš „Arduino“programinės įrangos eikite į Eskizas> Įtraukti biblioteką> Pridėti. ZIP biblioteką ir suraskite ką tik atsisiųstą.zip failą
  2. galite padaryti tai, ką „Arduino“daro rankiniu būdu, ir tiesiog išpakuokite biblioteką aplanke, kuriame „Arduino“saugo bibliotekas, sistemoje „Windows“: C: / Users / Vartotojo vardas / Dokumentai / Arduino / bibliotekos \.

Įtraukę biblioteką, turėtumėte perskaityti failą „ReadMe“, kuriame rasite įvairių funkcijų santrauką. Kartais to nepakanka, todėl norėsite šiek tiek įsigilinti ir ištirti antraštės failus, kuriuose galite pamatyti, kaip funkcijos įgyvendinamos ir ko joms reikia kaip įvesties argumentų. Ir, žinoma, geriausias būdas pajusti, ką biblioteka gali, paprastai siūlo pavyzdį, kurį galite paleisti iš „Arduino“programinės įrangos naudodami Failas> Pavyzdžiai> Bibliotekos pavadinimas> Pavyzdžio pavadinimas. Šioje bibliotekoje pateikiamas vienas pavyzdys, kurį rekomenduoju paleisti ekrane tik tam, kad pamatytumėte, ar jūsų ekranas veikia tinkamai, ir raginu jus pataisyti pavyzdyje matomą kodą ir patiems pamatyti, ką daro kiekviena funkcija ir kaip ekranas reaguoja tai. Aš taip padariau ir štai ką supratau:

kiekvienam skaitmeniui naudojami 4 nepasirašyti 8 bitų sveikieji skaičiai (0bB7, B6, B5, B4, B3, B2, B1, B0). Ir kiekvienas iš šių bitų B6-B0 yra naudojamas kiekvienam tam tikro skaitmens segmentui, o jei bitas yra 1, jo valdomas segmentas užsidega. Šie sveikieji skaičiai saugomi masyve, vadinamame duomenimis . Šių bitų nustatymas ekrane atliekamas naudojant display.setSegments (duomenys); arba galite natūraliai pasiekti bet kurį skaitmenį ir nustatyti juos rankiniu būdu (duomenys [0] = 0b01111001) arba galite naudoti funkciją encodeDigit (int); ir konvertuokite siunčiamą skaitmenį į bitus (duomenys [0] = display.encodeDigit (3));. B7 bitą naudoja tik antrasis skaitmuo arba duomenys [1] dvitaškiui suaktyvinti.

Kadangi funkcijas parašiau INTERVAL klasės ragana, kurią galiu gauti tam tikrus intervalo skaitmenis M1M0 pavidalu: S1S0, kur M reiškia minutes, o S - sekundes, natūralu, kad naudoju encodeDigitFunction (int); Norėdami parodyti intervalą taip:

displayInterval () {

duomenys [0] = display.encodeDigit (interval.getM1 ()); duomenys [1] = 0x80 | display.encodeDigit (interval.getM0 ()); duomenys [2] = display.encodeDigit (interval.getS1 ()); duomenys [3] = display.encodeDigit (interval.getS0 ()); display.setSegments (duomenys); }

Dabar, bet kuriuo metu, kai ekrane reikia parodyti intervalą, galiu iškviesti funkciją displayInterval ().

*Atkreipkite dėmesį į „0x80 |…“duomenis [1]. Jis naudojamas siekiant užtikrinti, kad duomenų bitas B7 [1] visada būtų 1, todėl įsižiebs dvitaškis.

Paskutinis dalykas apie ekraną, energijos suvartojimą. Tai gali būti ne itin svarbu, nes mes jo ilgai nelaikysime, tačiau jei norite, kad tai taptų dar patogesnis akumuliatoriui, apsvarstykite galimybę sumažinti ekrano ryškumą, nes jis maksimaliai ryškiai sunaudoja 3 kartus daugiau srovės nei žemiausiame.

8 žingsnis: surinkite viską kartu

Viską sujungti
Viską sujungti

Mes žinome, kaip suaktyvinti fotoaparatą, kaip valdyti intervalą ir kaip tą patį intervalą rodyti ekrane. Dabar mums tereikia visus šiuos dalykus sujungti. Žinoma, pradėsime nuo ciklo () funkcijos. Mes nuolat tikrinsime mygtukų paspaudimus ir atitinkamai reaguosime su mygtukais checkButt (int, int), atitinkamai pakeisime intervalą ir parodysime pakeistą intervalą. Taip pat cikle () mes nuolat tikrinsime, ar praėjo pakankamai laiko nuo paskutinio paleidimo ar mygtuko paspaudimo, ir prireikus iškviesime trigerio () funkciją. Siekiant sumažinti energijos suvartojimą, po kurio laiko ekraną išjungsime.

Pridėjau dvispalvį šviesos diodą (raudoną ir žalią, bendras katodas), kuris užsidegs žaliai, kol suveiks gaidukas (), ir kartu su ekranu užsidegs raudonai, jei fokusavimas įjungtas, ir liks išjungtas, jei fokusavimas įjungtas išjungtas.

Be to, pereisime prie dar mažesnio „Arduino“, „Pro Mini“.

9 veiksmas: pridėkite paskutinį dalyką

Paskutinio dalyko pridėjimas
Paskutinio dalyko pridėjimas
Paskutinio dalyko pridėjimas
Paskutinio dalyko pridėjimas
Paskutinio dalyko pridėjimas
Paskutinio dalyko pridėjimas

Iki šiol mes sukūrėme tik intervalometrą. Naudinga, bet galime padaryti geriau.

Štai ką aš turėjau omenyje: intervalometras tai daro pagal nutylėjimą, IŠSKYRUS, kai pridedame kokį nors išorinį jungiklį/jutiklį, kuris tada sustabdo intervalometrą ir reaguoja į jungiklio/jutiklio įvestį. Pavadinkime jį jutikliu, tai nebūtinai bus prijungtas jutiklis, bet aš tai vadinsiu.

Pirma, kaip nustatyti, ar prijungėme jutiklį?

Visiems jutikliams, kuriuos naudosime/pagaminsime, reikės trijų laidų, jungiančių juos prie arduino (Vcc, GND, Signal). Tai reiškia, kad 3,5 mm garso lizdą galime naudoti kaip jutiklio įvesties lizdą. Ir kaip tai išsprendžia mūsų problemą? Na, yra 3,5 mm lizdo „su jungikliu“tipų, kurių kaiščiai yra sutrumpinti iki jungties kaiščių, jei juose nėra vyriškosios jungties, ir jie atsiskiria, kai yra jungtis. Tai reiškia, kad mes turime informaciją, pagrįstą jutiklio buvimu. Aš naudosiu ištraukiamąjį rezistorių, kaip parodyta (skaitmeninis kaištis bus skaitomas AUKŠTAS be jutiklio, ir ŽEMAS su prijungtu jutikliu) paveikslėlyje arba taip pat galite prijungti prie skaitmeninio kaiščio prie jungties kaiščio, kuris paprastai yra prijungtas prie žemės ir apibrėžti tą skaitmeninį kaištį kaip INPUT_PULLUP, jis veiks bet kuriuo atveju. Taigi dabar turime pataisyti savo kodą, kad jis padarytų viską, ką iki šiol parašėme, tik tuo atveju, jei jutiklio nėra arba kai skaitmeninis kaiščio tikrinimas yra AUKŠTAS. Taip pat pakeičiau, kad ekrane būtų rodomas „SENS“, o ne intervalas, kuris šiuo režimu yra nenaudingas, tačiau fokusavimas mums vis dar aktualus, mes išlaikysime galimybę keisti fokusavimą paspausdami abu mygtukus ir parodo fokusavimo būseną per raudoną lemputę.

Ką iš tikrųjų veikia jutiklis?

Viskas, ką reikia padaryti, tai įjungti 5 V signalo kaištį, kai norime suaktyvinti fotoaparatą. Tai reiškia, kad mums reikės dar vieno skaitmeninio „Arduino“kaiščio, kuris patikrintų šio kaiščio būseną ir kai jis užregistruos AUKŠTĄ, tereikia iškviesti trigerio () funkciją ir fotoaparatas nufotografuos vaizdą. Lengviausias pavyzdys, kurį naudosime norėdami patikrinti, ar tai veikia, yra paprastas mygtukas su ištraukiamu rezistoriumi. Pritvirtinkite mygtuką tarp jutiklio Vcc ir signalo kaiščio ir pridėkite rezistorių tarp signalo kaiščio ir GND, tokiu būdu signalo kaištis bus ant GND, kai mygtukas nebus paspaustas, nes per rezistorių neteka srovė ir kai paspaudus mygtuką, mes dedame signalo kaištį tiesiai ant HIGH, o „Arduino“tai perskaito ir suaktyvina fotoaparatą.

Tuo mes baigėme rašyti kodą.

*Norėčiau atkreipti dėmesį į kai kurias problemas, susijusias su naudojamais garso lizdais. Įkišant kištukinį lizdą į jungtį, GND ir vienas iš kitų dviejų kaiščių kartais sutrumpėtų. Tai įvyksta akimirksniu ir tik įdedant jungtį, tačiau vis tiek pakankamai ilgai, kad „Arduino“užregistruotų trumpą, kad „Arduino“tiesiog paleistų iš naujo. Tai atsitinka ne taip dažnai, tačiau vis tiek gali kelti pavojų ir yra galimybė sunaikinti „Arduino“, todėl venkite naudojamų jungčių.

10 žingsnis: kuriame yra „Mess“

Turintys Mesą
Turintys Mesą
Turintys Mesą
Turintys Mesą
Turintys Mesą
Turintys Mesą
Turintys Mesą
Turintys Mesą

Iš vaizdų matosi, kad duonos lenta tampa netvarkinga, ir mes baigėme, todėl turime viską perkelti į plokštę/PCB. Aš pasirinkau PCB, nes manau, kad jų gaminsiu daugiau, kad galėčiau juos lengvai atkurti.

Aš naudoju „Eagle“kurdamas PCB ir radau visų naudojamų dalių dizainą. Mano dizaine yra vienas mažas dalykas, kurio norėčiau nebūti, ir tai yra vielos kilimėlis ekrano Vcc. Pamačiau tai per vėlai ir nenorėjau sugadinti to, ką anksčiau suprojektavau, ir tingu būdu pridedu vielos trinkeles, o vėliau prie šių jungčių reikia pridėti vielos, o ne vario pėdsakus, todėl atminkite, kad jei naudojate mano dizainą.

Dėl akivaizdžių priežasčių „Arduino“plokštė ir ekranas yra prijungti prie PCB per kaiščių kaiščius, o ne lituojami tiesiai ant PCB. Tokiu būdu po ekranu yra daug vietos kitiems komponentams, tokiems kaip rezistoriai, tranzistoriai ir net garso lizdas.

Aš įdėjau mikro mygtukus, kurie pagal konstrukciją turėtų būti lituojami tiesiogiai, bet taip pat galite naudoti skyles moterų kaiščiams ir prijungti mygtukus prie laido, jei norite, kad jie būtų sumontuoti ant korpuso, o ne ant PCB.

Mes taip pat įdėsime kitą moterišką garso lizdą, kad prijungtume prie fotoaparato jungiamą laidą. Taip plokštė tampa universalesnė, nes tokiu būdu galėsime prisijungti prie kitų kamerų kitomis jungtimis.

11 žingsnis: jutikliai

Image
Image
Sensoriai
Sensoriai

Apsvarstykime jutiklio įdiegimo būdus.

Taigi jutiklio maitinimo įtampa bus 5 V, ir norėdami suaktyvinti fotoaparatą, jo signalo kaištyje turi būti skaitmeninis AUKŠTAS. Pirmas dalykas, kuris man atėjo į galvą, yra judesio jutiklis, tiksliau PIR. „Arduino“parduodami moduliai, kuriuose yra šis jutiklis ir kurie daro tik tai, ko norime. Jie maitinami 5 V įtampa ir turi išvesties kaištį, ant kurio jie įdeda 5 V, kai jie suaktyvinami, mums tereikia prijungti jo kaiščius prie 3,5 mm garso lizdo ir galime prijungti tiesiai prie plokštės. Tačiau reikia atkreipti dėmesį į tai, kad šiam jutikliui reikia laiko įkaisti ir pradėti tinkamai veikti, todėl nesitikėkite, kad jis tinkamai veiks, kai tik jį prijungsite, duokite jam šiek tiek laiko, tada nustatykite ir visa, kas gyva patenka į jį diapazonas suaktyvins fotoaparatą.

Kadangi mes galvojame jau sukurtų „Arduino“jutiklių plokščių kryptimi, ateina į galvą dar vienas garsas. Šios plokštės paprastai yra pagamintos taip, kad jose būtų vienas kaištis, kuris išvestų analogišką jo paimto garso vertę, o kitas - skaitmeninis, kuris išvestų loginį AUKŠTUMĄ, jei jo paimtas garsas kerta tam tikrą lygį. Šį lygį galime nustatyti taip, kad jutiklis nekreiptų dėmesio į mūsų balsą, bet užfiksuotų plojimą. Tokiu būdu, kaskart plojant, suaktyvinate fotoaparatą.

12 žingsnis: „PoweeEeEer“

„PoweeEeEer“
„PoweeEeEer“
„PoweeEeEer“
„PoweeEeEer“

Manau, kad lengviausias būdas įjungti šį dalyką yra naudojant maitinimo banką, o ne išoriškai. Mes išlaikysime telefono ar bet kokio kito įkrovimo funkcionalumą ir valdysime dabartinį srautą į plokštę per jungiklį. Mes surasime išvesties USB jungties kaiščius maitinimo banko grandinės plokštėje, kurie yra GND ir Vcc (5 V), ir litavimo laidai tiesiai ant jų ir iš ten į mūsų plokštę.

13 žingsnis: aptvaras.. Kažkaip

Aptvaras.. Kažkaip
Aptvaras.. Kažkaip
Aptvaras.. Kažkaip
Aptvaras.. Kažkaip
Aptvaras.. Kažkaip
Aptvaras.. Kažkaip

Aš tikrai kovojau su tuo. Kai atplėšiau dėžutę, į kurią norėjau įdėti esamą PCB, supratau, kad nėra gražaus būdo viską sutalpinti taip, kaip norėjau, ir tada nusprendžiau sukurti naują PCB, šį kartą su optiniais jungikliais. Norėjau įdėti PCB tiesiai po šonu, ant kurios gręžčiau skyles tam tikriems komponentams, kuriuos reikia pamatyti/paliesti. Kad tai veiktų, turėčiau lituoti ekraną ir „Arduino“tiesiai prie plokštės, be lizdų ar antraščių, ir čia yra pirmoji problema. Buvo absoliučiai siaubinga ką nors išspręsti, nes nebuvau pasirengusi iškart lituoti, kol neišbandysiu, kad viskas veikia, ir aš tikrai negalėjau nieko išbandyti, nes negalėjau jo lituoti ir pan. nedaryk šito. Problema numeris, padarius skyles ant dėklo. Manau, kad matavimus padariau neteisingai, nes nė viena korpuso skylė nebuvo suderinta su PCB komponentais ir turėjau juos padidinti, o mygtukai buvo per aukštai ant PCB ir jie visada buvo paspausti, kai įdėjau plokštę į vietą aa ir kadangi norėjau garso lizdų šone, aš taip pat turėjau padidinti tas skyles, kad pirmiausia tilptų lizdai, o tada nuleisti lentą, kad ekranas ir mygtukai praeitų.. rezultatas yra baisus.

Aš padariau baisias skyles mažiau baisias, uždengdamas viršutinę dalį plonu kartonu, kuriame iškirpiau daugiau pagrįstų skylių sudedamosioms dalims ir.. vis tiek baisu, bet manau, kad akiai lengviau.

Verdiktas, siūlau tai padaryti perkant komponentus, kurie tvirtinami prie korpuso, o ne tiesiai ant PCB. Tokiu būdu jūs turite daugiau laisvės sudėti komponentus ir mažiau vietų padaryti klaidų.

14 žingsnis: Baigti

Image
Image
Fin
Fin

Baigiau, bet čia yra kažkas, ką būčiau padaręs kitaip:

Naudokite geresnės kokybės 3,5 mm garso lizdus. Tie, kuriuos naudojau, linkę trumpinti gnybtus įkišdami ar ištraukdami lizdą, dėl to tiekimas sutrumpėja, taigi iš naujo nustatomas „Arduino“, arba jis tiesiog sukuria netikrus paleidiklius. Aš tai sakiau ankstesniame žingsnyje, bet sakau dar kartą.. ne lituokite „Arduino“plokštės be antraščių/lizdo, tai tik apsunkina bet kokio tipo trikčių šalinimą ar naujo kodo įkėlimą ir pan. Aš taip pat manau, kad būtų buvę naudinga turėti signalą, kad daiktas įjungtas, nes dažnai negaliu pasakyti nepaspaudęs mygtuko, nes ekranas išsijungia. Ir paskutinis dalykas - pauzės funkcija. Įsivaizduoju, kad tai būtų naudinga, kai, pavyzdžiui, prijungus PIR jutiklį, todėl, kad jam reikia laiko sušilti, arba tiesiog judant aplink, nenorite, kad jis suveiktų, todėl galite tiesiog pristabdyti viską, bet taip pat galite tiesiog pasukti išjungtas fotoaparatas taip.. kad ir kas.

Kitas tvarkingas dalykas yra užtraukti jį ant trikojo, nes greičiausiai jis bus naudojamas ten.

Nesivaržykite bet ko paklausti apie šį projektą komentaruose ir norėčiau sužinoti, ar jį kuriate, ir kaip jums pavyko.

Rekomenduojamas: