Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Rakenna
- Vaihe 2: Kamera
- Vaihe 3: Monitori
- Vaihe 4: Sisustus
- Vaihe 5: Ohjelmointi
- Vaihe 6: Vadelma PI: n valmistelu
- Vaihe 7: Ohjelmisto
- Vaihe 8: Ohjelmointi - Kameran esikatselu
- Vaihe 9: Ohjelmointi - Big Dome -painike
- Vaihe 10: Lähetä Twitteriin
- Vaihe 11: Joidenkin elementtien yhdistäminen
- Vaihe 12: Johdotus
- Vaihe 13: MagicBox
Video: RaspberryPI -valokuvakamera - MagicBox: 13 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-31 10:19
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
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 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
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
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
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
- Valitse vaihtoehto 5 - Liitäntävaihtoehdot
- Valitse P1 - Ota käyttöön/poista yhteys Raspberry PI -kameraan
- Sano kyllä
- OK
- Valitse Valmis
- 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
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
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
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
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
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:
RaspberryPi islamilaisen rukouksen kello ja hälytys: 15 vaihetta (kuvilla)
RaspberryPi Islamic Prayers Watch & Alarm: Muslimit ympäri maailmaa pitävät viisi rukousta joka päivä, ja jokaisen rukouksen on oltava tiettyyn aikaan päivästä. koska elliptinen tapa planeettamme liikkuu auringon ympäri, mikä tekee auringon noususta ja laskusta ajoittain erilaista ympäri vuoden
IoT -perusalusta, jossa RaspberryPi, WIZ850io: Alusta Laiteohjain: 5 vaihetta (kuvilla)
IoT -perusalusta, jossa RaspberryPi, WIZ850io: Alusta Laiteohjain: Tiedän RaspberryPi -alustan IoT: lle. WIZnet julkisti äskettäin WIZ850io. Toteutin siis RaspberryPi -sovelluksen Ethernet SW -muunnoksella, koska voin käsitellä lähdekoodia helposti. Voit testata alustan laiteajuria RaspberryPin kautta
Valvo ja tallenna lämpötila Bluetooth LE: n ja RaspberryPi: n avulla: 9 vaihetta (kuvilla)
Valvo ja tallenna lämpötilaa Bluetooth LE: n ja RaspberryPi: n avulla: Tässä ohjeessa kerrotaan, kuinka kootaan monisolmun lämpötilanseurantajärjestelmä, jossa on Bluetooth LE -anturivika Blue Radiosilta (BLEHome) ja RaspberryPi 3B Bluetooth LE -standardin kehityksen ansiosta nyt helposti saatavilla
IOT Lunar Rover Raspberrypi+Arduino: 5 vaihetta (kuvilla)
IOT Lunar Rover Raspberrypi+Arduino: Tämä projekti on saanut inspiraationsa Intian kuutehtävästä Chandryaan-2, joka toteutetaan syyskuussa 2019.Tämä on erityinen tehtävä, koska he laskeutuvat paikkaan, jossa kukaan ei ole ennen laskeutunut. osoittaakseni tukeni päätin tehdä
RaspberryPi: LEDin häivyttäminen sisään ja ulos: 4 vaihetta (kuvilla)
RaspberryPi: Häivytä LED -valo sisään ja pois: Seuraavat vaiheet ovat kokeiluja valaisimien toimivuuden havainnollistamiseksi. Ne osoittavat, kuinka himmentää LED tasaisesti ja kuinka himmentää se sisään ja ulos. Tarvitset: RaspberryPi (käytin vanhempaa Pi: tä, Pi-3 on käytössä, mutta mikä tahansa Pi toimii.) Leipälauta