Sisällysluettelo:

Pimp My Cam: 14 vaihetta (kuvilla)
Pimp My Cam: 14 vaihetta (kuvilla)

Video: Pimp My Cam: 14 vaihetta (kuvilla)

Video: Pimp My Cam: 14 vaihetta (kuvilla)
Video: Could this tiny tube of metal fix our broken suspension? - Edd China's Workshop Diaries 28 2024, Marraskuu
Anonim
Pimp My Cam
Pimp My Cam

Tässä tämä projekti on peräisin.

Ajattelin vähän aikaa sitten kuvata aikaviiveitä. "Miten?" Kysyin itseltäni? Ensimmäinen vastaus oli "No.. kuvailet vain jotain ja nopeutat sitä ja se on siinä". Mutta onko se todella niin yksinkertaista? Ensinnäkin haluan käyttää siihen DSLR -kameraani, ja Nikon D3100 -laitteella on 10 minuutin aikaraja videon kuvaamiseen. Toiseksi, vaikka minulla olisi kamera, jolla ei olisi aikarajoitusta videon kuvaamiseen, entä jos haluan tehdä todella pitkän aikakatkaisun, kuten 12 tuntia? Teen 12 tunnin pituisen 1080p -videon. Epäilen, että akku kestäisi niin kauan, ja se ei ole kovin käytännöllistä, vai onko? Selvä, "kuvausvideoidea". No sitten on kuvia. Otan valokuvan kameralla tietyin väliajoin ja päädyn satoihin kuviin, joita käsittelen ohjelmiston avulla videon tekemiseksi..?

Vaikutti oivalta idealta, joten päätin kokeilla sitä. Joten päädyin haluamaan tehdä laitteen, johon voin syöttää ajanjakson, ja tämän ajanjakson perusteella se laukaisi kamerani jatkuvasti. Ja kun olemme sitä mieltä, miksi emme lisää jotain muuta, kuten liike-laukaista ja niin edelleen?

Vaihe 1: Mutta.. Miten?

Mutta miten?
Mutta miten?

MITEN? on seuraava kysymyksemme, johon ei löydy vastausta. Ajoituksen, laukaisun, antureiden ja sellaisten asioiden vuoksi ei ole yllätys, että ensimmäinen, joka tuli mieleen, oli tietysti Arduino. Selvä, mutta meidän on kuitenkin opittava laukaisemaan kamera. Hm.. servo kuuma liimattu kehon kameraan? Ehdottomasti ei, haluamme tämän olevan hiljainen ja energiatehokas. Energiatehokas - miksi? Koska haluan tehdä siitä kannettavan ja kiinnitän siihen akun, en ole aina lähellä pistoketta. Joten miten laukaista se sitten.. se on oikeastaan aika yksinkertaista.

Nikon tiesi jo, että aiot hankkia kauko -ohjaimen ja muita lisävarusteita, ja he sanoivat "okei, annamme heille kaiken tämän, mutta teemme erityisen portin, jotta voimme ansaita enemmän rahaa näistä lisävarusteista", häpeä Nikon. Tätä porttia kutsutaan (minun tapauksessani) MC-DC2: ksi, ja halvin tapa saada se käsiini on ostaa etäsuljin eBayssa 2-3 dollarilla ja käyttää vain kaapelia.

*Joissakin muissa kameroissa, kuten Canonissa, on yksinkertainen 3,5 mm: n kuulokeliitäntä, joka on tehty samaan käyttöön, joten voit käyttää kaapelia vanhoista kaiuttimista/kuulokkeista.

Vaihe 2: Opi käyttämään kameraa

Image
Image
Tapoja laukaista
Tapoja laukaista

Joka tapauksessa, tässä on sopimus, portilla on 3 kiinnostuksen kohteena olevaa liitäntää (Ground, Focus ja Shutter), ja sinulla on ne juuri tuhoutuneen kauko -ohjaimen kaapelin päässä. Nämä kolme yhteyttä ovat meille tärkeitä, koska jos lyhennämme maata ja tarkennusta, kamera tarkentaa aivan kuten painat tarkennuspainiketta ja sitten, kun tämä yhteys säilyy, voit lyhentää maata ja suljinta ja kamera ottaa kuvan aivan kuin olisit painanut kameran laukaisinta.

Voit testata tämän tekemällä kirjaimellisesti oikosulun kaapelin päässä oleviin jännitteisiin johtoihin tunnistaaksesi, mikä johto on mikä. Kun olet tehnyt sen, tunnistamisen helpottamiseksi väritämme ne seuraavasti:

Maa = MUSTA; Tarkennus = VALKOINEN; Suljin = PUNAINEN

Okei, nyt meidän on opetettava Arduinoa tekemään tämä puolestamme.

Vaihe 3: Tapoja käynnistää

Image
Image

Yksinkertaisin asia, jonka voimme kertoa Arduinolle lähettää ulkomaailmaan, on sen digitaalinen lähtösignaali. Tämä signaali voi olla joko KORKEA (looginen '1') tai LOW (looginen '0'), josta nimi "digitaalinen", tai muunnettuna sen ytimen merkitykseksi: 5 V loogiselle HIGH: lle ja 0 V loogiselle LOW: lle.

Mitä me teemme näillä digitaalisilla signaaleilla? Emme voi vain liittää niitä kameraan ja odottaa kameran tietävän, mitä haluamme. Kuten olemme nähneet, meidän on lyhennettävä kameran liitännät, jotta se voi reagoida, joten meidän on käytettävä Arduinon digitaalisia signaaleja ajaaksemme joitain komponentteja, jotka voivat oikosulkea liittimiinsä tämän lähettämän sähköisen signaalin mukaan. *Kuten kuvailin, saatat ajatella "Ah, releet!" mutta ei ei. Rele hoitaa työn, mutta olemme tekemisissä niin pienien virtojen kanssa, että voimme helposti käyttää puolijohteiden mustaa taikuutta.

Ensimmäinen komponentti, jota kokeilen, on optoerotin. Olen nähnyt niiden toteutuvan eniten tätä varten ja se on luultavasti paras ratkaisu. Optoerotin on sähkökomponentti, jolla ohjaat lähtöpiiriä, kun tulopiiri on täysin eristetty siitä. Tämä saavutetaan lähettämällä tietoa valolla, tulopiiri sytyttää LED -valon ja lähdön valotransistori kytkeytyy vastaavasti.

Joten käytämme optoerotinta tällä tavalla: kerromme Arduinollemme, että se lähettää digitaalisen HIGH: n yhdelle, jos se on digitaalinen nasta, tämä signaali on käytännössä 5 V, joka ajaa optoerottimen sisällä olevaa LEDiä ja sen sisällä olevaa valotransistoria "lyhyt" sen lähtöliittimet, kun se havaitsee kyseisen valon, ja päinvastoin, se "irrottaa" sen liittimet, koska LED -valosta ei tule valoa, kun lähetämme digitaalisen LOW -arvon Arduinon kautta.

Käytännössä tämä tarkoittaa: yksi Arduinon digitaalisista nastoista on kiinnitetty optoerottimen ANODE -nastaan, Arduinon GND on kiinnitetty KATODIIN, kameran GND on kiinnitetty EMITTERIIN ja FOCUS (tai SULJIN) KERÄYTTÖÖN. Katso käyttämäsi optoerottimen tietolomakkeesta nämä nastat. Käytän 4N35: tä, joten voit seurata kaaviota sokeasti, jos et todella välitä siitä, mitä optoerottimen sisällä tapahtuu. Tarpeetonta sanoa, että tarvitsemme kaksi näistä, koska meidän on hallittava sekä kameran TARKENNUSTA että SULJETTA.

Koska näimme, miten tämä toimii, kun lähdössä on valotransistori, miksi emme kokeilisi sitä pelkästään yksinkertaisella NPN -transistorilla. Tällä kertaa tuomme digitaalisen signaalin suoraan (vastuksen poikki) transistorin pohjaan ja liitämme sekä kameran että Arduinon GND: n lähettimeen ja kameran tarkennuksen/sulkimen transistorin kerääjään.

Tarvitsemme jälleen kaksi näistä, koska ohjaamme kahta signaalia. Käytän BC547B: tä ja voit periaatteessa käyttää mitä tahansa NPN: tä tähän, koska ohjaamamme virta on yksi milliampeeri.

Molemmat komponentit toimivat, mutta optoerottimen valinta on luultavasti parempi idea, koska se on turvallisempaa. Valitse transistorit vain, jos tiedät mitä olet tekemässä.

Vaihe 4: Käynnistyskoodin kirjoittaminen

Image
Image
Käynnistyskoodin kirjoittaminen
Käynnistyskoodin kirjoittaminen

Kuten aiemmin sanoimme, käytämme Arduinon digitaalisia nastoja signalointiin. Arduino voi käyttää näitä molempia tietojen lukemiseen tai kirjoittamiseen siihen, joten ensimmäinen asia, joka meidän on tehtävä, on määritellä setup () -funktiossa, että käytämme kahta Arduinon digitaalista nastaa lähtöön seuraavasti:

pinMode (FOCUS_PIN, OUTPUT);

pinMode (SHUTTER_PIN, OUTPUT);

jossa FOCUS_PIN ja SHUTTER_PIN voidaan joko määrittää "#define NAME -arvolla" tai int ennen setup () -funktiota, koska saatat muuttaa nastan, jotta on helpompaa muuttaa arvoa vain yhdessä paikassa koko koodin jälkeen.

Seuraava asia, jonka teemme, on kirjoittaa trigger () -funktio, joka tekee juuri sen, kun se suoritetaan. Lisään vain kuvan koodiin. Sinun tarvitsee vain tietää, että pidämme ensin FOCUS_PIN -asetusta HIGH -tilassa tietyn ajan, koska meidän on odotettava kameran keskittymistä kohteeseen, johon osoitamme sen, ja sitten vain hetken (kun FOCUS_PIN on edelleen HIGH) laita SHUTTER_PIN HIGH vain ottaaksesi kuvan.

Lisäsin myös mahdollisuuden ohittaa tarkennuksen, koska sitä ei tarvita, jos kuvaamme timelapsea jostakin, joka ei muuta sen etäisyyttä kamerasta ajan kuluessa.

Vaihe 5: Luokkaväli {};

Image
Image
Intervalin manipulointi Arduinon kautta
Intervalin manipulointi Arduinon kautta

Nyt kun olemme käynnistäneet kameran pois tieltä, meidän on tehtävä tämä intervallimittariksi lisäämällä toimintoja kahden kuvan välisen ajan manipuloimiseksi. Jotta saisit kuvan siitä, mitä teemme, tässä on joitain primitiivisiä koodeja haluamamme toiminnallisuuden osoittamiseksi:

void loop () {

viive (väli); laukaista(); }

Haluan pystyä muuttamaan tämän aikavälin, esimerkiksi 5 sekunnista aina 20-30 minuuttiin asti. Ja tässä on ongelma, jos haluan muuttaa sen 5 sekunnista 16 sekuntiin tai jotain siltä väliltä, käytän 1 sekunnin lisäystä, jolloin jokaisen pyyntöni mukaan lisätä aikaväliä, väli kasvaa 1 sekunnin ajan. Se on hienoa, mutta entä jos haluan siirtyä 5 sekunnista 5 minuuttiin? Siihen tarvitsisin 295 pyyntöä 1 sekunnin välein, joten minun on luonnollisesti lisättävä lisäysarvo johonkin suurempaan, ja minun on määriteltävä, millä täsmällisellä aikavälellä (kynnyksellä) lisäystä muutetaan. Toteutin tämän:

5s-60s: 1 s lisäys; 60s-300s: 10s lisäys; 300–3600 s: 60 sekunnin lisäys;

mutta kirjoitin tämän luokan säädettäväksi, jotta voit määrittää omat kynnysarvot ja lisäykset (kaikki on kommentoitu.h -tiedostossa, jotta voit tietää, mihin arvoja voi muuttaa).

Esimerkki, jonka olen antanut välin manipuloinnista, on ilmeisesti tehty tietokoneella, nyt meidän on siirrettävä se Arduinolle. Tämä koko luokka, Interval, on sijoitettu yhteen otsikkotiedostoon, jota käytetään luokan/toimintojen ilmoitusten ja määritelmien tallentamiseen (ei oikeastaan, mutta se voidaan tehdä tässä esimerkissä vahingoittamatta). Esittääksemme tämän otsikkotiedoston arduino -koodillemme käytämme "#include" Interval.h "" (tiedostojen on oltava samassa hakemistossa), mikä varmistaa, että voimme käyttää otsikkotiedostossa määritettyjä toimintoja pääkoodissamme.

Vaihe 6: Intervalin manipulointi Arduinon kautta

Image
Image
Intervalin manipulointi Arduinon kautta
Intervalin manipulointi Arduinon kautta
Intervalin manipulointi Arduinon kautta
Intervalin manipulointi Arduinon kautta

Nyt haluamme pystyä muuttamaan aikavälin arvoa, joko lisäämään tai pienentämään sitä. Joten se on kaksi asiaa, joten käytämme kahta digitaalista signaalia, joita ohjataan kahdella painikkeella. Luemme toistuvasti painikkeille määrittämiemme digitaalisten nastojen arvot ja jäsennämme ne funktion checkButtons (int, int); mikä lisää aikaväliä, jos painiketta "ylös" painetaan, ja lyhentää aikaväliä, jos painike "alas". Lisäksi jos molempia painikkeita painetaan, se muuttaa muuttuvan tarkennuksen arvoa, joka ohjaa tarkennusta vai ei.

Osa koodista ((millis () - prevBtnPress)> = debounceTime) käytetään poistamiseen. Tapa, jolla kirjoitin sen, tarkoittaa, että rekisteröin ensimmäisen painalluksen boolen muuttujalla btnPressed ja muistan sen tapahtuma -ajan. Odotan tietyn ajan (debounceTime) ja jos painiketta painetaan edelleen, reagoin. Se tekee myös "tauon" jokaisen muun painikkeen painamisen välillä, joten vältetään useita painalluksia siellä, missä niitä ei ole.

Ja lopuksi:

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

prevTrigger = millis (); laukaista(); }

tarkistamme ensin, onko viimeisen laukaisun (prevTrigger) ja nykyisen ajan (millis ()) välinen aika (kaikki on jaettu 1000: llä, koska se on millisekunteina ja väli on sekunneissa) yhtä suuri tai suurempi kuin väli haluamme, ja jos näin on, muistamme nykyisen ajan viimeksi, kun käynnistimme kameran, ja käynnistämme sen sitten.

Kun tämä oli valmis, teimme periaatteessa intervallimittarin, mutta emme ole kaukana ohi. Emme vieläkään näe intervallimittarin arvoa. Se näkyy vain sarjamonitorissa, emmekä ole aina tietokoneen lähellä, joten nyt otamme käyttöön jotain, joka näyttää meille aikavälin sitä muuttaessamme.

Vaihe 7: Välin näyttäminen

Image
Image
Näytetään aikaväli
Näytetään aikaväli
Näytetään aikaväli
Näytetään aikaväli
Näytetään aikaväli
Näytetään aikaväli

Tässä esittelemme näytön. Käytin 4 -numeroista moduulia, jota ohjaa TM1637, koska minun on käytettävä sitä vain ajan näyttämiseen eikä mitään muuta. Helpoin tapa käyttää näitä Arduinolle tehtyjä moduuleja on käyttää jo tehtyjä kirjastoja. Arduinon sivustolla on sivu, joka kuvaa TM1673 -sirua ja linkin ehdotettuun kirjastoon. Latasin tämän kirjaston ja on kaksi tapaa esitellä nämä kirjastot Arduino IDE: lle:

  1. Siirry Arduino -ohjelmistosta Luonnos> Sisällytä kirjasto> Lisää. ZIP -kirjasto ja etsi juuri lataamasi.zip -tiedosto
  2. voit tehdä sen, mitä Arduino tekee manuaalisesti, ja purkaa vain sen kansion kirjasto, johon Arduino tallentaa kirjastot, Windowsissa: C: / Users / Käyttäjätunnus / Documents / Arduino / libraries \.

Kun olet lisännyt kirjaston, lue "ReadMe" -tiedosto, josta löydät yhteenvedon eri toimintojen toiminnasta. Joskus tämä ei riitä, joten haluat mennä hieman syvemmälle ja tutkia otsikkotiedostoja, joissa näet, miten toiminnot on toteutettu ja mitä ne edellyttävät syöttöargumenteina. Ja tietysti paras tapa saada käsitys siitä, mihin kirjasto pystyy, tarjoaa yleensä esimerkin, jonka voit käyttää Arduino -ohjelmistosta valitsemalla Tiedosto> Esimerkit> KirjastoNimi> Esimerkki. Tämä kirjasto tarjoaa yhden esimerkin, jota suosittelen suorittamaan näytössäsi vain nähdäksesi, toimiiko näyttösi oikein, ja kehotan sinua säätämään esimerkissä näkyvää koodia ja näkemään itse, mitä kukin toiminto tekee ja miten näyttö reagoi se. Olen tehnyt niin ja tämän olen keksinyt:

se käyttää neljää allekirjoittamatonta 8 -bittistä kokonaislukua kullekin numerolle (0bB7, B6, B5, B4, B3, B2, B1, B0). Ja kutakin näistä biteistä B6-B0 käytetään tietyn numeron jokaiselle segmentille, ja jos bitti on 1, sen ohjaama segmentti syttyy. Nämä kokonaisluvut tallennetaan taulukkoon nimeltä data . Näiden bittien asettaminen näytölle suoritetaan display.setSegments (data); tai voit luonnollisesti käyttää mitä tahansa numeroita erityisesti ja asettaa ne joko manuaalisesti (data [0] = 0b01111001) tai voit käyttää funktiota encodeDigit (int); ja muunna lähettämäsi numero bittien mukaan (data [0] = display.encodeDigit (3));. Bittiä B7 käyttää vain toinen numero tai data [1] kaksoispisteen aktivoimiseksi.

Koska kirjoitin funktiot INTERVAL -luokan noitaan, josta saan tietyt välin numerot muodossa M1M0: S1S0, jossa M tarkoittaa minuutteja ja S sekunteja, on luonnollista, että käytän encodeDigitFunction (int); aikavälin näyttämiseksi seuraavasti:

displayInterval () {

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

Nyt, milloin tahansa, kun minun on näytettävä aikaväli näytölle, voin kutsua displayInterval () -toiminnon.

*Huomaa "0x80 |…" tiedoissa [1]. Sitä käytetään varmistamaan, että datan [1] bitti B7 on aina 1, joten kaksoispiste syttyy.

Viimeinen asia näytöstä, virrankulutus. Sillä ei ehkä ole suurta merkitystä, koska emme pidä sitä päällä pitkään, mutta jos haluat tehdä tästä entistä akkuystävällisemmän, harkitse näytön kirkkauden pienentämistä, koska se kuluttaa 3 kertaa enemmän virtaa suurimmalla kirkkaudella kuin alimmalla.

Vaihe 8: Yhdistä kaikki

Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen

Tiedämme, miten kamera käynnistetään, kuinka intervallia käsitellään ja kuinka sama aikaväli näytetään näytöllä. Nyt meidän on vain yhdistettävä kaikki nämä asiat yhteen. Aloitamme tietysti loop () -funktiosta. Tarkistamme jatkuvasti painikkeiden painalluksia ja reagoimme niiden mukaan valintanappeilla (int, int) ja muutamme aikaväliä vastaavasti ja näytämme muutetun aikavälin. Myös silmukassa () tarkistamme jatkuvasti, onko viimeisestä laukaisusta tai painikkeen painamisesta kulunut riittävästi aikaa, ja kutsumme tarvittaessa liipaisin () -toiminnon. Pienemmän virrankulutuksen vuoksi sammutamme näytön jonkin ajan kuluttua.

Lisäsin kaksivärisen ledin (punainen ja vihreä, yhteinen katodi), joka palaa vihreänä liipaisimen () aikana ja syttyy punaisena yhdessä näytön kanssa, jos tarkennus on päällä ja se pysyy pois päältä, jos tarkennus on päällä vinossa.

Lisäksi siirrymme vielä pienempään Arduinoon, Pro Miniin.

Vaihe 9: Viimeisen asian lisääminen

Viimeisen asian lisääminen
Viimeisen asian lisääminen
Viimeisen asian lisääminen
Viimeisen asian lisääminen
Viimeisen asian lisääminen
Viimeisen asian lisääminen

Toistaiseksi.. olemme luoneet vain intervalometrin. Hyödyllinen, mutta voimme tehdä paremmin.

Tässä oli mielessäni: Intervalometri tekee sen oletuksena POISTA, kun kiinnitämme jonkinlaisen ulkoisen kytkimen/anturin, joka sitten pysäyttää intervallimittarin ja reagoi kytkimen/anturin tuloon. Kutsutaan sitä anturiksi, se ei välttämättä ole kytketty anturi, mutta viittaan siihen sillä tavalla.

Ensinnäkin, kuinka voimme havaita, että olemme kiinnittäneet anturin?

Kaikki käyttämämme/valmistamamme anturit tarvitsevat kolme johtoa, jotka yhdistävät ne arduinoon (Vcc, GND, Signal). Tämä tarkoittaa, että voimme käyttää 3,5 mm: n ääniliitäntää anturin tuloliitäntänä. Ja miten se ratkaisee ongelmamme? No, on olemassa tyyppejä 3,5 mm: n liittimestä "kytkimellä", jossa on nastat, jotka on oikosuljettu liittimen nastoihin, jos niissä ei ole urosliitintä, ja ne irrotetaan, kun liitin on läsnä. Tämä tarkoittaa, että meillä on tiedot anturin läsnäolosta. Käytän vetovastusta kuvan osoittamalla tavalla (digitaalinen nasta lukee HIGH ilman anturia ja LOW anturin ollessa kiinnitettynä) kuvassa tai voit myös kiinnittää digitaaliseen tappiin liittimen nastaan, joka on normaalisti kytketty maahan ja määritä digitaalinen nasta INPUT_PULLUP, se toimii kummallakin tavalla. Joten nyt meidän on muokattava koodiamme niin, että se tekee kaiken tähän mennessä kirjoittamamme vain, jos anturi ei ole läsnä tai kun digitaalinen nastatarkistus on HIGH. Muokkasin sitä myös niin, että se näyttää "SENS" näytöllä sen välin sijaan, joka on hyödytön tässä tilassa, mutta tarkennus on edelleen meille merkityksellinen. näyttää tarkennustilan punaisen ledin kautta.

Mitä anturi todella tekee?

Ainoa mitä sinun tarvitsee tehdä, on laittaa 5 V sen signaalitappiin, kun haluamme laukaista kameran. Tämä tarkoittaa, että tarvitsemme toisen Arduinon digitaalisen nastan, joka tarkistaa tämän nastan tilan ja kun se rekisteröi HIGH: n, sen tarvitsee vain soittaa liipaisintoiminto () ja kamera ottaa kuvan. Helpoin esimerkki, jota testataan, toimiiko tämä, on yksinkertainen painike, jossa on alasvetovastus. Kiinnitä painike anturin Vcc: n ja signaalitapin väliin ja lisää vastus signaalitapin ja GND: n väliin, jolloin signaalitappi on GND: ssä, kun painiketta ei paineta, koska vastuksen läpi ei virtaa virtaa, ja kun painiketta painetaan, asetamme signaalitapin suoraan HIGH: iin ja Arduino lukee sen ja laukaisee kameran.

Päätimme tämän koodin kirjoittamisen.

*Haluan huomata joitain käyttämiäni ääniliitäntöjä koskevia ongelmia. Kun urosliitin työnnetään liittimeen, GND ja jompikumpi kahdesta muusta nastasta saattavat joskus oikosulkua. Tämä tapahtuu heti ja vain liittimen asettamisen aikana, mutta se on silti tarpeeksi pitkä, jotta Arduino rekisteröi lyhyen, jotta Arduino käynnistyy uudelleen. Tämä ei tapahdu niin usein, mutta voi silti olla vaara, ja Arduinon tuhoaminen on mahdollista, joten vältä käyttämiäni liittimiä.

Vaihe 10: Sisältää Messin

Sisältää Messin
Sisältää Messin
Sisältää Messin
Sisältää Messin
Sisältää Messin
Sisältää Messin
Sisältää Messin
Sisältää Messin

Kuvista näkyy, että leipälauta muuttuu sotkuiseksi ja olemme valmiit, joten meidän on siirrettävä kaikki parketille/piirilevylle. Valitsin PCB: n, koska luulen tekeväni lisää näitä, jotta voin helposti toistaa ne.

Käytin Eaglea piirilevyn suunnittelussa ja löysin malleja kaikille käyttämilleni osille. Suunnittelussani on yksi pieni asia, jota en haluaisi tehdä, ja se on langansuoja näytön Vcc: lle. Olen nähnyt sen liian myöhään enkä halunnut pilata aiemmin suunnitelmaani ja lisäsin laiska tapa lisätä langatyynyjä ja myöhemmin joutua lisäämään langan näihin liitäntöihin kuparijälkien sijasta, joten jos käytät kaivosmallia.

Arduino -kortti ja näyttö on liitetty piirilevyyn naarasliittimien kautta eikä juotettu suoraan piirilevylle ilmeisistä syistä. Näin näytön alla on runsaasti tilaa muille komponenteille muille komponenteille, kuten vastuksille, transistoreille ja jopa ääniliittimelle.

Olen laittanut mikropainikkeet, jotka suunnittelun mukaan tulisi juottaa suoraan, mutta voit myös käyttää reikiä naarasliittimille ja liittää napit langalla, jos haluat, että ne asennetaan koteloon eikä piirilevyyn.

Laitamme myös toisen naarasääniliittimen kameraan liitettävän kaapelin liittämiseksi. Näin levystä tulee monipuolisempi, koska tällä tavalla voimme muodostaa yhteyden muihin kameroihin muilla liittimillä.

Vaihe 11: Sens0rs

Image
Image
Sensorit
Sensorit

Katsotaanpa tapoja toteuttaa anturi.

Joten anturin syöttöjännite on 5 V, ja sen on pystyttävä tarjoamaan digitaalinen HIGH sen signaalitappiin, kun haluamme laukaista kameran. Ensimmäinen asia, joka tuli mieleeni, on liiketunnistin, tarkemmin sanottuna PIR. Arduinolle myydään moduuleja, joissa on tämä anturi ja jotka tekevät mitä haluamme. Niissä on 5 V: n virta ja niissä on ulostulonappi, johon he laittavat 5 V: n, kun ne laukeavat. Yksi huomioitava asia on kuitenkin se, että tämä anturi tarvitsee aikaa lämmetäkseen ja toimiakseen kunnolla, joten älä odota sen toimivan kunnolla heti, kun liität sen pistorasiaan, anna sille jonkin aikaa ja asenna se sitten ja kaikki elossa oleva alue laukaisee kameran.

Koska ajattelemme jo tehtyjen Arduino -anturilevyjen suuntaan, tulee mieleen toinen, ääni. Nämä levyt on yleensä tehty siten, että niissä on yksi nasta, joka antaa analogisen arvon sen ottamalle äänelle, ja toinen, digitaalinen, joka antaa loogisen KORKEA, jos sen ottama ääni ylittää tietyn tason. Voimme asettaa tämän tason siten, että anturi jättää huomiotta äänemme, mutta rekisteröi taputuksen. Näin käynnistät kameran aina, kun taputat.

Vaihe 12: PoweeEeEer

PoweeEeEer
PoweeEeEer
PoweeEeEer
PoweeEeEer

Mielestäni helpoin tapa saada virtaa tähän asiaan on virtapankilla, ei ulkoisesti. Säilytämme puhelimen tai minkä tahansa lataamisen toiminnallisuuden ja hallitsemme nykyistä virtausta levylle kytkimen kautta. Paikannamme USB -lähtöliittimen nastat virtapankissa olevasta piirilevystä, jotka ovat GND ja Vcc (5V) ja juotosjohdot suoraan niihin ja sieltä piirilevyllemme.

Vaihe 13: Kotelo.. Jotenkin

Kotelo.. Jotenkin
Kotelo.. Jotenkin
Kotelo.. Jotenkin
Kotelo.. Jotenkin
Kotelo.. Jotenkin
Kotelo.. Jotenkin

Olen todella kamppaillut tämän kanssa. Kun haarasin laatikkoa, johon halusin laittaa nykyisen piirilevyn, tajusin, että ei ole kivaa tapaa sovittaa kaikkea haluamaani, ja sitten päätin suunnitella uuden piirilevyn, tällä kertaa optoerottimilla. Halusin sijoittaa piirilevyn aivan sen sivun alle, jolle poraisin reikiä tietyille komponenteille, jotka on nähtävä/kosketettava. Jotta tämä toimisi, minun on juotettava näyttö ja Arduino suoraan levylle ilman pistorasioita tai otsikoita, ja siinä on ensimmäinen ongelma. Oli aivan kauheaa tehdä vianmääritystä, koska en ollut valmis juottamaan sitä heti, ennen kuin testasin, että kaikki toimii, enkä voinut testata mitään, koska en voinut juottaa sitä ja niin edelleen. älä tee tätä. Ongelma numero dos, reikien tekeminen koteloon. Luulen, että mittasin väärin, koska mikään kotelon rei'istä ei ollut linjassa piirilevyn osien kanssa ja minun piti suurentaa niitä ja painikkeet olivat liian korkealla piirilevyllä ja niitä painettiin aina, kun laitoin levyn paikalleen ja koska halusin ääniliittimet sivulle, minun piti suurentaa myös ne reiät, jotta ne sopisivat ensin liittimiin ja sitten laskea levyn näytön ja painikkeiden läpi.. tulos on kauhea.

Tein kauheista reikistä vähemmän kauheita peittämällä yläosan ohuella pahvilla, josta leikkasin järkevämpiä reikiä osille ja.. se on silti kauheaa, mutta mielestäni helpompaa silmille.

Tuomio, ehdotan, että teet tämän ostamalla komponentteja, jotka asennetaan koteloon eikä suoraan piirilevyyn. Näin sinulla on enemmän vapautta sijoittaa komponentteja ja vähemmän paikkoja tehdä virheitä.

Vaihe 14: Fin

Image
Image
Fin
Fin

Olen valmis, mutta tässä on jotain, jonka olisin tehnyt toisin:

Käytä laadukkaampia 3,5 mm: n ääniliitäntöjä. Käytettyäni yleensä lyhentää liittimiä, kun asetat tai vedät liittimen ulos, mikä johtaa joko oikosulkuun syöttöön ja nollaa Arduinon tai tuottaa vain väärennettyjä laukaisimia. Olen sanonut tämän edellisessä vaiheessa, mutta sanon sen uudelleen.. älä juota Arduino -levyä ilman otsikoita/pistorasiaa, se vain vaikeuttaa kaikenlaista vianmääritystä tai uuden koodin lataamista ja niin edelleen. Luulen myös, että led -merkinanto siitä, että asia on päällä, olisi ollut hyödyllistä, koska en usein voi kertoa sitä ilman painikkeen painamista, koska näyttö sammuu. Ja viimeinen asia, taukotoiminto. Uskon, että siitä on hyötyä esimerkiksi silloin, kun kytket PIR -anturin pistorasiaan, koska se tarvitsee aikaa lämmetä, tai juuri kun siirrät sitä ympäri, et halua sen laukeavan, joten voit vain keskeyttää kaiken, mutta voit myös yksinkertaisesti kääntää pois kamerasta niin.. mitä tahansa.

Toinen siisti asia on kiinnittää tarranauha jalustalle, koska sitä käytetään todennäköisesti siellä.

Voit vapaasti kysyä mitä tahansa tästä projektista kommenteissa ja haluaisin tietää, rakennatko sen ja miten se onnistui sinulle.

Suositeltava: