- 필요한 구성 요소
- MLX90614와 Raspberry Pi의 인터페이스
- Raspberry Pi와 상호 작용하는 Pi 카메라
- Raspberry Pi로 SMTP 이메일 설정
- Pi가 MLX90614에서 온도를 읽고 사진과 함께 전자 메일을 보내기위한 Python 코드
- 온도 측정 및 PI로 메일 경고 보내기
코로나 발발 이후 바이러스의 영향을받는 사람을 식별하는 것이 매우 어려워졌습니다. 이 문제를 해결하기 위해 체온을 측정하는 데 체온 장치가 자주 사용됩니다. 이러한 장치에는 물리적 접촉없이 체온 을 측정 할 수있는 비접촉 IR 온도 센서 가 있습니다.
시중에서 구할 수있는 온도 건은 많지만, 온도가 특정 한도를 초과 할 때 적절한 조치를 취하도록 고위 당국에 경고 또는 이메일 알림을 제공하는 것은 없습니다. 이 프로젝트에서 우리는 IR 온도 센서를 인터페이스하고 특정 사람의 온도가 설정 값을 초과하는 경우 사람의 이미지와 함께 이메일 경고를 보냅니다.
오늘날의 세계에서 사물 인터넷은 원격으로 모니터링하고 제어 할 수있는 여러 시스템을 개발하여 우리 삶에 혁명을 일으키고 있습니다. 이 프로젝트에서는 IoT의 힘을 활용하고 Raspberry Pi, MLX90614 및 PiCamera를 사용하여 이메일 알림이 포함 된 온도 모니터링 장치 를 구축 할 것 입니다.
이전에는 체온 측정을위한 다른 유사한 온도계도 만들었습니다. 여기에서 찾을 수 있습니다.
- MAX30205를 사용하는 Arduino 기반 디지털 온도계
- MLX90614와 RFID 및 Arduino를 사용한 비접촉 체온 검사
- Arduino를 사용한 비접촉 적외선 온도계 건
- Arduino를 사용한 벽걸이 형 비접촉식 온도계
- Arduino를 Android 애플리케이션과 함께 사용하는 스마트 온도계
필요한 구성 요소
여기에서는 Raspberry Pi 3 Raspbian OS를 사용하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며, 시작하려면 Raspberry Pi 소개 및 Raspberry PI LED Blinking에서 찾아 볼 수 있습니다.
- Raspberry Pi 3 (모든 버전이 괜찮음).
- 파이 카메라.
- MLX90614-IR 온도 센서.
- 전선 연결.
- 브레드 보드.
- 전원 공급 장치 (5V, 2A / 3A)
이 프로젝트는 프로젝트를 여러 부분으로 나누면 간단합니다.
- MLX90614와 Raspberry pi의 이해 및 인터페이스.
- Pi 카메라 시작하기.
- Raspberry pi로 SMTP 이메일 설정.
- 최종 코드 개발 및 이해.
Raspberry Pi: Raspberry Pi는 교육용으로 설계된 신용 카드 크기의 컴퓨터입니다. 가격과 온보드 Wi-Fi, Bluetooth 및 프로그래밍 가능한 GPIO 헤더와 같은 놀라운 사양, 응용 프로그램을 만드는 데 사용할 수있는 옵션의 수로 인해 개발자와 전자 애호가들이 채택했습니다. 부팅 프로세스를 시작하려면 Raspberry Pi 소개 및 Raspberry PI LED 깜박임에서 찾을 수 있습니다.
MLX90614 IR 온도 센서: 온도와 습도를 제공 할 수있는 센서가 시장에 많이 나와 있습니다. 이 센서가 다른 모든 센서와 다른 점은 물체 온도를 제공하고 다른 센서는 주변 온도를 제공 할 수 있다는 것입니다. 우리는 대기 습도 또는 온도를 측정해야하는 많은 응용 분야에 DHT11 센서와 LM35를 광범위하게 사용했습니다.
그러나 여기서는 물리적 접촉이 필요하지 않고 주변 온도 대신 물체 온도를 측정 할 수 있는 온도 건을 만들기 위해 IR 기반 MLX90614를 사용 합니다. 적외선 및 IR 센서 회로에 대해 자세히 알아 보려면 링크를 따르십시오.
MLX90614 센서 는 Melexis Microelectronics Integrated systems 에서 제조 하며 온도 측정을위한 적외선 열전 퇴 센서의 원리로 작동합니다. 이 센서는 온도 출력을 제공하기 위해 내부에 내장 된 두 개의 장치로 구성됩니다. 첫 번째 장치는 적외선 탐지기가있는 감지 장치이고 그 뒤에는 DSP (디지털 신호 처리)를 사용하여 데이터를 계산하는 두 번째 장치가 이어집니다. 이 센서 는 온도 측면에서 흑체에서 방출되는 전력을 설명하는 Stefan-Boltzmann 법칙 에 따라 작동합니다. 간단히 말해서 모든 물체는 IR 에너지를 방출하며 그 강도는 물체의 온도에 정비례합니다. MLX90614 센서는 계산 값을 17 비트 ADC 로 변환합니다.I2C 통신 프로토콜을 사용 하여 액세스 할 수 있습니다. 이 센서는 0.02 ° C의 분해능 보정을 통해 주변 온도와 물체 온도를 측정합니다. MLX90614 센서의 기능에 대한 자세한 내용은 MLX90614 데이터 시트를 참조하십시오.
MLX90614의 특징:
- 작동 전압: 3.6 ~ 5V
- 주변 온도 범위: -40 ° C ~ 125 ° C
- 물체 온도 범위: -70 ° C ~ -382.2 ° C
- 분해능 / 보정: 0.02 ° C
- 17 비트 ADC.
- I2C 통신.
MLX90614와 Raspberry Pi의 인터페이스
먼저 MLX90614를 성공적으로 인터페이스하는 데 필요한 라이브러리와 패키지를 다운로드합니다.
1 단계: Raspberry Pi 설정에서 I2C 활성화. sudo raspi-config를
입력 한 다음 인터페이스 옵션으로 이동합니다.
I2C 옵션으로 이동하여 활성화하십시오.
2 단계: https://pypi.org/project/PyMLX90614/#files 로 이동하여 MLX90614의 패키지 / 라이브러리를 다운로드 한 다음 링크 주소를 마우스 오른쪽 버튼으로 클릭하고 복사합니다.
RPI 터미널로 이동하여 wget을 입력하고 아래와 같이 복사 한 링크를 붙여 넣습니다.
Wget
zip 파일 이름 'PyMLX90614-0.0.3.tar.gz'로 라이브러리를 다운로드합니다. 그런 다음 tar -xf 파일 이름 확장자로 폴더를 추출 하거나 아래 명령을 사용하여 동일하게 수행하십시오.
tar -xf PyMLX90614-0.0.3.tar.gz
그런 다음 아래 명령을 사용하여 몇 가지 필수 패키지를 설치해야합니다.
sudo apt-get install python-setuptools sudo apt-get install -y i2c-tools
그런 다음 cd PyMLX90614-0.0.3 /을 사용하여 압축을 푼 폴더로 이동 하고 명령을 실행하십시오.
sudo python setup.py 설치
단계를 완료하면 아래에 주어진 회로를 사용하여 MLX90614 센서를 Raspberry pi와 인터페이스하십시오. 아래의 Raspberry Pi MLX90614 회로 는 fritzing을 사용하여 설계되었습니다.
연결 및 설치가 올바르게 완료되면 i2cdetect -y 1 명령을 사용하여 I2C 버스에서 센서 주소 값을 얻었는지 확인할 수 있습니다 .
모든 것이 예상대로 작동하면 터미널에서 아래 출력을 볼 수 있습니다.
0x5A 는 데이터 시트에 언급 된 센서의 주소를 나타냅니다. 동일한 내용을 보여주는 데이터 시트 스 니펫은 다음과 같습니다.
이제 새 파일 이름 mlxread.py를 만들고 센서에서 데이터를 확인하는 샘플 프로그램을 작성합니다. 동일한 코드는 다음과 같습니다.
from smbus2 import SMBus from mlx90614 import MLX90614 bus = SMBus (1) sensor = MLX90614 (bus, address = 0x5A) print "Ambient Temperature:", sensor.get_ambient () print "Object Temperature:", sensor.get_object_1 () bus. 닫기()
파일이 생성되면 python 확장자 python mlxread.py로 실행합니다 . 내가받은 출력은 다음과 같습니다. 프로그램을 여러 번 실행하여 손을 움직일 때 값이 변경되는지 확인했습니다.
위의 이미지에서 확인할 수 있듯이 MLX90614와 Raspberry Pi를 성공적으로 인터페이스했습니다.
Raspberry Pi와 상호 작용하는 Pi 카메라
1 단계: Raspberry Pi 설정에서 카메라 활성화.
sudo raspi-config를 입력 한 다음 인터페이스 옵션으로 이동합니다.
카메라로 이동하여 카메라를 활성화합니다.
이제 아래와 같이 카메라 모듈을 연결합니다.
2 단계: 카메라가 제대로 연결되었는지 확인하기 위해 테스트 이미지를 가져 와서 데스크톱에 저장합니다 (풀 GUI Raspbian OS 버전 사용).
raspistill -o Desktop / image.jpg
이렇게하면 카메라가 이미지 이름이있는 사진을 클릭하여 데스크톱에 저장할 수 있습니다.
Raspberry Pi로 SMTP 이메일 설정
이 섹션에서는 온도가 사전 정의 된 설정 값을 초과하면 경고 메일을 보내도록 GMAIL 계정을 설정하는 방법을 이해합니다.
SMTP는 TCP / IP를 사용 하는 이메일 서비스를 담당하는 애플리케이션 계층 프로토콜 인 Simple Mail Transfer Protocol 입니다. 전자 메일 메시지를 보내고받는 기능을 제공하며 IETF (Internet Engineering Task Force)에서 관리합니다.
이 자습서는 GMAIL 계정 에서만 작동하며 가능한 오류를 방지하기 위해 새 Gmail 계정을 사용하는 경우 권장됩니다.
기본적으로 Google은 사용자가 Python 스크립트를 사용하여 이메일을 보내는 것을 허용하지 않습니다. 이 작업을 수행하려면 계정 설정으로 이동하여 보안 수준이 낮은 일부 앱을 활성화해야합니다.
1 단계: 오른쪽 모서리로 이동하여 내 Google 계정 관리를 클릭합니다.
2 단계: 보안을 클릭하고 "보안 수준이 낮은 앱 액세스"로 스크롤합니다.
3 단계: 보안 수준이 낮은 앱을 활성화합니다.
4 단계: 다른 이메일 ID 로도 반복하여 Python 스크립트에서 이메일을 보내고받습니다.
5 단계: 필요한 패키지를 다운로드합니다.
apt-get을 ssmtp 설치는 sudo 는 sudo apt-get을 설치 mailutils을
복사-붙여 넣기로 명령을 실행할 때 오류가 발생하면 수동으로 입력하십시오.
6 단계: 모든 라이브러리 설치가 완료되면 보낸 사람의 이메일 세부 정보를 입력 해야하는 ssmtp.conf 파일 을 변경해야합니다.
sudo nano /etc/ssmtp/ssmtp.conf로 이동 하십시오.
끝까지 아래로 스크롤하여 붙여 넣습니다.
mailhub = smtp.gmail.com: 587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = YES UseTLS = YES
참조 용으로 제 단말기의 스크린 샷도 공유했습니다.
방금 브레드 보드를 사용하여 연결했습니다. 하드웨어 설정은 MLX90614와 카메라가 연결되었을 때 그의 것과 같습니다.
Pi가 MLX90614에서 온도를 읽고 사진과 함께 전자 메일을 보내기위한 Python 코드
Python 프로그램은 센서 데이터를 읽고 임계 값과 비교하고 이메일을 승인 한 다음 이미지가 첨부 된 이메일을 전송하는 데 필요한 모든 작업을 수행합니다. 처음에는 라이브러리, 발신자 및 수신자 이메일 선언이 필요합니다. 전자 메일은 smtplib로 보낼 수 있지만 제목, 본문 및 기타 첨부 파일로 전자 메일을 구성하기를 원합니다.이 작업은 MIME (Multipurpose Internet Mail Extensions)의 도움으로 수행됩니다. 전체 코드는이 페이지 하단에서 찾을 수 있습니다.
import RPi.GPIO as gpio import picamera import time import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from email.MIMEBase import MIMEBase from email import encoders from email.mime.image import MIMEImage from smbus2 import SMBus from mlx90614 import MLX90614
그런 다음 발신자 이메일 주소, 수신자 이메일 주소, 이메일 제목, 본문 및 첨부 메시지를 정의합니다.
fromaddr = "[email protected]"# 이에 따라 이메일 주소 변경 toaddr = "[email protected]"mail = MIMEMultipart () mail = fromaddr mail = toaddr mail = "온도 값 초과 경고"body = "첨부 된 항목을 찾으십시오. 영상"
그런 다음 전자 메일을 보낼 수있는 함수를 만듭니다.
def sendMail (data): mail.attach (MIMEText (body, 'plain')) print data dat = '% s.jpg'% data print dat attachment = open (dat, 'rb') image = MIMEImage (attachment.read) ()) attachment.close () mail.attach (image) server = smtplib.SMTP ('smtp.gmail.com', 587) server.starttls () server.login (fromaddr, "test12345 @") text = mail. as_string () server.sendmail (fromaddr, toaddr, text) server.quit ()
그런 다음 이메일로 전송 된 이미지를 캡처하고 데이터와 시간을 함께 저장하는 기능을 만듭니다.
def capture_image (): data = time.strftime ("% d_ % b_ % Y- % H: % M: % S") camera.start_preview () time.sleep (5) 인쇄 데이터 camera.capture ('% s. jpg '% data) camera.stop_preview () time.sleep (1) sendMail (data)
그런 다음 PiCamera로 몇 가지 설정을합니다.
camera = picamera.PiCamera () camera.rotation = 0 camera.awb_mode = 'auto'camera.brightness = 55
그리고 마침내 무한히 실행되는 while (1) 루프가 있습니다. MLX90614 온도 센서에서 데이터를 읽고 온도가 설정 값을 초과하면 capture_image () 함수가 호출되고 sendMail (data) 함수를 호출하여 이메일을 통해 이미지 캡처를 보냅니다.
온도 측정 및 PI로 메일 경고 보내기
하드웨어와 소프트웨어가 준비되면 파이에서 파이썬 코드 (아래에 제공)를 실행하십시오. 아래 그림과 같이 센서에서 읽은 온도 값을 인쇄합니다.
물체 온도가 임계 온도를 초과하면 Python 프로그램이 카메라에서 이미지를 가져 와서 라즈베리 파이에 저장하고 이메일을 통해 공유합니다. 라즈베리 파이에서 보낸 샘플 이메일은 아래와 같습니다.
프로젝트의 전체 작업은 아래 링크 된 비디오에서도 찾을 수 있습니다. 기사가 재미 있기를 바랍니다. 질문이 있으시면 아래 댓글에 남겨 주시거나 포럼을 사용하여 질문을 게시하고 커뮤니티에 연락 할 수도 있습니다.