INHOUDSOPGAWE:
- Voorrade
- Stap 1: Bou
- Stap 2: kamera
- Stap 3: Monitor
- Stap 4: Versier
- Stap 5: Programmering
- Stap 6: Berei die Framboos -PI voor
- Stap 7: sagteware
- Stap 8: Programmering - Voorskou van die kamera
- Stap 9: Programmering - Big Dome -drukknop
- Stap 10: Plaas op Twitter
- Stap 11: Kombineer sommige elemente
- Stap 12: Bedrading
- Stap 13: Die MagicBox
Video: RaspberryPI -fotokamera - MagicBox: 13 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-31 10:16
Ek het 'n rukkie gelede 'n gekke idee gehad om 'n fotografiese masjien uit 'n Framboos PI te maak. In my stad was daar 'n klein vertoning waar mense gaan wys wat hulle met elektronika, rekenaars, ens. Maak, of wat hulle gemaak het … Ek was soos 'n arm man se Maker Faire, maar in 'n plaaslike omgewing.
Die een het gekom, en saam met my vrou bou ons hierdie ding.
Hoe werk dit ?
U druk die blou knoppie - dit begin knip - en na 3 sekondes word 'n foto geneem. Aan die ander kant van die kamera is 'n monitor wat 'n aftelling toon en nadat die foto geneem is, 'n voorskou van die foto.
U kan nou kies om dit na Twitter en Facebook te stuur of te kanselleer en weer te probeer. Dit is so eenvoudig.
Alles is in Python geprogrammeer, met behulp van die PI -framebuffer - geen Xorg, geen GUI word gebruik nie.
Hier is 'n video van die projek wat werk
Voorrade
- Framboos PI (ek gebruik weergawe 2)
- Framboos PI -kamera (gebruik weergawe 1)
- 3x Big Dome -knoppies
- TFT/LCD -monitor met VGA/HDMI
- MDF
- Metaal skarniere, skroewe, ens.
- Kraggereedskap
- Spaar tyd en baie plesier
Stap 1: Bou
Dit was lekker om dit te bou. Baie sny, verf en boor.
Ek het MDF -panele gebruik om die basiese struktuur van die kamera te bou. Hulle is lig en maklik om mee te werk. Dit was ook een houtsoort wat die lasermasjien by die plaaslike Fablab kon sny.
Die toegang tot die binnekant van die bedrading is deur die monitorkant gemaak, met behulp van hidrouliese skarniere, sodat hulle kon help om die monitor op te lig.
Stap 2: kamera
Kamera
Die kamera is 'n boks met die volgende afmetings: 60cm x 40cm x 30cm Die uwe kan kleiner, groter wees, dit is aan u. U hoef net die monitor wat u gaan gebruik, te akkommodeer. Die MDF -panele is laser gesny by die plaaslike Fablab. Daar is 3 gate aan die agterkant nodig - twee groot koepelknoppies en een vir die monitor. Voor, 2 gate - een vir 'n groot drukknop en nog een - kleiner - vir die Raspberry PI -kamera. Ek het nie spesifieke metings nie - stel jou net 'n kamera voor en gebruik dit.
Stap 3: Monitor
Monitor
Die monitorsteun is gemaak om klein stukkies hout by te voeg om dit binne die afmetings te ondersteun.
Dit is van die plastiekbehuizing verwyder en met skroewe vasgemaak. Om dit te help lig, is twee hidrouliese skarniere (gebruik) gebruik.
Stap 4: Versier
Aangesien ek baie van die styl van my Fuji X-T30 hou, het ons iets soortgelyks gedoen.
Ons het dit eers met skuim bedek en daarna met swart verf gespuit. Na die verf het ons aluminiumfoelie vir die silwer dele bygevoeg en toegedraai
Om die lens te simuleer, gebruik ons net 'n ronde Tupperware, waar ons 'n klein gaatjie vir die Raspberry PI -kameramodule sit.
Stap 5: Programmering
Die programmering van die kamera was 'n uitdaging, maar dit was baie lekker.
Daar is geen GUI nie - dit werk op die CLI en werk op Python weergawe 3.
Ek het eers die knoppies getoets en geprogrammeer, daarna is foto's geneem met die gereedskap wat reeds verskaf is en die Python API. Ek het toe oorgegaan om foto's in die kamera -uitset te bedek (vir die aftelling) en daarna met Twitter en Facebook te kommunikeer.
Nadat ek gemaklik daarmee was, het ek al die stukke soos 'n legkaart bymekaargemaak. Hier gaan ons met dieselfde proses. Begin stadig en klein en gaan na vinnig en groot.
Laat ons eers begin met die opstel van die Raspberry PI
Stap 6: Berei die Framboos -PI voor
Ek gaan nie verduidelik hoe om Raspbian op die Raspberry PI te installeer nie - daar is baie tutoriale, selfs op die Raspberry PI amptelike webwerf.
U hoef net toegang tot SSH te hê, of om dit aan 'n monitor te koppel en 'n sleutelbord en muis aan te sluit.
OPMERKING: As u met die Raspberry PI -kamera begin, moet u dit op 'n monitor aansluit. Tot daar kan al die stappe gedoen word met behulp van SSH.
Nadat u u Raspberry PI opgestart het, moet ons die Raspberry PI -kamera aktiveer. Laat ons daarvoor 'n raspi-config-instrument gebruik.
sudo raspi-config
- Kies opsie 5 - koppelvlakopsies
- Kies P1 - Aktiveer/deaktiveer verbinding met die Raspberry PI -kamera
- Sê ja
- vir OK
- Kies Voltooi
- Kies Ja om nou weer te begin
Na die herlaai kan ons voortgaan
Stap 7: sagteware
Ons benodig 'n paar Python -biblioteke om geïnstalleer te word. Dit is opgedateer vir die nuutste Raspbian -weergawe - Buster
Laat ons Python 3 as standaard instel. Volg hierdie skakel om te weet hoe u SYSTEM WIDE instel
Biblioteke:
- python-pil.imagetk om beelde te manipuleer
- python-rpi.gpio om toegang tot die GPIO-PINS te verkry
- python-picamera om toegang te verkry tot die Framboos PI-kamera
- Tweepy om die foto met Twitter te deel
- facebook-sdk om met 'n Facebook-bladsy te deel
sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip
Gebruik Python pip om facebook-sdk te installeer
sudo pip3 installeer facebook-sdk
Stap 8: Programmering - Voorskou van die kamera
Een van die vereistes wat ek aan hierdie projek gestel het, was dat hierdie program in die CLI -modus uitgevoer moes word. Ons moet dus die kamerabeeld op die konsole vertoon. Hiervoor gebruik ons Python Picamera. Laat ons daarna pil.imagetk gebruik om 'n overlay bo -op die voorskou van die kamera te vertoon
Ons klein program (ons gaan klein programme ontwikkel tot aan die einde een groot) sal die voorskou van die kamera vertoon.
#!/usr/bin/env python
import time import picamera from time import sleep camera = picamera. PiCamera () # Stel die resolusie in wat u wil hê camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1) behalwe (KeyboardInterrupt, SystemExit): druk ("Uitgang …") camera.stop_preview ()
Om dit te probeer, voer dit net uit
python kameraPreview.py
Voorbeeld van die kamera met prente bo -op
Aangesien ek 'n aftelling wou hê voordat ek die foto neem, het ek beelde nodig wat die voorskou van die kamera oorvleuel.
Skep 'n-p.webp" />
Die volgende kode oorvleuel 1-p.webp
import picameraf vanaf PIL import Image from time import sleep with picamera. PiCamera () as camera: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1-p.webp
Probeer dit:
python imageOverlay.py
Kom ons maak nou 'n aftelling met oorlegbeelde. Net soos jy die 1-p.webp
Gebruik daarna net die volgende kode:
voer picamera in
vanaf PIL invoer Beeld van tyd af slaap met picamera. PiCamera () as kamera: camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () # load image img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # create pad = Image.new ('RGB', (((img1.size [0] + 31) / / 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) pad.paste (img1, (0, 0)) o = camera.add_overlay (pad.tobytes (), grootte = img1.size) o.alpha = 128 o.layer = 3 slaap (2) #verwyder vorige overlay camera.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tobytes (), grootte = img2.size) o.alpha = 128 o.layer = 3 slaap (2) # verwyder vorige overlay camera.remove_overlay (o) pad.paste (img3, (0, 0)) o = kamera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 slaap (2)
Voer dit nou uit:
python imageOverlayCounter.py
En kyk na die aftelling
Sjoe - baie kode en geen foto geneem nie … Kom ons los dit op deur alles saam te voeg - voorskoukamera, aftelling en neem 'n foto
import picameraf vanaf PIL import Image from time import sleep def overlayCounter (): # load image img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.-p.webp
Probeer dit:
python pictureWithTimer.py
En hier het ons Yoda
Stap 9: Programmering - Big Dome -drukknop
Die drukknop met 'n groot koepel is 'n groot ronde knoppie - met 'n deursnee van ongeveer 100 mm met 'n klein LED. Dit sê dat dit op 12V werk, maar die 3.3v van die Raspberry PI is genoeg om dit te verlig
Gebruik die skema vir toetsing
Die kode:
vanaf RPi invoer GPIO
takeButton = 17 ledButton = 27 GPIO.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledButton, GPIO. OUT) #Ligte geleide GPIO.output (ledButton, True) # Blokkeringsfunksie GPIO.wait_for_edge (takeButton, GPIO. FALLING) druk ("Knoppie ingedruk") GPIO.output (ledButton, False) GPIO.cleanup ()
Enkele verduidelikings van die kode Een van die vorme om waardes uit GPIOS te kry, is deur onderbrekings (ander is peiling) - randopsporing.
Die rand is die naam van die oorgang van HOOG na LAAG (valrand) of LAAG na HOOG (stygende rand). As die PIN aan niks gekoppel is nie, sal enige lees ongedefinieer word. 'N Oplossing is om 'n op-/afweerstand in die genoemde PIN te hê. Met die Raspberry PI kan u optel-/afwaartse weerstande via sagteware instel.
Die lyn
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
stel die PIN op om dit te doen - trek op
Hoekom trek? Die groot koepel -drukknoppie het 2 PIN's - druk om te breek of druk om te maak (net soos die klein drukknoppies wat gereeld saam met Arduino/Raspberry PI -kits kom). Ek het dit met die 'druk om te maak' PIN van die knoppie bedraad. As dit ingedruk word, sluit die stroombaan en gaan elektrisiteit verby (normaalweg oop).
Die lyn
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
sal wag (effektief die uitvoering van die script opskort) totdat dit die val van die PIN opspoor - deur die knoppie los te maak, sal die stroom vloei en die PIN sal van 3.3v na 0v gaan
Die LED -PIN is net om die LED op die knoppie aan te steek
Meer inligting oor drukskakelaars van Arduino Tutorials, Wikipedia oor druk om te maak of druk om te breek en GPIO -onderbrekings
Kom ons kombineer nou 'n drukknoppie met die kamera - Neem slegs 'n foto as u op die knoppie druk
invoer van die kamera af vanaf die tyd slaap vanaf RPi invoer GPIO vanaf PIL invoer Beeld # OPMERKING: dit is die kanselleerknoppie in die hoofprogram # Ek gebruik dit net hier ter wille van die duidelikheid in die video 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) slaap (1) def offLeds (): GPIO.output (ledCancel, False) # Funksie om beeld def overlayCounter (): # laai beelde img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Skep 'n oorleg * 32, ((img1.size [1] + 15) // 16) * 16,)) # plak die overlay - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), grootte = img1.size) ov.alpha = 200 # laag is 3 omdat kamera voorskou op laag 2 ov.layer = 3 slaap (1) camera.remove_overlay (ov) # plak die overlay - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # laag is 3 omdat kamera voorskou op laag 2 ov.layer = 3 slaap (1) camera.remove_overlay (ov) # plak die overlay - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # laag is 3 omdat kamera voorskou is op laag 2 ov.layer = 3 slaap (1) camera.remove_overlay (ov) kamera = picamera. PiCamera () camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () GPIO.wait_for_edge (takeButton, GPIO. FALLING) onLeds () overlayCounter () camera.capture ('pushTesting.jpg') camera.stop_preview () offLeds () GPIO.cleanup ()
'N Bietjie kode verduideliking
Dit begin die voorskou van die kamera en wag daar totdat 'n knoppie ingedruk word. Nadat die knoppie ingedruk is, brand die LED en begin die aftelling. By die einde word die foto geneem en die LED is af
Stap 10: Plaas op Twitter
Nou gaan ons Python gebruik en 'n tweet tweet!:) Jy benodig 'n prentjie om te plaas - kies verstandig.
Eerstens moet ons toegang kry tot Twitter API en daarvoor moet ons 'n APP skep. Gaan na https://apps.twitter.com en skep 'n nuwe toepassing.
U moet aansoek doen vir 'n ontwikkelaarrekening - vul 'n paar vrae in en bevestig u e -posadres. Daarna kan u 'n nuwe APP skep.
Nadat u die APP geskep het, navigeer u na sleutels en tokens en genereer 'n toegangstoken en toegangstokengeheim. Daar sal 'n venster verskyn met die sleutels SLEGS SLEGS - KOPIERE HULLE EN STAAN HULLE LATER.
Gebruik die volgende kode om 'n foto na u Twitter -rekening te stuur. Moenie vergeet om in te vul nie:
- verbruikersleutel
- verbruiker_geheim
- toegangsteken
- access_token_secret
Twitter -boodskap is die teks wat u in die tweet moet stuur.
jpg_foto_to_send is 'n prentjie wat aan die tweet geheg sal word. Sit 'n prentjie in dieselfde gids as die Python -skrif en verander die naam in die kode.
invoer tweepy # Twitter -instellings def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['consumer_key'], cfg ['consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) terugkeer tweepy. API (auth) # Stuur na twitter def sendToTwitter (): cfg = {"consumer_key": "", "consumer_secret": "", "access_token": "", "access_token_secret": ""} api = get_api (cfg) # Statusboodskap tweet = "Twitter -boodskap" status = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()
Kyk na u Twitter -feed vir u tweet.
Hier is die Tweet
Of blaas:
#FramboosPI MagicBox. Neem foto's, hersien dit en kies om dit na Twitter en Facebook te stuur. Aangedryf deur Framboos PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- Bruno Ricardo Santos (@feiticeir0) 29 Februarie 2020
Stap 11: Kombineer sommige elemente
Kom ons kombineer nou die Big Dome -drukknop, druk daarop, tel af, neem 'n foto, besluit of u dit na Twitter wil stuur of nie.
Ons sal nog 'n bedekking byvoeg en al drie drukknoppies gebruik. As die foto geneem word, sal al die drie knoppies LED's brand.
Ons voeg nog 'n prentjie by, wat die ikone wys om op sosiale netwerke te plaas
SelectOption-p.webp
Aenviar-p.webp
In die video word die blou drukknoppie (voorkant die kamera) nie gewys nie, maar die LED is aan en dit begin flikker sodra dit ingedruk word.
Die kode is aangeheg as u dit verkies
Dit is die finale toetskode voor die hoofprogram.
# kodering = utf-8 invoer picamera invoer _draad invoer subproses as sp van tyd af slaap slaap van RPi invoer GPIO van PIL invoer Beeld invoer threading # Twitter invoer tweepy # Facebook invoer facebook # Knoppie om foto te neem takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # Kanselleer Foto cancelButton = 24 # Neem knoppie LED takePicButtonLed = 27 # Plaas op knoppie Social Network LED postSNLed = 22 # Kanselleer knoppie 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 -instellings def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['consumer_key'], cfg ['consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) terugkeer tweepy. API (auth) # Stuur na twitter def sendToTwitter (): cfg = {"con sumer_key ":" "," consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Status Message tweet =" MagicBox instructable testing. #MagicBox #RaspberryPI #Raspberry #Instructables "status = api.update_with_media (" pushTesting.jpg ", tweet) #Facebook AOde def get_api_facebook (cfg): graph = facebook. GraphAPI (cfg ['access_token']) #Kry bladsy token na plaas as die bladsy. U kan # die volgende oorslaan as u as u self wil plaas. resp = graph.get_object ('ek/rekeninge') page_access_token = Geen vir bladsy in resp ['data']: if page ['id'] == cfg ['page_id']: page_access_token = bladsy ['access_token'] grafiek = facebook. GraphAPI (page_access_token) teruggrafiek # Stuur na facebook def sendToFacebook (): #Waardes vir toegang cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Caption the image" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Caption the image ") # Slegs slegs TakePicButtonLed defTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Slegs lig Kanselleer en SocialNetwork -knoppie def kanselleer PostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Blink neem foto -LED terwyl aftelling def countingTimerPicture (): GPIO.output (takePicButtonLed, True) slaap (0.5) GPIO.output (takePicButtonLed, False) slaap (0.5) GPIO.output (takePicButtonLed, True) slaap (0.5) GPIO.output (takePicButtonLed,Onwaar) slaap (0.5) GPIO.output (takePicButtonLed, True) slaap (0.5) GPIO.output (takePicButtonLed, False) # Knipper postSNLed terwyl u na sosiale netwerke plaas, def blinkPosting (stop_event): # Begin terwyl (nie stop_event.is_set ()): druk ("af") GPIO.output (postSNLed, False) slaap (0.5) print ("on") GPIO.output (postSNLed, True) slaap (0.5) def timer (): GPIO.output (takePicButtonLed, True) slaap (1) GPIO.output (postSNLed, True) slaap (1) GPIO.output (cancelButtonLed, True) slaap (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Wys 'n voorskou op laag 1 def displayPreview (imgName): # Aangesien die PIL -beeldvertoning 'n onzin is # gebruik ons die oorleg van die kamera om # die voorskou te wys img = Image.open (imgName) padding = Image.new ('RGB', (((afbeeldingsgrootte [0] + 31) // 32) * 32, ((afbeeldingsgrootte [1] + 15) // 16) * 16,)) padding.paste (img, (0, 0)) ov = camera.add_overlay (padding.tobytes (), size = img.size) ov.layer = 1 # Gee 'n voorskou op die laag 3 def displayPreview3 (imgName): # Aangesien die PIL -beeldvertoning 'n crapp is # gebruik ons die overlay van die kamera om # die voorskou 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 # Function overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # Create Overlay pad = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Plak die overlay pad. Plak (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Funksie om te bedek image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Skep 'n overlay # Gebruik met img1 omdat almal dieselfde grootte pad het = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # plak die overlay - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # laag is 3 omdat kamera voorskou op laag 2 ov.layer = 3 slaap (1) camera.remove_overlay (ov) # plak die overlay - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # laag is 3 omdat kamera voorskou op laag 2 ov.layer = 3 slaap (1) camera.remove_overlay (ov) # plak die overlay - 1 pad.pasta (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # laag is 3 omdat die kamera se voorskou op laag 2 is ov.layer = 3 slaap (1) camera.remove_overlay (ov) # Hooffunksie # Maak skerm skoon sodat die opstartboodskappe nie voorkom nie # waarskynlik is dit beter om dit te doen in bash tmp = sp.call ('duidelik', 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 = 'gemiddelde' #Toets hier probeer: terwyl (Waar): camera.start_preview () #Show LED Only for Take Picture OnlyTakePicLed () #Wag tot knoppie geneem word Beeld GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Begin 'n draad om met die LED's te tel terwyl die beelde vertoon word # Waarskynlik kan dit gebruik word in die overlayCounter -funksie, # omdat dit ook timers het om die foto's te wys, maar die LED -effekte sou nie # dieselfde wees nie _thread.start_new_thread (countingTimerPicture, ()) # Wys die foto -oortrek in die kamera -beeld -overlayCounter () # Wys alle LED's terwyl die foto showAllLeds () camera.capture ('pushTesting.jpg') kamera geneem word. stop_preview () #display image displayPreview ('pushTesting.jpg') # Show overlay oo = overlaysn () # Show LEDs to Cancel or Post to Social Networks cancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_event_detect (cancelButton), GPIO. FALLING) terwyl (Waar): as GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cancelButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Knoppie sosiale netwerke" sendToTwitter () sendToFacebook () camera.remove_overlay (o) breek as GPIO.event_detected (cancelButton): #print "Gekanselleer" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remove_event_detect (takeButton) camera (stopButton): "Verlaat …") #offLeds () GPIO.cleanup ()
Stap 12: Bedrading
Die bedrading is net die bedrading van die Big Dome -drukknoppies na die Raspberry PI.
Volg net die Fritzing -skema.
Die verbindings is:
Verbinding RPI GPIO PIN GND Groen drukknop GND (#3) GND Geel drukknop GND (#9) GND Blou drukknop GND (#39) Neem foto (blou drukknop "Druk om te maak") 17 (BCM) Plaas op sosiale netwerke (groen druk Knoppie "Druk om te maak") 23 (BCM) Kanselleer (geel drukknop "Druk om te maak") 24 (BCM) Blou drukknop LED27 (BCM) Groen drukknop LED22 (BCM) Geel drukknop LED5 (BCM)
Die hitte krimp is ook gekodeer
- Swart is GND -verbindings
- Geel is 'push to make' verbindings
- Blou is LED -verbindings
GPIO. BCM -nommers vs GPIO. BOARD -verbindings
Aangesien my verbindings BCM is, dink ek dat dit 'n goeie tyd is om daaroor te praat en die verskil tussen BCM en BOARD.
Die belangrikste verskil is hoe u na die GPIO -PIN's verwys, wat weer die manier waarop u die verbindings doen, sal bestuur. GPIO.board verwys die PIN's na die nommer wat op enige GPIO -uitleg op die internet gedruk is.
GPIO. BCM verwys na die PIN -nommers soos die Broadcom SOC dit sien. Dit sal waarskynlik verander in nuwer weergawes van die Raspberry PI.
Op die pinout.xyz -webwerf is die bordnommers die een langs die penne en die BCM word so verwys - BCM X (waar X die getal is)
Stap 13: Die MagicBox
Die aangehegte kode by hierdie stap is die finale.
U kan dit doen met framboos PI -opstart, sonder om eers aan te meld. Om dit te doen, skep net hierdie klein skrif in die gids waarin u die kode geplaas het - verander paaie dienooreenkomstig
#!/bin/bash
cd/home/pi/magicbox python MagicBox.py
Maak dit uitvoerbaar
chmod +x start_magicbox.sh
Noem dit nou in /etc/rc.local, net voor die afrit 0
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
stoor en hou op.
Met elke herlaai word die Python -program uitgevoer
LET WEL: Al die prentlêers moet in dieselfde gids as die script wees. U moet:
- 1. png
- 2.png
- 3. png
- Aenviar.png
- SelectOption.png
U kan al hierdie lêers by MagicBox se github kry.
Aanbeveel:
RaspberryPi Islamic Prayers Watch & Alarm: 15 stappe (met foto's)
RaspberryPi Islamic Prayers Watch & Alarm: Moslems regoor die wêreld het vyf gebede elke dag, en elke gebed moet op 'n sekere tyd van die dag wees. as gevolg van die elliptiese manier waarop ons planeet om die son beweeg, wat die tyd van die son laat opkom en daal, verskil dit
IoT -basisplatform met RaspberryPi, WIZ850io: platformapparaatbestuurder: 5 stappe (met foto's)
IoT -basisplatform met RaspberryPi, WIZ850io: platformapparaatbestuurder: ek ken RaspberryPi -platform vir IoT. Onlangs word WIZ850io deur WIZnet aangekondig. Ek het dus 'n RaspberryPi -toepassing geïmplementeer deur middel van Ethernet SW -aanpassing omdat ek 'n bronkode maklik kan hanteer. U kan platform -toesteldrywer toets deur middel van RaspberryPi
Monitor en teken temperatuur op met Bluetooth LE en RaspberryPi: 9 stappe (met foto's)
Monitor en teken temperatuur op met Bluetooth LE en RaspberryPi: Hierdie instruksie handel oor hoe om 'n multi-node temperatuurmoniteringstelsel saam te stel met Bluetooth LE-sensorfout van Blue Radios (BLEHome) en RaspberryPi 3B Danksy die ontwikkeling van die Bluetooth LE-standaard, is daar nou geredelik beskikbaar
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer