Obsah:

Fotoaparát RaspberryPI - MagicBox: 13 kroků (s obrázky)
Fotoaparát RaspberryPI - MagicBox: 13 kroků (s obrázky)

Video: Fotoaparát RaspberryPI - MagicBox: 13 kroků (s obrázky)

Video: Fotoaparát RaspberryPI - MagicBox: 13 kroků (s obrázky)
Video: Камера высокого разрешения и объективы для Raspberry Pi. Железки Амперки 2024, Červenec
Anonim
Image
Image
Stavět
Stavět

Před chvílí jsem dostal tento šílený nápad vytvořit fotografický stroj z Raspberry PI. V mém městě se konala malá show, kde lidé chodili ukazovat, co vyrábějí nebo vyráběli pomocí elektroniky, počítačů atd … Byl jsem jako Faire Faer chudáka, ale v místním měřítku.

Jedna se blížila a společně s mojí ženou jsme tuto věc postavili.

Jak to funguje ?

Stiskněte modré tlačítko - začne blikat - a po 3 sekundách je vyfotografován snímek. Na druhé straně fotoaparátu je monitor, který ukazuje odpočítávání a po pořízení snímku náhled fotky.

Nyní se můžete rozhodnout odeslat jej na Twitter a Facebook nebo zrušit a zkusit to znovu. Je to tak jednoduché.

Vše je naprogramováno v Pythonu s využitím PI framebuffer - nepoužívá se žádný Xorg, žádné GUI.

Zde je video z fungování projektu

Zásoby

  • Raspberry PI (používám verzi 2)
  • Raspberry PI Camera (pomocí verze 1)
  • 3x tlačítka Big Dome
  • TFT/LCD monitor s VGA/HDMI
  • MDF
  • Kovové závěsy, šrouby atd.
  • Elektrické nářadí
  • Volný čas a spoustu zábavy

Krok 1: Sestavte

Stavět
Stavět
Stavět
Stavět

Stavět to byla zábava. Mnoho řezání, malování a vrtání.

Pro stavbu základní struktury kamery jsem použil MDF panely. Jsou lehké a snadno se s nimi pracuje. Také to byl jeden druh dřeva, který laserový stroj v místním Fablabu dokázal vyřezat.

Přístup k elektroinstalaci uvnitř byl zajištěn ze strany monitoru pomocí hydraulických závěsů, aby mohly pomoci zvednout monitor.

Krok 2: Fotoaparát

Fotoaparát
Fotoaparát
Fotoaparát
Fotoaparát
Fotoaparát
Fotoaparát

Fotoaparát

Fotoaparát je krabice s následujícími rozměry: 60 cm x 40 cm x 30 cm Váš může být menší, větší, záleží jen na vás. Jen se musíte přizpůsobit monitoru, který budete používat. Panely MDF byly řezány laserem v místním Fablabu. Na zadní straně jsou potřeba 3 otvory - dvě velká kopulovitá tlačítka a jedno pro monitor. Vpředu 2 otvory - jeden pro velké kopulovité tlačítko a druhý - menší - pro kameru Raspberry PI. Nemám konkrétní měření - prostě si představte kameru a použijte ji.

Krok 3: Monitor

Monitor
Monitor
Monitor
Monitor
Monitor
Monitor

Monitor

Podpěra monitoru byla vyrobena přidáním malých kousků dřeva, které ji v jejích rozměrech podepřely.

Byl vytažen z plastového pouzdra a zajištěn na místě šrouby. Jako pomoc při zvedání byly použity dva hydraulické závěsy (použité).

Krok 4: Zdobení

Zdobení
Zdobení
Zdobení
Zdobení
Zdobení
Zdobení
Zdobení
Zdobení

Protože se mi hodně líbí styl mého Fuji X-T30, šli jsme udělat něco podobného.

Nejprve jsme ho pokryli pěnou a poté jsme jej nastříkali černou barvou. Po barvě jsme přidali alobal na stříbrné části a zabalili

Pro simulaci objektivu jsme použili kulatý Tupperware, kde jsme vytvořili malou díru pro modul kamery Raspberry PI.

Krok 5: Programování

Programování kamery bylo výzvou, ale bylo to super zábava.

Neexistuje žádné GUI - běží na CLI a běží na Pythonu verze 3.

Nejprve jsem začal testováním a programováním tlačítek, další bylo fotografování pomocí již poskytnutých nástrojů a rozhraní Python API. Poté jsem přešel k překrytí obrázků ve výstupu fotoaparátu (pro odpočítávání) a dále k interakci s Twitterem a Facebookem.

Poté, co mi to všechno bylo příjemné, jsem jako skládačka složil všechny dílky dohromady. Tady jdeme stejným postupem. Začněte pomalu a pomalu a rychle.

Nejprve začněme konfigurací Raspberry PI

Krok 6: Příprava Raspberry PI

Příprava Raspberry PI
Příprava Raspberry PI
Příprava Raspberry PI
Příprava Raspberry PI
Příprava Raspberry PI
Příprava Raspberry PI

Nebudu vysvětlovat, jak nainstalovat Raspbian na Raspberry PI - existuje spousta návodů, dokonce i na oficiálních stránkách Raspberry PI.

Stačí k němu mít přístup SSH nebo jej připojit k monitoru a připojit klávesnici a myš.

POZNÁMKA: Když začínáte s kamerou Raspberry PI, musíte ji mít připojenou k monitoru. Do té doby lze všechny kroky provádět pomocí SSH.

Po spuštění vašeho Raspberry PI musíme povolit kameru Raspberry PI. Použijme k tomu nástroj raspi-config.

sudo raspi-config

  1. Vyberte možnost 5 - Možnosti rozhraní
  2. Zvolte P1 - Povolit/Zakázat připojení k Raspberry PI kameře
  3. Říkat ano
  4. pro OK
  5. Vyberte Dokončit
  6. Chcete -li nyní restartovat, vyberte Ano

Po restartu můžeme pokračovat

Krok 7: Software

K instalaci budeme potřebovat nějaké knihovny Pythonu. Toto bylo aktualizováno pro nejnovější verzi Raspbian - Buster

Nejprve nastavíme Python 3 jako výchozí. Pomocí tohoto odkazu se dozvíte, jak jej nastavit SYSTÉM ŠIROKÉ

Knihovny:

  • python-pil.imagetk pro manipulaci s obrázky
  • python-rpi.gpio pro přístup k PINŮM GPIO
  • python-picamera pro přístup k Raspberry PI kameře
  • Tweepy pro sdílení fotografie na twitter
  • facebook-sdk ke sdílení na facebookovou stránku

sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip

K instalaci facebook-sdk použijte Python pip

sudo pip3 nainstalujte facebook-sdk

Krok 8: Programování - náhled kamery

Image
Image
Programování - náhled kamery
Programování - náhled kamery
Programování - náhled kamery
Programování - náhled kamery

Jedním z požadavků, které jsem tomuto projektu stanovil, bylo, aby tento program běžel v režimu CLI. Musíme tedy zobrazit obraz kamery na konzole. K tomu použijme Python Picamera. Poté použijme pil.imagetk k překrytí v horní části náhledu kamery

Náš malý program (budeme vyvíjet malé programy až do konce jednoho velkého) zobrazí náhled kamery.

#!/usr/bin/env python

import time import picamera from time import sleep camera = picamera. PiCamera () # Nastavte požadované rozlišení camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1) kromě (KeyboardInterrupt, SystemExit): print ("Exiting…") camera.stop_preview ()

Chcete -li to vyzkoušet, spusťte jej

python cameraPreview.py

Náhled fotoaparátu s obrázky nahoře

Protože jsem chtěl před pořízením obrázku zobrazit odpočítávání, potřeboval jsem obrázky překrývající se s náhledem fotoaparátu.

Vytvořte obrázek-p.webp" />

Následující kód bude překrývat 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-p.webp

Zkus to:

python imageOverlay.py

Pojďme nyní vytvořit odpočítávání s překryvnými obrázky. Stejně jako jste vytvořili obrázek 1.png, vytvořte další dva obrázky se 2 a 3 v nich.

Poté použijte následující kód:

import pikamery

z importu PIL Obrázek z času importujte spánek s picamera. PiCamera () jako 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 (), 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ánek (2)

Nyní proveďte:

python imageOverlayCounter.py

A podívejte se na odpočítávání

Páni - hodně kódu a žádný snímek … Pojďme to vyřešit kombinací všech dohromady - náhled kamery, odpočítávání a vyfotit

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.-p.webp

Zkus to:

python obrázekWithTimer.py

A tady máme Yodu

Krok 9: Programování - tlačítko Big Dome

Programování - tlačítko Big Dome
Programování - tlačítko Big Dome
Programování - tlačítko Big Dome
Programování - tlačítko Big Dome

Velké kupolové tlačítko je velké kulaté tlačítko - s průměrem přibližně 100 mm a malou LED diodou. Říká, že to funguje na 12 V, ale 3,3 V Raspberry PI stačí k rozsvícení

K testování použijte schéma

Kód:

z RPi import 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) # Blokovací funkce GPIO.wait_for_edge (takeButton, GPIO. FALLING) tisk ("Tlačítko stisknuto") GPIO.output (ledButton, False) GPIO.cleanup ()

Některé vysvětlení kódu Jednou z forem získávání hodnot z GPIOS je přerušení (jiné je dotazování) - detekce hran.

Okraj je název přechodu z VYSOKÉ na NÍZKOU (sestupná hrana) nebo NÍZKOU na VYSOKOU (stoupající hrana). Pokud PIN k ničemu není připojen, bude jakékoli čtení nedefinováno. Řešením je mít v uvedeném kódu PIN odpor nahoru/dolů. Raspberry PI umožňuje konfigurovat stahovací/dolů rezistory prostřednictvím softwaru.

Linie

GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)

konfiguruje PIN tak, aby to udělal - vytáhněte nahoru

Proč tahat nahoru? Velké kupolové tlačítko má 2 PINy - push to break nebo push to make (stejně jako malá tlačítka, která se často dodávají se sadami Arduino/Raspberry PI). Připojil jsem to k PINu tlačítka „push to make“. Po stisknutí se obvod zavře a elektřina prochází (normálně otevřená).

Linie

GPIO.wait_for_edge (takeButton, GPIO. FALLING)

počká (efektivně pozastaví provádění skriptu), dokud nezjistí pád PINu - uvolněním tlačítka se sníží tok elektřiny a PIN přejde z 3,3 V na 0 V

LED PIN má pouze rozsvítit LED na tlačítku

Více informací o push přepínačích z Arduino Tutorials, Wikipedia o push to make nebo push to break a přerušení GPIO

Nyní zkombinujme tlačítko s fotoaparátem - Pořiďte snímek pouze při stisknutí tlačítka

import picamerafrom čas import spánku z RPi import GPIO z PIL import Image # POZNÁMKA: Toto bude tlačítko pro zrušení v hlavním programu # Používám ho zde jen kvůli přehlednosti videa takeButton = 24 ledCancel = 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) # Funkce překrytí obrázku def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Vytvořte překrytí # Používá se s img1, protože všechny mají stejnou velikost pad = Image.new ('RGB', ((((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # vložte překryv - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # vrstva je 3, protože náhled kamery je na vrstvě 2 ov.layer = 3 sleep (1) camera.remove_overlay (ov) # vložte překryv - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # vrstva je 3, protože náhled kamery je na vrstvě 2 ov.layer = 3 spánek (1) camera.remove_overlay (ov) # vložte překryv - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # vrstva je 3, protože náhled kamery je na vrstvě 2 ov.layer = 3 spánek (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 vysvětlení kódu

Spustí náhled kamery a čeká tam, dokud není stisknuto tlačítko. Po stisknutí tlačítka se rozsvítí LED a začne odpočítávání. Po dosažení konce se pořídí snímek a kontrolka LED zhasne

Krok 10: Zveřejněte na Twitteru

Zveřejnit na Twitteru
Zveřejnit na Twitteru
Zveřejnit na Twitteru
Zveřejnit na Twitteru
Zveřejnit na Twitteru
Zveřejnit na Twitteru

Nyní použijeme Python a tweetujeme tweet!:) K zveřejnění budete potřebovat obrázek - vybírejte moudře.

Nejprve musíme přistoupit na twitter API a k tomu musíme vytvořit APP. Přejděte na https://apps.twitter.com a vytvořte novou aplikaci.

Budete muset požádat o účet vývojáře - vyplňte několik otázek a potvrďte svou e -mailovou adresu. Poté budete moci vytvořit novou aplikaci.

Po vytvoření APP přejděte na Klíče a tokeny a vygenerujte přístupový token a tajný klíč přístupu. Zobrazí se okno s KLÍČY POUZE JEDNOU - Zkopírujte je a ULOŽTE JE NA POZDĚJI.

Pomocí následujícího kódu odešlete obrázek na svůj twitterový účet. Nezapomeňte vyplnit:

  • consumer_key
  • consumer_secret
  • access_token
  • access_token_secret

twitterová zpráva je text, který se má odeslat v tweetu.

jpg_foto_to_send je obrázek, který bude připojen k tweetu. Udělejte prosím obrázek ve stejném adresáři jako skript Pythonu a změňte název v kódu.

import tweepy # nastavení 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) # Odeslat 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 ()

Zkontrolujte svůj tweet ve svém kanálu Twitter.

Tady je Tweet

Nebo níže:

#RaspberryPI MagicBox. Pořizujte snímky, kontrolujte je a rozhodněte se je posílat na twitter a Facebook. Poháněno Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p

- Bruno Ricardo Santos (@feiticeir0) 29. února 2020

Krok 11: Kombinace některých prvků

Kombinace některých prvků
Kombinace některých prvků
Kombinace některých prvků
Kombinace některých prvků

Pojďme nyní zkombinovat tlačítko Big Dome Push, jeho stisknutí, odpočítávání, pořízení obrázku, rozhodnutí, zda jej odešleme na twitter.

Přidáme další překryvný obrázek a použijeme všechna tři tlačítka. Po pořízení snímku se rozsvítí všechny 3 LED diody.

Přidáváme další obrázek, který ukazuje ikony pro zveřejnění na sociálních sítích

SelectOption-p.webp

Aenviar-p.webp

Na videu není zobrazeno modré tlačítko (na přední straně fotoaparátu), ale LED dioda svítí a začne blikat, jakmile je stisknuto.

Pokud chcete, kód je přiložen

Toto je konečný testovací kód před hlavním programem.

# coding = utf-8 import picamera import _thread import subprocess as sp from time import sleep from RPi import GPIO from PIL import Image import threading # Twitter import tweepy # Facebook import facebook # Button to take picture takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # Cancel Picture cancelButton = 24 # Tlačítko pro pořízení obrázku LED takePicButtonLed = 27 # Tlačítko pro odeslání na sociální síť LED postSNLed = 22 # Tlačítko Cancel LED 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) # Nastavení 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) # Odeslat na twitter def sendToTwitter (): cfg = {"con sumer_key ":" "," consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Stavová zpráva tweet =" Testovatelné testování 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ískat token stránky zveřejnit jako stránku. Pokud chcete zveřejnit jako sebe, můžete přeskočit # následující. resp = graph.get_object ('já/účty') page_access_token = Žádné pro stránku v resp ['data']: if page ['id'] == cfg ['page_id']: page_access_token = stránka ['access_token'] graph = facebook. GraphAPI (page_access_token) návratový graf # Odeslat na facebook def sendToFacebook (): #Hodnoty pro přístup cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) titulek = "Titulek obrázku" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), titulek = "Titulek obrázku ") # Pouze světlo TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Light only Cancel a SocialNetwork tlačítko def cancelPostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Blink take LED při odpočítávání def countTimerPicture (): GPIO.output (takePicButtonLed, True) spánku (0,5) GPIO.output (takePicButtonLed, False) sleep (0,5) GPIO.output (takePicButtonLed, True) sleep (0,5) GPIO.output (takePicButtonLed,False) sleep (0,5) GPIO.output (takePicButtonLed, True) sleep (0,5) GPIO.output (takePicButtonLed, False) # Blink postSNLed při odesílání na sociální sítě def blinkPosting (stop_event): # Start while (not 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) sleep (1) GPIO.output (postSNLed, True) sleep (1) GPIO.output (cancelButtonLed, True) sleep (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Zobrazit náhled na vrstvě 1 def displayPreview (imgName): # Protože je zobrazení obrázku PIL svinstvo # použijeme překrytí z kamery k zobrazení # náhledu 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 # Zobrazit náhled na vrstvě 3 def displayPreview3 (imgName): # Vzhledem k tomu, že přehlídka obrázků PIL je kecy # používáme překrytí z kamery k zobrazení # náhledu img = Image.open (imgName) padding = Image.new ('RGB', ((((velikost obrázku [0] + 31) // 32) * 32, ((velikost obrázku [1] + 15) // 16) * 16,)) padding.paste (obrázek, (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 Překryvná podložka = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Vložte překryvný pad.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Funkce k překrytí image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Vytvořit překrytí # Používá se s img1, protože všechny mají stejnou velikost pad = Image.new ('RGB', ((((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # vložte překryv - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # vrstva je 3, protože náhled kamery je na vrstvě 2 ov.layer = 3 spánek (1) camera.remove_overlay (ov) # vložte překrytí - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # vrstva je 3, protože náhled kamery je na vrstvě 2 ov.layer = 3 spánek (1) camera.remove_overlay (ov) # paste překrytí - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # vrstva je 3, protože náhled kamery je na vrstvě 2 ov.layer = 3 spánek (1) camera.remove_overlay (ov) # Hlavní funkce # Vymazat obrazovku, aby nebyly k dispozici spouštěcí zprávy # pravděpodobně by bylo lepší to udělat 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' #Testování zde zkuste: while (True): camera.start_preview () #Show LED Only for Take Picture onlyTakePicLed () #Wait for button to take Obrázek GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Spusťte vlákno pro počítání s LED diodami při zobrazování obrázků # Pravděpodobně by to mohlo být použito ve funkci overlayCounter, # protože má také časovače pro zobrazení obrázků, ale efekty LED by nebyl # stejný _thread.start_new_thread (counttingTimerPicture, ()) # Zobrazit překryvné obrázky v kameře overlayCounter () # Zobrazit všechny LED diody při pořizování obrázku 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_event_detect, 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šeno“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 „Ukončeno…“) #offLeds () GPIO.cleanup ()

Krok 12: Zapojení

Image
Image
Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení

Zapojení je pouze zapojení tlačítek Big Dome Push k Raspberry PI.

Postupujte podle Fritzingova schématu.

Spojení jsou:

PřipojeníRPI GPIO PIN GND zelené tlačítko GND (#3) GND žluté tlačítko GND (#9) GND modré tlačítko GND (#39) vyfotit (modré tlačítko „Vytvořit“) 17 (BCM) zveřejnit na sociálních sítích (zelené tlačítko Tlačítko „Push to make“) 23 (BCM) Zrušit (žluté tlačítko „Push to make“) 24 (BCM) Modré tlačítko LED27 (BCM) Zelené tlačítko LED22 (BCM) Žluté tlačítko LED5 (BCM)

Tepelně smrštitelné je také barevně odlišeno

  • Černá je připojení GND
  • Žluté jsou spojení „push to make“
  • Modré jsou LED připojení

Čísla GPIO. BCM vs. připojení GPIO. BOARD

Vzhledem k tomu, že moje připojení jsou BCM, myslím, že nyní je vhodná doba si o tom promluvit a rozdílu mezi BCM a BOARD.

Hlavní rozdíl je v tom, jak odkazujete na GPIO PINy, které zase budou řídit způsob připojení. GPIO.board bude PINy odkazovat podle čísla vytištěného na jakémkoli rozložení GPIO na internetu.

GPIO. BCM označuje čísla PIN tak, jak je vidí Broadcom SOC. To se pravděpodobně změní v novějších verzích Raspberry PI.

Na webu pinout.xyz jsou čísla desek ta, která jsou hned vedle kolíků, a BCM se tak označuje - BCM X (kde X je číslo)

Krok 13: MagicBox

Připojený kód k tomuto kroku je konečný.

Můžete jej spustit při zavádění Raspberry PI, aniž byste se museli přihlašovat. Chcete -li to provést, vytvořte tento malý skript v adresáři, do kterého jste umístili kód - podle toho změňte cesty

#!/bin/bash

cd/home/pi/magicbox python MagicBox.py

Nastavit jej jako spustitelný

chmod +x start_magicbox.sh

Nyní jej zavolejte v /etc/rc.local, těsně před instancí exit 0

sudo vi /etc/rc.local

/home/pi/magicbox/start_magicbox.sh &

uložit a skončit.

Nyní se při každém restartu spustí program Python

POZNÁMKA: Všechny soubory obrázků musí být ve stejném adresáři jako skript. Musíte mít:

  • 1.png
  • 2.png
  • 3.png
  • Aenviar.png
  • Vyberte možnost Volba.png

Všechny tyto soubory můžete získat na githubu MagicBox.

Doporučuje: