Orodha ya maudhui:

Kamera ya Picha ya RaspberryPI - MagicBox: Hatua 13 (na Picha)
Kamera ya Picha ya RaspberryPI - MagicBox: Hatua 13 (na Picha)

Video: Kamera ya Picha ya RaspberryPI - MagicBox: Hatua 13 (na Picha)

Video: Kamera ya Picha ya RaspberryPI - MagicBox: Hatua 13 (na Picha)
Video: Raspberry Pi 4: запускаем видео 4K, играем в игры и боремся с перегревом. Обзоры Амперки 2024, Novemba
Anonim
Image
Image
Jenga
Jenga

Wakati uliopita, nilikuwa na wazo hili la wazimu kuunda mashine ya kupiga picha kutoka kwa Raspberry PI. Katika jiji langu, kulikuwa na onyesho dogo ambapo watu wangeenda na kuonyesha kile walichokuwa wakifanya au walichotengeneza kwa kutumia vifaa vya elektroniki, kompyuta, nk.

Mmoja alikuwa anakuja, na, pamoja na mke wangu, tunaunda jambo hili.

Inafanyaje kazi ?

Unabonyeza kitufe cha bluu - inaanza kupepesa - na baada ya sekunde 3 picha imechukuliwa. Kwa upande mwingine wa kamera kuna mfuatiliaji anayeonyesha hesabu na baada ya picha kupigwa, hakikisho la picha.

Sasa unaweza kuchagua kuituma kwa Twitter na Facebook au kughairi na ujaribu tena. Ni rahisi sana.

Kila kitu kimepangwa katika Python, ikitumia PI framebuffer - Hakuna Xorg, hakuna GUI inayotumika.

Hapa kuna video ya mradi unaofanya kazi

Vifaa

  • Raspberry PI (ninatumia toleo la 2)
  • Kamera ya Raspberry PI (Kutumia toleo 1)
  • 3x Big Dome kushinikiza vifungo
  • Monitor ya TFT / LCD na VGA / HDMI
  • MDF
  • Bawaba za chuma, screws, nk.
  • Zana za Nguvu
  • Wakati wa kupumzika na raha nyingi

Hatua ya 1: Jenga

Jenga
Jenga
Jenga
Jenga

Kuijenga ilikuwa ya kufurahisha. Kukata mengi, uchoraji na kuchimba visima.

Nilitumia paneli za MDF kujenga muundo wa msingi wa kamera. Ni nyepesi na rahisi kufanya kazi nayo. Pia, ilikuwa aina moja ya kuni mashine ya Laser huko Fablab ya mahali hapo iliweza kukata.

Ufikiaji wa wiring ndani ulifanywa na upande wa mfuatiliaji, kwa kutumia bawaba za majimaji ili waweze kusaidia kuinua mfuatiliaji.

Hatua ya 2: Kamera

Kamera
Kamera
Kamera
Kamera
Kamera
Kamera

Kamera

Kamera ni sanduku na vipimo vifuatavyo: 60cm x 40cm x 30cm Yako inaweza kuwa ndogo, kubwa, ni juu yako. Unahitaji tu kukaa kwa mfuatiliaji utakayetumia. Paneli za MDF zilikatwa laser kwenye Fablab ya ndani. Kuna haja ya mashimo 3 nyuma - vifungo viwili vya kushinikiza kuba kubwa na moja ya mfuatiliaji. Mbele, mashimo 2 - moja ya kitufe cha kushinikiza kuba kubwa na nyingine - ndogo - kwa kamera ya Raspberry PI. Sina vipimo maalum - fikiria tu kamera na utumie hiyo.

Hatua ya 3: Fuatilia

Kufuatilia
Kufuatilia
Kufuatilia
Kufuatilia
Kufuatilia
Kufuatilia

Kufuatilia

Msaada wa ufuatiliaji ulifanywa ukiongeza vipande vidogo vya kuni kuunga mkono ndani ya vipimo vyake.

Ilikuwa ukanda kutoka kwa nyumba ya plastiki na ililindwa mahali pake na vis. Ili kusaidia kuinua, bawaba mbili za majimaji (zilizotumiwa) zilitumika.

Hatua ya 4: Mapambo

Mapambo
Mapambo
Mapambo
Mapambo
Mapambo
Mapambo
Mapambo
Mapambo

Kwa kuwa napenda sana mtindo wa Fuji X-T30 yangu, tulienda na kufanya kitu kama hicho.

Kwanza, tuliifunika kwa povu na baadaye tukaipaka rangi nyeusi. Baada ya rangi, tuliongeza karatasi ya aluminium kwa sehemu za fedha na kuifunga

Kuiga lensi, tulitumia tu Tupperware pande zote ikiwa tulifanya shimo ndogo kwa moduli ya kamera ya Raspberry PI kukaa.

Hatua ya 5: Kupanga programu

Kupanga kamera ilikuwa changamoto, lakini ilikuwa ya kupendeza sana.

Hakuna GUI - hii inaendesha CLI na inaendesha toleo la 3 la Python.

Nilianza kwanza kwa kujaribu na kupanga vifungo, ijayo nilikuwa nikipiga picha kwa kutumia zana ambazo tayari zimetolewa na API ya Python. Kisha nikaendelea kufunika picha kwenye pato la kamera (kwa hesabu) na karibu kushirikiana na Twitter na Facebook.

Baada ya kuwa raha na yote hayo, kama kitendawili, nilikusanya vipande vyote pamoja. Hapa, tunaenda na mchakato huo huo. Anza polepole na ndogo na nenda kwa haraka na kubwa.

Kwanza, wacha tuanze kwa kusanidi Raspberry PI

Hatua ya 6: Kuandaa Raspberry PI

Kuandaa Raspberry PI
Kuandaa Raspberry PI
Kuandaa Raspberry PI
Kuandaa Raspberry PI
Kuandaa Raspberry PI
Kuandaa Raspberry PI

Sitaelezea jinsi ya kufunga Raspbian kwenye Raspberry PI - kuna mafunzo mengi huko nje, hata kwenye wavuti rasmi ya Raspberry PI.

Unahitaji tu kuwa na ufikiaji wa SSH, au uiunganishe kwa mfuatiliaji na unganisha kibodi na panya.

KUMBUKA: Unapoanza na kamera ya Raspberry PI, unahitaji kuiweka kwenye kufuatilia. Mpaka hapo, hatua zote zinaweza kufanywa kwa kutumia SSH.

Baada ya kupakua kwenye Raspberry PI yako, tunahitaji kuwezesha kamera ya Raspberry PI. Wacha tutumie chombo cha raspi-config kwa hiyo.

Sudo raspi-config

  1. Chagua chaguo 5 - Chaguzi za Kuingiliana
  2. Chagua P1 - Wezesha / Lemaza unganisho kwa kamera ya Raspberry PI
  3. Sema Ndio
  4. kwa OK
  5. Chagua Maliza
  6. Chagua Ndio kuanza upya sasa

Baada ya kuanza upya, tunaweza kuendelea

Hatua ya 7: Programu

Tutahitaji maktaba za Python kusanikishwa. Hii imesasishwa kwa toleo la hivi karibuni la Raspbian - Buster

Kwanza, weka kuweka Python 3 kama chaguo-msingi. Fuata kiunga hiki kujua jinsi ya kuiweka SYSTEM WIDE

Maktaba:

  • python-pil.imagetk kudhibiti picha
  • python-rpi.gpio kufikia PIN za GPIO
  • chatu-picamera kufikia Kamera ya Raspberry PI
  • Tweepy kushiriki picha hiyo kwa twitter
  • facebook-sdk kushiriki kwenye ukurasa wa facebook

Sudo apt-get kufunga python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip

Tumia bomba la Python kusanikisha facebook-sdk

sudo pip3 kufunga facebook-sdk

Hatua ya 8: Programu - Uhakiki wa Kamera

Image
Image
Programu - Uhakiki wa Kamera
Programu - Uhakiki wa Kamera
Programu - Uhakiki wa Kamera
Programu - Uhakiki wa Kamera

Moja ya mahitaji niliyoweka kwenye mradi huu ni kwamba programu hii ingeendeshwa katika hali ya CLI. Kwa hivyo, tunahitaji kuonyesha picha ya kamera kwenye koni. Kwa hili, wacha tutumie Python Picamera. Baada ya hapo, wacha tutumie pil.imagetk kuonyesha kufunikwa juu ya hakikisho la kamera

Programu yetu ndogo (tutaendeleza programu ndogo hadi moja kubwa mwishoni) itaonyesha hakikisho la kamera.

#! / usr / bin / env chatu

ingiza picha ya kuagiza wakati kutoka kwa wakati kuagiza kamera ya kulala = picamera. PiCamera () # Weka azimio unalotaka kamera. Usuluhishi = (1280, 1024) kamera.framerate = kamera 24. anza_preview () jaribu: wakati (Kweli): lala (1) isipokuwa (KinandaInterrupt, SystemExit): chapisha ("Inatoka…") kamera.stop_preview ()

Ili kuijaribu itekeleze tu

kamera ya chatuPreview.py

Chungulia kamera na picha juu

Kwa kuwa nilitaka hesabu iliyoonyeshwa kabla ya kuchukua picha, nilihitaji picha zinazoingiliana na hakiki ya kamera.

Unda picha ya-p.webp" />

Nambari ifuatayo itaingiliana 1-p.webp

ingiza picha kutoka kwa kuagiza picha ya PIL kutoka wakati uingize kulala na picamera. PiCamera () kama kamera: camera.resolution = (1920, 1080) camera.framerate = 24 camera.art_preview () # mzigo picha img = Image.open ('1.png '# kuunda pedi = Image.new (' RGB ', (((img.size [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16, pedi) bandika (img, (0, 0)) o = kamera.add_overlay (pad.tobytes (), size = img.size) o.alpha = 128 o.layer = 3 wakati Kweli: lala (1)

Jaribu:

python pichaOverlay.py

Wacha sasa tuunde hesabu iliyo na picha zilizoambatishwa. Kama vile umeunda picha ya 1.png, tengeneza picha zingine mbili na 2 na 3 ndani.

Baada ya hapo, tumia tu nambari ifuatayo:

kuagiza picamera

kutoka kwa PIL kuagiza Picha kutoka wakati wa kuagiza kulala na picamera. PiCamera () kama kamera: camera.resolution = (1280, 1024) camera.framerate = 24 camera.art_preview () # mzigo picha img1 = Image.open ('3.png' img2 = Image.open ('2.png') img3 = Image.open ('1.png') # kuunda pedi = Image.new ('RGB', (((img1.size [0] + 31) / / 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) pedi.bandika (img1, (0, 0)) o = camera.add_overlay (pad.tobytes (), saizi = img1. saizi) o.alpha = 128 o.layer = 3 kulala (2) # ondoa kamera iliyofunikwa ya awali. tobytes (), size = img2.size) o.alpha = 128 o.layer = 3 kulala (2) # ondoa kamera iliyofunikwa hapo awali. ongeza_kufunika (pedi.tobytes (), saizi = img3.size) o.alpha = 128 o.layer = 3 kulala (2)

Sasa itekeleze:

python pichaOverlayCounter.py

Na angalia hesabu

Wow - Nambari nyingi na hakuna picha iliyopigwa… Wacha tutatue hilo kwa kuchanganya zote pamoja - hakiki kamera, hesabu na piga picha

Ingiza picha kutoka kwa PIL ingiza Picha kutoka wakati wa kuingiza usingizi juu ya kufunikaCounter (): # mzigo picha img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1. png ') # tengeneza pedi = Image.new (' RGB ', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # weka kufunika - pedi 3. bandika (img1, (0, 0)) o = kamera.add_overlay (pedi.tobytes (), saizi = img1.size) o.alpha = 128 o.layer = 3 lala (1) # Ondoa kamera iliyofunikwa hapo awali. ondoa kifuniko (o) # weka kufunika - pedi 2. weka (img2, (0, 0)) o = kamera. o.alpha = 128 o.layer = 3 kulala (1) # ondoa kamera iliyofunikwa hapo awali. ondoa_kufunika (o) # weka kifuniko - pedi 3. bandika (img3, (0, 0)) o = camera.add_overlay (pedi. tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 kulala (1) kamera. ondoa_overlay (o) camera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = Kamera ya 24. anza_kuangalia [

Jaribu:

picha ya chatuWithTimer.py

Na hapa tuna Yoda

Hatua ya 9: Kupanga programu - Kitufe cha Kubwa cha Dome Kubwa

Kupanga programu - Kitufe cha Kubwa cha Dome Kubwa
Kupanga programu - Kitufe cha Kubwa cha Dome Kubwa
Kupanga programu - Kitufe cha Kubwa cha Dome Kubwa
Kupanga programu - Kitufe cha Kubwa cha Dome Kubwa

Kitufe kikubwa cha kushinikiza kuba ni kitufe kikubwa cha pande zote - na kipenyo karibu cha 100mm na LED ndogo. Inasema inafanya kazi saa 12V, lakini 3.3v ya Raspberry PI inatosha kuiwasha

Tumia skimu kwa kupima

Nambari:

kutoka kwa RPi kuagiza GPIO

kuchukuaButton = 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) # Kuzuia kazi GPIO.wait_for_edge (takeButton, GPIO. FALLING) chapa ("Button Pressed")

Baadhi ya kuelezea nambari Moja ya aina ya kupata maadili kutoka kwa GPIOS ni kupitia usumbufu (nyingine ni kupiga kura) - kugundua makali.

Makali ni jina la mpito kutoka HIGH hadi LOW (makali ya kuanguka) au LOW to HIGH (kupanda kwa makali). Wakati PIN haijaunganishwa na chochote, usomaji wowote hautafafanuliwa. Kufanya kazi ni kuwa na kontena la kuvuta / chini kwenye PIN iliyosemwa. Raspberry PI inaruhusu kusanidi vipingamizi vya kuvuta / chini kupitia programu.

Mstari

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

inasanidi hiyo PIN kufanya hivyo tu - vuta

Kwa nini kuvuta? Kweli, kitufe cha kushinikiza kuba kubwa ina PIN 2 - kushinikiza kuvunja au kushinikiza kutengeneza (kama vifungo vidogo vya kushinikiza ambavyo mara nyingi huja na vifaa vya Arduino / Raspberry PI). Nimeiweka waya kwa kitufe cha "kushinikiza kutengeneza". Unapobanwa, mzunguko hufunga na umeme hupita (kawaida hufunguliwa).

Mstari

GPIO.ngojea_kwa_mji (takeButton, GPIO. FALLING)

itasubiri (kusitisha utekelezaji wa hati hiyo) hadi igundue PIN - ikitoa kifungo itakata mtiririko wa umeme na PIN itatoka 3.3v hadi 0v

PIN ya LED ni kuwasha tu LED kwenye kifungo

Maelezo zaidi juu ya swichi za kushinikiza kutoka kwa Mafunzo ya Arduino, Wikipedia kwenye kushinikiza kutengeneza au kushinikiza kuvunja na GPIO inakatiza.

Sasa, wacha tuunganishe kitufe cha kushinikiza na kamera - Piga picha tu wakati kitufe kinabanwa

ingiza picha kutoka wakati wa kuagiza usingizi kutoka kwa RPi kuagiza GPIO kutoka kwa PIL kuagiza Picha # KUMBUKA: Hii ndio kitakuwa kitufe cha kughairi katika programu kuu # Ninaitumia hapa kwa sababu ya uwazi katika kuchukua videoButton = 24 ledCancel = 5 GPIO seti (GPIO. BCM) (): GPIO. Image.open ('1.png') # Unda kufunika # Inatumika na img1 kwa sababu zote ni sawa saizi ya pedi = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # weka kufunika - pedi 3. bandika (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # safu ni 3 kwa sababu hakikisho la kamera iko kwenye safu ya 2 ov.layer = 3 kulala (1) kamera. ondoa_kufunika (ov) # weka kufunika - pedi 2. img2, (0, 0 ov = kamera. ongeza_kufunika (pedi.tobytes (), saizi = img2.size) ov.alpha = 200 # safu ni 3 kwa sababu hakikisho la kamera liko kwenye safu ya 2 ov. mchezaji = 3 ya kulala (1) kamera. ondoa_kufunika [ov. # weka kufunika - pedi 1. bandika (img3, (0, 0)) ov = kamera.add_overlay (pedi.tobytes (), saizi = img3.size) ov.alpha = 200 # safu ni 3 kwa sababu hakikisho la kamera ni kwenye safu ya 2 ov.layer = 3 kulala (1) kamera. ondoa_kufunika [ov] kamera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.art_preview () GPIO.wait_for_edge (takeButton, GPIO. FALLING) onLeds () overlayCounter () camera.capture ('pushTesting.jpg') camera.stop_preview () offLeds () GPIO.cleanup ()

Maelezo kidogo ya kificho

Inaanza hakikisho la kamera na kusubiri hapo hadi kitufe kitapobanwa. Baada ya kitufe kushinikizwa, taa ya LED huwaka na hesabu huanza. Wakati wa kufikia mwisho, picha imechukuliwa na LED imezimwa

Hatua ya 10: Tuma kwa Twitter

Tuma kwa Twitter
Tuma kwa Twitter
Tuma kwa Twitter
Tuma kwa Twitter
Tuma kwa Twitter
Tuma kwa Twitter

Sasa, tutatumia Python na tweet tweet!:) Utahitaji picha ili kuchapisha - chagua kwa busara.

Kwanza, tunahitaji kupata API ya twitter na kwa hiyo tunahitaji kuunda APP. Nenda kwa https://apps.twitter.com kuunda programu mpya.

Utahitaji kuomba akaunti ya msanidi programu - jaza maswali kadhaa na uthibitishe anwani yako ya barua pepe. Baada ya hapo, utaweza kuunda APP mpya.

Baada ya kuunda APP, nenda kwa Funguo na Ishara na Utengeneza Ishara ya Ufikiaji na Siri ya Ishara ya Ufikiaji. Dirisha litaonyeshwa na Funguo KWA MARA MOJA - NAKILI ZAO NA UZIOKOE KWA AJILI YA BAADAE.

Tumia nambari ifuatayo kutuma picha kwenye akaunti yako ya twitter. Usisahau kujaza:

  • kitufe_ cha watumiaji
  • siri_mtumiaji
  • ishara_ya ufikiaji
  • ufikiaji_wa ishara_ya siri

ujumbe wa twitter ni maandishi ya kutuma kwenye tweet.

jpg_foto_to_send ni picha ambayo itaambatanishwa kwenye tweet. Tafadhali kuwa na picha kwenye saraka sawa na hati ya Python na ubadilishe jina kwenye nambari.

kuagiza tweepy # Mipangilio ya Twitter def get_api (cfg): auth = tweepy. tweepy. API (auth) # Tuma kwa twitter def sendToTwitter (): cfg = {"consumer_key": "", "user_secret": "", "access_token": "", "access_token_secret": ""} api = get_api (cfg) # Hali ya Ujumbe tweet = "Twitter message" status = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()

Angalia malisho yako ya Twitter kwa tweet yako.

Hapa kuna Tweet

Au bellow:

#RaspberryPI UchawiBox. Piga picha, zikague na uchague kuzituma kwa twitter na Facebook. Inaendeshwa na PI ya Raspberry. @@ Raspberry_Pi # RaspberryPI # RaspberryPIProjectpic.twitter.com / cCL33Zjb8p

- Bruno Ricardo Santos (@ feiticeir0) Februari 29, 2020

Hatua ya 11: Kuchanganya Baadhi ya Vipengele

Kuchanganya Baadhi ya Vipengele
Kuchanganya Baadhi ya Vipengele
Kuchanganya Baadhi ya Vipengele
Kuchanganya Baadhi ya Vipengele

Wacha sasa tuunganishe kitufe cha Big Dome Push, kukibonyeza, kuhesabu chini, kupiga picha, kuamua ikiwa utapeleka kwa twitter au la.

Tutaongeza picha nyingine ya kufunika na tumia vifungo vyote vitatu vya kushinikiza. Wakati picha imechukuliwa, vifungo vyote 3 vya LED vitawaka.

Tunaongeza picha nyingine, ambayo inaonyesha ikoni za kuchapisha kwenye mitandao ya kijamii

SelectOption-p.webp

Aenviar-p.webp

Kwenye video haionyeshwa kitufe cha kushinikiza Bluu (mbele ya kamera), lakini LED imewashwa na inaanza kupepesa mara tu inapobanwa.

Nambari imeambatishwa ikiwa unapenda

Hii ndio nambari ya mwisho ya upimaji kabla ya programu kuu.

# coding = utf-8 kuagiza picamera kuagiza _readread subprocess kama sp kutoka wakati kuagiza kulala kutoka RPi kuagiza GPIO kutoka PIL kuagiza picha kuagiza threading # Twitter kuagiza tweepy # Facebook kuagiza facebook # Button kuchukua picha takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # Ghairi Ghairi ya PichaButton = 24 # Piga kitufe cha picha Piga pichaBiBodi ya Led = 27 # Tuma kwa Kitufe cha Mtandao wa Kijamii LED postSNLed = 22 # Ghairi kifungo 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 (GPIO.setup, GPIO.setup, GPIO.setup (cancelButtonLed, GPIO. OUT) # Mipangilio ya Twitter inapunguza get_api (cfg): auth = tweepy., cfg ['access_token_secret']) kurudi tweepy. API (auth) # Tuma kwa twitter def sendToTwitter (): cfg = {"con sumer_key ":" "," consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Hali Ujumbe tweet =" Uchunguzi wa Uchunguzi wa 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']) # Pata ishara ya ukurasa chapisha kama ukurasa. Unaweza kuruka # yafuatayo ikiwa unataka kuchapisha kama wewe mwenyewe.] == cfg ['page_id']: page_access_token = ukurasa ['access_token'] graph = facebook. GraphAPI (page_access_token) kurudisha grafu # Tuma kwa facebook def sendToFacebook (): #Bali za ufikiaji cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Nukuu picha" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Nukuu picha ") # Nuru tu ya TakePicButtonLed def onlyTakePicLed (): GPIO.putput (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Nuru tu Ghairi na kitufe cha SocialNetwork def canPostLEDS (): O.putput (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Blink piga picha ya LED wakati ukihesabu def countingTimerPicture (): GPIO.putput (takePicButtonLed, True) lala (0.5) GPIO. pato (takePicButtonLed, False) kulala (0.5) GPIO.pato (takePicButtonLed, True) lala (0.5) GPIO.output (takePicButtonLed,Kulala) chapa ("off") kulala (1) GPIO.pato (postSNLed, Kweli) kulala (1) GPIO.putput (cancelButtonLed, True) kulala (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) Pato la GPIO (cancelButtonLed, True) # Onyesha hakikisho kwenye safu ya 1 def displayPreview (imgName): # Kwa kuwa onyesho la picha ya PIL ni crap # tunatumia kufunikwa kutoka kwa kamera kuonyesha # hakikisho img = Image.open (imgName padding = Image.new ('RGB', (((img.size [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16,)) padding.bandika (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.layer = 1 # Onyesha hakikisho kwenye safu 3 def displayPreview3 (imgName): # Kwa kuwa onyesho la picha ya PIL ni crapp # tunatumia kufunika kwa kamera kuonyesha # hakikisho img = Image.open (imgName) padding = Image.new ('RGB', (((saizi [0] + 31) // 32) * 32, ((img.size [1] + 15) // 16) * 16,)) padding.bandika (img, (0, 0)) ov = kamera. Kifuniko cha kufunika = Picha.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Bandika pedi ya kufunika. picha overlayCounter (): #pakia picha img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Unda kufunika # Imetumika na img1 kwa sababu zote zina ukubwa sawa pedi = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)] # weka kufunika - pedi 3. bandika (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) alpha = 200 # safu ni 3 kwa sababu onyesho la kuchungulia kamera liko kwenye safu ya 2 ov.layer = 3 kulala (1) kamera. = kamera.add_overlay (pedi.tobytes (), saizi = img2.size) ov.alpha = 200 # safu ni 3 kwa sababu hakikisho la kamera liko kwenye safu ya 2 ov.layer = 3 kulala (1) kamera.remove_overlay (ov) # paste kufunika - pedi 1 kuweka (img3, (0, 0)) ov = kamera.add_overlay (pedi.tobytes (), saizi = img3.size) ov.alpha = 200 # safu ni 3 kwa sababu hakikisho la kamera liko kwenye tabaka 2 ov.layer = 3 kulala (1) kamera. ondoa_kufunika (ov) # Kazi kuu # Futa skrini ili ujumbe wa buti usiwepo # labda inaweza kuwa bora kufanya hivyo katika bash tmp = sp.call ('clear', ganda = Kweli) kamera = kamera. PiCamera () kamera. azimio = (1280, 1024) kamera.framerate = kamera 24. mwangaza = kamera 55. ukali = 0 kamera. kulinganisha = 0 # kamera.exposition_co mpensation = 0 # camera.exposition_mode = 'auto' # camera.meter_mode = 'average' # Upimaji hapa jaribu: wakati (Kweli): camera.start_preview () #Show LED Only for Take Photo onlyTakePicLed () # Subiri kitufe kuchukua Picha GPIO.ngojea_kwa_mji (takeButton, GPIO. FALLING) # Anzisha uzi kuhesabu na LED wakati picha zinaonyeshwa # Labda inaweza kutumika katika kazi ya Kufunikwa kwa Kukabiliana, # kwa sababu pia ina muda wa kuonyesha picha, lakini athari zilizoongozwa. singekuwa # sawa thread.nza_kisasa_cha (kuhesabuPimerPicture, ()) # Onyesha picha zilizoambatishwa kwenye picha ya kamera kufunika PichaCounter () # Onyesha LED zote wakati unachukua picha ya onyeshoAllLeds () kamera.capture ('pushTesting.jpg') kamera. stop_preview () #display image displayPreview ('pushTesting.jpg') # Onyesha kufunika = kusambaratika () # Onyesha LEDs Kufuta au Kutuma kwa Mitandao ya Kijamii kufutaPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.utd_event (CCP), GPIO. FALLING) wakati (Kweli): ikiwa GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO. GPIO.event_detected (cancelButton): #print "Camera" iliyofutwa. Ondoa_overlay (oo) kuvunja # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remover_event (tazama). "Imeondoka…") #offLeds () GPIO.cleanup ()

Hatua ya 12: Wiring

Image
Image
Wiring
Wiring
Wiring
Wiring

Wiring inaunganisha tu vifungo vya Big Dome Push kwa Raspberry PI.

Fuata tu Schematic ya Fritzing.

Viunganisho ni:

UunganishoRPI GPIO PIN GND Kijani cha Kushinikiza Kijani Kitufe cha "Bonyeza kutengeneza") 23 (BCM) Ghairi (Kitufe cha Kushinikiza cha Njano "Shinikiza utengeneze") 24 (BCM) Kitufe cha samawati cha Bluu LED27 (BCM) Kitufe cha Kijani cha Kijani cha LED22 (BCM) Kitufe cha Msukuma cha Njano LED5 (BCM)

Kupunguza joto pia kuna rangi ya rangi

  • Nyeusi ni unganisho la GND
  • Njano ni "kushinikiza kufanya" unganisho
  • Bluu ni unganisho la LED

Nambari za GPIO. BCM dhidi ya unganisho la GPIO. BOARD

Kwa kuwa miunganisho yangu ni BCM, nadhani sasa ni wakati mzuri wa kuizungumzia na tofauti kati ya BCM na BODI.

Tofauti kuu ni jinsi gani unataja PIN za GPIO, ambazo zitasababisha jinsi unavyounganisha. GPIO.board itataja PIN na nambari iliyochapishwa kwenye mpangilio wowote wa GPIO kwenye wavuti.

GPIO. BCM inaangazia nambari za PIN kama Broadcom SOC inavyoziona. Hii inaweza kubadilika pamoja na matoleo mapya ya Raspberry PI.

Kwenye wavuti ya pinout.xyz, nambari za bodi ndio zilizo karibu kabisa na pini na BCM imeangaziwa kama hiyo - BCM X (ambapo X ni nambari)

Hatua ya 13: MagicBox

Nambari iliyoambatishwa kwa hatua hii ni ya mwisho.

Unaweza kuiendesha kwenye buti ya rasipberry PI, bila hata kuhitaji kuingia. Ili kufanya hivyo, tengeneza tu hati hii ndogo kwenye saraka uliyoweka nambari - badilisha njia ipasavyo

#! / bin / bash

cd / nyumbani / pi / sanduku la uchawi python MagicBox.py

Ifanye iweze kutekelezwa

chmod + x kuanza_magicbox.sh

Sasa, iite katika /etc/rc.local, kabla tu ya kuingizwa 0

sudo vi /etc/rc.local

/ nyumbani/pi/magicbox/start_magicbox.sh &

kuokoa na kuacha.

Sasa, kwa kila reboot, programu ya Python itatekeleza

KUMBUKA: Faili zote za picha lazima ziwe kwenye saraka sawa na hati. Unahitaji kuwa na:

  • 1. png
  • 2. png
  • 3. png
  • Aenviar.png
  • SelectOption.png

Unaweza kupata faili hizi zote kwenye github ya MagicBox.

Ilipendekeza: