วันนี้เราจะมาลองถ่ายภาพแบบ Time Lapse ด้วย Raspberry Pi กันครับ แต่เนื่องด้วยผมไม่มีโมดูลกล้องของ Raspberry Pi ฉะนั้นวันนี้เราก็จะมาใช้ Webcam ราคาถูกๆ ที่เรามีมาใช้ในการทดลองครั้งนี้กันครับ ถึงภาพที่ได้จะไม่สวยนักเพราะกล้องความละเอียดไม่สูงมาก แต่ก็พอใช้งานได้ (จริงๆ ที่ผ่านมาก็ใช้เว็บแคมตัวนี้ทดลองมาตลอดนะ) แต่ถ้าใครจะสนับสนุนโมดูลกล้องก็ยินดีครับ ราคาพันกว่าบาทนิดๆ ในการทดลองนี้นอกจากเราจะทำ Time Lapse แล้ว เราจะทำการอัพโหลดวิดีโอที่ได้ขึ้น Youtube อัตโนมัติด้วย มาดูวิธีการกันเลยครับ
เริ่มจากการเสียบ Webcam เข้ากับ Raspberry Pi ให้เรียบร้อยครับ จากนั้นก็เปิดเครื่อง และตรวจสอบดูก่อนว่าเจอ Webcam หรือยัง ถ้าเจอ video0 หรือ video1 ก็ใช้งานได้ครับ
1 | sudo ls -l /dev/video* |
ติดตั้งโปรแกรม fswebcam เพื่อใช้ถ่ายภาพจากเว็บแคม และติดตั้งโปรแกรม avconv เพื่อทำการรวมภาพที่ได้เป็น video
1 2 | sudo apt-get -y install fswebcam sudo apt-get -y install libav-tools |
เมื่อติดตั้งเสร็จแล้ว ลองตรวจสอบการทำงานของโปรแกรมดูก่อนว่าถ่ายรูปได้ไหม
1 2 3 | cd /tmp fswebcam -d /dev/video0 -r 640x480 test123.jpg ls -al |
ขั้นตอนถัดไป ทำติดตั้ง gdata และ youtube-upload เพื่อใช้ในการอัพโหลดรูปขึ้นยูทูป ตัวโปรแกรมถูกเขียนขึ้นด้วย Python นะครับ เดียวเราจะใช้คำสั่ง pip ในการติดตั้ง ซึ่งง่ายมากๆ แต่ถ้าใครยังไม่ติดตั้ง Python กับ pip ก็ติดตั้งก่อนนะครับ (ถ้าหากว่าเราได้เปิดใช้งานการล็อกอิน 2 ชั้น “2-step verification” กับ Account ของ Google อยู่ ให้เราทำการเปิดการใช้งาน application-specific passwords ก่อนนะครับ จะได้นำ password อันนี้ไปใช้กับโปรแกรม youtube-upload ได้ อ่านคู่มือการใช้งาน application-specific passwords (ASPs) ได้ที่นี้ครับ https://support.google.com/accounts/answer/185833) แต่ถ้าไม่ได้เปิดใช้งาน 2-step verification ก็สามารถใช้ password ตัวปัจจุบันได้เลยครับ
ติดตั้ง Python (ถ้ามีอยู่แล้วก็ข้าม…)
1 2 3 | sudo apt-get install python-dev sudo apt-get install python-setuptools sudo apt-get install python-pip |
ติดตั้ง gdata และ youtube_upload
1 2 | sudo pip install gdata sudo pip install youtube_upload |
ขั้นตอนสุดท้ายสร้างโฟลเดอร์เอาไว้เก็บภาพ และเขียนโปรแกรม Shell Script เพื่อทำการถ่ายภาพทุกๆ 20 วินาที และทำการรวมภาพเป็น video เมื่อมีภาพครบ 120 ภาพ จากนั้นอัพโหลดวิดีโอที่ได้ขึ้นยูทูป
1 2 3 | sudo mkdir /var/www/timelapes sudo mkdir /var/www/timelapes/images sudo mkdir /var/www/timelapes/video |
เขียนโปรแกรม Shell Script
1 | sudo nano /var/www/timelapes/timelapes.sh |
พิมพ์โค้ดต่อไปนี้ลงไปครับ (ในส่วนของ youtube-upload ให้ใส่ email และ password ของคุณลงไปนะครับ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/bin/bash DATETIME=$(date -u +"%Y%m%d-%H%M-%S") DIR_IMAGE=/var/www/timelapes/images DIR_VIDEO=/var/www/timelapes/video LOOP=1 while [ $LOOP -le 120 ]; do IMG_NUMBER=`printf "%05d" $LOOP`; FILENAME=image_$IMG_NUMBER.jpg fswebcam -d /dev/video0 -r 640x480 $DIR_IMAGE/$FILENAME LOOP=$(( $LOOP+1 )) sleep 20s; done; avconv -r 10 -i $DIR_IMAGE/image_%05d.jpg -r 10 -vcodec libx264 -crf 20 -g 15 $DIR_VIDEO/video.mp4 youtube-upload --email=EMAIL@gmail.com --password=PASSWORD1234 --title="Time Lapse (DateTime:$DATETIME)" --description="Time Lapse Frome Raspberry Pi" --category="Howto" $DIR_VIDEO/video.mp4 rm -f /var/www/timelapes/images/* rm -f /var/www/timelapes/video/* |
เปลี่ยน Permission ของ timelapes.sh
1 | sudo chmod 755 /var/www/timelapes/timelapes.sh |
เช่นเคยเดียวเรามาตั้งเวลาใน crontab ให้ทำการถ่ายภาพ Time Lapse และอัพโหลดขึ้นยูทูปทุกๆ 1 ชัวโมง
1 | sudo crontab -e |
สั่งให้รันทุก 1 ชัวโมง
1 | 0 * * * * /var/www/timelapes/timelapes.sh |
เมื่อระบบทำงาน เราก็จะเห็นวิดีโอบนยูทูปแบบนี้