Բովանդակություն:

Raspberry Pi Photobooth: 5 քայլ
Raspberry Pi Photobooth: 5 քայլ
Anonim
Ազնվամորի Պի Photobooth
Ազնվամորի Պի Photobooth

Նպատակը:

  • Իմացեք, թե ինչպես ծածկագրել և տեղադրել Pi տեսախցիկ
  • Կոդավորման մեջ defin and if հայտարարությունների օգտագործումը
  • Սովորեք օգտագործել նոր տեխնոլոգիաներ, ինչպիսիք են RGB LED- ները

Քայլ 1: Այն, ինչ ձեզ հարկավոր կլինի

Այն, ինչ ձեզ պետք կգա
Այն, ինչ ձեզ պետք կգա
Այն, ինչ ձեզ պետք կգա
Այն, ինչ ձեզ պետք կգա
Այն, ինչ ձեզ պետք կգա
Այն, ինչ ձեզ պետք կգա
  • 1 ազնվամորի Պի 3
  • Breadboard
  • Ցատկողներ
  • 1 Լույսի կախվածության դիմադրություն
  • 1 կոնդենսատոր
  • 1 սեղմիչ կոճակ
  • 6 220 Օմ դիմադրություն
  • 2 RGB LED
  • 1 Raspberry Pi տեսախցիկ

Քայլ 2: Խցիկի մոդուլի միացում

Խցիկի մոդուլը միացնելը
Խցիկի մոդուլը միացնելը

Առաջին հերթին, երբ Pi- ն անջատված է, ձեզ հարկավոր է միացնել Camera Module- ը Raspberry Pi- ի տեսախցիկի պորտին, այնուհետև գործարկել Pi- ն և ապահովել, որ ծրագրաշարը միացված է:

  1. Տեղադրեք տեսախցիկի պորտը, որը գտնվում է HDMI և 3.5 մմ պորտի միջև
  2. Պլաստիկ եզրերով քաշեք ֆոտոխցիկի ամրակը մինչև սեղմիչը անկյունագծային լինի
  3. Այժմ տեղադրեք տեսախցիկների մալուխը, որի կապույտն ուղղված է դեպի 3.5 մմ պորտը

Քայլ 3: Տեսախցիկի կարգավորում

Տեսախցիկի կարգավորում
Տեսախցիկի կարգավորում
Տեսախցիկի կարգավորում
Տեսախցիկի կարգավորում

Բացեք Raspberry Pi Configuration գործիքը հիմնական ընտրացանկից և անջատեք և միացրեք վերը նշված բոլոր միջերեսները

Հիմնական ընտրացանկից բացեք Տերմինալը և մուտքագրեք կոդի հետևյալ տողերը.

Sudo Raspi-config

Այժմ այստեղից օգտագործեք ձեր սլաքների բանալիները համակարգի միջոցով աշխատելու համար և կտտացրեք ipայրամասային կապի ընտրանքին, իսկ դրանցից կտտացրեք P1 տեսախցիկին և միացրեք տեսախցիկը, ապա ընտրեք ավարտը: Վերադառնալով տերմինալի տեսակին ՝ կոդի հետևյալ տողերում.

pip տեղադրել picamera

կամ Sudo pip տեղադրեք Picamera- ը

Քայլ 4: Տեսախցիկի մոդուլի փորձարկում

Տեսախցիկի մոդուլի փորձարկում
Տեսախցիկի մոդուլի փորձարկում

Այստեղից մենք կարող ենք ստուգել ՝ տեսախցիկն աշխատում է, թե ոչ, քանի որ մենք միացրել ենք ամբողջ ծրագրակազմը և ապարատը:

Բացեք Python 3 -ը ընտրացանկից

Այնտեղից բացեք նոր ֆայլ պատյանից և պահեք այն cameratest.py:

Մուտքագրեք հետևյալ ծածկագիրը.

picamera ներմուծումից PiCamera #ներմուծված մոդուլ, որը ստեղծվել է pip- ից տեղադրել pi ֆոտոխցիկի հրաման ժամանակից ներմուծել քուն #ներմուծել քուն, որպեսզի համոզվենք, որ մեր տեսախցիկը մնում է տեսախցիկում = PiCamera () #Կարգավորում տեսախցիկի համար

camera.start_preview ()#գործարկում է տեսախցիկը և ցույց է տալիս, թե ինչպիսին է տեսախցիկի ելքը

քնել (10)#թողնում է նախադիտումը 10 վայրկյան

camera.stop_preview ()#վերջապես դուրս է գալիս նախադիտումից

Գործարկեք կոդը F5- ով

Եթե կոդն աշխատելիս այս սխալն եք ստանում.

(mmal: mmal_vc_component_create: չհաջողվեց ստեղծել «vc.ril.camera» բաղադրիչը (1: ENOMEM)

mmal: mmal_component_create_core. չհաջողվեց ստեղծել «vc.ril.camera» բաղադրիչ (1) Հետագծում (վերջին զանգը վերջին անգամ). ֆայլ "", տող 1, ֆայլում "/usr/lib/python2.7/dist-packages/picamera /camera.py ", տող 257, _init_ self._init_camera () ֆայլում" /usr/lib/python2.7/dist-packages/picamera/camera.py ", տող 288, _init_camera նախածանցում =" Չհաջողվեց ստեղծել տեսախցիկ բաղադրիչ ") Ֆայլ" /usr/lib/python2.7/dist-packages/picamera/exc.py ", տող 112, mmal_check- ում բարձրացրեք PiCameraMMALError (կարգավիճակը, նախածանցը) picamera.exc. PiCameraMMALError: Չհաջողվեց ստեղծել տեսախցիկի բաղադրիչ. հիշողության)

Խնդրում ենք գնալ Raspberry Pi- ի կազմաձևին, անցնել կատարման սյունակի տակ և բարձրացնել ձեր GPU- ի հիշողությունը, մինչև սխալը չվերանա (պետք է վերագործարկել):

Այժմ աշխատասեղանին պահվող լուսանկար ստեղծելու համար մենք կօգտագործենք հետևյալ ծածկագիրը.

picamera- ից ներմուծում

ֆոտոխցիկ = PiCamera () #Կարգավորում խցիկի համար

camera.start_preview () #Սկսում է նախադիտումը (5) #Թողնում է նախադիտումը միացված 5 վայրկյան

camera.capture ('/home/pi/Desktop/image.jpg')# Սկսած

camera.stop_preview ()#Դադարեցնում է նախադիտումը

Քայլ 5: Ստեղծեք սխեմա կոդով:

Ստեղծեք սխեմա կոդով
Ստեղծեք սխեմա կոդով
Կոդի ստեղծում
Կոդի ստեղծում
Կոդի ստեղծում
Կոդի ստեղծում

Ինչպես նշվեց վերևում սխեմաների սխեմաներից, մենք պետք է տեղադրենք կոճակ, LDR և վերջապես երկու RGB LED: Նախ մենք պատրաստվում ենք կարգավորել սեղանի տախտակի ներքևի ձախ կողմում գտնվող կոճակը: Կոճակի համար ձեր տեղադրման ընթացքում մենք կօգտագործենք ընդհանուր երկաթուղային գծերը, ինչը նշանակում է, որ մենք 3.3 Վ լարը կմիացնենք դրական և գետինը `բացասական: Շրջանակի կարգավորումն ավարտելուց հետո միայն կոճակի համար:

Մենք փորձարկելու ենք մեր սխեման ՝ տեսնելու համար, թե արդյոք կարող ենք այն այնպես անել, որ կոճակը սեղմելու դեպքում մենք միացնենք led- ը ՝ օգտագործելով հետևյալ ծածկագիրը.

#Ներմուծված մոդուլներ gpiozero ներմուծման կոճակից picamera- ից ներմուծել PiCamera- ն ժամանակից ներմուծել քուն

#Կարգավորում

Տեսախցիկ = PiCamera () Կոճակ = Կոճակ (22)

#Լուսանկարելու գործառույթ, ես որոշեցի այն դնել սահմանված գործառույթի մեջ, քանի որ այն օգնում է մեզ մաքրել հիմնական ծածկագիրը

def ֆոտոկապ ():

Camera.start_preview ()

քուն (5) Camera.capture ('/home/pi/Desktop/image.jpg') տպագիր («Լուսանկարն արված է») Camera.stop_preview ()

#Հիմնական ծածկագիր.

իսկ True: if Button.is_pressed: print ("Button was pressed") photocap ()

#Ինչու՞ է սա աշխատում. Հիմնական ծածկագիրը գործում է այնպես, ինչպես մենք անում ենք, եթե «կոճակ» հրահանգն է: սեղմված է որոշ ժամանակ ճշմարիտ հայտարարության մեջ, այնպես որ այն անընդհատ թարմացվում է, երբ կոճակը սեղմվում է լուսանկարը վերցնելու համար:

Այժմ մենք մտադիր ենք տեղադրել 2 RGB LED մինչև շրջանագծի վերևը և դրանք առանձնացնել կերակրատախտակի մեջտեղում և դարձնել սիմետրիկ: Եթե այս նախագծի համար չունեք 220 օմ ռեզիստոր, կարող եք դրանք զուգահեռաբար տեղադրել `կախված ձեր ունեցած դիմադրողների դիմադրությունից: 4 փին RGB LED- ի երկրորդ քորոցը (ամենաերկարը պետք է միացված լինի գետնին երկաթգծի միջոցով: Մյուս կապերը բոլորը պետք է միացված լինեն իրենց սեփական GPIO կապին:, Չորրորդ քորոց = կապույտ):

Մենք կփորձարկենք մեր RGB LED- ներից մեկը մեր կոճակների սխեմայում `ստորև նշված կոդով.

#Ներմուծված մոդուլներ gpiozero ներմուծման կոճակից picamera ներմուծման PiCamera- ից

gpiozero ներմուծման RGBLED- ից

ժամանակից ներմուծել քուն

#Կարգավորում

Տեսախցիկ = PiCamera () Կոճակ = Կոճակ (22)

Timամանակահատված LED = RGBLED (կարմիր = 21, կանաչ = 20, կապույտ = 16)

#Լուսանկար ՝ RGB LED- ով գործառույթ կատարելով, ես որոշեցի այն դնել սահմանված գործառույթի մեջ, քանի որ այն օգնում է մեզ մաքրել հիմնական ծածկագիրը

def photocap (): Camera.start_preview () քուն (4)

timedled.color (1, 0, 0)

քուն (2)

timedled.color (0, 1, 0)

քուն (1)

Camera.capture ('/home/pi/Desktop/image.jpg') տպագիր («Լուսանկարն արված է») Camera.stop_preview ()

#Հիմնական ծածկագիր.

իսկական True:

եթե Button.is_pressed:

տպագիր («Կոճակը սեղմված էր») լուսապատճեն ()

#Ինչու՞ է սա աշխատում. Այս ծածկագրի աշխատանքի պատճառն այն է, որ այժմ մենք RGBLED- ին աշխատեցինք որպես ժամաչափ, երբ լուսանկարը պատրաստվում է արվել

Այժմ տեղադրեք «Լույսից կախված» դիմադրողականությունը տախտակի ներքևի աջ մասում ՝ օգտագործելով գծապատկերը մինչև վերև և նախկինում քննարկված ընդհանուր երկաթուղիները: Հիշեք, որ LDR- ի երկու երկար ոտքերը և կապիկատորը պետք է միացված լինեն GPIO- ի քորոցին:

LDR- ը միացնելուց հետո մենք պատրաստվում ենք օգտագործել հետևյալ ծածկագիրը.

#Ներմուծված մոդուլներ

gpiozero ներմուծման կոճակից

picamera ներմուծումից PiCamera gpiozero ներմուծումից RGBLED

gpiozero ներմուծման LightSensor- ից

ժամանակից ներմուծել քուն

#Կարգավորում

Տեսախցիկ = PiCamera () Կոճակ = Կոճակ (22) edամկետավորված LED = RGBLED (կարմիր = 21, կանաչ = 20, կապույտ = 16)

LightSensor = LightSensor (23)

#Լուսանկար ՝ RGB LED- ով գործառույթ կատարելով, ես որոշեցի այն դնել սահմանված գործառույթի մեջ, քանի որ այն օգնում է մեզ մաքրել հիմնական ծածկագիրը

def photocap (): Camera.start_preview () քուն (4) ժամանակավորված. գույն (1, 0, 0) քուն (2) ժամանակավորված. գույն (0, 1, 0) քուն (1) Camera.capture ('/տուն/ pi/Desktop/image-j.webp

#Հիմնական ծածկագիր.

իսկական True:

եթե Button.is_pressed: տպել («Կոճակը սեղմված էր») լուսապատճեն ()

եթե Button.is_pressed և Lightsensor.when_dark:

տպել («Կոճակը սեղմված էր»)

տպել («Մութ է»)

լուսապատճեն ()

#Ինչու

Այժմ այս նախագծի իրականացման վերջին քայլը կլինի մյուս RGBLED սիմետրիկ ակտիվացումը մյուսի վրա ՝ որպես բռնկման լույս աշխատելու համար, Վերջնական կոդը.

gpiozero ներմուծման կոճակից

picamera ներմուծումից PiCamera

gpiozero ներմուծման RGBLED- ից

gpiozero ներմուծման LightSensor- ից

ժամանակից ներմուծել քուն

#Կարգավորում

Տեսախցիկ = PiCamera ()

Կոճակ = Կոճակ (22)

Timամանակահատված LED = RGBLED (կարմիր = 21, կանաչ = 20, կապույտ = 16)

FlashLED = RGBLED (կարմիր = 19, կանաչ = 13, կապույտ = 6)

LightSensor = LightSensor (23)

#Լուսանկարը RGB LED- ով ֆունկցիա կատարելու համար ես որոշեցի այն դնել որոշակի գործառույթի մեջ, քանի որ այն օգնում է մեզ մաքրել հիմնական ծածկագիրը def photocap (): Camera.start_preview () sleep (4) timedled.color (1, 0, 0) քուն (2) timedled.color (0, 1, 0) քուն (1) Camera.capture ('/home/pi/Desktop/image.jpg') տպագիր («Լուսանկարն արված է») Camera.stop_preview () # Հիմնական կոդը ՝ իսկական ՝ եթե Button.is_pressed:

տպել («Կոճակը սեղմված էր»)

լուսապատճեն ()

եթե Button.is_pressed և Lightsensor.when_dark:

տպել («Կոճակը սեղմվեց») տպել («Մութ է»)

FlashLED.color (1, 1, 1)

լուսապատճեն ()

#Ինչու՞ է սա աշխատում. Իմ լապտերն ավելացնելու եղանակը RGB- ի միջոցով բերելն է, որ ստացվի սպիտակ գույնը, որը 1, 1, 1 է, և դա միայն այն դեպքում, եթե if հայտարարությունը ճիշտ է:

Խորհուրդ ենք տալիս: