Sisällysluettelo:

RaspberryPI -valokuvakamera - MagicBox: 13 vaihetta (kuvilla)
RaspberryPI -valokuvakamera - MagicBox: 13 vaihetta (kuvilla)

Video: RaspberryPI -valokuvakamera - MagicBox: 13 vaihetta (kuvilla)

Video: RaspberryPI -valokuvakamera - MagicBox: 13 vaihetta (kuvilla)
Video: I Can Save You Money! – Raspberry Pi Alternatives 2024, Marraskuu
Anonim
Image
Image
Rakentaa
Rakentaa

Jokin aika sitten minulla oli tämä hullu idea luoda valokuvauskone Raspberry PI: stä. Kaupungissani oli pieni esitys, jossa ihmiset menivät ja näyttivät, mitä he tekivät tai tekivät käyttämällä elektroniikkaa, tietokoneita jne.… Olin kuin köyhän miehen Maker Faire, mutta paikallisesti.

Yksi oli tulossa, ja rakennamme tämän yhdessä vaimoni kanssa.

Kuinka se toimii ?

Painamalla sinistä painiketta - se alkaa vilkkua - ja kuva otetaan 3 sekunnin kuluttua. Kameran toisella puolella on näyttö, joka näyttää ajastimen ja kuvan ottamisen jälkeen valokuvan esikatselun.

Voit nyt lähettää sen Twitteriin ja Facebookiin tai peruuttaa ja yrittää uudelleen. Se on niin yksinkertaista.

Kaikki on ohjelmoitu Pythonissa, käyttämällä PI -kehyksenpuskuria - No Xorg, GUI ei ole käytössä.

Tässä video projektin toimivuudesta

Tarvikkeet

  • Vadelma PI (käytän versiota 2)
  • Vadelma PI -kamera (versio 1)
  • 3x Big Dome -painikkeet
  • TFT/LCD -näyttö ja VGA/HDMI
  • MDF
  • Metalliset saranat, ruuvit jne.
  • Sähkötyökalut
  • Vara -aikaa ja paljon hauskaa

Vaihe 1: Rakenna

Rakentaa
Rakentaa
Rakentaa
Rakentaa

Sen rakentaminen oli hauskaa. Paljon leikkaamista, maalaamista ja poraamista.

Käytin MDF -paneeleja kameran perusrakenteen rakentamiseen. Ne ovat kevyitä ja helppoja työskennellä. Se oli myös yksi puulaji, jonka paikallisen Fablabin laserlaite pystyi leikkaamaan.

Pääsy sisäisiin johtoihin tehtiin näytön puolelta käyttämällä hydraulisia saranoita, jotta ne voisivat auttaa näytön nostamisessa.

Vaihe 2: Kamera

Kamera
Kamera
Kamera
Kamera
Kamera
Kamera

Kamera

Kamera on laatikko, jonka mitat ovat: 60 cm x 40 cm x 30 cm Sinun voi olla pienempi, isompi, se on sinun valintasi. Sinun tarvitsee vain sopeutua käyttämääsi näyttöön. MDF -paneelit leikattiin laserilla paikallisessa Fablabissa. Takana on kolme reikää - kaksi isoa kupolipainiketta ja yksi näytölle. Edessä 2 reikää - yksi isolle kupolipainikkeelle ja toinen - pienempi - Raspberry PI -kameralle. Minulla ei ole erityisiä mittauksia - kuvittele vain kamera ja käytä sitä.

Vaihe 3: Monitori

Monitori
Monitori
Monitori
Monitori
Monitori
Monitori

Monitori

Näytön tuki tehtiin lisäämällä pieniä puukappaleita tukemaan sitä mittojensa rajoissa.

Se irrotettiin muovikotelosta ja kiinnitettiin paikalleen ruuveilla. Sen nostamisen helpottamiseksi käytettiin kahta hydraulista saranaa (käytetty).

Vaihe 4: Sisustus

Sisustaminen
Sisustaminen
Sisustaminen
Sisustaminen
Sisustaminen
Sisustaminen
Sisustaminen
Sisustaminen

Koska pidän paljon Fuji X-T30: n tyylistä, menimme ja teimme jotain vastaavaa.

Ensinnäkin peitimme sen vaahdolla ja seuraavaksi ruiskutimme sen mustaksi. Maalin jälkeen lisäsimme hopeaosille alumiinifoliota ja kääri se sisään

Linssin simuloimiseksi käytimme vain pyöreää Tupperwarea, kun teimme pienen reiän Raspberry PI -kameramoduulille istumaan.

Vaihe 5: Ohjelmointi

Kameran ohjelmointi oli haaste, mutta se oli erittäin hauskaa.

GUI: ta ei ole - tämä toimii CLI: ssä ja Python -versiossa 3.

Aloitin ensin testaamalla ja ohjelmoimalla painikkeet, seuraavaksi otin kuvia käyttämällä jo toimitettuja työkaluja ja Python -sovellusliittymää. Siirryin sitten päällekkäisiin kuviin kameran ulostulossa (lähtölaskenta) ja vuorovaikutuksessa Twitterin ja Facebookin kanssa.

Kun olin tyytyväinen kaikkeen, palapelin tavoin, kokoin kaikki palaset yhteen. Täällä mennään samalla prosessilla. Aloita hitaasti ja pienestä ja siirry nopeaan ja isoon.

Aloitetaan ensin määrittämällä Raspberry PI

Vaihe 6: Vadelma PI: n valmistelu

Vadelma PI: n valmistelu
Vadelma PI: n valmistelu
Vadelma PI: n valmistelu
Vadelma PI: n valmistelu
Vadelma PI: n valmistelu
Vadelma PI: n valmistelu

En aio selittää, miten Raspbian asennetaan Raspberry PI: hen - siellä on paljon opetusohjelmia, jopa Raspberry PI: n virallisella verkkosivustolla.

Sinulla on vain oltava SSH -käyttöoikeus tai kytkettävä se näyttöön ja liitettävä näppäimistö ja hiiri.

HUOMAUTUS: Kun aloitat Raspberry PI -kameralla, se on kytkettävä näyttöön. Siihen asti kaikki vaiheet voidaan suorittaa SSH: n avulla.

Kun olet käynnistänyt Raspberry PI -laitteesi, meidän on otettava Raspberry PI -kamera käyttöön. Käytämme siihen raspi-config-työkalua.

sudo raspi-config

  1. Valitse vaihtoehto 5 - Liitäntävaihtoehdot
  2. Valitse P1 - Ota käyttöön/poista yhteys Raspberry PI -kameraan
  3. Sano kyllä
  4. OK
  5. Valitse Valmis
  6. Käynnistä nyt uudelleen valitsemalla Kyllä

Uudelleenkäynnistyksen jälkeen voimme jatkaa

Vaihe 7: Ohjelmisto

Tarvitsemme joitain Python -kirjastoja asennettavaksi. Tämä on päivitetty uusimpaan Raspbian -versioon - Buster

Aseta ensin Python 3 oletukseksi. Napsauta tätä linkkiä tietääksesi, miten se asennetaan SYSTEM WIDE

Kirjastot:

  • python-pil.imagetk manipuloida kuvia
  • python-rpi.gpio päästäksesi GPIO PINS: ään
  • python-picamera päästäksesi Raspberry PI -kameraan
  • Tweepy jakaa valokuvan Twitteriin
  • facebook-sdk jaettavaksi facebook-sivulle

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

Asenna facebook-sdk Python-pipillä

sudo pip3 asenna facebook-sdk

Vaihe 8: Ohjelmointi - Kameran esikatselu

Image
Image
Ohjelmointi - kameran esikatselu
Ohjelmointi - kameran esikatselu
Ohjelmointi - kameran esikatselu
Ohjelmointi - kameran esikatselu

Yksi vaatimuksistani, jonka asetin tälle projektille, oli, että tämä ohjelma toimisi CLI -tilassa. Joten meidän on näytettävä kameran kuva konsolissa. Käytämme tätä varten Python Picameraa. Tämän jälkeen käytämme pil.imagetk -sovellusta peittokuvan näyttämiseen kameran esikatselun päällä

Pieni ohjelma (kehitämme pieniä ohjelmia, kunnes yksi iso lopussa) näyttää kameran esikatselun.

#!/usr/bin/env python

tuonti aika tuonti picamera aikatuonnista nukkumakamera = picamera. PiCamera () # Aseta haluamasi tarkkuus camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1) paitsi (KeyboardInterrupt, SystemExit): print ("Exiting…") camera.stop_preview ()

Kokeile sitä vain suorittamalla se

python cameraPreview.py

Esikatsella kameraa kuvilla

Koska halusin ajastimen näkyvän ennen kuvan ottamista, tarvitsin kuvia, jotka olivat päällekkäisiä kameran esikatselun kanssa.

Luo-p.webp" />

Seuraava koodi on päällekkäin 1-p.webp

tuo picamerafrom PIL -tuontikuvasta ajan tuonnin lepotilasta picamera. PiCamera () kamerana: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1-p.webp

Kokeile:

python imageOverlay.py

Luodaan nyt lähtölaskenta peittokuvilla. Kuten olet luonut 1-p.webp

Käytä sen jälkeen vain seuraavaa koodia:

tuo picamera

PIL -tuonnista Kuva ajan tuonnin lepotilasta picamera -kameralla.) 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 (), koko = img1.size) o.alpha = 128 o.layer = 3 sleep (2) #remove edellinen peittokamera.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tavua (), koko = img2.size) o.alpha = 128 o.layer = 3 sleep (2) # poista edellinen peittokamera.remove_overlay (o) pad.paste (img3, (0, 0)) o = kamera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 sleep (2)

Suorita se nyt:

python imageOverlayCounter.py

Ja katso laskuri

Vau - paljon koodia eikä kuvaa otettu … Ratkaise tämä yhdistämällä kaikki yhdessä - esikatselukamera, lähtölaskenta ja kuva

Tuo picamerafrom PIL -tuontikuvasta ajan tuonnin lepotilasta.-p.webp

Kokeile:

python pictureWithTimer.py

Ja täällä meillä on Yoda

Vaihe 9: Ohjelmointi - Big Dome -painike

Ohjelmointi - Big Dome -painike
Ohjelmointi - Big Dome -painike
Ohjelmointi - Big Dome -painike
Ohjelmointi - Big Dome -painike

Suuri kupolin painike on iso pyöreä painike - sen halkaisija on noin 100 mm ja pieni LED. Se sanoo, että se toimii 12 V: n jännitteellä, mutta Vadelma PI: n 3.3 V riittää sen sytyttämiseen

Käytä kaaviota testaamiseen

Koodi:

RPi -tuonnista 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) # Estotoiminto GPIO.wait_for_edge (takeButton, GPIO. FALLING) print ("Painike painettu") GPIO.output (ledButton, False) GPIO.cleanup ()

Joitakin selityksiä koodista Yksi GPIOS -arvojen saamisen muodoista on keskeytysten kautta (toinen on kysely) - reunan tunnistus.

Reuna on siirtymän nimi HIGH to LOW (laskeva reuna) tai LOW to HIGH (nouseva reuna). Jos PIN -koodia ei ole liitetty mihinkään, kaikki lukemat määritetään. Kiertotapa on saada ylös/alas -vastus mainittuun PIN -koodiin. Raspberry PI: n avulla voit määrittää ylös/alas -vastukset ohjelmiston avulla.

Linja

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

määrittää PIN -koodin juuri niin - vedä ylös

Miksi vetää ylös? No, isossa kupolipainikkeessa on 2 PIN -koodia - paina rikkoa tai paina tehdäksesi (aivan kuten pienet painikkeet, jotka usein tulevat Arduino/Raspberry PI -sarjojen mukana). Olen kytkenyt sen painikkeen PIN -koodiin. Painamalla piiri sulkeutuu ja sähkö kulkee (normaalisti auki).

Linja

GPIO.wait_for_edge (takeButton, GPIO. FALLING)

odottaa (keskeyttää käytännössä komentosarjan suorittamisen), kunnes se havaitsee PIN -koodin putoamisen - painikkeen vapauttaminen katkaisee virran ja PIN -koodi siirtyy 3,3 V: sta 0 V: iin

LED -PIN -koodi on vain painikkeen LED -valon sytyttämiseksi

Lisätietoja push -kytkimistä Arduinon opetusohjelmista, Wikipedia push to make tai push to break ja GPIO keskeyttää

Yhdistetään nyt painike kameran kanssa - Ota kuva vain, kun painiketta painetaan

tuoda picamerafrom ajan tuonnin lepotilasta RPi: stä tuoda GPIO PIL -tuonti -kuvasta # HUOMAUTUS: Tämä on pääohjelman peruutuspainike # Käytän sitä vain täällä videon selkeyden vuoksi 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) uni (1) def off (): GPIO.output (ledCancel, False) # Toiminto kuvan peittämiseksi deflay overCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Luo peite # Käytetään img1: n kanssa, koska kaikki ovat samankokoisia pad = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # liitä peittokuva - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), koko = img1.size) ov.alpha = 200 # kerros on 3, koska kameran esikatselu on kerroksessa 2 ov.layer = 3 lepotila (1) camera.remove_overlay (ov) # liitä peittokuva - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # kerros on 3, koska kameran esikatselu on kerroksessa 2 ov.layer = 3 sleep (1) camera.remove_overlay (ov) # liitä peittokuva - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # kerros on 3, koska kameran esikatselu on kerroksessa 2 ov.layer = 3 lepotila (1) camera.remove_overlay (ov) camera = 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 ()

Hieman koodin selitystä

Se käynnistää kameran esikatselun ja odottaa siellä, kunnes painiketta painetaan. Kun painiketta on painettu, LED syttyy ja lähtölaskenta alkaa. Loppuun mennessä kuva otetaan ja LED sammuu

Vaihe 10: Lähetä Twitteriin

Lähetä Twitteriin
Lähetä Twitteriin
Lähetä Twitteriin
Lähetä Twitteriin
Lähetä Twitteriin
Lähetä Twitteriin

Nyt aiomme käyttää Pythonia ja tweetata twiitin!:) Tarvitset kuvan julkaistaksesi - valitse viisaasti.

Ensinnäkin meidän on päästävä twitter -sovellusliittymään ja sitä varten meidän on luotava APP. Siirry osoitteeseen https://apps.twitter.com ja luo uusi sovellus.

Sinun on haettava kehittäjätiliä - täytä muutama kysymys ja vahvista sähköpostiosoitteesi. Tämän jälkeen voit luoda uuden APP: n.

Kun olet luonut APP: n, siirry kohtaan Avaimet ja tunnukset ja Luo käyttötunnus ja käyttötunnuksen salaisuus. Näkyviin tulee ikkuna, jossa on VAIN VAIN KERTA - KOPIOI NÄMÄ JA SÄILYTÄ NÄMÄ VÄLLÄ.

Lähetä kuva Twitter -tilillesi seuraavan koodin avulla. Älä unohda täyttää:

  • kuluttaja_avain
  • kuluttajan_salainen
  • access_token
  • access_token_secret

twitter -viesti on teksti, joka lähetetään twiittiin.

jpg_foto_to_send on kuva, joka liitetään twiittiin. Ole hyvä ja ota kuva samaan hakemistoon kuin Python -komentosarja ja muuta nimi koodissa.

tuoda tweepy # Twitter -asetukset 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) # Lähetä twitteriin def sendToTwitter (): cfg = {"kuluttajan_avain": "", "kuluttajan_salainen": "", "access_token": "", "access_token_secret": "" "api = get_api (cfg) # Tilaviesti tweet = "Twitter -viesti" status = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()

Tarkista twiittisi Twitter -syötteestäsi.

Tässä on Tweet

Tai alla:

#RaspberryPI MagicBox. Ota kuvia, tarkista ne ja valitse lähettää ne Twitteriin ja Facebookiin. Powered by Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p

- Bruno Ricardo Santos (@feiticeir0) 29. helmikuuta 2020

Vaihe 11: Joidenkin elementtien yhdistäminen

Joidenkin elementtien yhdistäminen
Joidenkin elementtien yhdistäminen
Joidenkin elementtien yhdistäminen
Joidenkin elementtien yhdistäminen

Yhdistetään nyt Big Dome -painike, painetaan sitä, lasketaan alas, otetaan kuva, päätetään lähettääkö se twitteriin vai ei.

Lisäämme toisen peittokuvan ja käytämme kaikkia kolmea painikkeita. Kun kuva on otettu, kaikki 3 painikkeen LED -valot syttyvät.

Lisäämme toisen kuvan, jossa näkyy sosiaalisiin verkostoihin lähetettävät kuvakkeet

SelectOption-p.webp

Aenviar-p.webp

Videossa ei näy sinistä painiketta (kameran etuosassa), mutta LED palaa ja se alkaa vilkkua heti, kun sitä painetaan.

Koodi on liitetty halutessasi

Tämä on viimeinen testauskoodi ennen pääohjelmaa.

# koodaus = utf-8 tuonti picamera tuonti _langan tuonnin aliprosessi sp: ajasta tuonti lepotilasta RPi: stä tuonti GPIO PIL-tuonnista Kuvien tuontiketju # Peruuta kuva CancelButton = 24 # Ota kuva -painike LED takePicButtonLed = 27 # Lähetä sosiaaliseen verkostoon -painike LED -postSNLed = 22 # Peruuta -painike 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 -asetukset def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['kuluttajan_avain'], cfg ['kuluttajan_salaisuus']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) return tweepy. API (auth) # Lähetä twitteriin def sendToTwitter (): cfg = {"con sumer_key ":" "," Consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Tilaviesti tweet =" MagicBox -ohjattava testaus. #MagicBox #RaspberryPI #Vaspberry #Instructables "status = api.update_with_media (" pushTesting.jpg ", tweet) #Facebook AOth def get_api_facebook (cfg): graph = facebook. GraphAPI (cfg ['access_token']) #Hae sivu voit ohittaa # seuraavan, jos haluat lähettää itsesi.] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) return graph # Lähetä Facebookiin def sendToFacebook (): #Values for access cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Kuvateksti" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Kuvateksti ") # Kevyt vain TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Vain valo Peruuta ja SocialNetwork -painike def cancelPostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Vilkkuva kuvauskuva -LED, kun laskuri laskee laskennanTimerPicture (): GPIO.output (takePicButtonLed, True) lepotila (0,5) GPIO.output (takePicButtonLed, False) sleep (0.5) GPIO.output (takePicButtonLed, True) uni (0.5) GPIO.output (takePicButtonLed,False) sleep (0.5) GPIO.output (takePicButtonLed, True) sleep (0.5) GPIO.output (takePicButtonLed, False) # Blink postSNLed kun lähetetään sosiaalisiin verkostoihin def blinkPosting (stop_event): # Aloita kun (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)) uni (1) GPIO.output (postSNLed, True) uni (1) GPIO.output (CancelButtonLed, True) uni (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Näytä esikatselu kerroksessa 1 def displayPreview (imgName): # Koska PIL -kuvan esitys on paskaa # käytämme kameran peittokuvaketta näyttämään # esikatselu img = Image.open (imgName) täyte = Kuva.uusi ('RGB', (((kuvakoko [0] + 31) // 32) * 32, ((kuvakoko [1] + 15) // 16) * 16,)) padding.paste (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.layer = 1 # Näytä esikatselu tasolle 3 def displayPreview3 (imgName): # Koska PIL -kuvashow on paska #, käytämme kameran peittokuvaa näyttääksemme # esikatselun 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 # Toiminto overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # Luo Peittokuvake = Kuva.uusi ('RGB', (((kuvakoko [0] + 31) // 32) * 32, ((kuvakoko [1] + 15) // 16) * 16,)) # Liitä päällyslevy.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Toiminto peittoon image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Luo peittokuva # Käytetään img1: n kanssa, koska kaikki ovat samankokoisia pad = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # liitä peittokuva - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # kerros on 3, koska kameran esikatselu on kerroksessa 2 ov.layer = 3 lepotila (1) camera.remove_overlay (ov) # liitä peittokuva - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # kerros on 3, koska kameran esikatselu on kerroksessa 2 ov.layer = 3 sleep (1) camera.remove_overlay (ov) # paste peittokuva - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # kerros on 3, koska kameran esikatselu on kerroksessa 2 ov.layer = 3 lepotila (1) camera.remove_overlay (ov) # Päätoiminto # Tyhjennä näyttö, jotta käynnistysviestit eivät ole läsnä # luultavasti olisi parempi tehdä tämä 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 = 'keskimääräinen' #Testaus tässä: yritä: while (True): camera.start_preview () #Show LED Only for Take onlyTakePicLed () #Odota, kunnes painike ottaa Kuva GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Aloita säikeen laskeminen LED -valojen kanssa, kun kuvia näytetään # Voidaan todennäköisesti käyttää overlayCounter -toiminnossa, # koska sillä on myös ajastimet kuvien näyttämiseksi, mutta led -tehosteet ei # olisi sama _thread.start_new_thread (countingTimerPicture, ()) # Näytä kuvien peittokuva kameran kuvan peittokuvassaCounter () # Näytä kaikki LEDit otettaessa kuvaa showAllLeds () camera.capture ('pushTesting.jpg') kamera. stop_preview () #display image displayPreview ('pushTesting.jpg') # Näytä peittokuva oo = overlaysn () # Näytä peruutettavat LEDit tai lähetä sosiaalisiin verkkoihin CancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_event_dutton, GPIO. FALLING), kun (True): jos 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 "Peruutettu" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (CancelButton) GPIO.remove_event_donceptor (otto) "Poistui…") #offLeds () GPIO.cleanup ()

Vaihe 12: Johdotus

Image
Image
Johdotus
Johdotus
Johdotus
Johdotus

Johdotus on vain kytkemässä Big Dome Push -painikkeet Raspberry PI: hen.

Seuraa vain Fritzing -kaaviota.

Liitännät ovat:

Yhteys RPI GPIO PIN GND vihreä painikeGND (#3) GND keltainen painikeGND (#9) GND sininen painikeGND (#39) Ota kuva (sininen painike "Push to make") 17 (BCM) Julkaise sosiaalisiin verkkoihin Painike "Push to make") 23 (BCM) Peruuta (keltainen painike "Push to make") 24 (BCM) Sininen painike LED27 (BCM) Vihreä painike LED22 (BCM) Keltainen painike LED5 (BCM)

Lämpökutistuminen on myös värikoodattu

  • Musta on GND -yhteydet
  • Keltaiset ovat "push to make" -yhteyksiä
  • Sininen on LED -liitäntä

GPIO. BCM -numerot vs GPIO. BOARD -yhteydet

Koska yhteyteni ovat BCM, mielestäni nyt on hyvä aika puhua siitä ja BCM: n ja BOARDin välisestä erosta.

Suurin ero on siinä, miten viitataan GPIO -PIN -koodeihin, jotka puolestaan ohjaavat yhteyden muodostamista. GPIO.board viittaa PIN -koodeihin millä tahansa Internetissä olevalla GPIO -asettelulla painetulla numerolla.

GPIO. BCM viittaa PIN -numeroihin, kuten Broadcom SOC näkee ne. Tämä todennäköisesti muuttuu Raspberry PI: n uudempien versioiden myötä.

Pinout.xyz -sivustossa levyn numerot ovat nastojen vieressä ja BCM viitataan näin - BCM X (jossa X on numero)

Vaihe 13: MagicBox

Tämän vaiheen liitteenä oleva koodi on lopullinen.

Voit käyttää sitä vadelma PI -käynnistyksellä ilman edes kirjautumista. Voit tehdä tämän luomalla vain tämän pienen komentosarjan hakemistoon, johon olet asettanut koodin - muuta polkuja vastaavasti

#!/bin/bash

cd/home/pi/magicbox python MagicBox.py

Tee siitä suoritettava

chmod +x start_magicbox.sh

Kutsu nyt sitä /etc/rc.local, juuri ennen exit 0 -ohjetta

sudo vi /etc/rc.local

/home/pi/magicbox/start_magicbox.sh &

Tallenna ja lopeta.

Nyt jokaisen uudelleenkäynnistyksen jälkeen Python -ohjelma suoritetaan

HUOMAUTUS: Kaikkien kuvatiedostojen on oltava samassa hakemistossa kuin komentosarja. Sinulla on oltava:

  • 1.png
  • 2.png
  • 3.png
  • Aenviar.png
  • ValitseOption.png

Saat kaikki nämä tiedostot MagicBoxin githubista.

Suositeltava: