Turinys:
- Prekės
- 1 žingsnis: statykite
- 2 žingsnis: fotoaparatas
- 3 žingsnis: stebėkite
- 4 žingsnis: dekoravimas
- 5 žingsnis: programavimas
- 6 žingsnis: paruoškite aviečių PI
- 7 žingsnis: programinė įranga
- 8 žingsnis: programavimas - fotoaparato peržiūra
- 9 žingsnis: programavimas - „Big Dome“mygtukas
- 10 veiksmas: paskelbkite „Twitter“
- 11 žingsnis: kai kurių elementų sujungimas
- 12 žingsnis: laidų prijungimas
- 13 žingsnis: „MagicBox“
Video: „RaspberryPI“fotoaparatas - „MagicBox“: 13 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-31 10:22
Prieš kurį laiką man kilo ši beprotiška idėja sukurti fotografavimo mašiną iš Raspberry PI. Mano mieste buvo nedidelis šou, kuriame žmonės eidavo ir rodydavo, ką gamina ar gamina naudodamiesi elektronika, kompiuteriais ir tt … Aš buvau kaip vargšo kūrėjas, bet vietinis.
Vienas artėjo, ir mes kartu su žmona statome šį daiktą.
Kaip tai veikia ?
Paspausite mėlyną mygtuką - jis pradės mirksėti - ir po 3 sekundžių bus padaryta nuotrauka. Kitoje fotoaparato pusėje yra monitorius, rodantis atgalinį laiką ir nufotografavus, nuotraukos peržiūra.
Dabar galite nusiųsti jį į „Twitter“ir „Facebook“arba atšaukti ir bandyti dar kartą. Tai taip paprasta.
Viskas yra užprogramuota „Python“, naudojant PI kadrų buferį - nėra „Xorg“, jokios GUI.
Štai vaizdo įrašas apie projekto veikimą
Prekės
- Raspberry PI (naudoju 2 versiją)
- „Raspberry PI“kamera (naudojant 1 versiją)
- 3 „Big Dome“mygtukai
- TFT/LCD monitorius su VGA/HDMI
- MDF
- Metaliniai vyriai, varžtai ir kt.
- Elektriniai įrankiai
- Laisvas laikas ir daug linksmybių
1 žingsnis: statykite
Jį statyti buvo smagu. Daug pjovimo, dažymo ir gręžimo.
Pagrindinei fotoaparato struktūrai sukurti naudojau MDF plokštes. Jie yra lengvi ir su jais lengva dirbti. Be to, tai buvo vienos rūšies mediena, kurią vietinio fabriko lazerinė mašina sugebėjo pjauti.
Prieigą prie laidų viduje padarė monitoriaus pusė, naudojant hidraulinius vyriai, kad jie galėtų padėti pakelti monitorių.
2 žingsnis: fotoaparatas
Fotoaparatas
Fotoaparatas yra dėžutė, kurios matmenys: 60 cm x 40 cm x 30 cm Jūsų gali būti mažesnė, didesnė, tai priklauso nuo jūsų. Tiesiog reikia pritaikyti monitoriui, kurį ketinate naudoti. MDF plokštės buvo pjaustytos lazeriu vietiniame „Fablab“. Galinėje pusėje reikia padaryti 3 skyles - du didelius kupolinius mygtukus ir vieną monitoriui. Priekyje 2 skylės - viena skirta dideliam kupolo mygtukui, kita - mažesnė - „Raspberry PI“fotoaparatui. Neturiu konkrečių matavimų - tiesiog įsivaizduokite fotoaparatą ir naudokitės juo.
3 žingsnis: stebėkite
Monitorius
Monitoriaus atrama buvo pridėta pridedant mažų medienos gabalų, kad būtų palaikomas jo dydis.
Tai buvo juostelė iš plastikinio korpuso ir pritvirtinta varžtais. Norėdami jį pakelti, buvo naudojami du hidrauliniai vyriai (naudojami).
4 žingsnis: dekoravimas
Kadangi man labai patinka mano „Fuji X-T30“stilius, nuėjome ir padarėme kažką panašaus.
Pirmiausia padengėme putomis, o paskui purškėme juodai. Po dažymo pridėjome aliuminio foliją sidabrinėms dalims ir apvyniokite
Norėdami imituoti objektyvą, mes tiesiog naudojome apvalų „Tupperware“, kai padarėme nedidelę skylę, skirtą „Raspberry PI“fotoaparato moduliui sėdėti.
5 žingsnis: programavimas
Fotoaparato programavimas buvo iššūkis, bet tai buvo labai smagu.
Nėra GUI - tai veikia CLI ir veikia „Python“3 versijoje.
Pirmiausia pradėjau nuo mygtukų testavimo ir programavimo, toliau fotografavau naudodami jau pateiktus įrankius ir „Python“API. Tada perėjau prie nuotraukų perdengimo fotoaparato išvestyje (atgaliniam skaičiavimui) ir šalia bendrauti su „Twitter“ir „Facebook“.
Po to, kai man buvo patogu, kaip dėlionė, aš surinkau visas dalis. Čia mes einame tuo pačiu procesu. Pradėkite lėtai ir nuo mažo ir eikite į greitą ir didelį.
Pirma, pradėkime nuo „Raspberry PI“konfigūravimo
6 žingsnis: paruoškite aviečių PI
Aš nekalbėsiu, kaip įdiegti „Raspbian“į „Raspberry PI“- ten yra daug vadovėlių, net oficialioje „Raspberry PI“svetainėje.
Jums tereikia turėti prieigą prie SSH arba prijungti prie monitoriaus ir prijungti klaviatūrą bei pelę.
PASTABA: Pradėdami nuo „Raspberry PI“kameros, turite ją prijungti prie monitoriaus. Iki tol visus veiksmus galima atlikti naudojant SSH.
Įkėlę „Raspberry PI“, turime įjungti „Raspberry PI“kamerą. Tam naudokime raspi-config įrankį.
sudo raspi-config
- Pasirinkite 5 parinktį - sąsajos parinktys
- Pasirinkite P1 - įjungti/išjungti ryšį su Raspberry PI kamera
- Pasakyti "taip
- už gerai
- Pasirinkite Baigti
- Pasirinkite Taip, kad dabar paleistumėte iš naujo
Po perkrovimo galime tęsti
7 žingsnis: programinė įranga
Mums reikės įdiegti kai kurias „Python“bibliotekas. Tai buvo atnaujinta naujausiai „Raspbian“versijai - „Buster“
Pirma, leiskite nustatyti „Python 3“kaip numatytąjį. Sekite šią nuorodą, kad sužinotumėte, kaip ją nustatyti SYSTEM WIDE
Bibliotekos:
- python-pil.imagetk manipuliuoti vaizdais
- python-rpi.gpio, kad galėtumėte pasiekti GPIO PINS
- „python-picamera“, kad pasiektumėte „Raspberry PI“kamerą
- „Tweepy“, norėdamas pasidalyti nuotrauka „Twitter“
- facebook-sdk, kad galėtumėte bendrinti „Facebook“puslapyje
sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip
Norėdami įdiegti „facebook-sdk“, naudokite „Python pip“
sudo pip3 įdiegti facebook-sdk
8 žingsnis: programavimas - fotoaparato peržiūra
Vienas iš šiam projektui keliamų reikalavimų buvo, kad ši programa veiktų CLI režimu. Taigi, mes turime parodyti fotoaparato vaizdą konsolėje. Tam naudokime „Python Picamera“. Po to naudokime pil.imagetk, kad būtų rodoma perdanga fotoaparato peržiūros viršuje
Mūsų mažoje programoje (mes kursime mažas programas, kol viena didelė pabaigoje) bus rodoma fotoaparato peržiūra.
#!/usr/bin/env python
importuoti laiką importuoti picamera iš laiko importavimo miego kameros = picamera. PiCamera () # Nustatykite norimą skiriamąją gebą camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1), išskyrus (KeyboardInterrupt, SystemExit): print ("Exiting …") camera.stop_preview ()
Norėdami tai išbandyti, tiesiog vykdykite
python cameraPreview.py
Peržiūrėkite fotoaparatą su vaizdais viršuje
Kadangi norėjau, kad prieš fotografuojant būtų rodomas atgalinis laikas, man reikėjo vaizdų, sutampančių su fotoaparato peržiūra.
Sukurkite-p.webp" />
Šis kodas sutaps su 1-p.webp
importuoti picamerafrom iš PIL importuoti vaizdą iš laiko importavimo miego su picamera. „PiCamera“() kaip kamera: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1-p.webp
Pabandyk tai:
python imageOverlay.py
Dabar sukurkime atgalinį skaičiavimą su perdangos vaizdais. Kaip ir sukūrėte 1-p.webp
Po to tiesiog naudokite šį kodą:
importuoti fotoaparatą
iš PIL importo vaizdo iš laiko importavimo miego su „picamera“. „PiCamera“() kaip kamera: camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () # load image img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # create pad = Image.new ('RGB', (((img1.size [0] + 31) / / 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) pad.paste (img1, (0, 0)) o = camera.add_overlay (pad.tobytes (), dydis = img1.size) o.alpha = 128 o.layer = 3 miego režimas (2) #remove previous overlay camera.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tobaitai (), dydis = img2.size) o.alpha = 128 o.layer = 3 miego režimas (2) # pašalinkite ankstesnę perdangos kamerą.remove_overlay (o) pad.paste (img3, (0, 0)) o = kamera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 miegas (2)
Dabar vykdykite:
python imageOverlayCounter.py
Ir žiūrėkite atgalinį skaičiavimą
Oho - daug kodo ir nepadaryta nuotrauka … Išspręskime tai derindami viską kartu - peržiūrėkite fotoaparatą, skaičiuokite atgal ir nufotografuokite
importuoti picamerafrom iš PIL importuoti vaizdą iš laiko importavimo miego def overlayCounter (): # load image img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.-p.webp
Pabandyk tai:
python pictureWithTimer.py
Ir čia mes turime Yoda
9 žingsnis: programavimas - „Big Dome“mygtukas
Didelis kupolo mygtukas yra didelis apvalus mygtukas - maždaug 100 mm skersmens su mažu šviesos diodu. Jis sako, kad veikia esant 12 V įtampai, tačiau 3,3 V „Raspberry PI“pakanka, kad jis užsidegtų
Bandymui naudokite schemą
Kodas:
iš RPi importo GPIO
takeButton = 17 ledButton = 27 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledButton, GPIO. OUT) #Light LED GPIO.output (ledButton, True) # Blokavimo funkcija GPIO.wait_for_edge (takeButton, GPIO. FALLING) print („Mygtukas paspaustas“) GPIO.output (ledButton, False) GPIO.cleanup ()
Kai kurie kodo paaiškinimai Viena iš verčių gavimo iš GPIOS formų yra pertraukos (kita - apklausa) - krašto aptikimas.
Kraštas yra perėjimo iš HIGH į LOW (krintantis kraštas) arba LOW į HIGH (kylančio krašto) pavadinimas. Kai PIN kodas nėra prie nieko prijungtas, bet koks skaitymas bus neapibrėžtas. Sprendimas yra minėto PIN kodo įtraukimas į viršų/žemyn. „Raspberry PI“leidžia sukonfigūruoti traukimo aukštyn/žemyn rezistorius naudojant programinę įrangą.
Linija
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
sukonfigūruoja tą PIN kodą, kad tai padarytų - patraukite aukštyn
Kodėl traukti? Na, didysis kupolo mygtukas turi 2 PIN kodus - paspauskite, kad sulaužytumėte arba paspauskite, kad padarytumėte (kaip ir mažus mygtukus, kurie dažnai būna su „Arduino“/„Raspberry PI“rinkiniais). Prijungiau jį prie mygtuko „paspauskite, kad padarytumėte“. Paspaudus grandinė užsidaro ir praeina elektra (paprastai atidaryta).
Linija
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
palauks (faktiškai sustabdydama scenarijaus vykdymą), kol aptiks krentantį PIN kodą - atleidus mygtuką, elektros srovė sumažės, o PIN kodas pasikeis nuo 3.3v iki 0v
Šviesos diodo PIN kodas skirtas tik mygtuko šviesos diodui uždegti
Daugiau informacijos apie stūmimo jungiklius rasite „Arduino Tutorials“, „Wikipedia“apie „push to make“arba „push to break“ir GPIO pertraukimus
Dabar sujungkime mygtuką su fotoaparatu - nufotografuokite tik paspaudę mygtuką
importuoti picameraf iš laiko importuoti miego režimą iš RPi importuoti GPIO iš PIL importo paveikslėlio # PASTABA: tai bus atšaukimo mygtukas pagrindinėje programoje.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledCancel, GPIO. OUT) def onLeds (): GPIO.output (ledCancel, True) miego režimas (1) def off : GPIO.output (ledCancel, False) Image.open ('1.png') # Sukurti perdangą # Naudojama su img1, nes visi yra vienodo dydžio bloknotai = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # įklijuokite perdangą - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), dydis = img1.size) ov.alpha = 200 # sluoksnis yra 3, nes fotoaparato peržiūra yra 2 sluoksnyje ov.layer = 3 miego režimas (1) camera.remove_overlay (ov) # įklijuokite perdangą - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # sluoksnis yra 3, nes fotoaparato peržiūra yra 2 sluoksnyje ov.layer = 3 miega (1) camera.remove_overlay (ov) # įklijuokite perdangą - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # sluoksnis yra 3, nes fotoaparato peržiūra yra ant 2 sluoksnio ov. GPIO. FALLING) onLeds () overlayCounter () camera.capture ('pushTesting.jpg') camera.stop_preview () offLeds () GPIO.cleanup ()
Šiek tiek kodo paaiškinimo
Ji pradeda fotoaparato peržiūrą ir laukia, kol bus paspaustas mygtukas. Paspaudus mygtuką, užsidega šviesos diodas ir prasideda atgalinis skaičiavimas. Pasiekus pabaigą, fotografuojama ir šviesos diodas išjungiamas
10 veiksmas: paskelbkite „Twitter“
Dabar mes naudosime „Python“ir parašysime tviterį!:) Jums reikės atvaizdo paskelbti - rinkitės protingai.
Pirma, turime pasiekti „Twitter“API ir tam turime sukurti APP. Eikite į https://apps.twitter.com ir sukurkite naują programą.
Turėsite kreiptis dėl kūrėjo paskyros - užpildykite keletą klausimų ir patvirtinkite savo el. Pašto adresą. Po to galėsite sukurti naują APP.
Sukūrę APP, eikite į raktus ir žetonus ir sugeneruokite prieigos raktą ir prieigos rakto paslaptį. Bus rodomas langas su TIK RAKTAIS - KOPIJUOKITE IR IŠSAUGOKITE VĖLIAU.
Naudokite šį kodą, norėdami nusiųsti nuotrauką į savo „Twitter“paskyrą. Nepamirškite užpildyti:
- vartotojas_raktas
- vartotojų_slaptis
- prieigos raktas
- access_token_secret
„Twitter“pranešimas yra tekstas, kurį reikia išsiųsti „tweet“.
jpg_foto_to_send yra nuotrauka, kuri bus pridėta prie tviterio. Turėkite paveikslėlį tame pačiame kataloge kaip „Python“scenarijus ir pakeiskite kodo pavadinimą.
importuoti „tweepy“# „Twitter“nustatymai def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['Consumer_key'], cfg ['Consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret'] tweepy. API (auth) # Siųsti „Twitter“def sendToTwitter (): cfg = {"Consumer_key": "", "Consumer_secret": "", "access_token": "", "access_token_secret": "" "api = get_api (cfg) # Būsenos pranešimas tweet = "Twitter message" status = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()
Patikrinkite savo „Twitter“sklaidos kanalą, kad gautumėte „Twitter“.
Štai „Tweet“
Arba žemiau:
#RaspberryPI MagicBox. Fotografuokite, peržiūrėkite ir nusiųskite į „Twitter“ir „Facebook“. Pagaminta iš Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- Bruno Ricardo Santos (@feiticeir0) 2020 m. Vasario 29 d
11 žingsnis: kai kurių elementų sujungimas
Dabar sujunkime „Big Dome Push“mygtuką, paspausdami jį, skaičiuodami atgal, nufotografuokite, nuspręskite, ar siųsti jį „Twitter“.
Mes pridėsime kitą perdangos vaizdą ir naudosime visus tris mygtukus. Kai fotografuojama, užsidegs visi 3 mygtukų šviesos diodai.
Pridedame dar vieną paveikslėlį, kuriame rodomos piktogramos, kurias galima paskelbti socialiniuose tinkluose
„SelectOption.png“rodo „Facebook“ir „Twitter“piktogramas
„Aenviar.png“yra tik pranešimas, kuriame siunčiama į socialinius tinklus.
Vaizdo įraše nerodomas mėlynas mygtukas (fotoaparato priekyje), tačiau šviečia šviesos diodas ir jis pradeda mirksėti vos jį paspaudus.
Kodas pridedamas, jei norite
Tai yra galutinis bandymo kodas prieš pagrindinę programą.
# kodavimas = utf-8 importuoti picamera importuoti _sriegio importavimo subprocesas kaip sp iš laiko importuoti miegą iš RPi importuoti GPIO iš PIL importo vaizdų sriegimo # „Twitter“importuoti „tweepy“# Atšaukti paveikslėlį CancelButton = 24 # Fotografavimo mygtukas LED takePicButtonLed = 27 # Paskelbti socialinio tinklo mygtuke LED postSNLed = 22 # Atšaukti mygtuko LED CancelButtonLed = 5 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO). PUD_UP) GPIO.setup (socialNetworkButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (CancelButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (takePicButtonLed, GPIO. OUT) GPIO.setup (postSNLed, GPIO. OUT)] GPIO.setup (cancelButtonLed, GPIO. OUT) # „Twitter“nustatymai def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['vartotojiškas raktas'], cfg ['vartotojos paslaptis']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) return tweepy. API (auth) # Siųsti „Twitter“def sendToTwitter (): cfg = {"con sumer_key ":" "," Consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Būsenos pranešimas tweet =" MagicBox nurodomas testavimas. #MagicBox #RaspberryPI #Aviečių #Instrukcijos "status = api.update_with_media (" pushTesting.jpg ", tweet) #Facebook AOth def get_api_facebook (cfg): graph = facebook. GraphAPI (cfg ['access_token']) #Gauti puslapį paskelbti kaip puslapį. Jei norite paskelbti kaip save, galite praleisti # eilutę.] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) return graph # Siųsti į facebook def sendToFacebook (): #Values for access cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Caption the image" albumas = "" api.put_photo (vaizdas = atviras ("pushTesting.jpg", "rb"), caption = "Vaizdo antraštė ") # Tik šviesa TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (CancelButtonLed, False) # Tik šviesa Atšaukti ir SocialNetwork mygtukas def cancelPostLEDS (): GPI O. output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (CancelButtonLed, True) # Mirksėti fotografuoti LED, o atgal skaičiuoti def countingTimerPicture (): GPIO.output (takePicButtonLed, True) miego režimas (0,5) GPIO.output (takePicButtonLed, False) miego režimas (0.5) GPIO.output (takePicButtonLed, True) miego režimas (0.5) GPIO.output (takePicButtonLed,False) sleep (0.5) GPIO.output (takePicButtonLed, True) miegas (0.5) GPIO.output (takePicButtonLed, False) # Blink postSNLed skelbiant socialiniuose tinkluose def blinkPosting (stop_event): # Pradėti, kol (ne stop_event.is_set ()): spausdinti ("išjungta") GPIO.output (postSNLed, False) miego režimas (0,5) print ("įjungtas") GPIO.output (postSNLed, True) miego režimas (0,5) def timer (): GPIO.output (takePicButtonLed, True)) miego (1) GPIO.output (postSNLed, True) miego (1) GPIO.output (CancelButtonLed, True) miego (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.putput (CancelButtonLed, True)) padding = Image.new ('RGB', (((img.size [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16,)) padding.paste (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.layer = 1 # Rodyti sluoksnio peržiūrą 3 def displayPreview3 (imgName): # Kadangi PIL vaizdų demonstravimas yra kvailas #, mes naudojame fotoaparato perdangą, kad būtų rodomas # peržiūra img = Image.open (imgName) padding = Image.new ('RGB', (((img.size [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16,)) padding.paste (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.alpha = 150 ov.layer = 3 return ov # Function overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # Sukurti Perdangos bloknotas = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Įklijuokite perdangą pad.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Funkcija persidengti image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Sukurti perdangą # Naudojama su img1, nes visi yra vienodo dydžio bloknotai = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # įklijuokite perdangą - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # sluoksnis yra 3, nes fotoaparato peržiūra yra ant 2 sluoksnio ov.layer = 3 miego režimas (1) camera.remove_overlay (ov) # įklijuokite perdangą - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # sluoksnis yra 3, nes fotoaparato peržiūra yra 2 sluoksnyje ov.layer = 3 miego režimas (1) camera.remove_overlay (ov) # paste perdanga - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # sluoksnis yra 3, nes fotoaparato peržiūra yra 2 sluoksnyje ov.layer = 3 miego režimas (1) camera.remove_overlay (ov) # Pagrindinė funkcija # Išvalyti ekraną, kad nebūtų įkrovos pranešimų # tikriausiai geriau tai padaryti bash tmp = sp.call ('clear', apvalkalas = tiesa) kamera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.brightness = 55 camera.sharpness = 0 camera.contrast = 0 #camera.exposure_co mpensation = 0 #camera.exposure_mode = 'auto' #camera.meter_mode = 'vidurkis' #Bandymas čia pabandykite: while (Tiesa): camera.start_preview () #Rodyti LED tik fotografuotiTakePicLed () #Palaukite, kol bus užfiksuotas Paveikslėlis GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Pradėkite temą skaičiuoti su šviesos diodais, kol rodomi vaizdai # Tikriausiai galima naudoti „overlayCounter“funkcijoje, # nes ji taip pat turi laikmačius nuotraukoms rodyti, bet LED efektus # nebūtų tas pats. stop_preview () #display image displayPreview ('pushTesting.jpg') # Rodyti perdangą oo = overlaysn () # Rodyti atšaukiamus šviesos diodus arba paskelbti socialiniuose tinkluose CancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_event_dutton, GPIO. FALLING), o (tiesa): jei GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cancelButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Socialinių tinklų mygtukas" sendToTwitter () sendToFacebook () camera.remove_overlay (o) break if GPIO.event_detected (cancelButton): #print "Atšaukta" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remove_event_donceptor (takeButton) „Išėjo …“) #offLeds () GPIO.cleanup ()
12 žingsnis: laidų prijungimas
Laidai tik prijungia „Big Dome Push“mygtukus prie „Raspberry PI“.
Tiesiog sekite Fritzing schemą.
Ryšiai yra šie:
Ryšys RPI GPIO PIN GND žalias mygtukasGND (#3) GND geltonas mygtukasGND (#9) GND mėlynas mygtukasGND (#39) Fotografavimas (mėlynas mygtukas „Push to make“) 17 (BCM) Skelbimas socialiniuose tinkluose (žalias mygtukas Mygtukas „Paspauskite, kad padarytumėte“) 23 (BCM) Atšaukti (Geltonas mygtukas „Paspauskite, kad padarytumėte“) 24 (BCM) Mėlynas mygtukas LED27 (BCM) Žalias mygtukas LED22 (BCM) Geltonas mygtukas LED5 (BCM)
Šilumos susitraukimas taip pat pažymėtas spalvomis
- Juoda yra GND jungtys
- Geltonos spalvos yra „pastūmimo sukurti“jungtys
- Mėlynos yra LED jungtys
GPIO. BCM numeriai prieš GPIO. BOARD ryšius
Kadangi mano ryšiai yra BCM, manau, kad dabar tinkamas laikas kalbėti apie tai ir skirtumą tarp BCM ir BOARD.
Pagrindinis skirtumas yra tai, kaip jūs nurodote GPIO PIN kodus, o tai savo ruožtu paskatins prisijungti. GPIO.board nurodys PIN kodus pagal numerį, atspausdintą ant bet kurio GPIO išdėstymo internete.
GPIO. BCM remiasi PIN numeriais, kaip juos mato „Broadcom SOC“. Tikėtina, kad tai pasikeis naujesnėse „Raspberry PI“versijose.
Pinout.xyz svetainėje lentos numeriai yra tie, kurie yra šalia kaiščių, o BCM nurodomi taip - BCM X (kur X yra skaičius)
13 žingsnis: „MagicBox“
Prie šio veiksmo pridėtas kodas yra galutinis.
Galite paleisti jį su aviečių PI įkrova, net nereikia prisijungti. Norėdami tai padaryti, tiesiog sukurkite šį mažą scenarijų kataloge, į kurį įdėjote kodą - atitinkamai pakeiskite kelius
#!/bin/bash
cd/home/pi/magicbox python MagicBox.py
Padarykite tai vykdomą
chmod +x start_magicbox.sh
Dabar paskambinkite /etc/rc.local, prieš pat išėjimą 0
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
išsaugoti ir mesti.
Dabar, kiekvieną kartą paleidus iš naujo, „Python“programa bus vykdoma
PASTABA: visi vaizdo failai turi būti tame pačiame kataloge kaip ir scenarijus. Jums reikia turėti:
- 1.png
- 2.png
- 3.png
- Aenviar.png
- PasirinkiteOption.png
Visus šiuos failus galite gauti „MagicBox“„github“.
Rekomenduojamas:
Giroskopo platforma/ fotoaparatas: 5 žingsniai (su nuotraukomis)
Giroskopo platforma/ fotoaparato gimbalas: šis nurodymas buvo sukurtas vykdant Pietų Floridos universiteto „Makecourse“projekto reikalavimą (www.makecourse.com)
1979 m. „Merlin Pi“aukštos kokybės fotoaparatas: 7 žingsniai (su nuotraukomis)
1979 m. „Merlin Pi“aukštos kokybės fotoaparatas: Šis sugedęs senas „Merlin“rankinis žaidimas dabar yra apčiuopiamas ir praktiškas „Raspberry Pi“aukštos kokybės fotoaparato dėklas. Keičiamas fotoaparato objektyvas matosi iš akumuliatoriaus dangtelio gale, o priekyje - mygtukų matrica
„Pasidaryk pats“fotoaparatas: 7 žingsniai (su nuotraukomis)
„Pasidaryk pats“fotoaparatas: tai yra pamoka, kaip sukurti savo fotokabą, panašią į tradicinę, matomą prekybos centruose, pramogų parkuose ir prekybos centruose visame pasaulyje. Tačiau ši kabina yra visiškai skaitmeninė ir yra daug pigesnė/lengviau pagaminama namuose. Aš surašiau
Radijo bangomis valdomas fotoaparatas: 7 žingsniai (su nuotraukomis)
Radijo bangomis valdomas fotoaparatas: Sveiki atvykę į Indy Mogul 43 serijos: Radijo bangomis valdomo fotoaparato kūrimo planus. Visada maniau, kad būtų puiku turėti nuotoliniu būdu valdomą fotoaparato laikiklį, kuris galėtų pakreipti ir pasukti. Man kilo idėja naudoti nuotolinio valdymo automobilius. Maniau, kad bus
Fotoaparatas, skirtas nesudėtingoms nuotraukoms: 22 žingsniai (su nuotraukomis)
Lengva fotoaparatas, skirtas greitai pailgintoms nuotraukoms .: Aš tikrinau vieną iš kitų instrukcijų, kaip sukurti laiko tarpą. Jis gana gerai padengė filmo dalį. Jis papasakojo apie nemokamą programinę įrangą, kurią galėtumėte atsisiųsti, kad sukurtumėte filmus. Aš pasakiau sau: manau, kad pamatysiu, ar galiu