综合技术交流
直播中

白纪龙

7年用户 1305经验值
擅长:连接器 电源/新能源 连接器 模拟技术 连接器 测量仪表 连接器 EMC/EMI设计 连接器 嵌入式技术 连接器 连接器 连接器 连接器 接口/总线/驱动 连接器 处理器/DSP 连接器 光电显示 连接器 控制/MCU 连接器 连接器 连接器 MEMS/传感技术 连接器 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 模拟技术 连接器 EMC/EMI设计 光电显示 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[经验]

在物联网中使用 SMTP


控制物联网设备需要特定的应用程序和设置。但是您也可以使用电子邮件来控制它们,因为可以使用 SMTP (简单邮件传输协议)来发送电子邮件,该协议位于 TCP/IP 堆栈上。因此,支持 TCP/IP 协议栈的设备可以使用电子邮件作为命令和控制。
因此,为了应用的目的,我们将制作一个设备,它可以感知特定范围内的任何物体的存在,并且当任何人都在该设备的检测范围内时点击图像。最后,它会以附件的形式发送一封电子邮件。
所需组件
  • Raspberry Pi
  • Raspberry Pi  照相机模块
  • 超声波传感器(HC-SR04)
  • 对 Python 的基本理解
  • 1kω,2kω 电阻器,跳线
示意图和连接
1.png


图1. 连接图


  • 将 hc-sr04的 VCC 连接到 Pi 和 GND 的5v 接地
  • 将 trigpi 连接到 GPIO23
  • 对于 ECHO 引脚,Raspberry Pi 的 GPIO 不直接支持5 v 信号,因此我们将使用分压器将 ECHO 引脚连接到 GPIO24,产生5 v 信号3.3 v。
理解基本功能
  • 我们将使用 Python 脚本来控制传感器模块和相机模块的输入和输出连接到 Pi 进行检测和传感。
  • 传感器将发送超声波并检测回波引脚上反射回来的波; 因此,我们可以计算物体放置到传感器的距离。所以,我们要做一个距离区域,在那里我们可以得到一个 ECHO 信号,如果一个物体被放置在那里。
  • 回波信号将作为我们的相机模块的一个点击按钮,因此,我们将得到一个图像每次有人进入检测区。
  • 拍照后,我们将使用 SMTP 将捕获的图像传输到我们的邮箱。
实施
我们将使用 Python 2.7来实现完整的功能,包括许多多线程和并行任务; 因此,需要对 Python 有基本的了解。实施部分可分为三个部分。
  • 导入重要的库
  • 对象的检测
  • 点击对象的图像
  • 将图像电子邮件发送到邮箱
设置和导入重要的库: 为了在 Raspberry Pi 中执行 GPIO 和相机功能,我们需要一些 Python 库。我们将进口他们来控制我们的相机模块以及。对于相机,我们需要在终端中使用以下命令安装库。
$sudo apt-get install python-picamera
安装后,我们将导入主题在我们的主脚本。我们将在此基础上导入我们的库。
import RPi.GPIO as GPIO
import picamera
我们还必须导入多线程所需的其他库。
我们需要导入一些库,比如 base64,MIME (像图片这样的附件)和 SMPT,用于电子邮件。
import imaplib
from base64 import b64decode
from smtplib import SMTP
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
现在你需要改变变量来存储电子邮件和密码的值
gmail_user = ‘username@gmail.com
gmail_pwd = ‘gmail_password’
server = ‘smtp.gmail.com’
server_port = 587
目标检测: 我们将制作一个功能,不断触发超声波传感器发送超声波,并检测是否有任何东西进入范围。
while GPIO.input(ECHO)==1:
在检测时,该函数将调用一个函数来单击对象的图像。由于这是一个连续的任务,它将在我们的主循环中。
if distance < distance_detect:
capture_image()
单击对象的图像: 要单击对象的图像,我们将创建一个函数,该函数将单击调用并将图像存储在本地存储器上。
camera.capture(filepath)
点击之后,它会调用一个函数,这个函数将以附件的形式编写一封电子邮件。
download(‘Image’,filepath)
将图像发送到邮箱: 使用 SMTP 库及其方法,此函数接受图像名称及其路径、单击时间和发送到邮箱的电子邮件等参数。这是一个并行任务,因为根据连接速度上传需要时间。我们不想在这段时间里停止另一项任务。
sendEmail (right now,self.jobid,[ self.filepath ])
所以,这就是我们如何使用电子邮件与我们的物联网设备交流。

硬声二维码.png

更多回帖

发帖
×
20
完善资料,
赚取积分