#Arduino Code
int pirPin = 7;
int minSecsBetweenEmails = 60; // 1 min
long lastSend = -minSecsBetweenEmails * 1000l;
void setup()
{
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop()
{
long now = millis();
if (digitalRead(pirPin) == HIGH)
{
if (now > (lastSend + minSecsBetweenEmails * 1000l))
{
Serial.println("MOVEMENT");
lastSend = now;
}
else
{
Serial.println("Too soon");
}
}
delay(500);
}
======================================================================
#Python Code
import time
import serial
import smtplib
#IMAP USE ON and APP password(not normal password)required
#Turn off serial monitor of arduino
TO = '*@*.*' #receiver mail
GMAIL_USER = '@gmail.com' #Gmail password here
GMAIL_PASS = '**************' #APP password here
SUBJECT = 'Intrusion!!'
TEXT = 'Your PIR sensor detected movement'
ser = serial.Serial('COM3', 9600)
def send_email():
print("Sending Email")
smtpserver = smtplib.SMTP("smtp.gmail.com",587) #What is different with SMTP_SSL
#smtpserver.ehlo() #???
smtpserver.starttls() #???
#smtpserver.ehlo #???
smtpserver.login(GMAIL_USER, GMAIL_PASS)
header = 'To:' + TO + '\n' + 'From: ' + GMAIL_USER
header = header + '\n' + 'Subject:' + SUBJECT + '\n'
print(header)
msg = header + '\n' + TEXT + ' \n\n'
smtpserver.sendmail(GMAIL_USER, TO, msg)
smtpserver.close()
while True:
message = ser.readline()
print(message)
if message==b'MOVEMENT\r\n' : #How to use byte?
send_email()
time.sleep(0.5)
Tuesday, December 24, 2019
Saturday, November 9, 2019
OpenCV Install
//OPENCV CHECK and Delete
sudo find / -name "*opencv*" -exec rm -rf {} \;
sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
INSTALL BY BUILD
Raspbian 2019.9.26 Ver.(BUSTER), OpenCV 4.1.2
reference : https://webnautes.tistory.com/916
3-2. build-essential 패키지에는 C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함되어 있습니다.
cmake는 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요합니다.
$ sudo apt-get install build-essential cmake
3-3. 특정 포맷의 이미지 파일을 불러오거나 기록하기 위해 필요한 패키지들입니다.
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
3-4. 특정 코덱의 비디오 파일을 읽어오거나 기록하기 위해 필요한 패키지들입니다.
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
3-5. Video4Linux 패키지는 리눅스에서 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API를 포함하고 있습니다.
$ sudo apt-get install libv4l-dev v4l-utils
3-6. GStreamer는 비디오 스트리밍을 위한 라이브러리입니다.
$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
3-7. OpenCV에서는 highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 비디오들을 보여줄 수 있습니다.
윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용가능합니다. 여기서는 gtk2를 지정해주었습니다.
$ sudo apt-get install libgtk2.0-dev
그외 선택 가능한 패키지는 다음과 같습니다.
libgtk-3-dev
libqt4-dev
libqt5-dev
3-8. OpenGL 지원하기 위해 필요한 라이브러리입니다.
$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
3-9. OpenCV 최적화를 위해 사용되는 라이브러리들입니다.
$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev
3-10. python2.7-dev와 python3-dev 패키지는 OpenCV-Python 바인딩을 위해 필요한 패키지들입니다.
Numpy는 매트릭스 연산등을 빠르게 처리할 수 있어서 OpenCV Python에서 사용됩니다.
$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy
4-1. 소스 코드를 저장할 임시 디렉토리를 생성하여 이동 후.. 진행합니다
mkdir opencv
cd opencv
4-2. OpenCV 4.1.2 소스코드를 다운로드 받아 압축을 풀어줍니다.
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.2.zip
$ unzip opencv.zip
4-3. opencv_contrib(extra modules) 소스코드를 다운로드 받아 압축을 풀어줍니다.
SIFT, SURF 등을 사용하기 위해 필요합니다
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.1.2.zip
$ unzip opencv_contrib.zip
4-5. opencv-4.1.2 디렉토리로 이동하여 build 디렉토리를 생성하고 build 디렉토리로 이동합니다.
컴파일은 build 디렉토리에서 이루어집니다.
pi@raspberrypi:~/opencv $ cd opencv-4.1.2
pi@raspberrypi:~/opencv/opencv-4.1.2 $ mkdir build
pi@raspberrypi:~/opencv/opencv-4.1.2 $ cd build
pi@raspberrypi:~/opencv/opencv-4.1.2/build $
4-6. cmake를 사용하여 OpenCV 컴파일 설정을 해줍니다. 복사해서 터미널에 붙여넣기 해주면 됩니다.
다음 옵션은 빌드할 OpenCV 버전에 맞추어 아래 경로중 빨간색 부분을 변경하세요.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON ../
4-8. 다음과 같은 메시지가 보이면 정상적으로 된 것입니다.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv-4.1.2/build
4-9. 진행하기 전에 스왑(swap) 공간을 늘려줘야 멀티코어를 사용하여 컴파일시 메모리 부족으로 에러가 나지 않습니다.
( 참고 https://www.pyimagesearch.com/2017/10/09/optimizing-opencv-on-the-raspberry-pi/ )
/etc/dphys-swapfile 파일을 열어서
$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE 변수값을 100에서 2048로 수정합니다.
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048
스왑 서비스 재시작하여 변경된 설정을 반영시켜주면 스왑 크기가 대략 20배가 됩니다
$ free
$ sudo /etc/init.d/dphys-swapfile restart
$ time make -j4
혹, python 라이브러리 빌드하는 부분에서 다음처럼 오랫동안 멈춤 현상이 있는 경우 . Ctrl + C를 눌러 중지하고
make 명령으로 다시 진행해서 완료하면 됩니다.(이때 인내심이 중요함)
pi@raspberrypi:~/opencv/opencv-4.1.2/build $ make
4-11. 이제 컴파일 결과물을 설치합니다.
pi@raspberrypi:~/opencv/opencv-4.1.2/build $ sudo make install
샘플 코드들은 /usr/local/share/opencv4/samples/ 위치에 복사됩니다.
4-12. opencv 라이브러리를 찾을 수 있도록 다음 명령을 실행합니다.
pi@raspberrypi:~/opencv/opencv-4.1.2/build $ sudo ldconfig
4-13. /etc/dphys-swapfile 파일을 열어서 CONF_SWAPSIZE 변수값을 다시 100으로 수정합니다.
$ sudo nano /etc/dphys-swapfile
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
스왑 서비스 재시작하여 변경된 설정을 반영시켜주면 스왑 크기가 원래대로 돌아옵니다.
$ sudo /etc/init.d/dphys-swapfile restart
INSTALL BY PKG (Simple Method)
Raspbian (STRETCH), OpenCV 3.4.1
1. apt update
$ sudo apt update
$ sudo apt upgrade
If you are busy, you can skip 'upgrade', but 'update' is necessary.
시간을 절약하려면 'upgrade'는 안해도 되는데, 'update'는 꼭 해야 합니다.
2. Download
All (모든 버전 다운로드)
~ $ git clone https://github.com/dltpdn/opencv-for-rpi.git
~ $ cd opencv-for-rpi
~/opencv-for-rpi $ cd <rasbian_version>/<opencv_version> #cd stretch/3.4.0
3. Installation
~/opencv-for-rpi/stretch/3.4.0 $ sudo apt-get install -y ./OpenCV*.deb
or
~/opencv-for-rpi/stretch/3.4.0 $ sudo dpkg -i ./OpenCV*.dev
~/opencv-for-rpi/stretch/3.4.0 $ sudo apt install -f
https://github.com/dltpdn 읽어볼것
3. Check the result(결과 확인)
~ $ pkg-config —modversion opencv #opencv 3.4.0
~ $ dpkg -l |grep opencv
sudo find / -name "*opencv*" -exec rm -rf {} \;
sudo find /usr/local/ -name "*opencv*" -exec rm {} \;
sudo apt-get purge libopencv* python-opencv
sudo find /usr/local -name "*opencv*"
sudo find / -name "*libopencv*"
INSTALL BY BUILD
Raspbian 2019.9.26 Ver.(BUSTER), OpenCV 4.1.2
reference : https://webnautes.tistory.com/916
3-2. build-essential 패키지에는 C/C++ 컴파일러와 관련 라이브러리, make 같은 도구들이 포함되어 있습니다.
cmake는 컴파일 옵션이나 빌드된 라이브러리에 포함시킬 OpenCV 모듈 설정등을 위해 필요합니다.
$ sudo apt-get install build-essential cmake
3-3. 특정 포맷의 이미지 파일을 불러오거나 기록하기 위해 필요한 패키지들입니다.
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
3-4. 특정 코덱의 비디오 파일을 읽어오거나 기록하기 위해 필요한 패키지들입니다.
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
3-5. Video4Linux 패키지는 리눅스에서 실시간 비디오 캡처를 지원하기 위한 디바이스 드라이버와 API를 포함하고 있습니다.
$ sudo apt-get install libv4l-dev v4l-utils
3-6. GStreamer는 비디오 스트리밍을 위한 라이브러리입니다.
$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
3-7. OpenCV에서는 highgui 모듈을 사용하여 자체적으로 윈도우 생성하여 이미지나 비디오들을 보여줄 수 있습니다.
윈도우 생성 등의 GUI를 위해 gtk 또는 qt를 선택해서 사용가능합니다. 여기서는 gtk2를 지정해주었습니다.
$ sudo apt-get install libgtk2.0-dev
그외 선택 가능한 패키지는 다음과 같습니다.
libgtk-3-dev
libqt4-dev
libqt5-dev
3-8. OpenGL 지원하기 위해 필요한 라이브러리입니다.
$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
3-9. OpenCV 최적화를 위해 사용되는 라이브러리들입니다.
$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev
3-10. python2.7-dev와 python3-dev 패키지는 OpenCV-Python 바인딩을 위해 필요한 패키지들입니다.
Numpy는 매트릭스 연산등을 빠르게 처리할 수 있어서 OpenCV Python에서 사용됩니다.
$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy
4-1. 소스 코드를 저장할 임시 디렉토리를 생성하여 이동 후.. 진행합니다
mkdir opencv
cd opencv
4-2. OpenCV 4.1.2 소스코드를 다운로드 받아 압축을 풀어줍니다.
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.2.zip
$ unzip opencv.zip
4-3. opencv_contrib(extra modules) 소스코드를 다운로드 받아 압축을 풀어줍니다.
SIFT, SURF 등을 사용하기 위해 필요합니다
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.1.2.zip
$ unzip opencv_contrib.zip
4-5. opencv-4.1.2 디렉토리로 이동하여 build 디렉토리를 생성하고 build 디렉토리로 이동합니다.
컴파일은 build 디렉토리에서 이루어집니다.
pi@raspberrypi:~/opencv $ cd opencv-4.1.2
pi@raspberrypi:~/opencv/opencv-4.1.2 $ mkdir build
pi@raspberrypi:~/opencv/opencv-4.1.2 $ cd build
pi@raspberrypi:~/opencv/opencv-4.1.2/build $
4-6. cmake를 사용하여 OpenCV 컴파일 설정을 해줍니다. 복사해서 터미널에 붙여넣기 해주면 됩니다.
다음 옵션은 빌드할 OpenCV 버전에 맞추어 아래 경로중 빨간색 부분을 변경하세요.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON ../
4-8. 다음과 같은 메시지가 보이면 정상적으로 된 것입니다.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv-4.1.2/build
4-9. 진행하기 전에 스왑(swap) 공간을 늘려줘야 멀티코어를 사용하여 컴파일시 메모리 부족으로 에러가 나지 않습니다.
( 참고 https://www.pyimagesearch.com/2017/10/09/optimizing-opencv-on-the-raspberry-pi/ )
/etc/dphys-swapfile 파일을 열어서
$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE 변수값을 100에서 2048로 수정합니다.
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=2048
스왑 서비스 재시작하여 변경된 설정을 반영시켜주면 스왑 크기가 대략 20배가 됩니다
$ free
$ sudo /etc/init.d/dphys-swapfile restart
$ time make -j4
혹, python 라이브러리 빌드하는 부분에서 다음처럼 오랫동안 멈춤 현상이 있는 경우 . Ctrl + C를 눌러 중지하고
make 명령으로 다시 진행해서 완료하면 됩니다.(이때 인내심이 중요함)
pi@raspberrypi:~/opencv/opencv-4.1.2/build $ make
4-11. 이제 컴파일 결과물을 설치합니다.
pi@raspberrypi:~/opencv/opencv-4.1.2/build $ sudo make install
샘플 코드들은 /usr/local/share/opencv4/samples/ 위치에 복사됩니다.
4-12. opencv 라이브러리를 찾을 수 있도록 다음 명령을 실행합니다.
pi@raspberrypi:~/opencv/opencv-4.1.2/build $ sudo ldconfig
4-13. /etc/dphys-swapfile 파일을 열어서 CONF_SWAPSIZE 변수값을 다시 100으로 수정합니다.
$ sudo nano /etc/dphys-swapfile
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
스왑 서비스 재시작하여 변경된 설정을 반영시켜주면 스왑 크기가 원래대로 돌아옵니다.
$ sudo /etc/init.d/dphys-swapfile restart
INSTALL BY PKG (Simple Method)
Raspbian (STRETCH), OpenCV 3.4.1
1. apt update
$ sudo apt update
$ sudo apt upgrade
If you are busy, you can skip 'upgrade', but 'update' is necessary.
시간을 절약하려면 'upgrade'는 안해도 되는데, 'update'는 꼭 해야 합니다.
2. Download
All (모든 버전 다운로드)
~ $ cd opencv-for-rpi
~/opencv-for-rpi $ cd <rasbian_version>/<opencv_version> #cd stretch/3.4.0
3. Installation
~/opencv-for-rpi/stretch/3.4.0 $ sudo apt-get install -y ./OpenCV*.deb
or
~/opencv-for-rpi/stretch/3.4.0 $ sudo dpkg -i ./OpenCV*.dev
~/opencv-for-rpi/stretch/3.4.0 $ sudo apt install -f
https://github.com/dltpdn 읽어볼것
wget https://github.com/dltpdn/opencv-for-rpi/releases/download/v3.4.1/OpenCV-3.4.1.tar.gz
tar -xvf OpenCV-3.4.1.tar.gz
sudo apt-get install -y ./OpenCV*.deb
3. Check the result(결과 확인)
~ $ pkg-config —modversion opencv #opencv 3.4.0
~ $ dpkg -l |grep opencv
Thursday, November 7, 2019
Linux Command
//basic command
touch, more, less, file,shutdown [options][time],man [option]...[page][command]
//사용자
adduser [options] [--home DIR] [--shell SHELL] [--disabled-password] [--disabled-login] useruseradd - user add with default (none-dialog 방식) / adduser의아래레벨실행파일chagepasswddeluser
//사용자 그룹
addgroupgroupadddelgroupusermod
//파일의 권한
umaskchmodchown
//Release List
https://downloads.raspberrypi.org/NOOBS/images///OS version Check
$ cat /etc/os-release$ uname -a
$ apt --fix-broken install
//directory
delete directory recursively
$ rm -r directory
directory structure
. : self
.. : parents
! : home
- : before
//link
softlink : $ ln -s hello.txt hellosymlinkhardlink : $ ln hello.txt hellolink$ ls -ali* concept of inode ?
//apt source change
$ sudo nano /etc/apt/sources.list//Find
sudo find / -name "filename"sudo find ./ \(-name 'filename1' -o -name 'filename2'\)
//Extract all zip files in a folder
depending on extension
find . -name '*.bz2' -exec tar xvf {} \;
or
find . -name '*.zip' -exec unzip {} \;
//KOREAN FONTS
sudo apt-get -y install ibus-hangulsudo apt-get -y install ttf-unfonts-core
or
sudo apt-get install fonts-unfonts-core
//FTP setting??
//Multi User
Text Terminal : Ctrl+Alt+F1~F6
GUI Terminal : Ctrl+Alt+F7
GUI -> CUI : Ctrl + Alt F1 ~ F6 // CUI화면간 이동
CUI -> GUI : Alt + F7 // GUI창으로 이동
// 계정 사용시 root 에 사용할 비밀번호 등록 (한번만 등록하면 됨)
$ sudo passwd root
$ su
FTP setting
//install vsftpdsudo apt-get install vsftpd
//vsftpd.conf modification
sudo vi /etc/vsftpd.conf
(delete #...)
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
//user registering
sudo vi /etc/vsftpd.chroot_list
//and then input user(ex. pi) and save and exit
//restart vsftpd
sudo service vsftpd restart
or
sudo systemctl restart vsftpd
//autobatch when booting
sudo systemctl enable vsftpd
//check status
sudo systemctl status
Saturday, October 12, 2019
Tag
Tag
Labels:
AndroidBasicsWithCompose,
arduino,
c/c++,
java,
kkangs,
labview,
python,
RaspberryPi,
reading,
writing
Subscribe to:
Posts (Atom)