Tartalomjegyzék:
- Kellékek
- 1. lépés: Építsen
- 2. lépés: Kamera
- 3. lépés: Monitorozás
- 4. lépés: Díszítés
- 5. lépés: Programozás
- 6. lépés: A málna PI előkészítése
- 7. lépés: Szoftver
- 8. lépés: Programozás - Kamera előnézet
- 9. lépés: Programozás - Big Dome nyomógomb
- 10. lépés: Közzététel a Twitteren
- 11. lépés: Egyes elemek kombinálása
- 12. lépés: huzalozás
- 13. lépés: A MagicBox
Videó: RaspberryPI fényképezőgép - MagicBox: 13 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-31 10:20
Egy ideje eszembe jutott ez az őrült ötlet, hogy fényképészeti gépet készítsek egy málna PI -ből. Városomban volt egy kis műsor, ahol az emberek elmentek és megmutatták, mit készítenek vagy készítettek elektronika, számítógép stb. Segítségével … Olyan voltam, mint egy szegény ember Maker Faire, de helyi szinten.
Egy jött, és a feleségemmel együtt építjük fel ezt a dolgot.
Hogyan működik ?
Nyomja meg a kék gombot - villogni kezd - és 3 másodperc múlva elkészül a kép. A kamera másik oldalán van egy monitor, amely visszaszámlálást mutat, és a kép elkészítése után a fénykép előnézete.
Most választhatja, hogy elküldi -e a Twitterre és a Facebookra, vagy lemondja, és megpróbálja újra. Ez ennyire egyszerű.
Minden a Python -ban van programozva, a PI framebuffer segítségével - nincs Xorg, nincs GUI.
Itt egy videó a projekt működéséről
Kellékek
- Raspberry PI (a 2 -es verziót használom)
- Málna PI kamera (az 1. verzió használatával)
- 3x Big Dome nyomógomb
- TFT/LCD monitor VGA/HDMI -vel
- MDF
- Fém csuklópántok, csavarok stb.
- Elektromos szerszámok
- Szabadidő és sok szórakozás
1. lépés: Építsen
Építeni szórakoztató volt. Sok vágás, festés és fúrás.
MDF paneleket használtam a kamera alapszerkezetének felépítéséhez. Könnyűek és könnyen kezelhetők. Ezenkívül ez volt az egyik fafajta, amelyet a helyi Fablab lézergépe vágni tudott.
A belsejében lévő vezetékekhez a monitor oldalán keresztül lehetett hozzáférni, hidraulikus csuklópántokkal, hogy segítsenek a monitor felemelésében.
2. lépés: Kamera
Kamera
A kamera egy doboz, amelynek méretei: 60cm x 40cm x 30cm A tied lehet kisebb, nagyobb, ez rajtad múlik. Csak be kell illeszteni a használni kívánt monitort. Az MDF paneleket a helyi Fablab lézerrel vágták le. A hátlapon 3 lyukra van szükség - két nagy kupola nyomógombra és egy a monitorra. Elöl 2 lyuk - az egyik egy nagy kupola nyomógombhoz, a másik - kisebb - a Raspberry PI kamerához. Nincsenek konkrét méréseim - csak képzeljen el egy kamerát, és használja azt.
3. lépés: Monitorozás
Monitor
A monitor tartóját kis fadarabok hozzáadásával készítették el, hogy támogassa a méreteit.
Csík volt a műanyag házból, és csavarokkal rögzítette a helyén. Az emelés megkönnyítése érdekében két (használt) hidraulikus csuklópántot használtak.
4. lépés: Díszítés
Mivel nagyon szeretem a Fuji X-T30-as stílusát, elmentünk és csináltunk valami hasonlót.
Először habbal borítottuk be, majd feketére festettük. A festés után az ezüst részekhez alufóliát tettünk, és becsomagoltuk
Az objektív szimulálásához csak egy kerek Tupperware -t használtunk, amikor egy kis lyukat csináltunk a Raspberry PI kameramodul ülésére.
5. lépés: Programozás
A kamera programozása kihívást jelentett, de nagyon szórakoztató volt.
Nincs grafikus felhasználói felület - ez a CLI -n fut, és a Python 3 -as verzióján.
Először a gombok tesztelésével és programozásával kezdtem, majd képeket készítettem a már biztosított eszközök és a Python API segítségével. Ezután áttértem a képek átfedésére a kamera kimenetében (visszaszámláláshoz), majd a Twitter és a Facebook kapcsolatba lépéséhez.
Miután jól éreztem magam, mint egy rejtvény, összeszereltem az összes darabot. Itt ugyanazzal a folyamattal megyünk. Kezdje lassan és kicsiben, és menjen gyorsan és nagyra.
Először is kezdjük a Raspberry PI konfigurálásával
6. lépés: A málna PI előkészítése
Nem fogom elmagyarázni, hogyan kell telepíteni a Raspbian -t a Raspberry PI -re - sok oktatóanyag létezik, még a Raspberry PI hivatalos honlapján is.
Csak SSH hozzáféréssel kell rendelkeznie, vagy csatlakoztatnia kell egy monitorhoz, és csatlakoztatnia kell a billentyűzetet és az egeret.
MEGJEGYZÉS: Amikor a Raspberry PI kamerával kezdi, csatlakoztatnia kell azt a monitorhoz. Addig az összes lépést SSH használatával lehet elvégezni.
A Raspberry PI rendszerben való indítás után engedélyeznünk kell a Raspberry PI kamerát. Ehhez használjunk raspi-config eszközt.
sudo raspi-config
- Válassza az 5. opciót - Interfész opciók
- Válassza a P1 - Enable/Disable connection to the Raspberry PI camera lehetőséget
- Mondj igent
- az OK -hoz
- Válassza a Befejezés lehetőséget
- Válassza az Igen lehetőséget az újraindításhoz
Az újraindítás után folytathatjuk
7. lépés: Szoftver
Szükségünk lesz néhány Python könyvtárra a telepítéshez. Ez frissítve lett a legújabb Raspbian verzióhoz - Buster
Először állítsuk be a Python 3 -at alapértelmezettként. Kövesse ezt a linket, hogy megtudja, hogyan állítsa be a SYSTEM WIDE -t
Könyvtárak:
- python-pil.imagetk a képek manipulálására
- python-rpi.gpio segítségével elérheti a GPIO PINS-t
- python-picamera a Raspberry PI kamera eléréséhez
- Tweepy, hogy megosszák a fotót a Twitteren
- facebook-sdk megosztani egy facebook oldalon
sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-picamera python3-tweepy python3-pip
A Python pip használatával telepítse a facebook-sdk-t
sudo pip3 telepítse a facebook-sdk-t
8. lépés: Programozás - Kamera előnézet
A projekt egyik követelménye az volt, hogy a programnak CLI módban kell futnia. Tehát meg kell jelenítenünk a kamera képét a konzolon. Ehhez használjuk a Python Picamera -t. Ezt követően a pil.imagetk segítségével jelenítsünk meg egy fedvényt a kamera előnézetén
Kis programunk (kis programokat fogunk kifejleszteni, amíg egy nagy lesz a végén) megjeleníti a kamera előnézetét.
#!/usr/bin/env python
importálási idő importálása picamera az időimportból alvó kamera = picamera. PiCamera () # Állítsa be a kívánt felbontást camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1) kivéve (KeyboardInterrupt, SystemExit): print ("Kilépés …") camera.stop_preview ()
Hogy kipróbáld, csak hajtsd végre
python cameraPreview.py
Tekintse meg a fényképezőgép előnézetét képekkel a tetején
Mivel azt akartam, hogy a visszaszámlálás megjelenjen a kép készítése előtt, szükségem volt a képekre, amelyek átfedik a kamera előnézetét.
Hozzon létre egy-p.webp" />
A következő kód átfedi az 1-p.webp
importálja a picamerafromot a PIL -ből Importálja a képet az időimportálásból a picamera segítségével. PiCamera () mint kamera: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1-p.webp
Próbáld ki:
python imageOverlay.py
Most hozzunk létre egy visszaszámlálást fedvényképekkel. Az 1-p.webp
Ezután használja a következő kódot:
importálja a kamerát
a PIL importálásból Kép az időimportálásból a picamera segítségével. PiCamera () mint 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 (), size = img1.size) o.alpha = 128 o.layer = 3 sleep (2) #remove előző overlay camera.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (pad. tobyte (), size = img2.size) o.alpha = 128 o.layer = 3 sleep (2) # távolítsa el az előző overlay kamerát.remove_overlay (o) pad.paste (img3, (0, 0)) o = kamera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 alvás (2)
Most hajtsa végre:
python imageOverlayCounter.py
És lásd a visszaszámlálást
Wow - Sok kód és kép nem készült … Oldjuk meg ezt az összes kombinálásával - előnézeti kamera, visszaszámlálás és kép készítése
importálja a picamerafromot a PIL -ből importálja a képet az időimportból alvó def overlayCounter (): # kép letöltése img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.-p.webp
Próbáld ki:
python pictureWithTimer.py
És itt van Yoda
9. lépés: Programozás - Big Dome nyomógomb
A nagy kupola nyomógomb egy nagy kerek gomb - körülbelül 100 mm átmérővel, kis LED -del. Azt mondja, hogy 12V -on működik, de a Raspberry PI 3.3V -ja elegendő a világításhoz
Használja a vázlatot a teszteléshez
A kód:
az RPi import GPIO -ból
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) # Blokkoló funkció GPIO.wait_for_edge (takeButton, GPIO. FALLING) print ("Gomb megnyomva") GPIO.output (ledButton, False) GPIO.cleanup ()
A kód néhány magyarázata A GPIOS -ból származó értékek egyik formája a megszakítások (a másik a lekérdezés) - él észlelés.
Az él a HIGH -ról LOW -ra (leeső él) vagy LOW -HIGH -ra (emelkedő él) való átmenet neve. Ha a PIN -kód nincs csatlakoztatva semmihez, akkor minden olvasás nem lesz definiálva. A megoldás az, hogy egy fel/le ellenállás legyen a PIN -kódban. A Raspberry PI lehetővé teszi a fel/le ellenállások konfigurálását szoftveren keresztül.
A vonal
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
konfigurálja ezt a PIN -kódot - húzza fel
Miért kell felhúzni? Nos, a nagy kupola nyomógombnak 2 PIN -kódja van - nyomja meg, hogy megtörjön vagy nyomjon, hogy készítsen (mint a kis nyomógombok, amelyek gyakran az Arduino/Raspberry PI készletekhez tartoznak). Összekötöttem a gomb "push to make" PIN kódjával. Ha megnyomja, az áramkör bezárul, és az áram áthalad (általában nyitva).
A vonal
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
vár (gyakorlatilag felfüggeszti a szkript végrehajtását), amíg észleli a PIN -kód leesését - a gomb felengedése megszakítja az áramlást, és a PIN -kód 3,3 V -ról 0 V -ra változik
A LED PIN -kód csak a gomb LED -jének világítására szolgál
További információ a nyomókapcsolókról az Arduino oktatóanyagokból, a Wikipedia a push to make vagy push to break funkciókról és a GPIO megszakításokról
Most kombináljuk a nyomógombot a kamerával - Készítsen képet csak a gomb megnyomásakor
kép importálása időből importálás alvó állapotból RPi -ből GPIO importálása PIL importálásból Kép # MEGJEGYZÉS: Ez lesz a törlés gomb a főprogramban.setmode (GPIO. BCM) GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP) GPIO.setup (ledCancel, GPIO. OUT) def onLeds (): GPIO.output (ledCancel, True) alvás (1) def off (): GPIO.output (ledCancel, False) # A kép átfedésére szolgáló funkció overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Sablon létrehozása # Az img1 -gyel használják, mert mindegyik azonos méretű pad = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # illessze be a fedvényt - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # réteg 3, mert a kamera előnézete a 2. rétegen van ov.layer = 3 alvó (1) camera.remove_overlay (ov) # illessze be a fedvényt - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # réteg 3, mert a kamera előnézete a 2. rétegen ov.layer = 3 sleep (1) camera.remove_overlay (ov) # illessze be a fedvényt - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # réteg 3, mert a kamera előnézete a 2. rétegen ov.layer = 3 alvó (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 ()
Egy kis kódmagyarázat
Elindítja a kamera előnézetét, és ott várja, amíg megnyom egy gombot. A gomb megnyomása után a LED kigyullad és megkezdődik a visszaszámlálás. A végéhez érve a kép elkészül, és a LED kialszik
10. lépés: Közzététel a Twitteren
Most a Python segítségével fogunk tweetelni egy tweetben!:) Szükséged lesz egy képre a posztoláshoz - okosan válassz.
Először is hozzá kell férnünk a Twitter API -hoz, és ehhez létre kell hoznunk egy APP -t. Lépjen a https://apps.twitter.com oldalra, és hozzon létre egy új alkalmazást.
Kérnie kell fejlesztői fiókot - töltsön ki néhány kérdést, és erősítse meg e -mail címét. Ezt követően új APP -t hozhat létre.
Az APP létrehozása után keresse meg a Kulcsok és tokenek elemet, és hozzon létre hozzáférési tokent és hozzáférési token titkot. Egy ablak jelenik meg a gombokkal, CSAK EGYSZER - MÁSOLJUK MEG, és Mentsük el őket később.
Használja az alábbi kódot, hogy képet küldjön twitter fiókjába. Ne felejtse el kitölteni:
- fogyasztó_kulcs
- fogyasztó_titka
- access_token
- access_token_secret
A twitter üzenet a tweetben elküldendő szöveg.
A jpg_foto_to_send egy kép, amelyet csatolni fognak a tweethez. Kérjük, legyen néhány képe ugyanabban a könyvtárban, mint a Python -szkript, és változtassa meg a kód nevét.
tweepy importálása # Twitter beállítások 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) # Küldés a twitterre def sendToTwitter (): cfg = {"Consumer_key": "", "Consumer_secret": "", "access_token": "", "access_token_secret": "" "api = get_api (cfg) # Állapotüzenet tweet = "Twitter üzenet" állapot = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()
Ellenőrizze Twitter -hírcsatornáját a tweethez.
Itt a Tweet
Vagy alább:
#RaspberryPI MagicBox. Készítsen képeket, tekintse át őket, és küldje el őket a Twitterre és a Facebookra. Powered by Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProject
- Bruno Ricardo Santos (@feiticeir0) 2020. február 29
11. lépés: Egyes elemek kombinálása
Most kombináljuk a Big Dome Push gombot, lenyomva, visszaszámlálva, készítsünk képet, döntsük el, hogy elküldjük -e a twitterre vagy sem.
Hozzáadunk egy másik fedvényképet, és mindhárom nyomógombot használjuk. A kép készítésekor mind a 3 gomb LED -je kigyullad.
Hozzáadunk egy másik képet, amely a közösségi hálózatokon közzétett ikonokat mutatja
A SelectOption-p.webp
Az Aenviar-p.webp
A videóban nem látható a kék nyomógomb (a fényképezőgép elején), de a LED világít és villogni kezd, amint megnyomja.
A kód mellékelve van, ha úgy tetszik
Ez a végső tesztkód a főprogram előtt.
# coding = utf-8 import picamera import _thread import alfolyamat sp-ként időből import alvó állapot RPi-ből import GPIO a PIL importálásból Image import threading # Twitter import tweepy # Facebook import facebook # Button to take takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # Cancel Picture cancelButton = 24 # Kép készítése gomb LED takePicButtonLed = 27 # Közzététel a közösségi hálózaton gomb LED postSNLed = 22 # Mégse gomb 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 beállítások def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['fogyasztói_kulcs'], cfg ['fogyasztói_cím']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) return tweepy. API (auth) # Küldés a twitterre def sendToTwitter (): cfg = {"con sumer_key ":" "," Consumer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Állapotüzenet tweet =" MagicBox utasítható tesztelés. #MagicBox #RaspberryPI #Málna #Instructables "status = api.update_with_media (" pushTesting.jpg ", tweet) #Facebook AOth def get_api_facebook (cfg): graph = facebook. GraphAPI (cfg ['access_token']) #Oldal beszerzése Ha önmagaként szeretne közzétenni, kihagyhatja # a következőt.] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) return graph # Küldés a facebook -ra def sendToFacebook (): #Values for access cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Képfelirat" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Kép felirata ") # Csak Light TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) GPIO.output (cancelButtonLed, False) # Csak fény megszakítása és SocialNetwork gomb def cancelPostLEDS (): GPI O.output (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Villogás felvétel LED, miközben visszaszámlálja a számlálást.output (takePicButtonLed, False) sleep (0.5) GPIO.output (takePicButtonLed, True) alvás (0.5) GPIO.output (takePicButtonLed,False) sleep (0.5) GPIO.output (takePicButtonLed, True) sleep (0.5) GPIO.output (takePicButtonLed, False) # Blink postSNLed miközben közzétesz a közösségi hálózatokon def blinkPosting (stop_event): # Kezdés közben (nem stop_event.is_set ()): print ("ki") GPIO.output (postSNLed, False) alvás (0.5) print ("on") GPIO.output (postSNLed, True) alvás (0.5) def timer (): GPIO.output (takePicButtonLed, True)) sleep (1) GPIO.output (postSNLed, True) sleep (1) GPIO.output (cancelButtonLed, True) sleep (1) def showAllLeds (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, True) GPIO.output (CancelButtonLed, True) # Előnézeti kép megjelenítése az 1. rétegben def displayPreview (imgName): # Mivel a PIL képsorozat szar # használjuk a fedvényt a kamerából, hogy megjelenítsük # az előnézet 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.layer = 1 # Előnézet megjelenítése a rétegen 3 def displayPreview3 (imgName): # Mivel a PIL képsorozat gagyi 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 # Funkció overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # Létrehozás Overlay pad = Image.new ('RGB', (((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Illessze be a fedőlapot.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Overlay funkció image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Overlay létrehozása # Az img1 -el együtt használják, mert mindegyik azonos méretű pad = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # illessze be a fedvényt - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # réteg 3, mert a kamera előnézete a 2. rétegen van ov.layer = 3 alvás (1) camera.remove_overlay (ov) # illessze be a fedvényt - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # réteg 3, mert a kamera előnézete a 2. rétegen ov.layer = 3 alvó (1) camera.remove_overlay (ov) # paste a fedvény - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # réteg 3, mert a kamera előnézete a 2 -es rétegen van ov.layer = 3 alvó (1) camera.remove_overlay (ov) # Fő funkció # Törölje a képernyőt, hogy ne jelenjenek meg a rendszerindító üzenetek # valószínűleg jobb lenne ezt bash tmp = sp.call ('clear', shell = 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 = 'átlagos' #Tesztelés itt próbálja ki: while (True): camera.start_preview () #Show LED Only for Only onlyTakePicLed () #Várja meg, amíg a gomb elkészül Kép GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Indítson el egy szálat a LED -ek számolásához, miközben a képek láthatók # nem ugyanaz lenne _thread.start_new_thread (countingTimerPicture, ()) # A képek átfedésének megjelenítése a kamera képfedvényébenCounter () # Az összes LED megjelenítése a showAllLeds () camera.capture ('pushTesting.jpg') kamera készítése közben. stop_preview () #display image displayPreview ('pushTesting.jpg') # Overlay megjelenítése oo = overlaysn () # LED -ek megjelenítése a törléshez vagy közzététel a közösségi hálózatokban CancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_event_dutton, GPIO. FALLING), míg (True): ha 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 "Canceled" camera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remove_event_donetet (kivétel) (kivétel) "Kilépett …") #offLeds () GPIO.cleanup ()
12. lépés: huzalozás
A huzalozás csak a Big Dome Push gombokat csatlakoztatja a Raspberry PI -hez.
Csak kövesse a Fritzing sémát.
A kapcsolatok a következők:
Csatlakozás RPI GPIO PIN GND zöld nyomógombGND (#3) GND sárga nyomógombGND (#9) GND kék nyomógombGND (#39) Kép készítése (kék nyomógomb "Push to make") 17 (BCM) Hozzászólás a közösségi hálózatokhoz (Green Push) Gomb "Nyomja meg, hogy") 23 (BCM) Mégse (Sárga nyomógomb "Nyomja meg, hogy") 24 (BCM) Kék nyomógomb LED27 (BCM) Zöld nyomógomb LED22 (BCM) Sárga nyomógomb LED5 (BCM)
A hőzsugorodás is színkóddal van ellátva
- A fekete a GND kapcsolatok
- A sárga "push to make" kapcsolatok
- A kék LED -es csatlakozók
GPIO. BCM számok vs GPIO. BOARD kapcsolatok
Mivel a kapcsolataim BCM -ek, úgy gondolom, hogy most jó alkalom beszélni róla, valamint a BCM és a BOARD közötti különbségről.
A fő különbség az, hogy hogyan hivatkozik a GPIO PIN -kódokra, amelyek viszont befolyásolják a kapcsolatok létrehozását. A GPIO.board a PIN kódokat az internet bármely GPIO elrendezésére nyomtatott szám alapján fogja utalni.
A GPIO. BCM a PIN -kódokra hivatkozik, ahogy a Broadcom SOC látja őket. Ez valószínűleg megváltozik a Raspberry PI újabb verzióiban.
A pinout.
13. lépés: A MagicBox
A lépéshez csatolt kód a végleges.
Futtathatja málna PI rendszerindításkor, anélkül, hogy bejelentkezne. Ehhez csak hozza létre ezt a kis szkriptet a könyvtárban, ahová a kódot helyezte - ennek megfelelően módosítsa az útvonalakat
#!/bin/bash
cd/home/pi/magicbox python MagicBox.py
Legyen végrehajtható
chmod +x start_magicbox.sh
Most hívja fel az /etc/rc.local könyvtárban, közvetlenül a 0 -as kilépés előtt
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
mentés és kilépés.
Most minden újraindításkor a Python program végrehajtásra kerül
MEGJEGYZÉS: Minden képfájlnak ugyanabban a könyvtárban kell lennie, mint a szkriptnek. A következőkre van szüksége:
- 1.png
- 2.png
- 3.png
- Aenviar.png
- SelectOption.png
Mindezeket a fájlokat a MagicBox githubjában szerezheti be.
Ajánlott:
Készítse el saját motoros fényképezőgép csúszkáját: 6 lépés (képekkel)
Készítse el saját motoros fényképezőgép csúszkáját: Ebben a projektben megmutatom, hogyan alakítottam át két régi kameraállványt egy motoros kameracsúszda létrehozásához. A mechanikus rendszer többnyire alumíniumból és rozsdamentes acélból áll, ami a csúszkát masszívvá és szép megjelenésűvé teszi. Az
DIY képérzékelő és digitális fényképezőgép: 14 lépés (képekkel)
DIY képérzékelő és digitális fényképezőgép: Sok oktatóanyag található az interneten a saját filmkamera építéséről, de nem hiszem, hogy van ilyen a saját képérzékelő létrehozásáról! A polcról érkező képérzékelők sok cégtől érhetők el online, és ezek használata tervezést jelentene
Robot autó Bluetooth, fényképezőgép és MIT App Inventor 2: 12 lépés (képekkel)
Robotkocsi Bluetooth, kamera és MIT App Inventor2 segítségével: Szerettél volna valaha saját robotkocsit építeni? Nos … itt a lehetőség !! Ebben az utasításban elmagyarázom, hogyan lehet robotkocsit Bluetooth és MIT App Inventor2 segítségével vezérelni. Légy tudatában annak, hogy kezdő vagyok, és ez az első oktatásom
Az analóg fényképezőgép átalakítása (részben) digitálisra: 3 lépés (képekkel)
Három évvel ezelőtt találtam egy modellt a Thingiverse -ben, amely összekötötte a Raspberry kamerát egy Canon EF objektívvel. Itt egy link https://www.thingiverse.com/thing:909176 Jól működött, és elfelejtettem. Néhány hónappal ezelőtt újra megtaláltam a régi projektet, és
Pc szinkronizáló csatlakozó hozzáadása a Nikon Sc-28 TTL kábelhez (használja az automatikus beállításokat a fényképezőgép vakujának bekapcsolásához és a fényképezőgép villanásainak kikapcsolásához !!): 4 lépés
Pc szinkronizáló csatlakozó hozzáadása a Nikon Sc-28 Ttl kábelhez (használja az automatikus beállításokat a fényképezőgép vakuján, és a kioldó fényképezőgépek villanásait !!): ebben az utasításban megmutatom, hogyan távolítsa el az egyik bosszantó, saját, 3 tűs TTL csatlakozót a egy Nikon SC-28 kikapcsolt fényképezőgép TTL kábelének oldalát, és cserélje ki egy szabványos PC szinkronizáló csatlakozóra. ez lehetővé teszi egy dedikált vaku használatát