- Composants requis
- Interfaçage du MLX90614 avec Raspberry Pi
- Interfaçage de la caméra Pi avec Raspberry Pi
- Configurer la messagerie SMTP avec Raspberry Pi
- Code Python pour Pi pour lire la température de MLX90614 et envoyer un e-mail avec une image
- Mesure de la température et envoi d'alertes par courrier électronique avec PI
Depuis l'épidémie de corona, il est devenu très difficile d'identifier ceux qui sont affectés ou non par le virus. Pour résoudre ce problème, les appareils de température sont souvent utilisés pour mesurer la température corporelle. Ces appareils ont des capteurs de température IR sans contact qui peuvent mesurer la température corporelle sans aucun contact physique.
Il existe de nombreux pistolets thermiques disponibles sur le marché, mais aucun d'eux ne donne d'alerte ou de notification par courrier électronique aux autorités supérieures pour qu'elles prennent les mesures appropriées lorsque la température dépasse une limite particulière. Dans ce projet, nous allons interfacer un capteur de température IR et envoyer les alertes par courrier électronique avec l'image de la personne si la température d'une personne en particulier dépasse la valeur définie.
Dans le monde d'aujourd'hui, l'Internet des objets révolutionne notre vie en développant un certain nombre de systèmes qui peuvent être surveillés et contrôlés à distance. Dans ce projet, nous exploiterons la puissance de l'IoT et nous créerons un appareil de surveillance de la température avec des alertes par e-mail à l'aide de Raspberry Pi, MLX90614 et PiCamera.
Auparavant, nous avons également construit d'autres thermomètres similaires pour la mesure de la température corporelle, vous pouvez les trouver ici.
- Thermomètre numérique basé sur Arduino utilisant MAX30205
- Dépistage de la température corporelle sans contact utilisant RFID et Arduino avec MLX90614
- Pistolet thermomètre infrarouge sans contact utilisant Arduino
- Thermomètre mural sans contact utilisant Arduino
- Thermomètre intelligent utilisant Arduino avec application Android
Composants requis
Ici, nous utilisons le système d'exploitation Raspberry Pi 3 Raspbian. Toutes les exigences matérielles et logicielles de base sont décrites précédemment, vous pouvez les rechercher dans l'introduction de Raspberry Pi et le clignotement du voyant Raspberry PI pour commencer, à part ce dont nous avons besoin:
- Raspberry Pi 3 (n'importe quelle version conviendrait).
- Caméra Pi.
- MLX90614 - Capteur de température IR.
- Connexion des fils.
- Planche à pain.
- Alimentation (5V, 2A / 3A)
Ce projet est simple si nous divisons le projet en plusieurs parties.
- Comprendre et interfacer MLX90614 avec Raspberry pi.
- Premiers pas avec la caméra Pi.
- Configuration de la messagerie SMTP avec Raspberry pi.
- Développement et compréhension du code final.
Raspberry Pi: Raspberry Pi est un ordinateur de la taille d'une carte de crédit qui a été conçu à des fins éducatives. En raison de son prix et de ses spécifications étonnantes telles que le wifi embarqué, le Bluetooth et l'en-tête GPIO programmable, et le nombre d'options possibles pour créer une application, il a été adopté par les développeurs et les amateurs d'électronique. Vous pouvez le rechercher dans l'introduction de Raspberry Pi et le clignotement du voyant Raspberry PI pour démarrer le processus de démarrage.
Capteur de température IR MLX90614: Il existe de nombreux capteurs disponibles sur le marché qui peuvent nous donner la température et l'humidité. Ce qui rend ce capteur différent de tous les autres capteurs, c'est qu'il peut nous donner la température de l'objet et que d'autres capteurs donnent la température ambiante. Nous avons largement utilisé le capteur DHT11 et le LM35 pour de nombreuses applications où l'humidité atmosphérique ou la température doit être mesurée.
Mais ici pour fabriquer un pistolet thermique qui n'a pas besoin de contact physique et peut mesurer la température de l'objet au lieu de la température ambiante, nous utilisons le MLX90614 à base d'IR. Pour en savoir plus sur les circuits de capteurs infrarouges et IR, suivez le lien.
Le capteur MLX90614 est fabriqué par Melexis Microelectronics Integrated Systems, il fonctionne sur le principe du capteur thermopile infrarouge pour la mesure de température. Ces capteurs se composent de deux unités intégrées en interne pour donner la sortie de température. La première unité est l'unité de détection qui a un détecteur infrarouge qui est suivi par la seconde unité qui effectue le calcul des données avec un traitement numérique du signal (DSP). Ce capteur fonctionne sur la loi de Stefan-Boltzmann qui explique la puissance rayonnée par un corps noir en fonction de sa température. En termes simples, tout objet émet de l'énergie infrarouge et l'intensité de celle-ci sera directement proportionnelle à la température de cet objet. Le capteur MLX90614 convertit la valeur de calcul en ADC 17 bitset accessible via le protocole de communication I2C. Ces capteurs mesurent la température ambiante ainsi que la température de l'objet avec un étalonnage de résolution de 0,02 ° C. Pour en savoir plus sur les fonctionnalités du capteur MLX90614, reportez-vous à la fiche technique du MLX90614.
Caractéristiques du MLX90614:
- Tension de fonctionnement: 3,6 V à 5 V
- Plage de température ambiante: -40 ° C à 125 ° C
- Plage de température de l'objet: -70 ° C à -382,2 ° C
- Résolution / étalonnage: 0,02 ° C
- ADC 17 bits.
- Communication I2C.
Interfaçage du MLX90614 avec Raspberry Pi
Tout d'abord, nous allons télécharger la bibliothèque et les packages nécessaires pour réussir l'interface du MLX90614.
Étape 1: Activation du paramètre I2C à partir de Raspberry Pi.
Tapez sudo raspi-config , puis accédez aux options d'interfaçage.
Accédez à l'option I2C et activez-la.
Étape 2: Téléchargez le package / bibliothèque de MLX90614 en allant sur https://pypi.org/project/PyMLX90614/#files, puis cliquez avec le bouton droit et copiez l'adresse du lien.
Accédez au terminal RPI et tapez wget et collez le lien copié comme ci-dessous.
Wget
Il téléchargera la bibliothèque sous le nom de fichier zip 'PyMLX90614-0.0.3.tar.gz' . puis extrayez le dossier avec l'extension de nom de fichier tar -xf ou utilisez la commande ci-dessous pour faire de même.
tar -xf PyMLX90614-0.0.3.tar.gz
Ensuite, nous devons installer certains packages requis à l'aide des commandes ci-dessous.
sudo apt-get install python-setuptools sudo apt-get install -y i2c-tools
Accédez ensuite au dossier extrait à l'aide du cd PyMLX90614-0.0.3 / et exécutez la commande.
installation sudo python setup.py
Une fois que vous avez terminé de suivre les étapes, il suffit d' interfacer le capteur MLX90614 avec Raspberry pi en utilisant le circuit ci-dessous. Le circuit Raspberry Pi MLX90614 ci-dessous a été conçu à l'aide de fritzing.
Si les connexions et l'installation se font correctement, nous pouvons vérifier si nous obtenons la valeur de l'adresse du capteur sur le bus I2C en utilisant la commande i2cdetect -y 1 .
Si tout fonctionne comme prévu, nous pouvons voir la sortie ci-dessous sur notre terminal.
0x5A représente l'adresse du capteur telle que mentionnée par la fiche technique. L'extrait de fiche technique montrant la même chose est donné ci-dessous.
Maintenant, nous allons exécuter un nouveau nom de fichier mlxread.py et écrire un exemple de programme pour vérifier les données du capteur. Le code pour le même est donné ci-dessous.
depuis smbus2 importation SMBus depuis mlx90614 importation MLX90614 bus = SMBus (1) sensor = MLX90614 (bus, adresse = 0x5A) print "Température ambiante:", sensor.get_ambient () print "Température objet:", bus sensor.get_object_1 (). Fermer()
Une fois le fichier créé, nous l'exécuterons avec l'extension python python mlxread.py. La sortie que j'ai reçue est indiquée ci-dessous. J'ai exécuté le programme plusieurs fois pour vérifier si les valeurs changent lorsque je passe ma main dessus.
Woah, nous avons interfacé avec succès MLX90614 avec notre Raspberry Pi comme vous pouvez le confirmer à partir de l'image ci-dessus.
Interfaçage de la caméra Pi avec Raspberry Pi
Étape 1: Activation de la caméra à partir du paramètre Raspberry Pi.
Tapez sudo raspi-config , puis accédez aux options d'interfaçage.
Accédez à Appareil photo et activez l'appareil photo.
Maintenant, connectez le module de caméra comme indiqué ci-dessous.
Étape 2: Pour vérifier si la caméra est correctement connectée, nous prenons une image de test et l'enregistrons sur notre bureau (nous utilisons la version complète du système d'exploitation Raspbian GUI)
raspistill -o Bureau / image.jpg
Cela permettra à votre caméra de cliquer sur une image avec l'image du nom et de la stocker sur votre bureau.
Configurer la messagerie SMTP avec Raspberry Pi
Dans cette section, nous allons comprendre comment nous pouvons configurer notre compte GMAIL pour envoyer des e-mails d'alerte une fois que la température dépasse la valeur de consigne prédéfinie.
SMTP est un protocole de transfert de courrier simple qui est un protocole de couche application responsable du service de messagerie utilisant TCP / IP. Il offre la possibilité d'envoyer et de recevoir des messages électroniques et est géré par l' IETF (Internet Engineering Task Force).
Ce tutoriel ne fonctionne qu'avec les comptes GMAIL et pour éviter d'éventuelles erreurs, il serait recommandé d'utiliser un nouveau compte Gmail.
Par défaut, Google n'autorise pas les utilisateurs à envoyer des e-mails à l'aide d'un script python. Pour que cela fonctionne, nous devons activer certaines applications moins sécurisées en accédant aux paramètres du compte.
Étape 1: Allez dans le coin droit et cliquez sur mon Gérer votre compte Google.
Étape 2: Cliquez sur Sécurité et faites défiler jusqu'à «Accès aux applications moins sécurisé».
Étape 3: activez l'application la moins sécurisée.
Étape 4: Répétez également avec l'autre identifiant d'e-mail pour envoyer / recevoir l'e-mail à partir du script python.
Étape 5: Téléchargez les packages requis.
Sudo apt-get install ssmtp sudo apt-get install mailutils
Si vous rencontrez une erreur lors de l'exécution de la commande par copier-coller, saisissez-la manuellement.
Étape 6: Une fois l'installation de toutes les bibliothèques terminée, nous devons apporter des modifications dans le fichier ssmtp.conf où nous devons entrer les détails de l'e-mail de l'expéditeur
Accédez à sudo nano /etc/ssmtp/ssmtp.conf
Faites défiler jusqu'à la fin et collez ceci, mailhub = smtp.gmail.com: 587 AuthUser = YourEmailAddress AuthPass = YourEmailPassword UseSTARTTLS = OUI UseTLS = YES
J'ai également partagé une capture d'écran de mes terminaux pour votre référence.
Je viens d'utiliser une maquette pour faire ma connexion, ma configuration matérielle ressemble à la sienne lorsque le MLX90614 et la caméra sont connectés.
Code Python pour Pi pour lire la température de MLX90614 et envoyer un e-mail avec une image
Le programme python effectue toutes les opérations nécessaires pour lire les données du capteur, les comparer avec la valeur de seuil, autoriser l'e-mail, puis envoyer l'e-mail avec l'image en pièce jointe. Au début, nous aurons besoin de la déclaration des e-mails des bibliothèques, de l'expéditeur et du destinataire. Le courrier électronique peut être envoyé par smtplib, mais nous voulons simplement que le courrier électronique soit organisé avec un objet, un corps et une autre pièce jointe, cela se fait à l'aide des extensions de messagerie Internet polyvalentes (MIME). Le code complet se trouve au bas de cette page.
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 MLX
Après cela, nous définissons l'adresse e-mail de l'expéditeur, l'adresse e-mail du destinataire, l'objet de l'e-mail, le corps et le message en pièce jointe.
fromaddr = "[email protected]" # changez l'adresse e-mail en conséquence toaddr = "[email protected]" mail = MIMEMultipart () mail = fromaddr mail = toaddr mail = "La valeur de température dépasse l'alerte" body = "Veuillez trouver la pièce jointe image"
Ensuite, nous créons une fonction à l'aide de laquelle nous pouvons envoyer un e-mail.
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 ()
Ensuite, nous créons une fonction pour capturer l'image qui est envoyée par e-mail et stocke également l'image avec les données et l'heure.
def capture_image (): data = time.strftime ("% d_% b_% Y-% H:% M:% S") camera.start_preview () time.sleep (5) imprimer les données camera.capture ('% s. jpg '% data) camera.stop_preview () time.sleep (1) sendMail (données)
Ensuite, nous effectuons quelques réglages avec PiCamera.
camera = picamera.PiCamera () camera.rotation = 0 camera.awb_mode = 'auto' camera.brightness = 55
Et enfin, nous avons une boucle while (1) qui se déroulera indéfiniment. Il lira les données du capteur de température MLX90614 et si la température dépasse la valeur définie, la fonction capture_image () est appelée, qui appelle ensuite la fonction sendMail (data) pour envoyer la capture d'image par e-mail.
Mesure de la température et envoi d'alertes par courrier électronique avec PI
Lorsque le matériel et les logiciels sont prêts, exécutez simplement le code python (donné ci-dessous) sur votre pi. Il imprimera la valeur de la température lue par le capteur comme indiqué ci-dessous.
Si la température de l'objet dépasse la température seuil, notre programme python prendra une image de la caméra, l'enregistrera sur raspberry pi et la partagera également par e-mail. Un exemple d'e-mail envoyé depuis raspberry Pi est présenté ci-dessous.
Le fonctionnement complet du projet peut également être trouvé dans la vidéo ci-dessous. J'espère que vous avez apprécié l'article, si vous avez des questions, laissez-les dans les commentaires ci-dessous ou vous pouvez également utiliser nos forums pour poster vos questions et entrer en contact avec la communauté.