Мазмуну:

Raspberry Pi Photobooth: 5 кадам
Raspberry Pi Photobooth: 5 кадам

Video: Raspberry Pi Photobooth: 5 кадам

Video: Raspberry Pi Photobooth: 5 кадам
Video: Raspberry Pi PhotoBooth with Printer Tutorial 2024, Ноябрь
Anonim
Raspberry Pi Photobooth
Raspberry Pi Photobooth

Ниет:

  • Пи Камераны коддоону жана орнотууну үйрөнүңүз
  • Коддоодо аныктоо жана if билдирүүлөрүн колдонуу
  • RGB LED сыяктуу жаңы технологияларды колдонууну үйрөнүү

1 -кадам: Сизге эмне керек

Сизге эмне керек болот
Сизге эмне керек болот
Сизге эмне керек болот
Сизге эмне керек болот
Сизге эмне керек болот
Сизге эмне керек болот
  • 1 Raspberry Pi 3
  • Breadboard
  • Секирүүчүлөр
  • 1 Жарыкка көз каранды резистор
  • 1 Конденсатор
  • 1 баскыч
  • 6 220 Ом резисторлор
  • 2 RGB LED
  • 1 Raspberry Pi камерасы

2 -кадам: Камера модулун туташтыруу

Камера модулун туташтыруу
Камера модулун туташтыруу

Биринчиден, Pi өчүрүлгөндө, Камера модулун Raspberry Pi камерасынын портуна туташтырышыңыз керек, андан кийин Pi иштетип, программалык камсыздоонун иштетилгенин текшериңиз.

  1. HDMI жана 3.5 мм порттун ортосундагы камера портун табыңыз
  2. Клип диагональ болгончо камера клипти пластикалык четинен өйдө тарткыла
  3. Эми камера кабелин көк түстөгү 3.5 мм портуна караңыз

3 -кадам: Камераны орнотуу

Камераны орнотуу
Камераны орнотуу
Камераны орнотуу
Камераны орнотуу

Негизги менюдан Raspberry Pi Configuration куралын ачуу жана жогорудагы бардык интерфейстерди өчүрүү жана иштетүү

Негизги менюдан Терминалды ачыңыз жана төмөнкү код саптарын териңиз:

Sudo Raspi-config

Эми бул жерден жебенин баскычтарын колдонуп, системада иштеңиз жана Перифериялык туташуу опциясын жана P1 Камерасын чыкылдатып, камераны күйгүзүңүз, анан аягына чыкылдатыңыз. Төмөнкү код саптарында терминалдын түрүнө кайтуу:

пикамераны орнотуу

же Sudo пипи Picamera орнотот

4 -кадам: Камера модулун тестирлөө

Камера модулун сыноо
Камера модулун сыноо

Бул жерден биз камеранын иштеп же иштебей турганын текшере алабыз, анткени бизде бардык программалык камсыздоо жана жабдыктар иштетилген.

Менюдан Python 3ту ачыңыз

Ал жерден кабыктан жаңы файлды ачып, аны cameratest.py сактаңыз.

Төмөнкү кодду киргизиңиз:

пикамерадан импорттоо PiCamera #импорттолгон модуль пип орнотуу пи камера командасынан түзүлгөн

camera.start_preview ()#камераны иштетет жана камеранын чыгарылышы кандай экенин көрсөтөт

sleep (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) Traceback (акыркы акыркы чалуу): Файл "", 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 #Импорттолгон модуль пип орнотуу пи камера командасынан түзүлгөн

camera = PiCamera () #Камерага орнотуу

camera.start_preview () #Алдын ала көрүүнү баштайт (5) #Алдын ала көрүүнү 5 секундга калтырат

camera.capture ('/home/pi/Desktop/image.jpg')# тартып

camera.stop_preview ()#Алдын ала көрүүнү токтотот

5 -кадам: Код менен схеманы түзүү

Код менен схеманы түзүү!
Код менен схеманы түзүү!
Код менен схеманы түзүү!
Код менен схеманы түзүү!
Код менен схеманы түзүү!
Код менен схеманы түзүү!

Жогоруда көрсөтүлгөн схемалардан көрүнүп тургандай, биз баскычты, LDRди жана акыры эки RGB LEDди орнотушубуз керек. Биринчиден, биз панелдин төмөнкү сол жагындагы баскычты орнотобуз. Баскычты орнотуу учурунда биз жалпы темир жол линияларын колдонобуз, демек биз 3.3V позитивдүү жана негативдүү жерге туташтырабыз. Сиз баскыч үчүн гана райондук орнотууну бүтүргөндөн кийин.

Биз муну жасай алабызбы же жокпу, текшерүү үчүн, биз төмөнкү кодду колдонуп, күйгүзгүчтү күйгүзөбүз:

#Импорттолгон модулдар gpiozero импорттоо баскычынан пикамерадан импорттоо PiCamera импорттук уйкудан.

#Жайгашуу

Камера = PiCamera () Button = Button (22)

#Сүрөт тартуу функциясы, мен аны аныктоочу функцияга киргизүүнү чечтим, анткени ал бизге негизги кодду тазалоого жардам берет

def photocap ():

Camera.start_preview ()

уйку (5) Camera.capture ('/home/pi/Desktop/image.jpg') басып чыгаруу ("Сүрөт тартылган") Camera.stop_preview ()

#Негизги код:

while True: if Button.is_pressed: print ("Button pressed") photocap ()

#Эмнеге бул иштейт: Негизги код иштейт, анткени эгерде button.is_pressed бир аз убакыттын ичинде чыныгы буйрукту колдонуп жатабыз, ошондуктан ал сүрөткө тартуу үчүн баскыч басылганда дайыма жаңыртылып турат.

Эми биз 2 RGB LED диапазонун чокусуна чейин орнотуп, аларды нан тактасынын ортосуна бөлүп, симметриялуу кылабыз. Эгерде сизде бул долбоор үчүн 220 Ом каршылыгы жок болсо, анда сизде болгон резисторлорго каршылыгыңызга жараша аларды параллель орното аласыз. 4 пиндүү RGB LEDдин экинчи пини (эң узуну темир жол аркылуу жерге туташтырылышы керек. Башка казыктар баары өз GPIO казыктарына туташтырылышы керек. (Биринчи пин = кызыл, Экинчи пин = жерге, Үчүнчү пин = жашыл), Төртүнчү пин = көк).

Биз төмөндөгү код менен баскыч схемабызда RGB LEDлерибиздин бирин сынап көрөбүз:

#Импорттук модулдар gpiozero импорттоо баскычы пикамерадан PiCamera импорттоо

gpiozero импорттук RGBLEDден

Убакытты импорттоо

#Жайгашуу

Камера = PiCamera () Button = Button (22)

TimedLED = 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 ()

#Негизги код:

чын болсо:

эгер Button.is_pressed:

басып чыгаруу ("Баскыч басылды") фотокапкак ()

#Эмнеге бул иштейт: Бул коддун иштешинин себеби, биз азыр RGBLEDди сүрөткө качан түшүү үчүн таймер катары иштей алдык.

Эми үстөлдүн диаграммасын жана мурун талкууланган жалпы темир жолду колдонуп, нан табактын төмөнкү оң жагына Light Resendent каршылыгын орнотуңуз. Эсиңизде болсун, LDRдин узун эки буту жана капицитатор GPIO пинине туташтырылышы керек.

LDRди туташтыргандан кийин, биз төмөнкү кодду колдонобуз:

#Импорттолгон модулдар

gpiozero импорттоо баскычынан

пикамерадан импорттоо PiCamera gpiozero импорттоо RGBLED

LightSensor импорту gpiozeroдон

Убакытты импорттоо

#Жайгашуу

Камера = PiCamera () Button = Button (22) TimedLED = RGBLED (кызыл = 21, жашыл = 20, көк = 16)

LightSensor = LightSensor (23)

#Сүрөт тартуу функциясы 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-j.webp

#Негизги код:

чын болсо:

if Button.is_pressed: print ("Button pressed") photocap ()

if Button.is_pressed жана Lightsensor.when_dark:

басып чыгаруу ("Баскыч басылды")

басып чыгаруу ("Бул караңгы")

фотокапкак ()

#Эмнеге бул иштейт: Жарык сенсорун менин кодума кошуу жолу, жарык сенсорунун импорттолгон функциясын камтыган башка билдирүү аркылуу. Караңгы бизди кийинки кадамыбызга эң сонун орнотот

Эми бул долбоорду ишке ашыруунун акыркы кадамы башка RGBLEDди симметриялуу жандандыруу, жарк катары иштөө болмок, Акыркы код:

gpiozero импорттоо баскычынан

пикамерадан PiCamera импорттоо

gpiozero импорттук RGBLEDден

LightSensor импорту gpiozeroдон

Убакытты импорттоо

#Жайгашуу

Камера = PiCamera ()

Баскыч = Баскыч (22)

TimedLED = RGBLED (кызыл = 21, жашыл = 20, көк = 16)

FlashLED = RGBLED (кызыл = 19, жашыл = 13, көк = 6)

LightSensor = LightSensor (23)

#Сүрөт тартуу функциясы RGB LED менен, мен аны аныктоочу функцияга киргизүүнү чечтим, анткени ал бизге башкы кодду тазалоого жардам берет (): Camera.start_preview () уйку (4) timedled.color) уйку (2) timedled.color (0, 1, 0) уйку (1) Camera.capture ('/home/pi/Desktop/image.jpg') басып чыгаруу ("Сүрөт тартылган") Camera.stop_preview () # Негизги код: Чынында: эгер Button.is_pressed:

басып чыгаруу ("Баскыч басылды")

фотокапкак ()

if Button.is_pressed жана Lightsensor.when_dark:

басып чыгаруу ("Баскыч басылды") басып чыгаруу ("Бул караңгы")

FlashLED.color (1, 1, 1)

фотокапкак ()

#Эмнеге бул иштейт: Менин Чырагымды кошуунун жолу - RGBди колдонуу, 1, 1, 1 ак түстү чыгарууга алып келди жана эгер if оператору чын болсо гана ошентет.

Сунушталууда: