Veuillez préparer les éléments suivants [Capteur infrarouge](https://www.amazon.co.jp/SODIAL-R-267-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3% 83% AB% E7% 84% A6% E9% 9B% BB% E5% 9E% 8B% E8% B5% A4% E5% A4% 96% E7% B7% 9A% E6% A4% 9C% E5% 87% BA% E5% 99% A8PIR% E3% 83% A2% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3 / dp / B00L11K4RQ? Ie = UTF8 & ref_ = pe_1095802_173146692) Tarte aux framboises et produits connexes [Code](https://www.amazon.co.jp/%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%B5%E3%82 % A4% E3% 82% A8% E3% 83% B3% E3% 82% B9-SFE-PRT-08430-% E3% 82% B8% E3% 83% A3% E3% 83% B3% E3% 83% 91% E3% 83% AF% E3% 82% A4% E3% 83% A4-% E3% 83% A1% E3% 82% B9% EF% BD% 9E% E3% 83% A1% E3% 82% B9 -10% E6% 9C% AC% E3% 82% BB% E3% 83% 83% E3% 83% 88 / dp / B0079AXJ0W? Ie = UTF8 & ref_ = pe_1095802_173146692) Si possible, cherchez vous-même le moins cher.
sensor | raspbery pi |
---|---|
VCC | 5V |
OUT | GPIO25:22 |
GND | GND:25 |
pi@raspberrypi:~$ sudo su
root@raspberrypi:/home/pi#
Étant donné que GPIO utilise 25 broches, exportez GPIO25 vers l'espace utilisateur. Si vous ne le faites pas, vous ne pourrez pas accéder à GPIO.
root@raspberrypi:/home/pi# echo 25 > /sys/class/gpio/export
L'écriture dans le fichier d'exportation dans le répertoire / sys / class / gpio avec la commande echo crée un nouveau répertoire appelé / sys / class / gpio / gpio25, qui fournit les fichiers virtuels nécessaires pour contrôler GPIO. Cette fois, l'entrée du capteur est évaluée, donc définie dans le fichier de direction.
root@raspberrypi:/home/pi# cd /sys/class/gpio/gpio25
root@raspberrypi:/sys/class/gpio/gpio25# echo in > direction
Maintenant, si le capteur répond, 1 sera écrit dans le fichier de valeurs, et s'il n'y a pas de réponse, 0 sera écrit. Lorsque le capteur est mis à réagir et que la commande suivante est exécutée, 1 est écrit en valeur et l'opération peut être confirmée.
root@raspberrypi:/sys/class/gpio/gpio25# cat value
1
Que faire cette fois ・ Envoyez un e-mail lorsque le capteur infrarouge répond
sudo nano sensor_push.py
sensor_push.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
import os.path
import datetime
import smtplib
from email import Encoders
from email.Utils import formatdate
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
INTAVAL = 3
SLEEPTIME = 5
SENSOR_PIN = 25
#Compte Gmail
ADDRESS = "Adresse Gmail"
PASSWARD = "Mot de passe Gmail"
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
st = time.time()-INTAVAL
while True:
print GPIO.input(SENSOR_PIN)
if(GPIO.input(SENSOR_PIN) == GPIO.HIGH) and (st + INTAVAL < time.time()):
st = time.time()
print("Détecté une personne")
def create_message(from_addr, to_addr, subject, body, mime=None, attach_file=None):
msg = MIMEMultipart()
msg["From"] = from_addr
msg["To"] = to_addr
msg["Date"] = formatdate()
msg["Subject"] = subject
body = MIMEText(body)
msg.attach(body)
#Pièce jointe
if mime != None and attach_file != None:
attachment = MIMEBase(mime['type'],mime['subtype'])
file = open(attach_file['path'])
attachment.set_payload(file.read())
file.close()
Encoders.encode_base64(attachment)
msg.attach(attachment)
attachment.add_header("Content-Disposition","attachment", filename=attach_file['name'])
return msg
def send(from_addr, to_addrs, msg):
smtpobj = smtplib.SMTP(SMTP, PORT)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(ADDRESS, PASSWARD)
smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
smtpobj.close()
if __name__ == '__main__':
#adresse de destination
to_addr = "adresse de destination"
#Sujet et corps
subject = "Thieves!Fire!Murder!"
body = "Texte"
#Paramètres des fichiers joints(text.Joindre un fichier txt)
mime={'type':'text', 'subtype':'comma-separated-values'}
attach_file={'name':'test.txt', 'path':'./text.txt'}
#Rédiger un message(Il y a un fichier joint)
#msg = create_message(ADDRESS, to_addr, subject, body, mime, attach_file)
#Composition du message(Pas de pièces jointes)
msg = create_message(ADDRESS, to_addr, subject, body)
#Envoyer
send(ADDRESS, [to_addr], msg)
time.sleep(SLEEPTIME)
Le reste
sudo python sensor_push.py
Vous sera envoyé (si le capteur infrarouge répond)
Le sujet est "Voleurs! Feu! Meurtre!"
~~ J'ai confirmé l'opération, donc si vous voulez pouvoir l'exécuter automatiquement ~~
pi@raspberrypi:~$ crontab -e
#
#
@reboot python sensor_push.py
(N'écrivez pas "# @ reboot python sensor_push.py"!)
[* Raspberry Pi *] C'est l'été! Faisons retentir les vers en utilisant le capteur humain [Envoyez facilement des e-mails avec Gmail](http://make.bcde.jp/python/gmail%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AB%E3%83] % A1% E3% 83% BC% E3% 83% AB% E9% 80% 81% E4% BF% A1 /)
Recommended Posts