สารบัญ:

บูธภาพถ่าย Raspberry Pi: 5 ขั้นตอน
บูธภาพถ่าย Raspberry Pi: 5 ขั้นตอน

วีดีโอ: บูธภาพถ่าย Raspberry Pi: 5 ขั้นตอน

วีดีโอ: บูธภาพถ่าย Raspberry Pi: 5 ขั้นตอน
วีดีโอ: Weekend Project: Raspberry Pi Photo Booth 2024, พฤศจิกายน
Anonim
Raspberry Pi Photobooth
Raspberry Pi Photobooth

วัตถุประสงค์:

  • เรียนรู้วิธีเขียนโค้ดและติดตั้ง Pi Camera
  • การใช้คำสั่ง define และ if ในการเขียนโค้ด
  • เรียนรู้ที่จะใช้เทคโนโลยีใหม่ๆ เช่น RGB LEDs

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
สิ่งที่คุณต้องการ
  • 1 ราสเบอร์รี่ Pi 3
  • เขียงหั่นขนม
  • จัมเปอร์
  • 1 ตัวต้านทานแบบพึ่งพาแสง
  • 1 ตัวเก็บประจุ
  • 1 ปุ่มกด
  • 6 ตัวต้านทาน 220 โอห์ม
  • ไฟ LED RGB 2 ดวง
  • กล้อง Raspberry Pi 1 ตัว

ขั้นตอนที่ 2: เชื่อมต่อโมดูลกล้อง

การเชื่อมต่อโมดูลกล้อง
การเชื่อมต่อโมดูลกล้อง

ก่อนอื่นเมื่อปิด Pi คุณจะต้องเชื่อมต่อโมดูลกล้องกับพอร์ตกล้องของ Raspberry Pi จากนั้นเปิด Pi และตรวจสอบว่าซอฟต์แวร์เปิดใช้งานอยู่

  1. ค้นหาพอร์ตกล้องซึ่งอยู่ระหว่างพอร์ต HDMI และ 3.5 มม
  2. ดึงคลิปกล้องขึ้นที่ขอบพลาสติกจนคลิปเป็นแนวทแยง
  3. ตอนนี้เสียบสายกล้องโดยให้สีฟ้าหันไปทางพอร์ต 3.5 มม.

ขั้นตอนที่ 3: การตั้งค่ากล้อง

การตั้งค่ากล้อง
การตั้งค่ากล้อง
การตั้งค่ากล้อง
การตั้งค่ากล้อง

การเปิดเครื่องมือ Raspberry Pi Configuration จากเมนูหลักและปิดการใช้งานและเปิดใช้งานอินเทอร์เฟซทั้งหมดด้านบน

จากเมนูหลักให้เปิด Terminal และพิมพ์รหัสต่อไปนี้:

Sudo Raspi-config

จากที่นี่ ให้ใช้ปุ่มลูกศรเพื่อดำเนินการผ่านระบบ และคลิกที่ตัวเลือกการเชื่อมต่ออุปกรณ์ต่อพ่วง และจากการคลิกที่กล้อง P1 และเปิดใช้งานกล้อง จากนั้นเลือกเสร็จสิ้น กลับไปที่ประเภทเทอร์มินัลในบรรทัดของรหัสต่อไปนี้:

pip ติดตั้ง picamera

หรือ Sudo pip ติดตั้ง Picamera

ขั้นตอนที่ 4: การทดสอบโมดูลกล้อง

การทดสอบโมดูลกล้อง
การทดสอบโมดูลกล้อง

จากที่นี่ เราสามารถทดสอบว่ากล้องใช้งานได้หรือไม่ เนื่องจากเราเปิดใช้งานซอฟต์แวร์และฮาร์ดแวร์ทั้งหมดแล้ว

เปิด Python 3 จากเมนู

จากนั้นเปิดไฟล์ใหม่จากเชลล์และบันทึกเป็น cameratest.py

ป้อนรหัสต่อไปนี้:

จาก picamera นำเข้า PiCamera # โมดูลนำเข้าที่สร้างจากคำสั่ง pip ติดตั้ง pi กล้องจากเวลานำเข้า sleep #imported sleep เพื่อให้แน่ใจว่ากล้องของเราอยู่ในกล้อง = PiCamera() # ตั้งค่าสำหรับกล้อง

camera.start_preview()#start up the camera และแสดงให้คุณเห็นว่าเอาต์พุตของกล้องเป็นอย่างไร

นอนหลับ(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 prefix="Failed to create camera คอมโพเนนต์") ไฟล์ "/usr/lib/python2.7/dist-packages/picamera/exc.py" บรรทัดที่ 112 ใน mmal_check ยก PiCameraMMALError (สถานะ คำนำหน้า) picamera.exc. PiCameraMMALError: ล้มเหลวในการสร้างส่วนประกอบกล้อง: ออก แห่งความทรงจำ)

โปรดไปที่การกำหนดค่า Raspberry Pi ไปที่คอลัมน์ประสิทธิภาพและเพิ่มหน่วยความจำ GPU ของคุณจนกว่าข้อผิดพลาดจะหายไป (ต้องรีบูต)

ตอนนี้เพื่อสร้างรูปภาพที่จะบันทึกบนเดสก์ท็อป เราจะใช้รหัสต่อไปนี้:

จาก picamera นำเข้า PiCamera #นำเข้าโมดูลที่สร้างขึ้นจากคำสั่ง pip ติดตั้ง pi กล้องจากเวลานำเข้าการนอนหลับ #นำเข้าโหมดสลีป เพื่อให้แน่ใจว่ากล้องของเรายังคงอยู่

กล้อง = PiCamera() #ตั้งค่าสำหรับกล้อง

camera.start_preview() #เริ่มการแสดงตัวอย่างสลีป(5)#เปิดการแสดงตัวอย่างไว้เป็นเวลา 5 วินาที

camera.capture('/home/pi/Desktop/image.jpg')# จาก

camera.stop_preview()#หยุดการแสดงตัวอย่าง

ขั้นตอนที่ 5: สร้างวงจรด้วยรหัส

สร้างวงจรด้วยโค้ด!
สร้างวงจรด้วยโค้ด!
สร้างวงจรด้วยโค้ด!
สร้างวงจรด้วยโค้ด!
สร้างวงจรด้วยโค้ด!
สร้างวงจรด้วยโค้ด!

ดังที่เห็นด้านบนจากแผนภาพวงจร เราจำเป็นต้องตั้งค่าปุ่ม LDR และสุดท้าย RGB LED สองดวง ก่อนอื่นเราจะตั้งค่าปุ่มที่ด้านล่างซ้ายของเขียงหั่นขนม ระหว่างการตั้งค่าปุ่มของคุณ เราจะใช้เส้นทางรถไฟทั่วไป ซึ่งหมายความว่าเราจะเสียบปลั๊ก 3.3V ของเราที่ขั้วบวกและขั้วลบ หลังจากคุณตั้งค่าวงจรสำหรับปุ่มเท่านั้นเสร็จแล้ว

เราจะทดสอบวงจรของเราเพื่อดูว่าเราทำได้หรือไม่ ถ้ากดปุ่มเราจะเปิดไฟ LED โดยใช้รหัสต่อไปนี้:

#นำเข้าโมดูลจากปุ่มนำเข้า gpiozero จาก picamera นำเข้า PiCamera จากเวลานำเข้าโหมดสลีป

#ติดตั้ง

กล้อง = ปุ่ม PiCamera () = ปุ่ม (22)

#ฟังก์ชั่นถ่ายภาพ ผมตัดสินใจใส่ลงในฟังก์ชั่นdefine เพราะช่วยให้เราล้างโค้ดหลัก

def photocap ():

Camera.start_preview()

sleep(5) Camera.capture('/home/pi/Desktop/image.jpg') พิมพ์ ("ถ่ายรูปแล้ว") Camera.stop_preview()

#รหัสหลัก:

ในขณะที่ True: ถ้า Button.is_pressed: พิมพ์ ("ปุ่มถูกกด") photocap()

#เหตุใดจึงใช้งานได้: โค้ดหลักใช้งานได้เหมือนกับที่เราทำคือใช้คำสั่ง if button.is_pressed สักครู่ ข้อความจริงจึงอัปเดตอย่างต่อเนื่องเมื่อกดปุ่มเพื่อถ่ายภาพ

ตอนนี้เรากำลังจะติดตั้งไฟ LED RGB 2 ดวงขึ้นไปที่ด้านบนของวงจรแล้วแยกไว้ที่กึ่งกลางของเขียงหั่นขนมและทำให้สมมาตร หากคุณไม่มีตัวต้านทาน 220 โอห์มสำหรับโปรเจ็กต์นี้ คุณสามารถตั้งค่าแบบขนานได้ ขึ้นอยู่กับความต้านทานของคุณสำหรับตัวต้านทานที่คุณมี พินที่สองของ LED RGB 4 พิน (พินที่ยาวที่สุดควรเชื่อมต่อกับกราวด์ผ่านทางรถไฟ พินอื่น ๆ ควรเชื่อมต่อกับพิน GPIO ของตัวเองทั้งหมด (พินแรก = แดง พินที่สอง = กราวด์ พินที่สาม = สีเขียว, พินที่สี่ = สีน้ำเงิน)

เราจะทดสอบไฟ LED RGB หนึ่งในวงจรปุ่มของเราด้วยรหัสด้านล่าง:

#นำเข้าโมดูลจาก gpiozero ปุ่มนำเข้าจาก picamera นำเข้า PiCamera

จาก gpiozero นำเข้า RGBLED

จากเวลานำเข้าการนอนหลับ

#ติดตั้ง

กล้อง = ปุ่ม PiCamera () = ปุ่ม (22)

TimedLED=RGBLED(แดง=21,เขียว=20,น้ำเงิน=16)

#ฟังก์ชั่นถ่ายภาพด้วย RGB LED เลยตัดสินใจใส่ลงในฟังก์ชั่นdefine เพราะช่วยให้เราล้างโค้ดหลัก

def photocap(): Camera.start_preview() สลีป(4)

หมดเวลา.สี(1, 0, 0)

นอน(2)

หมดเวลา.สี(0, 1, 0)

นอน(1)

Camera.capture('/home/pi/Desktop/image.jpg') พิมพ์ ("ถ่ายภาพแล้ว") Camera.stop_preview()

#รหัสหลัก:

ในขณะที่จริง:

ถ้า Button.is_pressed:

พิมพ์ ("ปุ่มถูกกด") photocap()

#เหตุใดจึงใช้ได้ผล: สาเหตุที่โค้ดนี้ทำงานก็เพราะว่าตอนนี้เราให้ RGBLED ทำงานเป็นตัวจับเวลาเมื่อจะถ่ายภาพ

ตอนนี้ตั้งค่าตัวต้านทาน Light Dependent ที่ด้านล่างขวาของเขียงหั่นขนมโดยใช้ไดอะแกรมไปจนสุดที่ด้านบนและทางรถไฟทั่วไปที่กล่าวถึงก่อนหน้านี้ โปรดจำไว้ว่าขายาวทั้งสองข้างของ LDR และตัวเก็บประจุต้องเชื่อมต่อกับพิน GPIO

หลังจากที่เราเชื่อมต่อ LDR เราจะใช้รหัสต่อไปนี้:

#โมดูลนำเข้า

จากปุ่มนำเข้า gpiozero

จาก picamera นำเข้า PiCamera จาก gpiozero นำเข้า RGBLED

จาก gpiozero นำเข้า LightSensor

จากเวลานำเข้าการนอนหลับ

#ติดตั้ง

กล้อง = ปุ่ม PiCamera () = ปุ่ม (22) TimedLED = RGBLED (สีแดง = 21, สีเขียว = 20, สีน้ำเงิน = 16)

LightSensor=LightSensor(23)

#ฟังก์ชั่นถ่ายภาพด้วย RGB LED เลยตัดสินใจใส่ลงในฟังก์ชั่นdefine เพราะช่วยให้เราล้างโค้ดหลัก

def photocap(): Camera.start_preview() sleep(4) timedled.color(1, 0, 0) sleep(2) timedled.color(0, 1, 0) sleep(1) Camera.capture('/home/) กล้องถ่ายภาพนิ่ง pi/Desktop/image.jpg') พิมพ์ ("ถ่ายภาพแล้ว") Camera.stop_preview()

#รหัสหลัก:

ในขณะที่จริง:

ถ้า Button.is_pressed: พิมพ์ ("ปุ่มถูกกด") photocap()

ถ้า Button.is_pressed และ Lightsensor.when_dark:

พิมพ์ ("ปุ่มถูกกด")

print("มันมืด")

โฟโต้แคป()

#เหตุใดจึงใช้งานได้: วิธีที่ฉันได้เพิ่มเซ็นเซอร์วัดแสงลงในโค้ดของฉันคือการใช้คำสั่ง if อื่นที่มีฟังก์ชันนำเข้าของเซ็นเซอร์วัดแสง เมื่อความมืดทำให้เราพร้อมสำหรับขั้นตอนต่อไป

ตอนนี้ขั้นตอนสุดท้ายในโปรเจ็กต์นี้คือการเปิดใช้งาน RGBLED อื่นที่สมมาตรกับอีกอันหนึ่งเพื่อทำงานเป็นแสงแฟลช

รหัสสุดท้าย:

จากปุ่มนำเข้า gpiozero

จาก picamera นำเข้า PiCamera

จาก gpiozero นำเข้า RGBLED

จาก gpiozero นำเข้า LightSensor

จากเวลานำเข้าการนอนหลับ

#ติดตั้ง

กล้อง = PiCamera()

ปุ่ม = ปุ่ม(22)

TimedLED=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) sleep(2) timedled.color(0, 1, 0) sleep(1) Camera.capture('/home/pi/Desktop/image.jpg') พิมพ์ ("ถ่ายภาพแล้ว") Camera.stop_preview() # รหัสหลัก: ในขณะที่ True: ถ้า Button.is_pressed:

พิมพ์ ("ปุ่มถูกกด")

โฟโต้แคป()

ถ้า Button.is_pressed และ Lightsensor.when_dark:

พิมพ์ ("ปุ่มถูกกด") พิมพ์ ("มันมืด")

FlashLED.color(1, 1, 1)

โฟโต้แคป()

#เหตุใดจึงใช้งานได้: วิธีที่ฉันได้เพิ่มไฟฉายของฉันคือการใช้ RGB ที่นำไปสู่เอาต์พุตสีขาวซึ่งก็คือ 1, 1, 1 และจะทำได้ก็ต่อเมื่อคำสั่ง if เป็นจริงเท่านั้น

แนะนำ: