当前位置:首页 > 物联网 > IoT设计分享
[导读]在我们忙碌忙碌的生活中,我们有时会忘记按时吃药。在医院里,医生很难提醒每个病人按时服药。对于这个问题的完美解决方案应该是一个自动提醒警报系统,它将通过发送电子邮件/短信或触发一些警报来提醒患者。在本教程中,我们将使用ESP8266-01板构建一个物联网药物提醒项目,该项目将从互联网(NTP服务器)获取时间,并发送电子邮件作为提醒,根据用药时间表服药。

在我们忙碌忙碌的生活中,我们有时会忘记按时吃药。在医院里,医生很难提醒每个病人按时服药。对于这个问题的完美解决方案应该是一个自动提醒警报系统,它将通过发送电子邮件/短信或触发一些警报来提醒患者。在本教程中,我们将使用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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭