最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

使用ESP8266土壤水分状况

时间:2017-05-18 09:10来源:未知 作者:admin 点击:
你好朋友,在下面我们将学习得到的土壤中植物生长的水分状况。 我们将发送一封电子邮件,将土壤中的水含量显示。 在这里,我们将使用esp8266-01,因为它不需要任何额外的漏钢板或盾牌。 同时,它价格便宜且规模很
使用ESP8266土壤水分状况

你好朋友,在下面我们将学习得到的土壤中植物生长的水分状况。我们将发送一封电子邮件,将土壤中的水含量显示。在这里,我们将使用esp8266-01,因为它不需要任何额外的漏钢板或盾牌。同时,它价格便宜且规模很小。让我们开始做项目!!!

步骤1:所需材料—

使用ESP8266土壤水分状况

1)esp8266-01。

2)土壤水分传感器。

3)ft232rl USB转UART突破板。

4)导线。

5)迷你USB电缆。

6)一个Arduino IDE预笔记本电脑安装。

7)一个G-Mail账户。

步骤2:谷歌邮箱设置—

使用ESP8266土壤水分状况

在您创建您自己的Gmail帐户,登录并点击小圆圈显示您的帐户的标识。

现在点击按钮,显示我的帐户。一个新的页面打开。现在点击登录和安全,使“允许在页面底部的不安全应用程序”。

这意味着应用程序只需要你的电子邮件和密码,登录到您的Gmail帐户。

如果你担心安全问题,只是使用不同的帐户。

步骤3:示意图—

连接同时上传代码—

ESP8266FTDI突破板

GPIO 0 - GND

接地接地

VCC VCC -

ch_pd - VCC

RX - TX

Tx - Rx

连接后上传完成—

<u>ESP8266</u> - <u>FTDI突破板</u>

接地:接地

VCC VCC -

ch_pd - VCC

ESP8266土壤水分传感器

GPIO 2 - SIG

接地接地

VCC VCC -

步骤4:代码—

安装—

1)上传的代码,首先你必须包括JSON文件包括在板截面的ESP板。为此,复制下面的文本(选择文本并按Ctrl + C),打开Arduino IDE去文件菜单,点击喜好,去额外的董事经理网址粘贴(点击白框并点击Ctrl + V)复制的文本,然后单击“确定”按钮。

http://arduino.esp8266.com/stable/package_esp8266com_index.json

现在检查如果加入ESP板,进入工具菜单,然后选择相应的除尘板板。选择正确的端口的计算机,FTDI突破板连接。

代码—

gsender.cpp和gsender .h文件正在使用,从教学“ESP8266 G-Mail发件人”的Borya。

打开Arduino IDE和复制下面的代码—


		

#包括<< esp8266wifi。” #包括“gsender。”

#定义干0湿1 #定义

布尔状态=干; 布尔currentState =;

# pragma区域全局 const char* SSID =“”;// WiFi网络名称 const char *密码=“”;// WiFi网络密码 uint8_t connection_state = 0;//连接到WiFi或不 uint16_t reconnect_interval = 10000;//如果没有连接等待时间再试一次 #语用铁心端部定点企业

uint8_t wificonnect(const char * nssid = nullptr,const char * npassword = nullptr) { 静态uint16_t尝试= 0; 串口打印(“连接”); 如果(nssid){ WiFi。开始(nssid,npassword); 系列。println(nssid);其他 } { WiFi。开始(SSID,密码); 系列。

uint8_t i = 0; 而(WiFi!= wl_connected &我+ + < 50) { 延迟(200); 串口打印(“。”); } +尝试; 串行out.println(“”); 如果(我= = 51){ 串口打印(“连接超时的尝试::“); 系列。println(未遂); 如果(尝试% 2 = = 0) 串行out.println(“检查接入点可用或SSID和密码\r\n”); return false;} 串行 out.println(“连接建立”); 系列。打印(“IP地址”); 系列

无效awaits() { uint32_t TS = millis(); 而!connection_state) { 延迟(50); 如果(millis() >(TS + reconnect_interval)!connection_state){ connection_state = wificonnect(); TS = millis(); } }

无效setup() { 系列。开始(115200); 串行out.println(“读”); connection_state = wificonnect()!connection_state)//如果没有连接到WiFi awaits();/ /不断尝试连接 }

无效loop() { gsender * gsender = gsender::instance();//获取指向类实例 字符串对象=“植物状态”; int模拟值= analogread(2); 延迟(;

如果(模拟值<= 300){ currentState =干; } 如果((模拟值> 300)&(模拟值<950)){ currentState =湿;

如果(当前状态!=初始状态){ 如果((模拟值> 300)&(模拟值<950)){ //潮湿的土壤 如果(gsender ->主题(主题)->发送(“***你的电子邮件地址是***”、“土壤水分适宜。植物是非常快乐的。”)){ 串行out.println(“发送消息”);} { 其他 串口打印(“错误发送信息:”); 系列。println(gsender -> geterror());} }如果 (模拟值<= 300)&(模拟值<950)){ //干土 如果(gsender ->主题(主题)->发送(“***你的电子邮件地址是***”、“土壤水分。植物是非常不幸的。”)){ 串行out.println(“发送消息”);} { 其他 串口打印(“错误发送信息:”); 系列。println(gsender -> geterror());} } } 状态=

现在打开一个新标签,点击向下的箭头在右上角,选择新标签选项,给它一个名字,Gsender.cpp和下面的代码粘贴在该选项卡—


		

#包括“gsender。” gsender * gsender::_instance = 0; gsender::gsender() { } gsender * gsender::instance() { 如果(_instance = = 0) _instance =新gsender; 返回

gsender * gsender::主体(const char*对象) { 删除[ ] _subject; _subject =新字符[ strlen(主体)+ 1 ]; strcpy(_subject,主体); 返回_instance; } gsender * gsender::主体(const string&主体) { 回归主体(

布尔gsender::AwaitSMTPResponse(wificlientsecure客户,const string& RESP,uint16_t超时) { uint32_t TS = millis(); !客户端。available()) { 如果(millis() >(TS +超时)){ _error =“SMTP响应超时!; return false;} } _serverresponce =客户。readstringuntil('\n'); #如果定义(gs_serial_log_1)| |定义(gs_serial_log_2) 系列。println(_serverresponce); # endif 如果(或与_serverresponce。indexOf(RESP)= = 1)返回假

字符串gsender::getlastresponce() { 返回_serverresponce;

const char * gsender::geterror() { 返回_error;

布尔gsender::发送(const string&,const string&消息) { wificlientsecure客户端; #如果定义(gs_serial_log_2) 串口打印(“连接到”); 系列。println(smtp_server); !客户端连接(smtp_server,smtp_port)){ _error =“无法连接到邮件服务器”; return false;} !AwaitSMTPResponse(客户,“220”)){ _error =“连接错误”; return false;

#如果定义(gs_serial_log_2) 串行out.println(“你好朋友:“); # endif 客户端。println(“你好朋友”)!AwaitSMTPResponse(客户,“250”)){ _error =“识别错误”; return false;

#如果定义(gs_serial_log_2) 串行out.println(“登录名:”); # endif 客户端。println(“登录名”); awaitsmtpresponse;

#如果定义(gs_serial_log_2) 串行out.println(“emailbase64_login:”); # endif 客户端。println(emailbase64_login); awaitsmtpresponse;

#如果定义(gs_serial_log_2) 串行out.println(“emailbase64_password:”); # endif 客户端。println(emailbase64_password)!AwaitSMTPResponse(客户,“235”)){ _error =“SMTP AUTH的错误”; return false;} 字符串mailfrom =“邮件来自:<“+字符串(从)+“>”; #如果定义(gs_serial_log_2) 系列。println(mailfrom); # endif println(mailfrom)客户端;

字符串RCPT =“RCPT TO:<“+ +”>“; #如果定义(gs_serial_log_2) 系列。println(RCPT); # endif 客户端。println(RCPT); ;

#如果定义(gs_serial_log_2) 串行out.println(“数据”); # endif 客户端。println(“数据”)!AwaitSMTPResponse(客户,“354”)){ _error =“SMTP数据错误”; return false;} 客户端。println(”:<< +字符串(从)+“>”); 客户端。println(”:<<“+ +”>“); 客户端。打印(“主题:”); 客户端。println(_subject); 客户端。println(“MIME版本:1”); 客户端。println(“Content-Type: text/html;字符集=“UTF-8””); println(”客户端。内容传输编码:7bit”); println()客户端。

”; 客户端。println(体); 客户端。println(“。”)!AwaitSMTPResponse(客户,“250”)){ _error =“发送错误信息”; return false;} 客户端 out.println(“退出”)!AwaitSMTPResponse(客户,“221”)){ _error =“SMTP退出错误”; return false;} 返回true

打开一个新标签,给它起了个名字gsender,标签和粘贴以下代码—


		

#则g_sender #定义g_sender #定义gs_serial_log_1 /打印服务器响应 串行/ #定义gs_serial_log_2 /打印到客户端的命令和服务器的响应 串行#包括<< wificlientsecure。” (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片