Sadržaj:
- Supplies
- Korak 1: Izgradite
- Korak 2: Kamera
- Korak 3: Monitor
- Korak 4: Ukrašavanje
- Korak 5: Programiranje
- Korak 6: Priprema Raspberry PI
- Korak 7: Softver
- Korak 8: Programiranje - Pregled kamere
- Korak 9: Programiranje - veliko dugme kupolom
- Korak 10: Objavite na Twitteru
- Korak 11: Kombinovanje nekih elemenata
- Korak 12: Ožičenje
- Korak 13: MagicBox
Video: RaspberryPI foto kamera - MagicBox: 13 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-31 10:17
Nedavno sam imao ludu ideju da napravim fotografsku mašinu od Raspberry PI. U mom gradu održana je mala predstava na kojoj su ljudi odlazili i pokazivali šta rade ili su napravili koristeći elektroniku, računare itd … Bio sam poput Maker Faire -a siromaha, ali na lokalnom nivou.
Jedan se približavao i zajedno sa mojom ženom gradimo ovu stvar.
Kako to radi ?
Pritisnete plavo dugme - počne treperiti - i nakon 3 sekunde slika se snima. S druge strane kamere nalazi se monitor koji prikazuje odbrojavanje, a nakon što je slika snimljena, pregled fotografije.
Sada možete izabrati da ga pošaljete na Twitter i Facebook ili otkažete i pokušate ponovo. Tako je jednostavno.
Sve je programirano u Pythonu, koristeći PI framebuffer - Ne koristi se Xorg, nema grafičkog sučelja.
Evo video snimka rada projekta
Supplies
- Raspberry PI (koristim verziju 2)
- Raspberry PI kamera (koristi se verzija 1)
- 3x dugmeta za velike kupole
- TFT/LCD monitor sa VGA/HDMI
- MDF
- Metalne šarke, vijci itd.
- Električni alati
- Slobodno vreme i puno zabave
Korak 1: Izgradite
Bilo je zabavno graditi ga. Mnogo sečenja, farbanja i bušenja.
Koristio sam MDF ploče za izgradnju osnovne strukture kamere. Lagani su i laki za rad. Takođe, to je bila jedna vrsta drveta koju je laserska mašina u lokalnom Fablabu uspjela rezati.
Pristup unutrašnjem ožičenju bio je sa strane monitora, koristeći hidraulične šarke kako bi mogli pomoći pri podizanju monitora.
Korak 2: Kamera
Kamera
Kamera je kutija sljedećih dimenzija: 60cm x 40cm x 30cm Vaše mogu biti manje, veće, na vama je. Samo je potrebno prilagoditi monitor koji ćete koristiti. MDF ploče su laserski rezane u lokalnom Fablabu. Potrebne su 3 rupe na poleđini - dva velika kupolasta dugmeta i jedno za monitor. Na prednjoj strani, 2 rupe - jedna za veliko kupolasto dugme i druga - manja - za Raspberry PI kameru. Nemam određena mjerenja - samo zamislite kameru i upotrijebite je.
Korak 3: Monitor
Monitor
Nosač monitora je napravljen dodavanjem malih komada drveta kako bi se podržalo u njegovim dimenzijama.
Bila je uklonjena sa plastičnog kućišta i pričvršćena vijcima. Za lakše podizanje korištene su dvije polovne hidraulične šarke.
Korak 4: Ukrašavanje
Budući da mi se jako sviđa stil mog Fuji X-T30, otišli smo i učinili nešto slično.
Prvo smo ga prekrili pjenom, a zatim smo ga obojili crnom bojom. Nakon boje dodali smo aluminijsku foliju za srebrne dijelove i zamotali je
Da bismo simulirali objektiv, samo smo koristili okrugli Tupperware da smo napravili malu rupu za modul kamere Raspberry PI za sjedenje.
Korak 5: Programiranje
Programiranje kamere bilo je izazov, ali bilo je super zabavno.
Nema grafičkog sučelja - ovo radi na CLI -ju i radi na Pythonu verzije 3.
Prvo sam počeo s testiranjem i programiranjem gumba, zatim sam fotografirao koristeći već ponuđene alate i Python API. Zatim sam prešao na preklapanje slika u izlazu kamere (za odbrojavanje), a zatim i na interakciju s Twitter -om i Facebookom.
Nakon što sam se snašao u svemu tome, poput slagalice, sastavio sam sve dijelove zajedno. Ovdje idemo na isti proces. Počnite polako i malo, a zatim idite na brzo i veliko.
Prvo, počnimo s konfiguriranjem Raspberry PI
Korak 6: Priprema Raspberry PI
Neću objašnjavati kako instalirati Raspbian na Raspberry PI - postoji mnogo vodiča, čak i na službenoj web stranici Raspberry PI.
Samo trebate imati pristup SSH -u ili ga priključiti na monitor i priključiti tastaturu i miš.
NAPOMENA: Kada započinjete s Raspberry PI kamerom, morate je priključiti na monitor. Do tada se svi koraci mogu izvesti pomoću SSH -a.
Nakon pokretanja vašeg Raspberry PI -a, moramo omogućiti Raspberry PI kameru. Koristimo za to raspi-config alat.
sudo raspi-config
- Odaberite opciju 5 - Opcije sučelja
- Odaberite P1 - Omogući/onemogući vezu s Raspberry PI kamerom
- Recite Da
- za OK
- Odaberite Završi
- Odaberite Da za ponovno pokretanje sada
Nakon ponovnog pokretanja možemo nastaviti
Korak 7: Softver
Trebat će nam neke Python biblioteke za instaliranje. Ovo je ažurirano za najnoviju Raspbian verziju - Buster
Prvo, postavimo Python 3 kao zadani. Slijedite ovu vezu da biste saznali kako ga postaviti SISTEM ŠIROKI
Biblioteke:
- python-pil.imagetk za manipulaciju slikama
- python-rpi.gpio za pristup GPIO PINS-u
- python-picamera za pristup Raspberry PI kameri
- Tweepy za dijeljenje fotografije na Twitteru
- facebook-sdk za dijeljenje na Facebook stranici
sudo apt-get install python3-pil.imagetk python3-rpi.gpio python3-pikamera python3-tweepy python3-pip
Koristite Python pip za instaliranje facebook-sdk
sudo pip3 instalirajte facebook-sdk
Korak 8: Programiranje - Pregled kamere
Jedan od zahtjeva koji sam postavio ovom projektu bio je da se ovaj program izvodi u CLI načinu rada. Dakle, moramo prikazati sliku kamere na konzoli. Za to ćemo upotrijebiti Python Picamera. Nakon toga, upotrijebimo pil.imagetk za prikaz sloja na vrhu pregleda kamere
Naš mali program (razvijat ćemo male programe do jednog velikog na kraju) prikazat će pregled kamere.
#!/usr/bin/env python
vrijeme uvoza uvoz pikamera iz vremena uvoz kamera za spavanje = picamera. PiCamera () # Postavite željenu rezoluciju camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () try: while (True): sleep (1) osim (KeyboardInterrupt, SystemExit): print ("Izlaz …") camera.stop_preview ()
Da biste ga isprobali, samo ga izvedite
python cameraPreview.py
Pregledajte kameru sa slikama na vrhu
Budući da sam htio odbrojavanje prikazano prije snimanja fotografije, trebale su mi slike koje se preklapaju s pregledom kamere.
Napravite-p.webp" />
Sljedeći kôd će se preklapati 1-p.webp
uvezi sliku iz PIL -a Uvezi sliku iz vremena uvezi stanje mirovanja sa picamera. PiCamera () kao kameru: camera.resolution = (1920, 1080) camera.framerate = 24 camera.start_preview () # load image img = Image.open ('1-p.webp
Probaj:
python imageOverlay.py
Sada napravimo odbrojavanje sa preklopljenim slikama. Kao što ste stvorili sliku 1.png, stvorite još dvije slike s 2 i 3 u njima.
Nakon toga samo upotrijebite sljedeći kôd:
import pikamera
iz PIL uvoza Slike iz vremenskog uvoza u stanje mirovanja pomoću picamera. PiCamera () kao kamere: camera.resolution = (1280, 1024) camera.framerate = 24 camera.start_preview () # učitaj sliku 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) #ukloni prethodnu preklopljenu kameru.remove_overlay (o) pad.paste (img2, (0, 0)) o = camera.add_overlay (podloga). tobytes (), size = img2.size) o.alpha = 128 o.layer = 3 sleep (2) # ukloni prethodnu preklopljenu kameru.remove_overlay (o) pad.paste (img3, (0, 0)) o = camera. add_overlay (pad.tobytes (), size = img3.size) o.alpha = 128 o.layer = 3 sleep (2)
Sada ga izvršite:
python imageOverlayCounter.py
I pogledajte odbrojavanje
Wow - Malo koda i bez slike … Riješimo to kombinirajući sve zajedno - pregledajte kameru, odbrojavanje i fotografirajte
importiraj pikameru iz PIL uvoza Slike iz vremena importiraj sleep def overlayCounter (): # load image img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.-p.webp
Probaj:
python pictureWithTimer.py
I ovdje imamo Yodu
Korak 9: Programiranje - veliko dugme kupolom
Dugme sa velikom kupolom je veliko okruglo dugme - prečnika oko 100 mm sa malom LED diodom. Kaže da radi na 12V, ali 3.3V Raspberry PI -a je dovoljno da se upali
Koristite shemu za testiranje
Kod:
iz RPi uvoz 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) # Funkcija blokiranja GPIO.wait_for_edge (takeButton, GPIO. FALLING) print ("Button Presssed") GPIO.output (ledButton, False) GPIO.cleanup ()
Neka objašnjenja koda Jedan od oblika dobivanja vrijednosti iz GPIOS -a je putem prekida (drugi je prozivanje) - otkrivanje rubova.
Rub je naziv za prijelaz s HIGH na LOW (padajući rub) ili LOW na HIGH (rastući rub). Kada PIN nije povezan ni s čim, svako čitanje bit će nedefinirano. Zaobilazno rješenje je da u navedenom PIN -u imate otpornik za povlačenje/spuštanje. Raspberry PI omogućava konfiguriranje otpornika za povlačenje/spuštanje kroz softver.
Linija
GPIO.setup (takeButton, GPIO. IN, GPIO. PUD_UP)
konfigurira taj PIN za upravo to - povucite prema gore
Zašto se povlačiti? Pa, veliko dugme za kupolu ima 2 PIN -a - pritisnite za lomljenje ili pritisnite za izradu (baš kao i mali gumbi koji često dolaze s Arduino/Raspberry PI setovima). Povezao sam ga sa PIN -om za dugme "pritisni za stvaranje". Kada se pritisne, krug se zatvara i struja prolazi (normalno otvorena).
Linija
GPIO.wait_for_edge (takeButton, GPIO. FALLING)
će čekati (efektivno obustavljajući izvršavanje skripte) dok ne otkrije pad PIN -a - otpuštanje dugmeta će prekinuti protok električne energije i PIN će preći sa 3,3v na 0v
LED PIN služi samo za paljenje LED diode na dugmetu
Više informacija o push prekidačima iz Arduino Tutoriala, Wikipedia o push to make ili push to break i GPIO prekidima
Sada, spojimo dugme sa kamerom - Snimite sliku samo kada je dugme pritisnuto
uvozi pikameru iz vremena uvozi spavanje iz RPi uvozi GPIO iz PIL uvoza Slika # NAPOMENA: Ovo će biti dugme za otkazivanje u glavnom programu # Upravo ga koristim ovdje radi jasnoće u videu 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) spavanje (1) def offLeds (): GPIO.output (ledCancel, False) # Funkcija za preklapanje slike def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Napravite prekrivač # Koristi se sa img1 jer su svi iste veličine pad = Image.new ('RGB', (((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # zalijepite prekrivač - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # sloj je 3 jer je pregled kamere na drugom sloju ov.layer = 3 sleep (1) camera.remove_overlay (ov) # zalijepite prekrivač - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # sloj je 3 jer je pregled kamere na drugom sloju ov.layer = 3 sleep (1) camera.remove_overlay (ov) # zalijepite preklapanje - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # sloj je 3 jer je pregled kamere na drugom sloju ov.layer = 3 sleep (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 ()
Malo objašnjenja koda
Pokreće pregled kamere i tamo čeka dok se ne pritisne dugme. Nakon što pritisnete dugme, LED lampica zasvijetli i odbrojavanje počinje. Kad dođete do kraja, slika se snima i LED se isključuje
Korak 10: Objavite na Twitteru
Sada ćemo koristiti Python i tvitovati tvit!:) Za objavljivanje će vam trebati slika - birajte mudro.
Prvo moramo pristupiti twitter API -ju, a za to moramo stvoriti APP. Idite na https://apps.twitter.com i stvorite novu aplikaciju.
Morat ćete se prijaviti za račun programera - popunite neka pitanja i potvrdite svoju adresu e -pošte. Nakon toga ćete moći kreirati novu aplikaciju.
Nakon kreiranja APP -a idite na Ključevi i žetoni i Generirajte pristupni token i tajnu pristupnog tokena. Prozor će se prikazati sa KLJUČIMA SAMO JEDNOM - KOPIRAJTE I SPASNITE IH KASNIJE.
Pomoću sljedećeg koda pošaljite sliku na svoj twitter račun. Ne zaboravite popuniti:
- potrošački_ključ
- Consumer_secret
- access_token
- access_token_secret
twitter poruka je tekst koji se šalje putem tvita.
jpg_foto_to_send je slika koja će biti priložena tweetu. Molimo vas da imate sliku u istom direktoriju kao i Python skripta i promijenite ime u kodu.
uvoz tweepy # Twitter postavki def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['customer_key'], cfg ['Consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret]) tweepy. API (auth) # Pošalji na twitter def sendToTwitter (): cfg = {"customer_key": "", "customer_secret": "", "access_token": "", "access_token_secret": ""} api = get_api (cfg) # Poruka statusa tweet = "Twitter poruka" status = api.update_with_media ("jpg_foto_to_Send", tweet) sendToTwitter ()
Provjerite svoj tvit na svom Twitter profilu.
Evo Tweeta
Ili ispod:
#RaspberryPI MagicBox. Snimite fotografije, pregledajte ih i odlučite ih poslati na Twitter i Facebook. Pokreće Raspberry PI. @@ Raspberry_Pi#RaspberryPI#RaspberryPIProjectpic.twitter.com/cCL33Zjb8p
- Bruno Ricardo Santos (@feiticeir0) 29. februara 2020
Korak 11: Kombinovanje nekih elemenata
Hajdemo sada kombinirati dugme Big Dome Push, pritisnuti ga, odbrojavati, fotografirati, odlučiti hoćemo li ga poslati na Twitter.
Dodaćemo još jednu sliku sa preklapanjem i koristiti sva tri tastera. Kad se slika snimi, zasvijetlit će sve LED diode sa 3 dugmeta.
Dodajemo još jednu sliku koja prikazuje ikone za objavljivanje na društvenim mrežama
SelectOption-p.webp
Aenviar-p.webp
U videu nije prikazano plavo dugme (prednji dio kamere), ali LED dioda svijetli i počinje treperiti čim se pritisne.
Kôd se dodaje ako želite
Ovo je konačni kôd za testiranje prije glavnog programa.
# coding = utf-8 import picamera import _thread import subprocess as sp from time import sleep from RPi import GPIO from PIL import import threading # Twitter import tweepy # Facebook import facebook # Dugme za slikanje takeButton = 17 # SocialNetwork Button socialNetworkButton = 23 # Otkaži sliku cancelButton = 24 # Dugme za snimanje slike LED takePicButtonLed = 27 # Dugme za objavu na društvenoj mreži LED postSNLed = 22 # Dugme za otkazivanje 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 postavke def get_api (cfg): auth = tweepy. OAuthHandler (cfg ['customer_key'], cfg ['Consumer_secret']) auth.set_access_token (cfg ['access_token'], cfg ['access_token_secret']) return tweepy. API (auth) # Pošalji na twitter def sendToTwitter (): cfg = {"con sumer_key ":" "," customer_secret ":" "," access_token ":" "," access_token_secret ":" "} api = get_api (cfg) # Poruka o statusu tweet =" MagicBox testiranje po instrukcijama. #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']) # objavite kao stranicu. Možete preskočiti # sljedeće ako želite objaviti kao sebe. resp = graph.get_object ('ja/računi') page_access_token = Nema za stranicu u resp ['data']: if page ['id'] == cfg ['page_id']: page_access_token = page ['access_token'] graph = facebook. GraphAPI (page_access_token) return graph # Pošalji na facebook def sendToFacebook (): # Vrijednosti za pristup cfg = {"page_id": "", "access_token": ""} api = get_api_facebook (cfg) caption = "Natpis slike" albumid = "" api.put_photo (image = open ("pushTesting.jpg", "rb"), caption = "Naslov slike ") # Samo svjetlo TakePicButtonLed def onlyTakePicLed (): GPIO.output (takePicButtonLed, True) GPIO.output (postSNLed, False) # GPIO.output (cancelButtonLed, False) # Samo svjetlo Otkaži i gumb za društvenu mrežu def cancelPostLEDS (): GPI O.izlaz (takePicButtonLed, False) GPIO.output (postSNLed, True) GPIO.output (cancelButtonLed, True) # Trepće LED za snimanje slike dok odbrojava def countingTimerPicture (): GPIO.output (takePicButtonLed, True) spavanje (0,5) GPIO.output (takePicButtonLed, False) spavanje (0,5) GPIO.output (takePicButtonLed, True) spavanje (0,5) GPIO.output (takePicButtonLed,False) sleep (0,5) GPIO.output (takePicButtonLed, True) sleep (0,5) GPIO.output (takePicButtonLed, False) # Trepće postSNLed tokom objavljivanja na društvenim mrežama def blinkPosting (stop_event): # Pokreni dok (not stop_event.is_set ()): print ("off") GPIO.output (postSNLed, False) sleep (0.5) print ("on") GPIO.output (postSNLed, True) sleep (0.5) def timer (): GPIO.output (takePicButtonLed, True) 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) # Prikažite pregled na sloju 1 def displayPreview (imgName): # Budući da je prikaz PIL slike sranje # koristimo preklop sa kamere za prikaz # pregleda 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 # Prikaži pregled na sloju 3 def displayPreview3 (imgName): # Pošto je prikaz PIL slika sranje # koristimo prekrivač sa kamere za prikaz # pregleda 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 # Funkcija overlaySocialNetwork def overlaysn (): imgsn = Image.open ('SelectOption.png') # Kreiraj Sloj za preklapanje = Image.new ('RGB', ((((imgsn.size [0] + 31) // 32) * 32, ((imgsn.size [1] + 15) // 16) * 16,)) # Zalijepite prekrivač pad.paste (imgsn, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = imgsn.size) ov.alpha = 100 ov.layer = 3 return ov # Funkcija za preklapanje image def overlayCounter (): #load images img1 = Image.open ('3.png') img2 = Image.open ('2.png') img3 = Image.open ('1.png') # Kreirajte prekrivač # Koristi se sa img1 jer su svi iste veličine pad = Image.new ('RGB', ((((img1.size [0] + 31) // 32) * 32, ((img1.size [1] + 15) // 16) * 16,)) # zalijepite prekrivač - 3 pad.paste (img1, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img1.size) ov.alpha = 200 # sloj je 3 jer je pregled kamere na drugom sloju ov.layer = 3 sleep (1) camera.remove_overlay (ov) # zalijepite prekrivač - 2 pad.paste (img2, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img2.size) ov.alpha = 200 # sloj je 3 jer je pregled kamere na drugom sloju ov.layer = 3 sleep (1) camera.remove_overlay (ov) # paste preklapanje - 1 pad.paste (img3, (0, 0)) ov = camera.add_overlay (pad.tobytes (), size = img3.size) ov.alpha = 200 # sloj je 3 jer je pregled kamere na drugom sloju ov.layer = 3 sleep (1) camera.remove_overlay (ov) # Glavna funkcija # Očisti ekran tako da poruke o pokretanju nisu prisutne # vjerovatno bi bilo bolje da to učinite u bash tmp = sp.call ('clear', ljuska = Tačno) 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 = 'average' #Testiranje ovdje pokušajte: while (Tačno): camera.start_preview () #Prikaži LED samo za Snimanje slikeTakePicLed () #Sačekajte da dugme za snimanje Slika GPIO.wait_for_edge (takeButton, GPIO. FALLING) # Započni nit za brojanje sa LED diodama dok su slike prikazane # Vjerovatno se može koristiti u funkciji overlayCounter, # jer ima i tajmere za prikaz slika, ali LED efekte ne bi # bio isti _thread.start_new_thread (countingTimerPicture, ()) # Prikažite slike u preklapanju slika sa kamereCounter () # Prikaži sve LED diode dok snimate sliku showAllLeds () camera.capture ('pushTesting.jpg') kameru. stop_preview () #display image displayPreview ('pushTesting.jpg') # Prikaži prekrivanje oo = overlaysn () # Prikaži LED diode za otkazivanje ili objavljivanje na društvenim mrežama cancelPostLEDS () GPIO.add_event_detect (socialNetworkButton, GPIO. FALLING) GPIO.add_event_, GPIO. FALLING) dok je (Tačno): ako je GPIO.event_detecte d (socialNetworkButton): camera.remove_overlay (oo) GPIO.output (cancelButtonLed, False) o = displayPreview3 ('Aenviar.png') #print "Dugme društvenih mreža" sendToTwitter () sendToFacebook () camera.remove_overlay (o) break if GPIO.event_detected (cancelButton): #print "Otkazana" kamera.remove_overlay (oo) break # reset GPIOS GPIO.remove_event_detect (socialNetworkButton) GPIO.remove_event_detect (cancelButton) GPIO.remove_event_detenter (printBox) "Izašao …") #offLeds () GPIO.cleanup ()
Korak 12: Ožičenje
Ožičenje samo povezuje dugmad Big Dome Push na Raspberry PI.
Samo slijedite shemu Fritzinga.
Veze su:
PovezivanjeRPI GPIO PIN GND Zeleni potisni gumbGND (#3) GND Žuti potisni gumbGND (#9) GND Plavi gumb GND (#39) Snimite sliku (Plavi gumb "Pritisni za izradu") 17 (BCM) Objavi na društvenim mrežama (Zeleni pritisak Dugme "Pritisni za izradu") 23 (BCM) Odustani (Žuto dugme "Pritisni za stvaranje") 24 (BCM) Plavo dugme za LED LED27 (BCM) Zeleno dugme za pritiskanje LED22 (BCM) Žuto dugme za pritiskanje LED5 (BCM)
Termoskupljanje je također označeno bojom
- Crna je GND veza
- Žute su "push to make" veze
- Plave su LED veze
GPIO. BCM brojevi u odnosu na GPIO. BOARD veze
Budući da su moje veze BCM, mislim da je sada dobro vrijeme za razgovor o tome i razlici između BCM -a i BOARD -a.
Glavna razlika je u tome kako se pozivate na GPIO PIN -ove, koji će zauzvrat utjecati na način povezivanja. GPIO.board će pozivati PIN -ove prema broju odštampanom na bilo kojem GPIO rasporedu na internetu.
GPIO. BCM upućuje na PIN brojeve onako kako ih vidi Broadcom SOC. To će se vjerojatno promijeniti s novijim verzijama Raspberry PI -ja.
Na web stranici pinout.xyz brojevi ploča su oni tik uz pinove, a BCM se tako naziva - BCM X (gdje je X broj)
Korak 13: MagicBox
Priloženi kôd ovom koraku je konačan.
Možete ga pokrenuti na maline PI boot, čak i bez potrebe za prijavom. Da biste to učinili, samo stvorite ovu malu skriptu u direktoriju u koji ste postavili kôd - promijenite putanje u skladu s tim
#!/bin/bash
cd/home/pi/magicbox python MagicBox.py
Neka bude izvršno
chmod +x start_magicbox.sh
Sada, nazovite ga u /etc/rc.local, neposredno prije izlazne 0 instukcije
sudo vi /etc/rc.local
/home/pi/magicbox/start_magicbox.sh &
sačuvaj i odustani.
Sada, pri svakom ponovnom pokretanju, program Python će se izvršavati
NAPOMENA: Sve slikovne datoteke moraju biti u istom direktoriju kao i skripta. Morate imati:
- 1.png
- 2.png
- 3.png
- Aenviar.png
- SelectOption.png
Sve ove datoteke možete nabaviti na MagicBox -ovom github -u.
Preporučuje se:
RaspberryPi Islamske molitvene satovi i alarm: 15 koraka (sa slikama)
RaspberryPi Islamska molitva za gledanje i alarm: Muslimani širom svijeta imaju pet namaza svaki dan, a svaki namaz mora biti u određeno doba dana. zbog eliptičnog načina kretanja naše planete oko Sunca, zbog čega se vrijeme izlaska i zalaska Sunca razlikuje tokom godine, to
RaspberryPi 3/4 produžna ploča za dodavanje dodatnih funkcija Raspberry Pi: 15 koraka (sa slikama)
RaspberryPi 3/4 ploča za proširenje za dodavanje dodatnih funkcija Raspberry Pi: znamo da malina pi 3/4 ne dolazi s ugrađenim ADC -om (analogno -digitalni pretvarač) i RTC -om (sat u stvarnom vremenu) pa sam dizajnirao PCB koji sadrži 16 kanalni 12 -bitni ADC, RTC, SIM7600 4G modul, tipke, releji, USB izlaz, izlaz 5 V, napajanje 12 V
Osnovna platforma IoT sa RaspberryPi, WIZ850io: Upravljački program za platformu: 5 koraka (sa slikama)
IoT Base Platform sa RaspberryPi, WIZ850io: Upravljački program platforme: Poznajem RaspberryPi platformu za IoT. Nedavno je WIZnet najavio WIZ850io. Zato sam implementirao aplikaciju RaspberryPi putem Ethernet SW modifikacije jer mogu lako rukovati izvornim kodom. Upravljački program za platformu možete testirati putem RaspberryPi
Najjednostavnija web kamera kao sigurnosna kamera - otkrivanje pokreta i slike poslane e -poštom: 4 koraka
Najjednostavnija web kamera kao sigurnosna kamera - Otkrivanje pokreta i slike poslane e -poštom: Više ne morate preuzimati ili konfigurirati softver da biste slike sa svoje web kamere prenijeli na svoju e -poštu - jednostavno upotrijebite svoj preglednik. Upotrijebite ažurirani preglednik Firefox, Chrome, Edge ili Opera u sustavu Windows, Mac ili Android za snimanje slike
Prepoznavanje lica u stvarnom vremenu na RaspberryPi-4: 6 koraka (sa slikama)
Detekcija lica u stvarnom vremenu na RaspberryPi-4: U ovom Instructableu ćemo izvršiti detekciju lica u stvarnom vremenu na Raspberry Pi 4 sa Shunya O/S koristeći Shunyaface Library. Prateći ovaj vodič možete postići brzinu kadrova otkrivanja 15-17 na RaspberryPi-4