본문 바로가기

쪼물락 비젼 AI

라즈베리파이 + CAMERA + FTP UPLOAD

728x90

 

UDP 신호를 받아 카메라 촬영후 사진을 FTP 서버로 전송합니다.

 

라즈베리파이 방화벽 변경

프로그래밍

ftp 서버와 연결후 udp 신호를 받아 사진 촬영후 서버로 이미지를 전송합니다.

import picamera
import ftplib
import os
import datetime
from socket import *

camera = picamera.PiCamera()    
camera.resolution = (1024,768)  

ftp = ftplib.FTP()
ftp.connect("xxx.xxx.xxx.xxx", 9021)
ftp.login("xxx","xxx")
ftp.cwd("./test")
os.chdir(r"./")

from gpiozero import LED
from time import sleep
led = LED(17)

led.on()



BUFSIZE = 64
port = 4000
sock = socket(AF_INET, SOCK_DGRAM)
sock.bind(('', port))

while True:
    data, addr = sock.recvfrom(BUFSIZE)
    print ( data.decode() ) 

    print('start capture')
    led.off()

    camera.start_preview()          
    camera.stop_preview()           
    saveFileName = datetime.datetime.now().strftime('%y%m%d-%H%M%S%f')+'.jpg'        
    camera.capture(saveFileName)    

    filename = saveFileName
    myfile = open(filename, 'rb')
    ftp.storbinary('STOR ' + filename, myfile)
    myfile.close()

    led.on()
    print('close capture')
    sleep(0.1)

    led.on()
    #    else:
            #print("Released")
    #        led.on()
            
    #    sleep(0.1)

sock.close()
ftp.close()

UDP 데이터 송신 테스트

import socket
import os
from time import sleep

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('', 0))

addr = '192.168.100.7', 4000
output = 'camera capture'
while 1:
	print('send')
	sock.sendto(output.encode('utf-8'), addr)
	sleep(10)

sock.close()

		

		

라즈베리파이 부팅후 파이썬 코드 자동 실행

sudo leafpad /etc/rc.local
(sleep 10 && python /home/pi/camera_capture_wifi.py)&

Reference

erider.co.kr/150

 

라즈베리파이 방화벽 설치 및 세팅

데비안 계열(유부투, 라즈비안)의 기본 방화벽은 ufw 입니다. 방화벽 설정은 포트 또는 아이피 단위로 허용, 거부를 설정 할 수 있습니다. 라즈베리 파이에 패키지 관리자 apt-get로 ufw 방화벽을 설

erider.co.kr

blog.naver.com/PostView.nhn?blogId=chandong83&logNo=220929454009

 

파이썬(Python) UDP Echo Server / Client 소스 코드 및 설명

파이썬으로 UDP 서버와 클라이언트 구현시 아래의 소스를 참조하면 좋을 듯하다. http://svn.python.org...

blog.naver.com