Raspberry Pi를 사용한 간단한 저속 촬영

원래 게시됨cri.dev

시간 경과는 항상 나를 매료시킵니다. 그래서 직접 만들고 싶었습니다.

여분의 Raspberry Pi Zero W가 먼지를 잡는 데 ~ 25$에, 관련 Raspberry Pi 카메라 모듈을 20$ 미만에 구입할 수 있습니다.


엿보기



2020-09-08의 부분 타임랩스(20FPS)(1분마다 스냅샷 1개)

Check it out on cri.dev

요구 사항



자신을 구축하려면 다음이 필요합니다.

  • Raspberry Pi (제로 W 모델은 꽤 잘 작동함)
  • Raspberry Pi Camera Module
  • 16GB SD 카드 이상
  • (손쉬운 액세스를 위한 Wi-Fi 연결 옵션)

  • 더 나은 품질의 타임랩스를 제공하는 공식High Quality Camera도 있습니다!

    목차



  • Sneak peek
  • Requirements
  • Table of contents
  • Preparation
  • Flash the Pi
  • Set up Wi-Fi connectivity
  • Enable SSH access
  • Enable Camera module


  • Create the time-lapse
  • Take image with raspistill
  • Schedule capture with crontab
  • Directory listing of snapshots
  • Create time-lapse with ffmpeg

  • raspberry-pi-time-lapse repository

  • 준비



    파이 플래시



    새 SD 카드에서 Raspberry Pi OS를 플래시해야 합니다.

    Balena Etcher 또는 공식 Raspberry Pi Imager . 절차는 매우 간단합니다.

    단계를 거치면 SD 카드에 Rasperry Pi OS가 설치됩니다.

    Wi-Fi 연결 설정



    Pi를 Wi-Fi에 연결하려면 SD 카드에 wpa_supplicant.conf라는 파일을 만들어야 합니다.
    wpa_supplicant.conf의 내용은 다음과 같아야 합니다(따라서 구성).

    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    ap_scan=1
    update_config=1
    
    network={
      scan_ssid=1
      ssid="YOUR_WIFI_ACCESS_POINT"
      psk="YOUR_WIFI_PASSWORD"
    }
    


    SSH 액세스 활성화



    SSH 액세스(사용자pi 및 비밀번호raspberry 사용)를 활성화하려면 SD 카드에 ssh라는 빈 파일(확장자 없음)을 생성하기만 하면 됩니다.

    카메라 모듈 활성화



    카메라 모듈을 활성화하려면 raspi-config 유틸리티를 통해 구성할 수 있습니다.

    그러나 SD 카드의 파일config.txt도 마찬가지입니다.

    그것을 열고 다음을 추가하십시오.

    start_x=1
    gpu_mem=128
    

    start_x 또는 gpu_mem에 대한 다른 발생이 없는지 확인하십시오.

    타임랩스 만들기



    raspistill로 이미지 찍기



    raspistill is the command line tool for capturing still photographs with the camera module.



    아이디어는 raspistill를 사용하여 x분마다 스냅샷을 찍는 것입니다.

    단일 이미지를 찍기 위해 /home/pi/take-snapshot 라는 다음 bash 스크립트를 사용하고 있습니다.

    #!/bin/bash
    
    set -e
    
    DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
    SNAPSHOTS_DIR=/home/pi/snapshots
    SNAPSHOT_PATH="$SNAPSHOTS_DIR/$DATE.jpg"
    CURRENT_PATH="$SNAPSHOTS_DIR/current.jpg"
    
    echo "$DATE"
    mkdir -p "$SNAPSHOTS_DIR"
    echo "taking snapshot $SNAPSHOT_PATH"
    raspistill \
        --width 1280 \
        --height 960 \
        --quality 100 \
        --output "$SNAPSHOT_PATH"
    echo "snapshot saved $SNAPSHOT_PATH"
    
    echo "adding watermark $SNAPSHOT_PATH"
    cd $SNAPSHOTS_DIR
    montage \
      -label "$DATE" \
      $SNAPSHOT_PATH \
      -pointsize 30 \
      -gravity Center \
      -geometry +0+0 \
      $SNAPSHOT_PATH
    
    cp $SNAPSHOT_PATH $CURRENT_PATH
    


    이 스크립트는 스냅샷을 만들어 형식%Y-%m-%dT%H:%M:%SZ.jpg으로 이름을 지정하고 폴더/home/pi/snapshots에 넣습니다.

    마지막에 이 사진은 ImageMagick 제품군의 montage를 사용하여 워터마크가 찍혀 있습니다.

    crontab으로 캡처 일정 잡기



    위의 스크립트를 사용하여 5분마다 사진을 찍기 위해 간단한 cron 작업을 설정할 수 있습니다.
    crontab -e를 실행하여 cron 일정을 편집하고 다음 줄을 추가하십시오.

    SHELL=/bin/bash
    */5 * * * * sh /home/pi/take-snapshot >> /home/pi/snapshots.log 2>&1
    


    스냅샷의 디렉토리 목록



    포트 80에 웹 서버를 노출하여 폴더/home/pi/snapshots에서 촬영한 모든 이미지(및 타임랩스)를 쉽게 나열할 수 있습니다.

    crontab에 다음을 추가하여 부팅 시 서버를 시작합니다.

    @reboot sudo python3 -m http.server --directory /home/pi/snapshots 80
    


    ffmpeg로 타임랩스 만들기



    ffmpeg로 하루의 타임랩스2020-08-31를 찍는 것은 달리기만큼 쉽습니다.

    cat 2020-08-31*.jpg | ffmpeg -r 10 -i - -c:v libx264 -vf "format=yuv420p,scale=1280:-2" time-lapse-2020-08-31.mp4
    


    raspberry-pi-time-lapse 저장소



    리포지토리christian-fei/raspberry-pi-time-lapse를 복제/포크하고 첫 번째 타임랩스를 즉시 만들 수 있습니다.

    위의 단계를 단순화하는 다양한 스크립트가 있습니다.
  • take-snapshot 워터마크와 타임스탬프가 찍힌 폴더에서 사진을 찍기 위해 snapshots/
  • server 포트 80에서 HTTP 서버를 시작하여 지금까지 찍은 모든 스냅샷과 시간 경과를 나열합니다
  • .
  • rsync-snapshots 스냅샷을 Raspberry Pi에서 PC로 동기화하기 위해
  • create-time-lapse 특정 날짜에 대한 타임랩스 생성
  • crontab 스냅샷을 예약하고 서버를 스핀업합니다
  • .

    좋은 웹페이지 즐겨찾기