基于物聯(lián)網(wǎng)的藥物提醒系統(tǒng)與電子郵件警報
掃描二維碼
隨時隨地手機(jī)看文章
在我們忙碌忙碌的生活中,我們有時會忘記按時吃藥。在醫(yī)院里,醫(yī)生很難提醒每個病人按時服藥。對于這個問題的完美解決方案應(yīng)該是一個自動提醒警報系統(tǒng),它將通過發(fā)送電子郵件/短信或觸發(fā)一些警報來提醒患者。在本教程中,我們將使用ESP8266-01板構(gòu)建一個物聯(lián)網(wǎng)藥物提醒項(xiàng)目,該項(xiàng)目將從互聯(lián)網(wǎng)(NTP服務(wù)器)獲取時間,并發(fā)送電子郵件作為提醒,根據(jù)用藥時間表服藥。
組件的要求
?ESP8266-01
?紅外傳感器
?3.3 V電源
?按鈕
?FTDI Board
?焊絲
?跳線
線路圖
ESP8266-01 wifi模塊
ESP8266-01是一種Wi-Fi模塊,具有由喜訊通制造的板載微控制器。該模塊幫助微控制器通過UART通信使用AT命令連接到Wi-Fi網(wǎng)絡(luò)。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可以通過多種方式編程,但在本項(xiàng)目中,我們將使用FTDI串行適配器模塊對其進(jìn)行編程。您也可以使用USB到TTL轉(zhuǎn)換器來編程。ESP8266不是面包板友好的,所以在這里我已經(jīng)按照上面的電路圖焊接了一個穿孔板上的所有組件。該板可用于未來項(xiàng)目中ESP8266的編程。查看有關(guān)如何使用FTDI模塊對ESP-01進(jìn)行編程的詳細(xì)教程。
這里一個帶有上拉電阻的復(fù)位按鈕用于復(fù)位Wi-Fi模塊,一個跳線開關(guān)用于在可編程模式下切換模塊。在編程模式下,借助跳線帽將GPIO0引腳(Flash引腳)接地,打開后可作為GPIO引腳使用。
NTP (Network Time Protocol)協(xié)議
NTP是非常古老的網(wǎng)絡(luò)互聯(lián)網(wǎng)協(xié)議(IP),用于同步系統(tǒng)和數(shù)據(jù)網(wǎng)絡(luò)之間的時間。同步計算機(jī)時鐘時間與極端精度NTP使用協(xié)調(diào)世界時,在較小的網(wǎng)絡(luò)上提供更高的精度-在局域網(wǎng)中下降到一毫秒。NTP以UTC作為時間基準(zhǔn),在Internet上提供準(zhǔn)確、同步的時間。
NTP工作于客戶端-服務(wù)器模式,其中NTP是服務(wù)器,請求設(shè)備(如ESP8266-01)充當(dāng)客戶端??蛻舳讼騈TP服務(wù)器發(fā)送請求,NTP服務(wù)器返回包含時間戳和時區(qū)相關(guān)信息的數(shù)據(jù)包。
紅外傳感器
紅外傳感器是一種通過感應(yīng)物體反射的紅外輻射來探測物體的電子設(shè)備。它主要由一個發(fā)射紅外LED和一個接收光電二極管組成。它可以探測波長從700nm到1mm的紅外輻射。當(dāng)一個特定的正電壓施加在發(fā)射LED上時,它就會發(fā)射紅外線。如果這些光線落在某個物體上,那么該物體就會將接收到的紅外線反射回去。接收器二極管在其兩端產(chǎn)生電壓,該電壓取決于物體反射的光的強(qiáng)度。通常紅外接收LED較暗(黑色),而發(fā)射器是透明的顏色。本項(xiàng)目將在藥箱內(nèi)放置一個紅外傳感器,用于檢測藥箱的開合。
配置SMTP2GO發(fā)送郵件提醒
SMTP(簡單郵件傳輸協(xié)議)是一個用于自動發(fā)送和接收來自遠(yuǎn)程位置的大量電子郵件的平臺。由于其快速可靠的服務(wù),開發(fā)者和營銷人員主要使用它來節(jié)省他們的時間,以一種安全的方式發(fā)送電子郵件。它的服務(wù)器和數(shù)據(jù)中心遍布世界各地,這有助于它選擇最近的服務(wù)器,從而在發(fā)送和接收電子郵件時提供最快的連接。它可以用于物聯(lián)網(wǎng)項(xiàng)目,在發(fā)生特定任務(wù)時自動發(fā)送電子郵件。在這個項(xiàng)目中,當(dāng)火焰?zhèn)鞲衅鳈z測到火災(zāi)時,我們將使用SMTP2GO發(fā)送電子郵件警報。
設(shè)置SMTP2Go:
登錄,點(diǎn)擊Try SMTP2GO Free。
填寫您的姓名,電子郵件id和密碼的詳細(xì)信息,并點(diǎn)擊提交。然后,它將重定向到一個頁面,要求您激活SMTP2GO。
轉(zhuǎn)到您的郵箱,點(diǎn)擊SMTP2GO收到的郵件。點(diǎn)擊激活帳戶。
現(xiàn)在輸入用戶名,即您的電子郵件id和密碼。您的用戶名將打開一個新頁面。將這些用戶名和密碼保存在記事本文件中,這將在稍后的Arduino IDE代碼中用到?,F(xiàn)在點(diǎn)擊設(shè)置,然后點(diǎn)擊用戶。將打開一個包含您的用戶名和SMTP服務(wù)器詳細(xì)信息的新頁面。保存SMTP服務(wù)器和SMTP端口,因?yàn)檫@些將在Arduino代碼中用于與SMTP服務(wù)器連接。
編碼為Base64值
在將用戶名和密碼發(fā)送到SMTPTOGO服務(wù)器之前,我們需要將它們編碼為Base64。
這里只需輸入要編碼為base64的用戶名和密碼,然后單擊encode以生成編碼值。復(fù)制并保存已編碼的值。
例如,如果您的用戶名是,那么在給定的文本區(qū)域輸入此用戶名,然后單擊“編碼”。編碼后的base64值為“cGFzc3dvcmQ=”。對于密碼也同樣如此。
我們之前在恐慌報警系統(tǒng)和物聯(lián)網(wǎng)火災(zāi)報警系統(tǒng)中使用了SMTP2GO服務(wù)。
物聯(lián)網(wǎng)醫(yī)藥提醒報警器的工作原理
此藥物提醒項(xiàng)目的連接已經(jīng)顯示在上面的電路圖中。這里FTDI的RX引腳連接到ESP-01的TX引腳,F(xiàn)TDI的TX引腳連接到ESP-01的RX引腳。由于我們從FTDI獲得的輸出電壓約為4伏,因此它不能用于為ESP-01供電,因?yàn)樗鼤p壞ESP。因此我們將使用面包板電源的3.3 v直流電源,該電源從適配器輸入電源,并提供5伏和3.3伏的雙輸出。這個面包板電源模塊是按照CircuitDigest上的本教程創(chuàng)建的。
確保FTDI和ESP-01的接地與電源模塊接地相連。ESP-01的GPIO 2引腳與IR Sensor的數(shù)據(jù)引腳連接,放置在藥箱內(nèi)部,用于檢測藥箱的開合。
現(xiàn)在復(fù)制教程末尾給出的完整代碼并粘貼到Arduino IDE中。將Wi-Fi憑證替換為您的SSID和密碼。將“SMTP2GO”的用戶名和密碼修改為Base 64。將flash引腳的GPIO0接地進(jìn)行編程模式,并通過USB口將FTDI與PC連接。點(diǎn)擊上傳,按重置按鈕2-3次。上傳代碼成功后,斷開GPIO0引腳與地的連接,按下Reset按鈕一次,打開串口監(jiān)視器查看狀態(tài)信息。
串行監(jiān)視器會顯示時間,No。打開藥盒服藥的次數(shù)和藥盒狀態(tài)(關(guān)閉/打開)。假設(shè)服藥時間是下午12點(diǎn),如果你在12點(diǎn)之前已經(jīng)服藥,那么在12點(diǎn)它會顯示“已經(jīng)服藥”的信息。如果您在中午12點(diǎn)之前沒有服藥,那么系統(tǒng)將正常工作,如紅外傳感器將檢測盒子是否未打開,ESP-01將發(fā)送有關(guān)使用SMTP2GO提醒服藥的郵件。您還將在串行監(jiān)視器中獲得發(fā)送郵件的確認(rèn),如下所示。
這是藥物提醒系統(tǒng)發(fā)送的郵件樣本,可以有相應(yīng)的更改。
代碼的解釋
首先,我們必須下載并安裝NTP庫到ESP8266。NTP Client有很多可用的庫。您可以從Arduino IDE安裝它們中的任何一個。在本教程中,我安裝了Taranais的NTPClient庫,因?yàn)樗子谑褂?,并且具有從NTP服務(wù)器獲取日期和時間的功能。ESP8266 NodeMCU可以使用Arduino IDE輕松編程。
要安裝NTP庫,首先使用上面的鏈接下載庫,然后使用Arduino IDE安裝。要安裝它,請轉(zhuǎn)到Sketch > Include Library > Add . Zip Library,然后通過轉(zhuǎn)到下載Zip文件夾的位置打開Zip文件夾并重新啟動Arduino IDE。
NTPClient庫附帶了示例。打開Arduino IDE和Goto示例> NTPClient > Advanced。這個草圖中給出的代碼在串行監(jiān)視器上顯示來自NTP服務(wù)器的時間。
在這里我們解釋了完整的程序,以了解項(xiàng)目的工作原理。
首先包括所有必要的庫
要請求日期和時間,我們必須初始化時間客戶端與NTP服務(wù)器的地址。為了更好的準(zhǔn)確性,選擇NTP服務(wù)器的地址更接近您的地理區(qū)域。這里我們使用“pool.ntp.org”,提供來自世界各地的服務(wù)器。如果您希望從亞洲選擇服務(wù)器,您可以使用“asia.pool.ntp.org”。timeClient還以毫秒為單位獲取時區(qū)的UTC時間偏移量。例如,印度的UTC偏移量是+5:30,所以將這個偏移量轉(zhuǎn)換為毫秒,等于5*60*60+30*60 = 19800。
連接Wi-Fi:
在循環(huán)函數(shù)中,時間每次都會更新。變量“obs”存儲來自紅外傳感器的數(shù)字值,“tt”存儲時間。創(chuàng)建一個計數(shù)器“cnt”,它將計算在該時間之前打開盒子的次數(shù)。
下面的代碼檢查是否在服藥前打開盒子。計數(shù)器“cnt”隨著盒子的打開而增加。
如果計數(shù)器“cnt”為0,則表示在發(fā)送郵件的時間之前盒子沒有打開,如果有人在時間之前打開盒子,那么它只是在串行監(jiān)視器上顯示“藥物已服用”的信息。
Client.connect()函數(shù),使用SMTP服務(wù)器和SMTP端口連接到SMTP服務(wù)器。如果連接建立成功并使用EHLO命令確認(rèn)服務(wù)器,則給出“1”。
將編碼的用戶名和密碼發(fā)送到服務(wù)器。我們粘貼到記事本中的SMTP2GO的用戶名和密碼被編碼為base64值。編碼為base64值的過程如上所示。
認(rèn)證成功后,完整的電子郵件將由“To”、“From”、“Subject”、“Body”等字段組成。
發(fā)送完數(shù)據(jù)后,發(fā)送QUIT命令完成郵件。
這就是使用ESP-01模塊輕松制作物聯(lián)網(wǎng)醫(yī)療報警系統(tǒng)的方法。
本文編譯自iotdesignpro