基于物联网的药物提醒系统与电子邮件警报
扫描二维码
随时随地手机看文章
在我们忙碌忙碌的生活中,我们有时会忘记按时吃药。在医院里,医生很难提醒每个病人按时服药。对于这个问题的完美解决方案应该是一个自动提醒警报系统,它将通过发送电子邮件/短信或触发一些警报来提醒患者。在本教程中,我们将使用ESP8266-01板构建一个物联网药物提醒项目,该项目将从互联网(NTP服务器)获取时间,并发送电子邮件作为提醒,根据用药时间表服药。
组件的要求
•ESP8266-01
•红外传感器
•3.3 V电源
•按钮
•FTDI Board
•焊丝
•跳线
线路图
ESP8266-01 wifi模块
ESP8266-01是一种Wi-Fi模块,具有由喜讯通制造的板载微控制器。该模块帮助微控制器通过UART通信使用AT命令连接到Wi-Fi网络。pressif Systems有一系列从ESP-01到ESP-12的Wi-Fi模块,但ESP-01的成本非常低,在市场上很容易买到。它有8个引脚-两个UART引脚(RX和TX),两个GPIO引脚,一个Reset和一个CH_PD以及两个3.3 V和接地。
编程ESP-01:
ESP8266-01可以通过多种方式编程,但在本项目中,我们将使用FTDI串行适配器模块对其进行编程。您也可以使用USB到TTL转换器来编程。ESP8266不是面包板友好的,所以在这里我已经按照上面的电路图焊接了一个穿孔板上的所有组件。该板可用于未来项目中ESP8266的编程。查看有关如何使用FTDI模块对ESP-01进行编程的详细教程。
这里一个带有上拉电阻的复位按钮用于复位Wi-Fi模块,一个跳线开关用于在可编程模式下切换模块。在编程模式下,借助跳线帽将GPIO0引脚(Flash引脚)接地,打开后可作为GPIO引脚使用。
NTP (Network Time Protocol)协议
NTP是非常古老的网络互联网协议(IP),用于同步系统和数据网络之间的时间。同步计算机时钟时间与极端精度NTP使用协调世界时,在较小的网络上提供更高的精度-在局域网中下降到一毫秒。NTP以UTC作为时间基准,在Internet上提供准确、同步的时间。
NTP工作于客户端-服务器模式,其中NTP是服务器,请求设备(如ESP8266-01)充当客户端。客户端向NTP服务器发送请求,NTP服务器返回包含时间戳和时区相关信息的数据包。
红外传感器
红外传感器是一种通过感应物体反射的红外辐射来探测物体的电子设备。它主要由一个发射红外LED和一个接收光电二极管组成。它可以探测波长从700nm到1mm的红外辐射。当一个特定的正电压施加在发射LED上时,它就会发射红外线。如果这些光线落在某个物体上,那么该物体就会将接收到的红外线反射回去。接收器二极管在其两端产生电压,该电压取决于物体反射的光的强度。通常红外接收LED较暗(黑色),而发射器是透明的颜色。本项目将在药箱内放置一个红外传感器,用于检测药箱的开合。
配置SMTP2GO发送邮件提醒
SMTP(简单邮件传输协议)是一个用于自动发送和接收来自远程位置的大量电子邮件的平台。由于其快速可靠的服务,开发者和营销人员主要使用它来节省他们的时间,以一种安全的方式发送电子邮件。它的服务器和数据中心遍布世界各地,这有助于它选择最近的服务器,从而在发送和接收电子邮件时提供最快的连接。它可以用于物联网项目,在发生特定任务时自动发送电子邮件。在这个项目中,当火焰传感器检测到火灾时,我们将使用SMTP2GO发送电子邮件警报。
设置SMTP2Go:
登录,点击Try SMTP2GO Free。
填写您的姓名,电子邮件id和密码的详细信息,并点击提交。然后,它将重定向到一个页面,要求您激活SMTP2GO。
转到您的邮箱,点击SMTP2GO收到的邮件。点击激活帐户。
现在输入用户名,即您的电子邮件id和密码。您的用户名将打开一个新页面。将这些用户名和密码保存在记事本文件中,这将在稍后的Arduino IDE代码中用到。现在点击设置,然后点击用户。将打开一个包含您的用户名和SMTP服务器详细信息的新页面。保存SMTP服务器和SMTP端口,因为这些将在Arduino代码中用于与SMTP服务器连接。
编码为Base64值
在将用户名和密码发送到SMTPTOGO服务器之前,我们需要将它们编码为Base64。
这里只需输入要编码为base64的用户名和密码,然后单击encode以生成编码值。复制并保存已编码的值。
例如,如果您的用户名是,那么在给定的文本区域输入此用户名,然后单击“编码”。编码后的base64值为“cGFzc3dvcmQ=”。对于密码也同样如此。
我们之前在恐慌报警系统和物联网火灾报警系统中使用了SMTP2GO服务。
物联网医药提醒报警器的工作原理
此药物提醒项目的连接已经显示在上面的电路图中。这里FTDI的RX引脚连接到ESP-01的TX引脚,FTDI的TX引脚连接到ESP-01的RX引脚。由于我们从FTDI获得的输出电压约为4伏,因此它不能用于为ESP-01供电,因为它会损坏ESP。因此我们将使用面包板电源的3.3 v直流电源,该电源从适配器输入电源,并提供5伏和3.3伏的双输出。这个面包板电源模块是按照CircuitDigest上的本教程创建的。
确保FTDI和ESP-01的接地与电源模块接地相连。ESP-01的GPIO 2引脚与IR Sensor的数据引脚连接,放置在药箱内部,用于检测药箱的开合。
现在复制教程末尾给出的完整代码并粘贴到Arduino IDE中。将Wi-Fi凭证替换为您的SSID和密码。将“SMTP2GO”的用户名和密码修改为Base 64。将flash引脚的GPIO0接地进行编程模式,并通过USB口将FTDI与PC连接。点击上传,按重置按钮2-3次。上传代码成功后,断开GPIO0引脚与地的连接,按下Reset按钮一次,打开串口监视器查看状态信息。
串行监视器会显示时间,No。打开药盒服药的次数和药盒状态(关闭/打开)。假设服药时间是下午12点,如果你在12点之前已经服药,那么在12点它会显示“已经服药”的信息。如果您在中午12点之前没有服药,那么系统将正常工作,如红外传感器将检测盒子是否未打开,ESP-01将发送有关使用SMTP2GO提醒服药的邮件。您还将在串行监视器中获得发送邮件的确认,如下所示。
这是药物提醒系统发送的邮件样本,可以有相应的更改。
代码的解释
首先,我们必须下载并安装NTP库到ESP8266。NTP Client有很多可用的库。您可以从Arduino IDE安装它们中的任何一个。在本教程中,我安装了Taranais的NTPClient库,因为它易于使用,并且具有从NTP服务器获取日期和时间的功能。ESP8266 NodeMCU可以使用Arduino IDE轻松编程。
要安装NTP库,首先使用上面的链接下载库,然后使用Arduino IDE安装。要安装它,请转到Sketch > Include Library > Add . Zip Library,然后通过转到下载Zip文件夹的位置打开Zip文件夹并重新启动Arduino IDE。
NTPClient库附带了示例。打开Arduino IDE和Goto示例> NTPClient > Advanced。这个草图中给出的代码在串行监视器上显示来自NTP服务器的时间。
在这里我们解释了完整的程序,以了解项目的工作原理。
首先包括所有必要的库
要请求日期和时间,我们必须初始化时间客户端与NTP服务器的地址。为了更好的准确性,选择NTP服务器的地址更接近您的地理区域。这里我们使用“pool.ntp.org”,提供来自世界各地的服务器。如果您希望从亚洲选择服务器,您可以使用“asia.pool.ntp.org”。timeClient还以毫秒为单位获取时区的UTC时间偏移量。例如,印度的UTC偏移量是+5:30,所以将这个偏移量转换为毫秒,等于5*60*60+30*60 = 19800。
连接Wi-Fi:
在循环函数中,时间每次都会更新。变量“obs”存储来自红外传感器的数字值,“tt”存储时间。创建一个计数器“cnt”,它将计算在该时间之前打开盒子的次数。
下面的代码检查是否在服药前打开盒子。计数器“cnt”随着盒子的打开而增加。
如果计数器“cnt”为0,则表示在发送邮件的时间之前盒子没有打开,如果有人在时间之前打开盒子,那么它只是在串行监视器上显示“药物已服用”的信息。
Client.connect()函数,使用SMTP服务器和SMTP端口连接到SMTP服务器。如果连接建立成功并使用EHLO命令确认服务器,则给出“1”。
将编码的用户名和密码发送到服务器。我们粘贴到记事本中的SMTP2GO的用户名和密码被编码为base64值。编码为base64值的过程如上所示。
认证成功后,完整的电子邮件将由“To”、“From”、“Subject”、“Body”等字段组成。
发送完数据后,发送QUIT命令完成邮件。
这就是使用ESP-01模块轻松制作物联网医疗报警系统的方法。
本文编译自iotdesignpro