- Componente necesare
- Interfațarea MLX90614 cu Raspberry Pi
- Interfațarea camerei Pi cu Raspberry Pi
- Configurarea e-mailului SMTP cu Raspberry Pi
- Cod Python pentru ca Pi să citească temperatura din MLX90614 și să trimită e-mail cu imagine
- Măsurarea temperaturii și trimiterea alertei prin poștă cu PI
De la izbucnirea coroanei, a devenit foarte dificil să îi identificăm pe cei care sunt sau nu afectați de virus. Pentru a rezolva această problemă, dispozitivele de temperatură sunt adesea utilizate pentru a măsura temperatura corpului. Aceste dispozitive au senzori de temperatură IR fără contact care pot măsura temperatura corpului fără niciun contact fizic.
Există multe arme de temperatură disponibile pe piață, dar niciunul dintre ele nu dă nicio alertă sau notificare prin e-mail autorităților superioare pentru a întreprinde acțiuni adecvate atunci când temperatura depășește o anumită limită. În acest proiect, vom interfața un senzor de temperatură IR și vom trimite alertele prin e-mail cu imaginea persoanei dacă temperatura unei anumite persoane depășește valoarea setată.
În lumea de astăzi, Internetul obiectelor ne revoluționează viața dezvoltând o serie de sisteme care pot fi monitorizate și controlate de la distanță. În acest proiect, vom valorifica puterea IoT și vom construi un dispozitiv de monitorizare a temperaturii cu alerte prin e-mail folosind Raspberry Pi, MLX90614 și PiCamera.
Anterior am construit și alte termometre similare pentru măsurarea temperaturii corpului, le puteți găsi aici.
- Termometru digital bazat pe Arduino folosind MAX30205
- Screening fără temperatură corporală fără contact folosind RFID și Arduino cu MLX90614
- Termometru cu infraroșu fără contact folosind Arduino
- Termometru fără contact cu montare pe perete folosind Arduino
- Termometru inteligent folosind Arduino cu aplicație Android
Componente necesare
Aici folosim Raspberry Pi 3 Raspbian OS. Toate cerințele de bază privind hardware-ul și software-ul sunt discutate anterior, le puteți căuta în Introducere Raspberry Pi și LED-ul Raspberry PI Clipește pentru a începe, în afară de asta avem nevoie:
- Raspberry Pi 3 (orice versiune ar fi bine).
- Camera Pi.
- MLX90614 - Senzor de temperatură IR.
- Conectarea firelor.
- Breadboard.
- Alimentare (5V, 2A / 3A)
Acest proiect este simplu dacă împărțim proiectul în părți.
- Înțelegere și interfață MLX90614 cu Raspberry pi.
- Noțiuni introductive despre camera Pi.
- Configurarea e-mailului SMTP cu Raspberry pi.
- Dezvoltarea și înțelegerea codului final.
Raspberry Pi: Raspberry Pi este un computer cu dimensiunea cardului de credit care a fost conceput în scopuri educaționale. Datorită prețului său și a specificațiilor uimitoare, cum ar fi WiFi la bord, Bluetooth și antet GPIO programabil și numărul de opțiuni posibile pentru a crea o aplicație, a fost adoptat de dezvoltatori și pasionați de electronică. Puteți să-l căutați în Introducerea Raspberry Pi și LED-ul Raspberry PI Clipește pentru a începe cu procesul de pornire.
MLX90614 Senzor de temperatură IR: Există mulți senzori disponibili pe piață care ne pot oferi temperatură și umiditate. Ceea ce face acest senzor diferit de toți ceilalți senzori este că ne poate oferi temperatura obiectului, iar alți senzori dau temperatura ambiantă. Am folosit extensiv senzorul DHT11 și LM35 pentru multe aplicații în care trebuie măsurate umiditatea sau temperatura atmosferică.
Dar aici, pentru realizarea unui pistol de temperatură care nu are nevoie de contact fizic și poate măsura temperatura obiectului în loc de temperatura ambiantă, folosim MLX90614 pe bază de IR. Pentru a afla mai multe despre circuitele senzorului infraroșu și IR, urmați linkul.
Senzorul MLX90614 este fabricat de sistemele integrate Melexis Microelectronics, funcționează pe principiul senzorului termopil cu infraroșu pentru măsurarea temperaturii. Acești senzori constau din două unități încorporate intern pentru a da temperatura de ieșire. Prima unitate este unitatea de detectare care are un detector cu infraroșu, urmată de a doua unitate care efectuează calculul datelor cu procesare digitală a semnalului (DSP). Acest senzor funcționează conform legii lui Stefan-Boltzmann, care explică puterea radiată de un corp negru în termeni de temperatură. În termeni simpli, orice obiect emite energie IR și intensitatea acesteia va fi direct proporțională cu temperatura acelui obiect. Senzorul MLX90614 convertește valoarea de calcul în ADC pe 17 bițiși care poate fi accesat folosind protocolul de comunicație I2C. Acești senzori măsoară temperatura ambiantă, precum și temperatura obiectului cu calibrarea rezoluției de 0,02 ° C. Pentru a afla mai multe despre caracteristicile senzorului MLX90614, consultați fișa tehnică MLX90614.
Caracteristicile MLX90614:
- Tensiune de funcționare: 3,6V până la 5V
- Gama de temperatură ambientală: -40 ° C până la 125 ° C
- Gama de temperatură a obiectului: -70 ° C până la -382,2 ° C
- Rezoluție / calibrare: 0,02 ° C
- ADC pe 17 biți.
- Comunicare I2C.
Interfațarea MLX90614 cu Raspberry Pi
Mai întâi, vom descărca biblioteca și pachetele necesare pentru a interfața cu succes MLX90614.
Pasul 1: Activarea setării I2C din Raspberry Pi.
Tastați sudo raspi-config și apoi accesați opțiunile de interfață.
Accesați opțiunea I2C și activați-o.
Pasul 2: Descărcați pachetul / biblioteca MLX90614 accesând https://pypi.org/project/PyMLX90614/#files, apoi faceți clic dreapta și copiați adresa linkului.
Mergeți la terminalul RPI și tastați wget și lipiți linkul copiat ca mai jos.
Wget
Va descărca biblioteca în numele fișierului zip „PyMLX90614-0.0.3.tar.gz” . apoi extrageți folderul cu extensia tar -xf numele fișierului sau utilizați comanda de mai jos pentru a face același lucru.
tar -xf PyMLX90614-0.0.3.tar.gz
Apoi, trebuie să instalăm câteva pachete necesare folosind comenzile de mai jos.
sudo apt-get install python-setuptools sudo apt-get install -y i2c-tools
Apoi accesați folderul extras folosind cd PyMLX90614-0.0.3 / și rulați comanda.
sudo python setup.py instalare
După ce ați terminat urmarea pașilor, trebuie doar să interfațați senzorul MLX90614 cu Raspberry pi utilizând circuitul de mai jos. Circuitul Raspberry Pi MLX90614 de mai jos a fost proiectat folosind fritzing.
Dacă conexiunile și instalarea sunt realizate corect, putem verifica dacă obținem valoarea adresei senzorului pe magistrala I2C folosind comanda i2cdetect -y 1 .
Dacă totul funcționează așa cum era de așteptat, putem vedea rezultatul de mai jos pe terminalul nostru.
0x5A reprezintă adresa senzorului așa cum este menționat în foaia tehnică. Fragmentul de fișă tehnică care arată același lucru este dat mai jos.
Acum, vom rula creați un nou nume de fișier mlxread.py și vom scrie un exemplu de program pentru a verifica datele de la senzor. Codul pentru același lucru este dat mai jos.
din smbus2 import SMBus din 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. închide()
Odată ce fișierul este creat, îl vom rula cu extensia python python mlxread.py. Ieșirea pe care am primit-o este prezentată mai jos. Am rulat programul de mai multe ori pentru a verifica dacă valorile se schimbă în timp ce mișc mâna peste el.
Woah, am interfațat cu succes MLX90614 cu Raspberry Pi, după cum puteți confirma din imaginea de mai sus.
Interfațarea camerei Pi cu Raspberry Pi
Pasul 1: Activarea camerei din setarea Raspberry Pi.
Tastați sudo raspi-config și apoi accesați opțiunile de interfață.
Accesați Camera și activați camera.
Acum, conectați modulul camerei foto așa cum se arată mai jos.
Pasul 2: Pentru a verifica dacă camera este conectată corect, facem o imagine de testare și o salvăm în desktop (folosim versiunea completă GUI Raspbian OS)
raspistill -o Desktop / image.jpg
Acest lucru va permite camerei dvs. să facă clic pe o imagine cu imaginea de nume și să o stocheze pe desktop.
Configurarea e-mailului SMTP cu Raspberry Pi
În această secțiune, vom înțelege cum putem seta contul nostru GMAIL să trimită mesaje de alertă odată ce temperatura depășește valoarea setată predefinită.
SMTP este un protocol simplu de transfer de poștă, care este un protocol de strat de aplicație responsabil pentru serviciul de e-mail folosind TCP / IP. Acesta oferă posibilitatea de a trimite și primi mesaje de poștă electronică și este administrat de Internet Engineering Task Force (IETF).
Acest tutorial funcționează numai cu conturi GMAIL și pentru a evita eventualele erori, ar fi recomandat dacă utilizați un cont Gmail nou.
În mod implicit, Google nu permite utilizatorilor să trimită e-mailuri folosind scriptul Python. Pentru ca acest lucru să funcționeze, trebuie să activăm unele aplicații mai puțin sigure, accesând setările contului.
Pasul 1: Mergeți în colțul din dreapta și faceți clic pe Gestionarea contului dvs. Google.
Pasul 2: Faceți clic pe Securitate și derulați în jos până la „Acces mai puțin sigur la aplicație”.
Pasul 3: activați aplicația mai puțin sigură.
Pasul 4: Repetați și cu celălalt id de e-mail pentru a trimite / primi e-mailul din scriptul python.
Pasul 5: Descărcați pachetele necesare.
sudo apt-get install ssmtp sudo apt-get install mailutils
Dacă apare o eroare la executarea comenzii prin copiere-lipire, tastați-o manual.
Pasul 6: După instalarea tuturor bibliotecilor, trebuie să facem modificări în fișierul ssmtp.conf unde trebuie să introducem detaliile de e-mail ale expeditorului
Accesați sudo nano /etc/ssmtp/ssmtp.conf
Derulați în jos până la final și lipiți acest lucru, mailhub = smtp.gmail.com: 587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = YES UseTLS = YES
Am trimis, de asemenea, o captură de ecran a terminalelor mele pentru referință.
Tocmai am folosit o placă pentru a-mi face conexiunea, configurarea hardware-ului meu arată ca a lui atunci când MLX90614 și camera sunt conectate.
Cod Python pentru ca Pi să citească temperatura din MLX90614 și să trimită e-mail cu imagine
Programul Python face toate operațiunile necesare pentru a citi datele senzorului, pentru a le compara cu valoarea pragului, pentru a autoriza e-mailul și apoi pentru a trimite e-mailul cu imaginea atașată. La început, vom solicita declarații de e-mail pentru biblioteci, expeditori și destinatari. E-mailul poate fi trimis prin smtplib, dar dorim doar ca e-mailul să fie organizat cu un subiect, corp și alt atașament, acest lucru se face cu ajutorul extensiilor de poștă Internet multipurpose (MIME). Codul complet poate fi găsit în partea de jos a acestei pagini.
import RPi.GPIO ca gpio import picamera import timp import smtplib din e-mail.MIMEM import multipart MIMEMultipart din e-mail.MIMEText import MIMEText din e-mail.MIMEBase import MIMEBase din e-mail import codificatori din email.mime.image import MIMEImage din smbus2 import SMBus din mlx90614 import MLX90614
După aceea, definim adresa de e-mail a expeditorului, adresa de e-mail a destinatarului, subiectul e-mailului, corpul și mesajul atașat.
fromaddr = "[email protected]" # schimbați adresa de e-mail în consecință toaddr = "[email protected]" mail = MIMEMultipart () mail = fromaddr mail = toaddr mail = "Temperatura depășește alerta" body = "Vă rugăm să găsiți atașat imagine"
Apoi, creăm o funcție cu ajutorul căreia putem trimite un e-mail.
def sendMail (date): 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 ()
Apoi, creăm o funcție pentru a captura imaginea care este trimisă prin e-mail și, de asemenea, stochează imaginea cu date și timp.
def capture_image (): data = time.strftime ("% d_% b_% Y-% H:% M:% S") camera.start_preview () time.sleep (5) print data camera.capture ('% s. jpg '% data) camera.stop_preview () time.sleep (1) sendMail (date)
Apoi, facem câteva setări cu PiCamera.
camera = picamera.PiCamera () camera.rotation = 0 camera.awb_mode = 'auto' camera.brightness = 55
Și, în sfârșit, avem o buclă while (1) care va rula infinit. Va citi datele de la senzorul de temperatură MLX90614 și dacă temperatura depășește valoarea setată, se apelează funcția capture_image () care apoi apelează funcția sendMail (date) pentru a trimite captarea imaginii prin e-mail.
Măsurarea temperaturii și trimiterea alertei prin poștă cu PI
Când hardware-ul și software-ul sunt gata, rulați codul python (dați mai jos) pe pi. Acesta va imprima valoarea temperaturii citite de la senzor așa cum se arată mai jos.
Dacă temperatura obiectului depășește temperatura pragului, atunci programul nostru python va prelua o imagine de pe cameră, o va salva pe raspberry pi și o va partaja și prin e-mail. Un exemplu de e-mail trimis de la raspberry Pi este prezentat mai jos.
Funcționarea completă a proiectului poate fi găsită și în videoclipul legat mai jos. Sper că ți-a plăcut articolul, dacă ai întrebări, lasă-le în comentariile de mai jos sau poți folosi forumurile noastre pentru a-ți posta întrebările și a lua legătura cu comunitatea.