Satura rādītājs:
- Piegādes
- 1. darbība. Veidojiet
- 2. darbība: kamera
- 3. solis: pārraudzīt
- 4. solis: dekorēšana
- 5. solis: programmēšana
- 6. darbība: aveņu PI sagatavošana
- 7. solis: programmatūra
- 8. solis: programmēšana - kameras priekšskatījums
- 9. solis: programmēšana - liela kupola spiedpoga
- 10. solis: publicējiet Twitter
- 11. solis: dažu elementu apvienošana
- 12. solis: elektroinstalācija
- 13. solis: MagicBox
Video: RaspberryPI fotokamera - MagicBox: 13 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-31 10:22
Pirms kāda laika man radās šī trakā ideja izveidot fotogrāfiju no aveņu PI. Manā pilsētā bija neliela izrāde, kurā cilvēki brauca un rādīja, ko viņi gatavo vai gatavo, izmantojot elektroniku, datorus utt.… Es biju kā nabaga Maker Faire, bet vietējā mērogā.
Tuvojās viens, un mēs kopā ar sievu veidojam šo lietu.
Kā tas darbojas ?
Jūs nospiežat zilo pogu - tas sāk mirgot - un pēc 3 sekundēm tiek uzņemts attēls. Kameras otrā pusē ir monitors, kas rāda atpakaļskaitīšanu un pēc attēla uzņemšanas - fotoattēla priekšskatījumu.
Tagad varat izvēlēties nosūtīt to Twitter un Facebook vai atcelt un mēģināt vēlreiz. Tas ir tik vienkārši.
Viss ir ieprogrammēts Python, izmantojot PI kadru buferi - netiek izmantots Xorg, netiek izmantota GUI.
Šeit ir video par projekta darbību
Piegādes
- Aveņu PI (es izmantoju 2. versiju)
- Aveņu PI kamera (izmantojot 1. versiju)
- 3x Big Dome spiedpogas
- TFT/LCD monitors ar VGA/HDMI
- MDF
- Metāla eņģes, skrūves utt.
- Elektroinstrumenti
- Brīvais laiks un daudz jautrības
1. darbība. Veidojiet
Tās būvēšana bija jautra. Daudz griešanas, krāsošanas un urbšanas.
Es izmantoju MDF paneļus, lai izveidotu kameras pamatstruktūru. Tie ir viegli un viegli strādāt. Tas bija arī viens koksnes veids, ko vietējā Fablab lāzermašīna varēja griezt.
Piekļuvi elektroinstalācijai iekšpusē veica monitora puse, izmantojot hidrauliskās eņģes, lai tās varētu palīdzēt pacelt monitoru.
2. darbība: kamera
Kamera
Kamera ir kastīte ar šādiem izmēriem: 60cm x 40cm x 30cm Jūsu var būt mazāka, lielāka, tas ir jūsu ziņā. Vienkārši jāpielāgo monitoram, kuru izmantosit. MDF paneļi tika sagriezti ar lāzeru vietējā Fablab. Aizmugurē ir nepieciešami 3 caurumi - divas lielas kupola spiedpogas un viena monitoram. Priekšpusē 2 caurumi - viens lielai kupola spiedpogai un otrs - mazāks - Raspberry PI kamerai. Man nav konkrētu mērījumu - iedomājieties kameru un izmantojiet to.
3. solis: pārraudzīt
Monitors
Monitora balsts tika izgatavots, pievienojot mazus koka gabalus, lai tas atbilstu tā izmēriem.
Tas bija sloksne no plastmasas korpusa un nostiprināta vietā ar skrūvēm. Lai to paceltu, tika izmantotas divas hidrauliskās eņģes (lietotas).
4. solis: dekorēšana
Tā kā man ļoti patīk mana Fuji X-T30 stils, mēs devāmies un darījām kaut ko līdzīgu.
Pirmkārt, mēs to pārklājām ar putām un pēc tam mēs izsmidzinājām to melnā krāsā. Pēc krāsas mēs pievienojām alumīnija foliju sudraba daļām un ietin to
Lai modelētu objektīvu, mēs vienkārši izmantojām apaļu Tupperware, ja mēs izdarījām nelielu caurumu, lai sēdētu Raspberry PI kameras modulim.
5. solis: programmēšana
Kameras programmēšana bija izaicinājums, taču tas bija ļoti jautri.
Nav GUI - tas darbojas CLI un darbojas Python 3. versijā.
Vispirms sāku ar pogu testēšanu un programmēšanu, pēc tam fotografēju, izmantojot jau piedāvātos rīkus un Python API. Pēc tam es pārgāju uz attēlu pārklāšanu kameras izejā (atpakaļskaitīšanai) un blakus, lai mijiedarbotos ar Twitter un Facebook.
Pēc tam, kad es biju apmierināts ar visu to, tāpat kā puzle, es saliku visus gabalus kopā. Šeit mēs turpinām to pašu procesu. Sāciet lēnām un mazām un dodieties uz ātru un lielu.
Vispirms sāksim konfigurēt Raspberry PI
6. darbība: aveņu PI sagatavošana
Es neskaidrošu, kā Raspbian instalēt Raspberry PI - tur ir daudz pamācību, pat Raspberry PI oficiālajā vietnē.
Jums vienkārši nepieciešama SSH piekļuve tai vai jāpievieno monitoram un jāpievieno tastatūra un pele.
PIEZĪME. Sākot darbu ar Raspberry PI kameru, tā jāpievieno monitoram. Līdz tam visas darbības var veikt, izmantojot SSH.
Pēc palaišanas jūsu Raspberry PI mums ir jāiespējo Raspberry PI kamera. Tam izmantosim raspi-config rīku.
sudo raspi-config
- Izvēlieties 5. opciju - Saskarnes opcijas
- Izvēlieties P1 - Iespējot/atspējot savienojumu ar Raspberry PI kameru
- Saki jā
- par Labi
- Izvēlieties Pabeigt
- Izvēlieties Jā, lai tūlīt atsāknētu
Pēc pārstartēšanas mēs varam turpināt
7. solis: programmatūra
Mums būs jāinstalē dažas Python bibliotēkas. Tas ir atjaunināts jaunākajai Raspbian versijai - Buster
Pirmkārt, ļaujiet iestatīt Python 3 kā noklusējumu. Sekojiet šai saitei, lai uzzinātu, kā to iestatīt SYSTEM WIDE
Bibliotēkas:
- python-pil.imagetk, lai manipulētu ar attēliem
- python-rpi.gpio, lai piekļūtu GPIO PINS
- python-picamera, lai piekļūtu Raspberry PI kamerai
- Tweepy, lai kopīgotu fotoattēlu Twitter
- facebook-sdk, lai kopīgotu to facebook lapā
sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip
Izmantojiet Python pip, lai instalētu facebook-sdk
sudo pip3 instalējiet facebook-sdk
8. solis: programmēšana - kameras priekšskatījums
Viena no prasībām, ko es izvirzīju šim projektam, bija šī programma darboties CLI režīmā. Tātad, mums ir jāparāda kameras attēls konsolē. Šim nolūkam izmantosim Python Picamera. Pēc tam izmantosim pil.imagetk, lai kameras priekšskatījuma virspusē parādītu pārklājumu
Mūsu mazajā programmā (mēs izstrādāsim mazas programmas, līdz beigās būs viena liela) tiks parādīts kameras priekšskatījums.
#!/usr/bin/env python
importēt laiku importēt picamera no laika importēšanas miega kamera = picamera. PiCamera () # Iestatiet vēlamo izšķirtspēju camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1), izņemot (KeyboardInterrupt, SystemExit): print ("Exiting…") camera.stop_preview ()
Lai to izmēģinātu, vienkārši izpildiet to
python cameraPreview.py
Priekšskatiet kameru ar attēliem augšpusē
Tā kā es vēlējos, lai pirms attēla uzņemšanas tiktu parādīta atpakaļskaitīšana, man vajadzēja attēlus, kas pārklājas ar kameras priekšskatījumu.
Izveidojiet-p.webp" />
Šis kods pārklās 1-p.webp
importēt picamerafrom no PIL importēt attēlu no laika importēšanas miega ar picamera. PiCamera () kā kamera: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # ielādēt attēlu img = Image.open ('1-p.webp
Pamēģini:
python imageOverlay.py
Tagad izveidosim atpakaļskaitīšanu ar pārklājuma attēliem. Tāpat kā jūs esat izveidojis 1-p.webp
Pēc tam vienkārši izmantojiet šādu kodu:
importēt picamera
no PIL importa attēla no laika importēšanas miega ar picamera. PiCamera () kā kamera: camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () # ielādēt attēlu img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # create pad = Image.new ('RGB', (((img1.izmērs [0] + 31) / / 32) * 32, ((img1.izmērs [1] + 15) // 16) * 16,)) pad.paste (img1, (0, 0)) o = camera.add_overlay (pad.tobytes (), izmērs = img1.izmērs) o.alpha = 128 o.layer = 3 miega (2) #noņemt iepriekšējo pārklājuma kameru.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tobaiti (), izmērs = img2.izmērs) o.alpha = 128 o.layer = 3 miega režīms (2) # noņemt iepriekšējo pārklājuma kameru.remove_overlay (o) pad.paste (img3, (0, 0)) o = kamera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 miega (2)
Tagad izpildiet to:
python imageOverlayCounter.py
Un skatiet atpakaļskaitīšanu
Oho - daudz kodu un nav uzņemts attēls … Atrisināsim to, apvienojot visu kopā - priekšskatiet kameru, atskaiti un uzņemiet attēlu
importēt picamerafrom no PIL importēt attēlu no laika importēšanas miega def overlayCounter (): # ielādēt attēlu img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.-p.webp
Pamēģini:
python pictureWithTimer.py
Un šeit mums ir Yoda
9. solis: programmēšana - liela kupola spiedpoga
Lielā kupola spiedpoga ir liela apaļa poga - ar aptuveni 100 mm ārējo diametru ar nelielu gaismas diodi. Tajā teikts, ka tas darbojas pie 12 V sprieguma, bet ar aveņu PI 3,3 V spriegumu pietiek, lai tas iedegtos
Pārbaudei izmantojiet shēmu
Kods:
no RPi importēšanas 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) # Bloķēšanas funkcija GPIO.wait_for_edge (takeButton, GPIO. FALLING) drukāt ("Poga nospiesta") GPIO.output (ledButton, False) GPIO.cleanup ()
Daži koda skaidrojumi Viens no veidiem, kā iegūt vērtības no GPIOS, ir pārtraukumi (cits ir aptauja) - malu noteikšana.
Mala ir pārejas nosaukums no HIGH uz LOW (krītošā mala) vai LOW uz HIGH (augošā mala). Ja PIN kods nav pievienots nekam, jebkurš lasījums netiks definēts. Risinājums ir, ja minētajā PIN ir ievilkšanas/nolaišanas rezistors. Raspberry PI ļauj konfigurēt uz augšu/uz leju rezistorus, izmantojot programmatūru.
Līnija
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
konfigurē šo PIN, lai to izdarītu - pavelciet uz augšu
Kāpēc vilkt augšā? Lielajai kupola spiedpogai ir 2 PIN - spiediet, lai pārtrauktu vai spiediet, lai izgatavotu (tāpat kā mazās spiedpogas, kas bieži nāk ar Arduino/Raspberry PI komplektiem). Esmu to pieslēdzis pogas “push to make” PIN. Nospiežot, ķēde aizveras un elektrība iziet (parasti atveras).
Līnija
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
gaidīs (faktiski apturot skripta izpildi), līdz konstatēs PIN nokrišanu - pogas atlaišana pārtrauks elektroenerģijas plūsmu un PIN kods mainīsies no 3.3v uz 0v
Gaismas diodes PIN ir tikai, lai iedegtu pogas gaismas diodi
Plašāka informācija par push slēdžiem no Arduino Tutorials, Wikipedia par push to make or push to break un GPIO pārtrauc
Tagad apvienosim spiedpogu ar kameru - uzņemiet attēlu tikai tad, kad poga ir nospiesta
importēt picamerafrom no laika importēt miega režīmu no RPi importēt GPIO no PIL importēšanas Attēls # PIEZĪME. Šī būs galvenā programmas atcelšanas poga # Es to vienkārši izmantoju šeit, lai video skaidrībā ņemtu 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) miega režīms (1) def off (): GPIO.output (ledCancel, False) # Funkcija attēla pārklāšanai def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Izveidot pārklājumu # Izmanto ar img1, jo visi ir vienāda izmēra spilventiņi = Image.new ('RGB', (((img1.izmērs [0] + 31) // 32) * 32, ((img1.izmērs [1] + 15) // 16) * 16,)) # ielīmējiet pārklājumu - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # slānis ir 3, jo kameras priekšskatījums ir 2. slānī ov.layer = 3 miega (1) camera.remove_overlay (ov) # ielīmējiet pārklājumu - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # slānis ir 3, jo kameras priekšskatījums ir 2. slānī ov.layer = 3 miega (1) camera.remove_overlay (ov) # ielīmējiet pārklājumu - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # slānis ir 3, jo kameras priekšskatījums ir uz 2. slāņa ov.layer = 3 miega (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 () pārklājumsCounter () camera.capture ('pushTesting.jpg') camera.stop_preview () offLeds () GPIO.cleanup ()
Neliels koda skaidrojums
Tas sāk kameras priekšskatījumu un tur gaida, līdz tiek nospiesta poga. Pēc pogas nospiešanas iedegas gaismas diode un sākas atpakaļskaitīšana. Tuvojoties beigām, tiek uzņemts attēls un gaismas diode tiek izslēgta
10. solis: publicējiet Twitter
Tagad mēs izmantosim Python un ierakstīsim tvītu!:) Lai publicētu, jums būs nepieciešams attēls - izvēlieties gudri.
Pirmkārt, mums ir jāpiekļūst twitter API un tam ir jāizveido APP. Dodieties uz vietni https://apps.twitter.com un izveidojiet jaunu lietojumprogrammu.
Jums būs jāpiesakās izstrādātāja kontam - aizpildiet dažus jautājumus un apstipriniet savu e -pasta adresi. Pēc tam varēsit izveidot jaunu APP.
Pēc APP izveides dodieties uz taustiņiem un žetoniem un ģenerējiet piekļuves marķieri un piekļuves pilnvaras noslēpumu. Tiks parādīts logs ar taustiņiem TIKAI REIZI - KOPĒJIET UN SAGLABĀJIET VĒLĀK.
Izmantojiet šo kodu, lai nosūtītu attēlu uz savu twitter kontu. Neaizmirstiet aizpildīt:
- patērētāja_atslēga
- patērētāja_noslēpums
- pieejas atslēga
- access_token_secret
twitter ziņojums ir teksts, kas jānosūta tvītā.
jpg_foto_to_send ir attēls, kas tiks pievienots tvītam. Lūdzu, ievietojiet attēlu tajā pašā direktorijā kā Python skripts un nomainiet kodu.
importēt tweepy # Twitter iestatījumi 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) # Sūtīt uz twitter def sendToTwitter (): cfg = {"Consumer_key": "", "Consumer_secret": "", "access_token": "", "access_token_secret": "" "api = get_api (cfg) # Statusa ziņojums tweet = "Twitter ziņa" status = api.update_with_media ("jpg_foto_to_Send", tvīts) sendToTwitter ()
Pārbaudiet savu čivināt plūsmu, lai atrastu tvītu.
Šeit ir tvīts
Vai zemāk:
#RaspberryPI MagicBox. Uzņemiet attēlus, pārskatiet tos un izvēlieties tos nosūtīt Twitter un Facebook. Powered by Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- Bruno Ricardo Santos (@feiticeir0) 2020. gada 29. februāris
11. solis: dažu elementu apvienošana
Tagad apvienosim Big Dome Push pogu, nospiežot to, skaitot atpakaļ, nofotografēsim, izlemsim, vai nosūtīt to twitter.
Mēs pievienosim vēl vienu pārklājuma attēlu un izmantosim visas trīs spiedpogas. Kad attēls ir uzņemts, iedegas visas 3 taustiņu gaismas diodes.
Mēs pievienojam vēl vienu attēlu, kurā redzamas ikonas, kuras publicēt sociālajos tīklos
SelectOption-p.webp
Aenviar-p.webp
Videoklipā nav redzama zilā spiedpoga (kameras priekšpusē), bet gaismas diode deg un sāk mirgot, tiklīdz tā tiek nospiesta.
Kods ir pievienots, ja vēlaties
Šis ir pēdējais pārbaudes kods pirms galvenās programmas.
# kodēšana = utf-8 importēt picamera importēt _vītņu importa apakšprocess kā sp no laika importēšanas miega no RPi importēt GPIO no PIL importēšanas Attēlu importēšanas pavedieni # čivināt importēt tweepy # Facebook importēt facebook # Poga, lai uzņemtu attēlu # Atcelt attēlu CancelButton = 24 # Uzņemt attēla pogu LED takePicButtonLed = 27 # Publicēt sociālā tīkla pogu LED postSNLed = 22 # Atcelt pogas 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 iestatījumi def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['patērētāja_atslēga'], cfg ['patērētāja_noslēpums']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) atgriezties tweepy. API (auth) # Sūtīt uz twitter def sendToTwitter (): cfg = {"con sumer_key ":" "," Consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Statusa ziņojums tweet =" MagicBox pamācību pārbaude. #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']) #Iegūt lapu ievietot kā lapu. Ja vēlaties publicēt kā sevi, varat izlaist # sekojošo. resp = graph.get_object ('es/konti') page_access_token = Nav nevienas lapas lapā ['dati']: ja lapa ['id'] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) return graph # Sūtīt uz facebook def sendToFacebook (): #Values for access cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Caption the image" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Attēla paraksts ") # Tikai gaisma TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Tikai gaisma Atcelt un SocialNetwork poga def cancelPostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Mirgo fotografēšanas gaismas diode, vienlaikus skaitot atpakaļ skaitīšanuTimerPicture (): GPIO.output (takePicButtonLed, True) miega režīms (0,5) GPIO.output (takePicButtonLed, False) miega režīms (0.5) GPIO.output (takePicButtonLed, True) miega režīms (0.5) GPIO.output (takePicButtonLed,False) miega (0.5) GPIO.output (takePicButtonLed, True) miega (0.5) GPIO.output (takePicButtonLed, False) # Blink postSNLed publicējot sociālajos tīklos def blinkPosting (stop_event): # Sākt, kamēr (ne stop_event.is_set ()): drukāt ("izslēgts") GPIO.output (postSNLed, False) miega režīms (0,5) print ("ieslēgts") GPIO.output (postSNLed, True) miega režīms (0,5) def taimeris (): GPIO.output (takePicButtonLed, True)) miega (1) GPIO.output (postSNLed, True) miega (1) GPIO.output (CancelButtonLed, True) miega (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.putput (cancelButtonLed, True)) polsterējums = Image.new ('RGB', (((img.izmērs [0] + 31) // 32) * 32, ((img.izmērs [1] + 15) // 16) * 16,)) padding.paste (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.layer = 1 # Parādīt slāņa priekšskatījumu 3 def displayPreview3 (imgName): # Tā kā PIL attēlu šovs ir štrunts #, mēs izmantojam kameras pārklājumu, lai parādītu # priekšskatījumu img = Image.open (imgName) padding = Image.new ('RGB', (((img.izmērs [0] + 31) // 32) * 32, ((img.izmērs [1] + 15) // 16) * 16,)) polsterējums.pasta (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.alpha = 150 ov.layer = 3 return ov # Funkcijas overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # Izveidot Pārklājuma spilventiņš = Image.new ('RGB', (((imgsn.izmērs [0] + 31) // 32) * 32, ((imgsn.izmērs [1] + 15) // 16) * 16,)) # Ielīmējiet pārklājuma spilventiņu.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Funkcija pārklājumam image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Izveidojiet pārklājumu # Izmanto kopā ar img1, jo visi ir vienāda izmēra spilventiņi = Image.new ('RGB', (((img1.izmērs [0] + 31) // 32) * 32, ((img1.izmērs [1] + 15) // 16) * 16,)) # ielīmējiet pārklājumu - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # slānis ir 3, jo kameras priekšskatījums ir 2. slānī ov.layer = 3 miega režīms (1) camera.remove_overlay (ov) # ielīmējiet pārklājumu - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # slānis ir 3, jo kameras priekšskatījums ir 2. slānī ov.layer = 3 miega (1) camera.remove_overlay (ov) # paste pārklājums - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # slānis ir 3, jo kameras priekšskatījums ir 2. slānī ov.layer = 3 miega režīms (1) camera.remove_overlay (ov) # Galvenā funkcija # Notīrīt ekrānu, lai nebūtu sāknēšanas ziņojumu # iespējams, labāk to darīt bash tmp = sp.call ('clear', apvalks = True) camera = 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 = 'vidēji' #Pārbaude šeit mēģiniet: kamēr (True): camera.start_preview () #Rādīt LED tikai fotografēšanai Attēls GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Sāciet pavedienu, lai skaitītu ar gaismas diodēm, kamēr tiek rādīti attēli # Iespējams, to varētu izmantot funkcijā overlayCounter, # jo tam ir arī taimeri attēlu parādīšanai, bet LED efekti # nebūtu tas pats _thread.start_new_thread (countingTimerPicture, ()) # Rādīt attēlu pārklājumu kameras attēla pārklājumāCounter () # Rādīt visas gaismas diodes, uzņemot attēlu showAllLeds () camera.capture ('pushTesting.jpg') kamera. stop_preview () #display image displayPreview ('pushTesting.jpg') # Rādīt pārklājumu oo = overlaysn () # Rādīt atceltās gaismas diodes vai publicēt sociālajos tīklos CancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_eventBdon, GPIO. FALLING), kamēr (True): ja GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cancelButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Sociālo tīklu poga" sendToTwitter () sendToFacebook () camera.remove_overlay (o) pārtraukums, ja GPIO.event_detected (cancelButton): #print "Canceled" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remove_event_doncepting (takeButton) "Izgāja …") #offLeds () GPIO.cleanup ()
12. solis: elektroinstalācija
Elektroinstalācija tikai savieno Big Dome Push pogas ar Raspberry PI.
Vienkārši sekojiet Fritzing shēmai.
Savienojumi ir šādi:
Savienojums RPI GPIO PIN GND zaļā spiedpogaGND (#3) GND dzeltenā spiedpogaGND (#9) GND zilā spiedpogaGND (#39) Fotografēšana (zilā spiedpoga "Push to make") 17 (BCM) Publicēt sociālajos tīklos (Green Push Poga "Push to make") 23 (BCM) Atcelt (dzeltenā spiedpoga "Push to make") 24 (BCM) Zilā spiedpoga LED27 (BCM) Zaļā spiedpoga LED22 (BCM) Dzeltenā spiedpoga LED5 (BCM)
Siltuma sarukumam ir arī krāsu kods
- Melns ir GND savienojumi
- Dzeltenie ir “piespiedu izveides” savienojumi
- Zili ir LED savienojumi
GPIO. BCM numuri salīdzinājumā ar GPIO. BOARD savienojumiem
Tā kā mani savienojumi ir BCM, es domāju, ka tagad ir īstais laiks runāt par to un atšķirību starp BCM un BOARD.
Galvenā atšķirība ir tā, kā jūs atsaucaties uz GPIO PIN, kas savukārt veicinās savienojumu izveidi. GPIO.board norādīs PIN kodus pēc numura, kas uzdrukāts uz jebkura GPIO izkārtojuma internetā.
GPIO. BCM atsaucas uz PIN numuriem, kā Broadcom SOC tos redz. Tas, visticamāk, mainīsies jaunākajās Raspberry PI versijās.
Vietnē pinout.xyz tāfeles numuri ir tie, kas atrodas blakus tapām, un BCM tiek apzīmēti šādi - BCM X (kur X ir skaitlis)
13. solis: MagicBox
Šim solim pievienotais kods ir pēdējais.
Jūs varat to palaist aveņu PI sāknēšanā, pat nepiesakoties. Lai to izdarītu, vienkārši izveidojiet šo mazo skriptu direktorijā, kurā esat ievietojis kodu - attiecīgi mainiet ceļus
#!/bin/bash
cd/home/pi/magicbox python MagicBox.py
Padariet to izpildāmu
chmod +x start_magicbox.sh
Tagad izsauciet to /etc/rc.local, tieši pirms izejas 0 instrukcijas
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
saglabāt un atmest.
Tagad ar katru pārstartēšanu programma Python tiks izpildīta
PIEZĪME. Visiem attēlu failiem jāatrodas tajā pašā direktorijā, kurā ir skripts. Jums ir jābūt:
- 1.png
- 2.png
- 3.png
- Aenviar.png
- IzvēlietiesOption.png
Visus šos failus varat iegūt vietnē MagicBox github.
Ieteicams:
RaspberryPi islāma lūgšanu pulkstenis un modinātājs: 15 soļi (ar attēliem)
RaspberryPi islāma lūgšanu pulkstenis un modinātājs: musulmaņiem visā pasaulē katru dienu ir piecas lūgšanas, un katrai lūgšanai ir jābūt noteiktā diennakts laikā. eliptiskais veids, kā mūsu planēta pārvietojas ap sauli, kas padara saullēkta un lejupslīdes laiku visu gadu atšķirīgu, tāpēc
RaspberryPi 3/4 pagarinājuma dēlis, lai Raspberry Pi pievienotu papildu funkcijas: 15 soļi (ar attēliem)
RaspberryPi 3/4 paplašinājuma dēlis, lai Raspberry Pi pievienotu papildu funkcijas: mēs zinām, ka aveņu pi 3/4 komplektācijā nav iebūvēts ADC (analogo ciparu pārveidotājs) un RTC (reālā laika pulkstenis), tāpēc es izstrādāju PCB, kas satur 16 kanāls 12 bitu ADC, RTC, SIM7600 4G modulis, spiedpogas, releji, USB izeja, 5 V strāvas padeve, 12 V jauda
IoT bāzes platforma ar RaspberryPi, WIZ850io: platformas ierīces draiveris: 5 soļi (ar attēliem)
IoT bāzes platforma ar RaspberryPi, WIZ850io: platformas ierīces draiveris: es zinu RaspberryPi platformu IoT. Nesen WIZnet paziņoja par WIZ850io. Tāpēc es ieviesu RaspberryPi lietojumprogrammu, izmantojot Ethernet SW modifikāciju, jo es varu viegli apstrādāt avota kodu. Jūs varat pārbaudīt platformas ierīces draiveri, izmantojot RaspberryPi
Reālā laika sejas noteikšana RaspberryPi-4: 6 soļi (ar attēliem)
Reālā laika sejas noteikšana RaspberryPi-4: Šajā instrukcijā mēs veiksim sejas noteikšanu reālā laikā Raspberry Pi 4 ar Shunya O/S, izmantojot Shunyaface bibliotēku. Izmantojot šo apmācību, RaspberryPi-4 varat sasniegt noteikšanas kadru ātrumu 15–17
Automatizēta fotokamera: 4 soļi (ar attēliem)
Automātiskais fotokūns: tas parādīs, kā izveidot automatizētu foto kabīni, izmantojot aveņu pi, ultraskaņas attāluma sensoru un dažus citus piederumus. Es gribēju īstenot projektu, kurā izmantota gan sarežģīta aparatūra, gan sarežģīta programma. Es pētu