Obsah:
- Zásoby
- Krok 1: Zostavte
- Krok 2: Fotoaparát
- Krok 3: Monitor
- Krok 4: Zdobenie
- Krok 5: Programovanie
- Krok 6: Príprava Raspberry PI
- Krok 7: Softvér
- Krok 8: Programovanie - Náhľad kamery
- Krok 9: Programovanie - tlačidlo Big Dome
- Krok 10: Uverejnite príspevok na Twitteri
- Krok 11: Kombinácia niektorých prvkov
- Krok 12: Zapojenie
- Krok 13: MagicBox
Video: Fotoaparát RaspberryPI - MagicBox: 13 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-31 10:24
Pred nejakým časom som dostal tento bláznivý nápad vytvoriť fotografický stroj z Raspberry PI. V mojom meste bola malá show, kde ľudia chodili ukazovať, čo vyrábajú alebo vyrábajú pomocou elektroniky, počítačov atď. Bol som ako chudobný Maker Faire, ale v miestnom meradle.
Jedna sa blížila a spolu s mojou manželkou sme túto vec postavili.
Ako to funguje ?
Stlačíte modré tlačidlo - začne blikať - a po 3 sekundách sa nasníma obrázok. Na druhej strane fotoaparátu je monitor, ktorý zobrazuje odpočítavanie a po nasnímaní snímky ukážku fotografie.
Teraz sa môžete rozhodnúť odoslať ho na Twitter a Facebook alebo ho zrušiť a skúsiť to znova. Je to také jednoduché.
Všetko je naprogramované v Pythone, pričom sa používa framebuffer PI - nepoužíva sa žiadny Xorg ani GUI.
Tu je video z fungovania projektu
Zásoby
- Raspberry PI (používam verziu 2)
- Raspberry PI Camera (pomocou verzie 1)
- 3x tlačidlá Big Dome
- TFT/LCD monitor s VGA/HDMI
- MDF
- Kovové pánty, skrutky atď.
- Elektrické náradie
- Voľný čas a veľa zábavy
Krok 1: Zostavte
Stavať to bola zábava. Veľa rezania, maľovania a vŕtania.
Na stavbu základnej štruktúry kamery som použil MDF panely. Sú ľahké a ľahko sa s nimi pracuje. Tiež to bol jeden druh dreva, ktorý laserový stroj v miestnom Fablabe dokázal vyrezať.
Prístup k elektroinštalácii vo vnútri bol zaistený zo strany monitora pomocou hydraulických závesov, aby mohli pomôcť pri zdvíhaní monitora.
Krok 2: Fotoaparát
fotoaparát
Fotoaparát je škatuľka s nasledujúcimi rozmermi: 60 cm x 40 cm x 30 cm Váš môže byť menší, väčší, je to na vás. Stačí sa prispôsobiť monitoru, ktorý budete používať. Panely MDF boli rezané laserom v miestnom Fablabe. Na zadnej strane sú potrebné tri otvory - dve veľké kupolovité tlačidlá a jedno na monitor. Vpredu 2 otvory - jeden pre veľké kupolové tlačidlo a druhý - menší - pre kameru Raspberry PI. Nemám konkrétne merania - predstavte si fotoaparát a použite ho.
Krok 3: Monitor
Monitor
Podpera monitora bola vyrobená pridaním malých kúskov dreva, ktoré ho v rámci jeho rozmerov podopierali.
Bol vybratý z plastového puzdra a zaistený na mieste skrutkami. Na pomoc pri dvíhaní slúžili dva hydraulické pánty (použité).
Krok 4: Zdobenie
Keďže sa mi veľmi páči štýl môjho Fuji X-T30, išli sme a urobili sme niečo podobné.
Najprv sme ho pokryli penou a potom sme ho nastriekali na čierno. Po nátere sme pridali alobal na strieborné časti a zabalili ho
Na simuláciu objektívu sme použili okrúhly Tupperware, v ktorom sme urobili malý otvor pre modul kamery Raspberry PI.
Krok 5: Programovanie
Programovanie fotoaparátu bolo výzvou, ale bolo to super zábava.
Neexistuje žiadne grafické rozhranie - beží na rozhraní CLI a beží na Pythone verzie 3.
Najprv som začal testovaním a programovaním tlačidiel, potom som fotografoval pomocou už poskytnutých nástrojov a rozhrania Python API. Potom som prešiel k prekrytiu obrázkov vo výstupe fotoaparátu (na odpočítavanie) a potom k interakcii s Twitterom a Facebookom.
Potom, čo mi to všetko vyhovovalo, som ako puzzle zložil všetky diely dohromady. Tu ideme rovnakým procesom. Začnite pomaly a pomaly a rýchlo.
Najprv začneme konfiguráciou Raspberry PI
Krok 6: Príprava Raspberry PI
Nebudem vysvetľovať, ako nainštalovať Raspbian na Raspberry PI - existuje veľa návodov, dokonca aj na oficiálnom webe Raspberry PI.
Stačí mať k nemu prístup SSH alebo ho pripojiť k monitoru a zapojiť klávesnicu a myš.
POZNÁMKA: Keď začínate s kamerou Raspberry PI, musíte ju mať zapojenú do monitora. Kým nie sú všetky kroky možné vykonať pomocou SSH.
Po zavedení systému Raspberry PI musíme povoliť kameru Raspberry PI. Použime na to nástroj raspi-config.
sudo raspi-config
- Vyberte možnosť 5 - Možnosti rozhrania
- Vyberte P1 - Povoliť/Zakázať pripojenie k kamere Raspberry PI
- Povedz áno
- pre OK
- Vyberte Dokončiť
- Teraz vyberte možnosť Áno a reštartujte počítač
Po reštarte môžeme pokračovať
Krok 7: Softvér
Na inštaláciu budeme potrebovať niekoľko knižníc Pythonu. Toto bolo aktualizované na najnovšiu verziu Raspbian - Buster
Najprv nastavme Python 3 ako predvolený. Nasledujte tento odkaz, aby ste vedeli, ako ho nastaviť SYSTEM WIDE
Knižnice:
- python-pil.imagetk na manipuláciu s obrázkami
- python-rpi.gpio pre prístup k PINOM GPIO
- python-picamera na prístup k kamere Raspberry PI
- Tweepy zdieľajte fotografiu na Twitteri
- facebook-sdk na zdieľanie na facebookovej stránke
sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip
Na inštaláciu facebook-sdk použite Python pip
sudo pip3 nainštalujte facebook-sdk
Krok 8: Programovanie - Náhľad kamery
Jednou z požiadaviek, ktoré som tomuto projektu stanovil, bolo, aby tento program bežal v režime CLI. Preto musíme na konzole zobraziť obraz kamery. Na to použijeme Python Picamera. Potom použijeme pil.imagetk na zobrazenie prekrytia v hornej časti náhľadu kamery
Náš malý program (budeme vyvíjať malé programy až do konca jedného veľkého) zobrazí ukážku z fotoaparátu.
#!/usr/bin/env python
import time import picamera from time import sleep camera = picamera. PiCamera () # Nastavte požadované rozlíšenie camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1) okrem (KeyboardInterrupt, SystemExit): print ("Exiting …") camera.stop_preview ()
Ak to chcete vyskúšať, spustite ho
python cameraPreview.py
Ukážka fotoaparátu s obrázkami navrchu
Keďže som chcel, aby sa pred fotografovaním zobrazilo odpočítavanie, potreboval som obrázky prekrývajúce náhľad fotoaparátu.
Vytvorte obrázok-p.webp" />
Nasledujúci kód sa bude prekrývať 1-p.webp
import picamerafrom PIL import Image from time import sleep with picamera. PiCamera () as camera: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1.png ') # create pad = Image.new (' RGB ', (((img.size [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16,)) pad.paste (img, (0, 0)) o = camera.add_overlay (pad.tobytes (), size = img.size) o.alpha = 128 o.layer = 3 while True: sleep (1)
Skús to:
python imageOverlay.py
Teraz vytvoríme odpočítavanie s prekrytými obrázkami. Rovnako ako ste vytvorili obrázok 1.png, vytvorte ďalšie dva obrázky, na ktorých sú 2 a 3.
Potom použite nasledujúci kód:
importovaná pikamera
from PIL import Image from time import sleep with picamera. PiCamera () as camera: 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 (), size = img1.size) o.alpha = 128 o.layer = 3 sleep (2) #remove previous overlay camera.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tobytes (), size = img2.size) o.alpha = 128 o.layer = 3 sleep (2) # remove previous overlay camera.remove_overlay (o) pad.paste (img3, (0, 0)) o = camera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 spánok (2)
Teraz to spustite:
python imageOverlayCounter.py
A pozrite sa na odpočítavanie
Wow - veľa kódu a nič nebolo odfotené … Vyriešime to kombináciou všetkých - ukážka kamery, odpočítavanie a odfotenie
import picamerafrom PIL import Image from time import sleep def overlayCounter (): # 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,)) # prilepte prekrytie - 3 pad.paste (img1, (0, 0)) o = camera.add_overlay (pad.tobytes (), size = img1.size) o.alpha = 128 o.layer = 3 spánok (1) # Odstrániť predchádzajúcu prekrývajúcu kameru.odstrániť_ prekrytie (o) # prilepiť prekrytie - 2 podložky. vložiť (img2, (0, 0)) o = camera.add_overlay (pad.tobytes (), size = img2.size) o.alpha = 128 o.layer = 3 spánok (1) #odstrániť predchádzajúcu prekrývajúcu kameru.remove_overlay (o) # vložiť prekrytie - 3 pad.paste (img3, (0, 0)) o = camera.add_overlay (podložka. tobytes (), size = img3.size) o.alfa = 128 o.layer = 3 spánok (1) camera.remove_overlay (o) kamera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () overlayCounter () camera.capture ('testingCounter.jpg') camera.stop_preview ()
Skús to:
python pictureWithTimer.py
A máme tu Yodu
Krok 9: Programovanie - tlačidlo Big Dome
Veľké kupolové tlačidlo je veľké okrúhle tlačidlo s priemerom približne 100 mm s malou diódou LED. Hovorí, že to funguje na 12 V, ale 3,3 V Raspberry PI stačí na to, aby sa rozsvietilo
Na testovanie použite schému
Kód:
z RPi importu 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) # Blokovacia funkcia GPIO.wait_for_edge (takeButton, GPIO. FALLING) tlač ("Stlačené tlačidlo") GPIO.output (ledButton, False) GPIO.cleanup ()
Niektoré vysvetlenia kódu Jednou z foriem získavania hodnôt z GPIOS je prerušovanie (iné je hlasovanie) - detekcia okrajov.
Okraj je názov prechodu z HIGH na LOW (klesajúca hrana) alebo LOW do HIGH (stúpajúca hrana). Keď PIN nie je k ničomu pripojený, akékoľvek čítanie bude nedefinované. Riešením je mať v uvedenom kóde PIN odpor hore/dole. Raspberry PI umožňuje softvérovo konfigurovať odpory pull up/down.
Čiara
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
nakonfiguruje PIN tak, aby to urobil - vytiahnite
Prečo ťahať hore? Tlačítko s veľkou kupolou má 2 PIN - stlačením rozlomíte alebo stlačením vyrobíte (rovnako ako malé tlačidlá, ktoré sa často dodávajú so súpravami Arduino/Raspberry PI). Pripojil som to k PINu tlačidla „push to make“. Po stlačení sa obvod uzavrie a elektrina prejde (normálne otvorený).
Čiara
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
počká (efektívne pozastaví spustenie skriptu), kým nezistí pád PINu - uvoľnením tlačidla sa preruší tok elektriny a PIN prejde z 3,3v na 0v
LED PIN slúži len na rozsvietenie LED na tlačidle
Viac informácií o tlačidlách z Arduino Tutorials, Wikipedia o push to make alebo push to break a prerušeniach GPIO
Teraz spojme tlačidlo s fotoaparátom - Nasnímajte obrázok iba vtedy, keď je tlačidlo stlačené
importovať obraz z času importovať spánok z RPi importovať GPIO z PIL importovať obrázok # POZNÁMKA: Toto bude tlačidlo Zrušiť v hlavnom programe # Používam ho len kvôli prehľadnosti videa. Tlačidlo = 24 LEDZrušiť = 5 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledCancel, GPIO. OUT) def onLeds (): GPIO.output (ledCancel, True) sleep (1) def offLeds (): GPIO.output (ledCancel, False) # Funkcia na prekrytie obrázku def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Vytvorte prekrytie # Používa sa s img1, pretože všetky majú rovnakú veľkosť pad = Image.new ('RGB', ((((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # prilepte prekrytie - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # vrstva je 3, pretože ukážka kamery je na vrstve 2 ov.layer = 3 spánok (1) camera.remove_overlay (ov) # prilepte prekrytie - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # vrstva je 3, pretože ukážka kamery je na vrstve 2 ov.layer = 3 spánok (1) camera.remove_overlay (ov) # prilepte prekrytie - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # vrstva je 3, pretože náhľad kamery je na vrstve 2 ov.layer = 3 spánok (1) camera.remove_overlay (ov) kamera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () GPIO.wait_for_edge (takeButton, GPIO. FALLING) onLeds () overlayCounter () camera.capture ('pushTesting.jpg') camera.stop_preview () offLeds () GPIO.cleanup ()
Trochu vysvetlenia kódu
Spustí sa ukážka fotoaparátu a počká sa, kým sa nestlačí tlačidlo. Po stlačení tlačidla sa rozsvieti dióda LED a začne odpočítavanie. Keď sa dostanete na koniec, nasníma sa obrázok a LED dióda zhasne
Krok 10: Uverejnite príspevok na Twitteri
Teraz použijeme Python a tweetujeme tweet!:) Na uverejnenie budete potrebovať obrázok - vyberajte múdro.
Najprv musíme získať prístup k rozhraniu twitter API a na to musíme vytvoriť aplikáciu. Prejdite na stránku https://apps.twitter.com a vytvorte novú aplikáciu.
Budete musieť požiadať o účet vývojára - zadajte niekoľko otázok a potvrďte svoju e -mailovú adresu. Potom budete môcť vytvoriť novú aplikáciu.
Po vytvorení APP prejdite na Kľúče a tokeny a vygenerujte prístupový token a tajomstvo prístupového tokenu. Zobrazí sa okno s KĽÚČAMI IBA JEDENKRÁT - KOPÍROVANIE TÝCH A ULOŽENIE ICH NA NESKÔR.
Nasledujúci kód použite na odoslanie obrázku na váš twitterový účet. Nezabudnite vyplniť:
- consumer_key
- consumer_secret
- prístupový token
- access_token_secret
twitterová správa je text, ktorý sa má odoslať v tweete.
jpg_foto_to_send je obrázok, ktorý bude pripojený k tweetu. Umiestnite obrázok v rovnakom adresári ako skript Python a zmeňte názov v kóde.
import tweepy # nastavenia Twitteru def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['consumer_key'], cfg ['consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) návrat tweepy. API (auth) # Odoslať na twitter def sendToTwitter (): cfg = {"consumer_key": "", "consumer_secret": "" "," access_token ":" "" "access_token_secret": ""} api = get_api (cfg) # Status Message tweet = "Twitter message" status = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()
Skontrolujte svoj tweet vo svojom kanáli Twitter.
Tu je Tweet
Alebo nižšie:
#RaspberryPI MagicBox. Fotografujte, kontrolujte ich a zvoľte ich odoslanie na twitter a Facebook. Beží na Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- Bruno Ricardo Santos (@feiticeir0) 29. februára 2020
Krok 11: Kombinácia niektorých prvkov
Poďme teraz skombinovať tlačidlo Big Dome Push, jeho stlačenie, odpočítavanie, odfotenie, rozhodnutie, či ho pošleme alebo neodošleme na twitter.
Pridáme ďalší prekrývajúci obrázok a použijeme všetky tri tlačidlá. Keď je nasnímaný obrázok, rozsvietia sa všetky tri diódy LED.
Pridávame ďalší obrázok, ktorý ukazuje ikony na odosielanie na sociálne siete
SelectOption-p.webp
Aenviar-p.webp
Na videu nie je zobrazené modré tlačidlo (predná strana fotoaparátu), ale dióda LED svieti a po stlačení začne blikať.
Kód je priložený, ak chcete
Toto je konečný testovací kód pred hlavným programom.
# coding = utf-8 import picamera import _thread import subprocess as sp from time import sleep from RPi import GPIO from PIL import Image image threading # Twitter import tweepy # Facebook import facebook # Button to take picture takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # Zrušiť obrázok CancelButton = 24 # Tlačidlo LED odfotiť LED takePicButtonLed = 27 # Tlačidlo Odoslať na sociálnu sieť LED postSNLed = 22 # Tlačidlo Zrušiť 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) # Nastavenia Twitteru definujú get_api (cfg): auth = tweepy. OAuthHandler (cfg ['consumer_key'], cfg ['consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) návrat tweepy. API (auth) # Odoslať na twitter def sendToTwitter (): cfg = {"con sumer_key ":" "," consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Stavová správa tweet =" Testovateľné testovanie MagicBox. #MagicBox #RaspberryPI #Raspberry #Instructables "status = api.update_with_media (" pushTesting.jpg ", tweet) #Facebook AOth def get_api_facebook (cfg): graph = facebook. GraphAPI (cfg ['access_token']) #Získajte token stránky uverejnite ako stránku. Ak chcete uverejniť ako seba, môžete preskočiť # nasledujúce. resp = graph.get_object ('ja/účty') page_access_token = Žiadne pre stránku v resp ['data']: if page ['id'] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) návratový graf # Odoslať na facebook def sendToFacebook (): #Hodnoty pre prístup cfg = {"page_id": "", "" access_token ":" "} api = get_api_facebook (cfg) titulok =" Titulkový obrázok "albumid =" "api.put_photo (obrázok = otvorený (" pushTesting.jpg "," rb "), titulok =" Popis obrázka ") # Light Only TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Light only Cancel a SocialNetwork button def cancelPostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Blink take LED diódy pri odpočítavaní odpočítavania def TimerPicture (): GPIO.output (takePicButtonLed, True) spánok (0,5) GPIO.output (takePicButtonLed, False) spánok (0,5) GPIO.output (takePicButtonLed, True) spánok (0,5) GPIO.output (takePicButtonLed,Falošný) spánok (0,5) GPIO.output (takePicButtonLed, True) spánok (0,5) GPIO.output (takePicButtonLed, falošný) # Blink postSNLed pri odosielaní na sociálne siete def blinkPosting (stop_event): # Začnite kým (nie stop_event.is_set ()): print ("off") GPIO.output (postSNLed, False) sleep (0,5) print ("on") GPIO.output (postSNLed, True) sleep (0,5) def timer (): GPIO.output (takePicButtonLed, True) spánok (1) GPIO.output (postSNLed, True) spánok (1) GPIO.output (cancelButtonLed, True) spánok (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Zobraziť náhľad na vrstve 1 def displayPreview (imgName): # Pretože ukážka obrázka PIL je svinstvo #, použijeme prekrytie z fotoaparátu na zobrazenie # náhľadu 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.layer = 1 # Zobraziť náhľad na vrstve 3 def displayPreview3 (imgName): # Pretože PIL obrazová show je svinstvo # používame prekrytie z fotoaparátu na zobrazenie # náhľadu img = Image.open (imgName) padding = Image.new ('RGB', ((((veľkosť obr. [0] + 31) // 32) * 32, ((veľkosť obr. [1] + 15) // 16) * 16,)) padding.paste (obr., (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') # Create Prekryvná podložka = Image.new ('RGB', ((((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Vložte prekryvnú podložku.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Funkcia na prekrytie image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Vytvoriť prekrytie # Používa sa s obrázkom 1, pretože všetky majú podložku rovnakej veľkosti = Image.new ('RGB', ((((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # prilepte prekrytie - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # vrstva je 3, pretože ukážka kamery je na vrstve 2 ov.layer = 3 spánok (1) camera.remove_overlay (ov) # prilepte prekrytie - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # vrstva je 3, pretože ukážka kamery je na vrstve 2 ov.layer = 3 spánok (1) camera.remove_overlay (ov) # paste prekrytie - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # vrstva je 3, pretože ukážka kamery je na vrstve 2 ov.layer = 3 spánok (1) camera.remove_overlay (ov) # Hlavná funkcia # Vymazať obrazovku, aby neboli k dispozícii bootovacie správy # pravdepodobne by bolo lepšie to urobiť v bash tmp = sp.call ('clear', shell = True) 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 = 'average' #Testovanie tu skúste: while (True): camera.start_preview () #Show LED Only for Take Picture onlyTakePicLed () #Wait for button to take Obrázok GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Začnite vlákno počítať s LED diódami, kým sú obrázky zobrazené # Pravdepodobne by sa dalo použiť vo funkcii overlayCounter, # pretože má tiež časovače na zobrazenie obrázkov, ale efekty LED by nebol # rovnaký _thread.start_new_thread (counttingTimerPicture, ()) # Zobraziť prekrytie obrázkov v kamere obrázok overlayCounter () # Zobraziť všetky LED diódy pri fotografovaní fotoaparátu showAllLeds () camera.capture ('pushTesting.jpg') kamera. stop_preview () #display image displayPreview ('pushTesting.jpg') # Show overlay oo = overlaysn () # Show LEDs to Cancel or Post to Social Networks cancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_eventtondete (, GPIO. FALLING) while (True): if GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cancelButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Social Networks Button" sendToTwitter () sendToFacebook () camera.remove_overlay (o) break if GPIO.event_detected (cancelButton): #print "Zrušený" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remove_event_detect (takeButton) print.stop_stop_stop „Ukončené…“) #offLeds () GPIO.cleanup ()
Krok 12: Zapojenie
Zapojenie je len zapojenie tlačidiel Big Dome do Raspberry PI.
Postupujte podľa Fritzingovej schémy.
Pripojenia sú tieto:
PripojenieRPI GPIO PIN GND zelené tlačidlo GND (#3) GND žlté tlačidlo GND (#9) GND modré tlačidlo GND (#39) Fotografovanie (modré tlačidlo „Vytvoriť“) 17 (BCM) Príspevok do sociálnych sietí (zelené tlačidlo Tlačidlo „Zatlačiť na výrobu“) 23 (BCM) Zrušiť (Žlté tlačidlo „Vyrobiť“) 24 (BCM) Modré tlačidlo LED27 (BCM) Zelené tlačidlo LED22 (BCM) Žlté tlačidlo LED5 (BCM)
Tepelne zmrštiteľný je tiež farebne označený
- Čierna je pripojenie GND
- Žlté sú spojenia „push to make“
- Modré sú LED pripojenia
Čísla GPIO. BCM vs. pripojenia GPIO. BOARD
Keďže moje spojenia sú BCM, myslím, že teraz je vhodný čas na to, aby ste o tom porozprávali a o rozdieloch medzi BCM a BOARD.
Hlavný rozdiel je v tom, ako sa odvolávate na kódy GPIO PIN, ktoré budú zase určovať spôsob pripojenia. GPIO.board použije kódy PIN podľa čísla vytlačeného na akomkoľvek rozložení GPIO na internete.
GPIO. BCM označuje čísla PIN tak, ako ich vidí Broadcom SOC. To sa pravdepodobne zmení pozdĺž novších verzií Raspberry PI.
Na webe pinout.xyz sú čísla dosiek uvedené hneď vedľa pinov a BCM sa takto označuje - BCM X (kde X je číslo)
Krok 13: MagicBox
Priložený kód k tomuto kroku je konečný.
Môžete ho spustiť pri spustení Raspberry PI bez toho, aby ste sa museli prihlasovať. Za týmto účelom vytvorte tento malý skript v adresári, do ktorého ste vložili kód - podľa toho zmeňte cesty
#!/bin/bash
cd/home/pi/magicbox python MagicBox.py
Nech je spustiteľný
chmod +x start_magicbox.sh
Teraz to nazvite v /etc/rc.local, tesne pred inštaláciou exit 0
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
uložiť a skončiť.
Teraz sa pri každom reštarte spustí program Python
POZNÁMKA: Všetky súbory s obrázkami musia byť v rovnakom adresári ako skript. Musíte mať:
- 1.png
- 2.png
- 3.png
- Aenviar.png
- SelectOption.png
Všetky tieto súbory môžete získať na github programu MagicBox.
Odporúča:
Prepínač pedálu Bluetooth pre fotoaparát smartfónu: 13 krokov (s obrázkami)
Prepínač pedálov Bluetooth pre fotoaparát smartfónu: V dnešnej dobe sa zaoberám tvorbou inštrukcií, videí na youtube a blogových príspevkov. Aby bol blogový príspevok produktívny, je nevyhnutné nasnímať veľa fotografií čo najpodrobnejšie. Nie je to také jednoduché, pretože ľudská bytosť má iba dve ruky. Potrebujem
Webová kamera s Androidom ako USB (!!) fotoaparát: 8 krokov (s obrázkami)
Smartfón s Androidom ako webová kamera USB (!!): Za posledných niekoľko mesiacov sme boli všetci nútení komunikovať online a nie osobne. Ako študentka sa väčšina mojich prednášok zmenila na stretnutia Zoom a to isté sa stalo s mojimi hodinami doučovania. V nasledujúcich týždňoch mnoho študentov všetkých vekových skupín
Vzkrieste fotoaparát Polaroid Land: 32 krokov (s obrázkami)
Oživte fotoaparát Polaroid Land: Kamera Polaroid Land bola pomenovaná po svojom vynálezcovi Edwinovi Landovi. Predstavilo svetu myšlienku okamžitej fotografie a v určitom ohľade vydláždilo cestu pre modernú éru okamžitého digitálneho uspokojenia. Toto je kompletný sprievodca pre získanie
DIY obrazový snímač a digitálny fotoaparát: 14 krokov (s obrázkami)
DIY obrazový snímač a digitálny fotoaparát: Existuje mnoho online návodov, ako vytvoriť vlastnú filmovú kameru, ale nemyslím si, že existujú žiadne o stavbe vlastného obrazového snímača! Snímače obrazu sú bežne dostupné od mnohých spoločností online a ich použitie by znamenalo návrh
Fotoaparát s termálnou tlačiarňou poháňaný Pi: 11 krokov (s obrázkami)
Fotoaparát s termálnou tlačiarňou s napájaním Pi: Chýba vám starý rýchly fotoaparát Polaroid alebo čiernobiely fotoaparát starého Gameboy Classic? Rovnako tak aj my, keď sa cítime naozaj nostalgicky! V tomto návode vám ukážeme, ako si vytvoriť vlastnú okamžitú kameru pomocou Raspberry Pi, kamery Pi