- Gerekli Bileşenler
- MLX90614'ü Raspberry Pi ile arayüzleme
- Raspberry Pi ile Pi Kamera Arayüzü
- Raspberry Pi ile SMTP E-postayı Ayarlama
- Pi'nin MLX90614'ten Sıcaklığı Okuması ve Resimli E-posta Göndermesi için Python Kodu
- PI ile Sıcaklığı Ölçme ve Posta Uyarısı Gönderme
Korona salgınından bu yana virüsten etkilenip etkilenmeyenlerin belirlenmesi çok zorlaştı. Bu sorunu çözmek için, vücut sıcaklığını ölçmek için genellikle sıcaklık cihazları kullanılır. Bu cihazlar, herhangi bir fiziksel temas olmadan vücut sıcaklığını ölçebilen temassız IR sıcaklık sensörlerine sahiptir.
Piyasada pek çok sıcaklık tabancası mevcuttur, ancak bunların hiçbiri, sıcaklık belirli bir sınırı aştığında uygun önlemleri almaları için üst yetkililere herhangi bir uyarı veya e-posta bildirimi vermez. Bu projede, herhangi bir kişinin sıcaklığı ayarlanan değeri aşarsa, bir kızılötesi sıcaklık sensörü ile arayüz oluşturacak ve kişinin görüntüsü ile e-posta uyarıları göndereceğiz.
Günümüz dünyasında, Nesnelerin İnterneti, uzaktan izlenebilen ve kontrol edilebilen bir dizi sistem geliştirerek hayatımızda devrim yaratıyor. Bu projede IoT'nin gücünden yararlanacağız ve Raspberry Pi, MLX90614 ve PiCamera kullanarak E-posta uyarıları içeren bir Sıcaklık İzleme cihazı oluşturacağız.
Daha önce vücut ısısı ölçümü için başka benzer termometreler de yaptık, bunları burada bulabilirsiniz.
- MAX30205 kullanan Arduino tabanlı dijital termometre
- MLX90614 ile RFID ve Arduino kullanarak Temassız Vücut Sıcaklığı taraması
- Arduino kullanarak Temassız Kızılötesi Termometre Tabancası
- Arduino ile Duvara Montaj Temassız Termometre
- Android Uygulaması ile Arduino kullanarak Akıllı Termometre
Gerekli Bileşenler
Burada Raspberry Pi 3 Raspbian OS kullanıyoruz. Tüm temel Donanım ve Yazılım gereksinimleri daha önce tartışılmıştır, ihtiyaç duyduğumuz dışında, Raspberry Pi Tanıtımı ve Raspberry PI LED Yanıp Sönüyor bölümlerine bakabilirsiniz:
- Raspberry Pi 3 (herhangi bir sürüm iyi olur).
- Pi Kamera.
- MLX90614 - IR sıcaklık sensörü.
- Bağlantı kabloları.
- Breadboard.
- Güç Kaynağı (5V, 2A / 3A)
Projeyi parçalara ayırırsak bu proje basittir.
- Raspberry pi ile MLX90614'ü Anlamak ve Arayüz Kurmak
- Pi Kamera'ya başlarken.
- Raspberry pi ile SMTP E-postayı kurma.
- Nihai kod geliştirme ve anlama.
Raspberry Pi: Raspberry Pi, eğitim amaçlı tasarlanmış kredi kartı boyutunda bir bilgisayardır. Fiyatı ve yerleşik wifi, Bluetooth ve programlanabilir GPIO başlığı gibi şaşırtıcı özellikleri ve bir uygulama oluşturmak için olası seçeneklerin sayısı nedeniyle, geliştiriciler ve elektronik hobileri tarafından benimsenmiştir. Önyükleme işlemine başlamak için Raspberry Pi Tanıtımı ve Raspberry PI LED Yanıp Sönme bölümlerinde buna bakabilirsiniz.
MLX90614 IR Sıcaklık Sensörü: Piyasada bize sıcaklık ve nem verebilen birçok sensör mevcuttur. Bu sensörü diğer tüm sensörlerden farklı kılan şey, bize nesne sıcaklığını verebilmesi ve diğer sensörlerin ortam sıcaklığını vermesidir. DHT11 Sensörünü ve LM35'i, atmosferik nem veya sıcaklığın ölçülmesi gereken birçok uygulama için yaygın olarak kullandık.
Ancak burada fiziksel temasa ihtiyaç duymayan ve ortam sıcaklığı yerine nesne sıcaklığını ölçebilen bir sıcaklık tabancası yapmak için IR tabanlı MLX90614 kullanıyoruz. Kızılötesi ve IR sensör devreleri hakkında daha fazla bilgi edinmek için bağlantıyı izleyin.
MLX90614 sensör, Melexis Microelectronics Integrated sistemleri tarafından üretilmiştir, sıcaklık ölçümü için InfraRed termopil sensör prensibine göre çalışır. Bu sensörler, sıcaklık çıkışı sağlamak için dahili olarak gömülü iki üniteden oluşur. Birinci ünite, bir kızılötesi detektöre sahip olan algılama ünitesidir ve bunu, Dijital sinyal işleme (DSP) ile verilerin hesaplanmasını gerçekleştiren ikinci ünite takip eder. Bu sensör, siyah cisim tarafından yayılan gücü kendi sıcaklığı cinsinden açıklayan Stefan-Boltzmann yasası üzerinde çalışır. Basit bir ifadeyle, herhangi bir nesne IR enerjisi yayar ve bunun yoğunluğu, o nesnenin sıcaklığı ile doğru orantılı olacaktır. MLX90614 sensörü, hesaplama değerini 17 bitlik ADC'ye dönüştürürve buna I2C iletişim protokolü kullanılarak erişilebilir. Bu sensörler, 0.02 ° C çözünürlük kalibrasyonu ile ortam sıcaklığının yanı sıra nesne sıcaklığını da ölçer. MLX90614 sensörünün özellikleri hakkında daha fazla bilgi için MLX90614 Veri Sayfasına bakın.
MLX90614'ün özellikleri:
- Çalışma Gerilimi: 3.6V - 5V
- Ortam Sıcaklığı Aralığı: -40 ° C ila 125 ° C
- Nesne Sıcaklık Aralığı: -70 ° C ila -382.2 ° C
- Çözünürlük / Kalibrasyon: 0.02 ° C
- 17 bit ADC.
- I2C iletişimi.
MLX90614'ü Raspberry Pi ile arayüzleme
İlk olarak, MLX90614 ile başarılı bir şekilde arayüz oluşturmak için gerekli kitaplığı ve paketleri indireceğiz.
Adım 1: Raspberry Pi ayarından I2C'nin etkinleştirilmesi.
Tip sudo Raspi-config ve ardından seçenekler arabirim gidin.
I2C seçeneğine gidin ve etkinleştirin.
Adım 2: https://pypi.org/project/PyMLX90614/#files adresine giderek MLX90614 paketini / kitaplığını indirin, ardından sağ tıklayıp bağlantı adresini kopyalayın.
RPI terminaline gidin ve wget yazın ve kopyalanan bağlantıyı aşağıdaki gibi yapıştırın.
Wget
Kitaplığı 'PyMLX90614-0.0.3.tar.gz' zip dosyası adıyla indirecektir . daha sonra tar -xf dosya adı uzantısına sahip klasörü çıkartın veya aynısını yapmak için aşağıdaki komutu kullanın.
tar -xf PyMLX90614-0.0.3.tar.gz
Sonra aşağıdaki komutları kullanarak bazı gerekli paketleri kurmamız gerekiyor.
sudo apt-get install python-setuptools sudo apt-get install -y i2c-araçları
Sonra cd PyMLX90614-0.0.3 / kullanarak çıkartılan klasöre gidin ve komutu çalıştırın.
sudo python setup.py install
Adımları izledikten sonra, MLX90614 sensörünü aşağıda verilen devreyi kullanarak Raspberry pi ile arayüzleyin. Aşağıdaki Raspberry Pi MLX90614 devresi fritzing kullanılarak tasarlanmıştır.
Bağlantılar ve kurulum doğru bir şekilde yapılırsa, i2cdetect -y 1 komutunu kullanarak I2C veriyolunda sensör adres değerini alıp almadığımızı kontrol edebiliriz .
Her şey beklendiği gibi çalışıyorsa aşağıdaki çıktıyı terminalimizde görebiliriz.
0x5A, veri sayfasında belirtildiği gibi sensörün adresini temsil eder. Aynısını gösteren veri sayfası pasajı aşağıda verilmiştir.
Şimdi, mlxread.py adında yeni bir dosya oluştur'u çalıştıracağız ve sensörden gelen verileri kontrol etmek için örnek bir program yazacağız. Aynı kod aşağıda verilmiştir.
smbus2'den mlx90614'ten SMBus'u içe aktarın MLX90614 veri yolu = SMBus (1) sensörü = MLX90614 (veri yolu, adres = 0x5A) yazdır "Ortam Sıcaklığı:", sensor.get_ambient () "Nesne Sıcaklığı:", sensor.get_object_1 () veri yolunu yazdır. kapat()
Dosya oluşturulduktan sonra, onu python uzantısı python mlxread.py ile çalıştıracağız . Aldığım çıktı aşağıda gösteriliyor. Elimi üzerinde gezdirirken değerlerin değişip değişmediğini kontrol etmek için programı birkaç kez çalıştırdım.
Woah, MLX90614'ü Raspberry Pi'miz ile başarılı bir şekilde yukarıdaki görüntüden de teyit edebileceğiniz gibi arayüz oluşturduk.
Raspberry Pi ile Pi Kamera Arayüzü
Adım 1: Kamerayı Raspberry Pi ayarından etkinleştirmek.
Tip sudo Raspi-config ve ardından seçenekler arabirim gidin.
Kamera'ya gidin ve kamerayı etkinleştirin.
Şimdi kamera modülünü aşağıda gösterildiği gibi bağlayın.
Adım 2: Kameranın düzgün bağlanıp bağlanmadığını kontrol etmek için bir test görüntüsü alıyoruz ve bunu Masaüstümüze kaydediyoruz (Tam GUI Raspbian OS sürümünü kullanıyoruz)
raspistill -o Masaüstü / image.jpg
Bu, kameranızın ad resmine sahip bir resme tıklayıp bunu Masaüstünüze kaydetmesini sağlayacaktır.
Raspberry Pi ile SMTP E-postayı Ayarlama
Bu bölümde, sıcaklık önceden tanımlanmış ayar değerini aştığında GMAIL hesabımızı uyarı postaları gönderecek şekilde nasıl ayarlayabileceğimizi anlayacağız.
SMTP, TCP / IP kullanan e-posta hizmetinden sorumlu bir uygulama katmanı protokolü olan Basit Posta Aktarım Protokolüdür. E-posta mesajları gönderme ve alma yeteneği sağlar ve İnternet Mühendisliği Görev Gücü (IETF) tarafından yönetilir.
Bu eğitim yalnızca GMAIL hesaplarıyla çalışır ve olası hataları önlemek için yeni bir Gmail hesabı kullanmanız önerilir.
Varsayılan olarak Google, kullanıcıların python komut dosyası kullanarak e-posta göndermesine izin vermez. Bunun işe yaraması için, hesap ayarlarına giderek daha az güvenli bazı uygulamaları etkinleştirmemiz gerekiyor.
Adım 1: Sağ köşeye gidin ve Google Hesabınızı Yönetin seçeneğine tıklayın.
2. Adım: Güvenlik'e tıklayın ve "Daha Az Güvenli Uygulama Erişimi" ne gidin.
3. Adım: Daha az güvenli uygulamayı etkinleştirin.
Adım 4: E-postayı python betiğinden göndermek / almak için diğer e-posta kimliği ile tekrarlayın.
Adım 5: Gerekli paketleri indirin.
apt-get install SSMTP sudo sudo apt-get install Mailutils
Komutu kopyalayıp yapıştırarak çalıştırırken bir hata alıyorsanız, manuel olarak yazın.
Adım 6: Tüm kitaplıkların kurulumu tamamlandıktan sonra, gönderenin e-posta detaylarını girmemiz gereken ssmtp.conf dosyasında değişiklikler yapmamız gerekiyor.
Git sudo nano /etc/ssmtp/ssmtp.conf
Sonuna kaydırın ve bunu yapıştırın, mailhub = smtp.gmail.com: 587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = YES UseTLS = EVET
Ayrıca referansınız için terminallerimin bir ekran görüntüsünü paylaştım.
Bağlantımı yapmak için bir devre tahtası kullandım, donanım kurulumum MLX90614 ve kamera bağlandığındaki gibi görünüyor.
Pi'nin MLX90614'ten Sıcaklığı Okuması ve Resimli E-posta Göndermesi için Python Kodu
Python programı, sensör verilerini okumak, eşik değeri ile karşılaştırmak, e-postayı yetkilendirmek ve ardından ekli resimle e-postayı göndermek için gerekli tüm işlemleri yapar. İlk olarak kitaplıklar, gönderen ve alıcı e-posta beyanına ihtiyacımız olacak. E-posta smtplib ile gönderilebilir, ancak e-postanın bir konu, gövde ve diğer eklerle organize edilmesini istiyoruz, bu Çok Amaçlı İnternet Posta Uzantıları (MIME) yardımıyla yapılır. Kodun tamamı bu sayfanın altında bulunabilir.
RPi.GPIO'yu gpio olarak içe aktar picamera içe aktarma süresi e-postadan smtplib'i içe aktar.MIMEMultipart içe aktarma MIMEM E-postadan çoklu parça içe aktarma.MIMEBase e-postadan e-posta içe aktarma kodlayıcılarından MIMEBase içe aktarma MIMEBase'i e-posta.
Bundan sonra, gönderen e-posta adresini, alıcı e-posta adresini, e-postanın konusunu, gövdeyi ve ek mesajını tanımlarız.
fromaddr = "[email protected]" # e-posta adresini buna göre değiştirin toaddr = "[email protected]" mail = MIMEMultipart () mail = fromaddr mail = toaddr mail = "Sıcaklık değeri uyarıyı aşıyor" body = "Lütfen ekteki görüntü "
Ardından, E-posta gönderebileceğimiz bir işlev oluşturuyoruz.
def sendMail (data): mail.attach (MIMEText (gövde, 'düz')) baskı verisi dat = '% s.jpg'% veri yazdırma dat eki = open (dat, 'rb') image = MIMEImage (attachment.read ()) attachment.close () mail.attach (görüntü) sunucu = smtplib.SMTP ('smtp.gmail.com', 587) server.starttls () server.login (fromaddr, "test12345 @") text = mail. as_string () server.sendmail (fromaddr, toaddr, text) server.quit ()
Ardından, e-posta yoluyla gönderilen görüntüyü yakalamak ve aynı zamanda görüntüyü veri ve zamanla saklamak için bir işlev oluşturuyoruz.
def capture_image (): data = time.strftime ("% d_% b_% Y-% H:% M:% S") camera.start_preview () time.sleep (5) veriyi yazdır camera.capture ('% s. jpg '% data) camera.stop_preview () time.sleep (1) sendMail (veri)
Ardından PiCamera ile bazı ayarlar yapıyoruz.
camera = picamera.PiCamera () camera.rotation = 0 camera.awb_mode = 'auto' camera.brightness = 55
Ve sonunda sonsuza kadar çalışacak bir süre (1) döngümüz var. MLX90614 sıcaklık sensöründen verileri okuyacak ve sıcaklık ayarlanan değeri aşarsa, daha sonra görüntü yakalamayı e-posta yoluyla göndermek için sendMail (veri) işlevini çağıran capture_image () işlevi çağrılır.
PI ile Sıcaklığı Ölçme ve Posta Uyarısı Gönderme
Donanım ve yazılım hazır olduğunda, pi'nizdeki python kodunu (aşağıda verin) çalıştırın. Sensörden okunan sıcaklık değerini aşağıda gösterildiği gibi yazdıracaktır.
Nesne sıcaklığı eşik sıcaklığını aşarsa, python programımız kameradan bir görüntü alacak, ahududu pi'ye kaydedecek ve ayrıca e-posta yoluyla paylaşacaktır. Ahududu Pi'den gönderilen örnek bir E-posta aşağıda gösterilmiştir.
Projenin tam çalışması, aşağıda bağlantısı verilen videoda da bulunabilir. Umarım makaleyi beğenmişsinizdir, herhangi bir sorunuz varsa lütfen aşağıdaki yorumlarda bırakın ya da sorularınızı göndermek ve toplulukla iletişim kurmak için forumlarımızı da kullanabilirsiniz.