ArduinoIDE开发ESP8266 远程控制继电器(物联网插座)之入门篇

版权声明:本文为博主原创文章,若需转载请注明来源。

本文将针对初学者ArduinoIDE开发ESP8266做一个入门引导,让初学者快速实现自己的第一个HelloWord!
这篇文章在心中积攒了很久今天终于得以昭雪,心情无比的激动也十分的沉重,激动是因为我为期一年的ESP8266学习开发终于可以告一段落了,可以来这同大家分享我的学习成果,而“沉重”也是因为我这为期一年的学习,这个学期大四,就在此刻百感交集……打住!再写就变味了,从技术文档变成了情感宣泄了。学习总是痛苦的,刚刚开始学习一个东西要耐得住性子。


##一、工欲善其事,必先利其器

  • 欲练此功,必先自宫(哈哈!开个玩笑)

  • 1、ESP8266(哪一款都行,我用的是ESP8266-01)
    这里写图片描述

  • 2、usb转串口ttl(要有3.3V电源的,ch340,cp2102这些都行)
    这里写图片描述

  • 3、继电器
    这里写图片描述

  • 4、ArduinoIDE 这是我之前收藏的集成开发环境,下载解压直接打开Arduino.exe就行
    集成开发环境下载地址: https://pan.baidu.com/s/1slVw7hV
    (如果你之前也用arduinoIDE且不想两个切换、可以看看这篇文章http://www.arduino.cn/thread-17895-1-1.html我就有这个强迫症)

####我这里用的是物联网继电器模块,专门用于远程控制开关和物联网插座的板子有需要的可以到这个链接购买https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.25911debEcCQSr&ft=t&id=608005506282
在这里插入图片描述


二、纸上得来终觉浅,绝知此事要躬行

  • 1、TTL与ESP连接,详细教程请看http://www.arduino.cn/thread-18958-1-4.html
    这里写图片描述
    按照官方数据:GPIO0 GPIO2 GPIO15 在正常运行GPIO0接高电平, GOIO2 接高电平,GPIO15恒为低。
    GPIO0 为低电平,GPIO2为高电平,GPIO15为低,代表系统进入经过串口升级新程序状态,也就是说下程序的时候GPIO0需要接低电平
    连接好了以后你就可以编写自己的第一个程序了,就向上面链接里的例程一样,当你可以下载你的第一个程序以后我们就进入主题,远程控制继电器

  • 2、利用Doit.am远程信息转发服务实现远程控制(多个客户端连接服务器,一个客户端向服务器发送数据,服务器向其他客户端群发接受到的消息)到这个网站获取自己的IP和端口号http://tcp.doit.am/打开后你会看到这么一个页面,记下端口号和IP下面我们将需要它作为数据中转站,实现远程控制
    这里写图片描述
    刚刚接触的小白估计不太明白,我在此多说几句。我们要实现无论在什么地方只要手机连上网就能控制我们的设备,那么我们就需要有一个云服务器来转发数据,设备和手机同时连上服务器后服务器至少起到一个数据转发的作用,比如设备把数据发给服务器然后服务器再把数据转发给手机,这里我们就是用它的这个功能实现远程数据通信。

  • 3、不说了直接上代码,是时候展现真正的技术了

我用GPIO2控制继电器

#include <ESP8266WiFi.h>
#define JDQ 2
const char* ssid     = "FxMan";//待连接WIFI
const char* password = "115104234";//待连接WIFI密码
const char* serverIP  = "115.29.109.104";//你再网站上得到的IP
int serverPort = 6598;//你在网站上得到的端口号
WiFiClient client;
bool bConnected = false;
char buff[512];
int nm = 0;
void setup() {
  delay(100);
	Serial.begin(115200);
	Serial.println("Startup");
  pinMode(JDQ, OUTPUT);
  WiFi.mode(WIFI_STA);//设置模式为STA
	WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {//等待WiFi连接成功
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

}


void loop() {
  
  
   ClientToServer();
 

}

void ClientToServer()
{
   
  if (bConnected == false)//如果从服务器断开或者连接失败,则重新连接
  {
    if (!client.connect(serverIP, serverPort))//如果连接失败
    {
      Serial.println("connection failed");
      delay(5000);
      return;
    }
    bConnected = true;
    Serial.println("connection ok");
  }
  else if (client.available())//如果有数据到达
  {
    //Serial.println("Data is coming");
    while (client.available())//接收数据
    {
      buff[nm++] = client.read();
      if (nm >= 511) break;
    }
    buff[nm] = 0x00;
    nm=0;
    Serial.print(buff);//打印数据到串口
    if( buff[0]=='A')
    {
      digitalWrite(JDQ, HIGH);//收到数据'A'打开继电器
      
    }
    else 
    {
      digitalWrite(JDQ, LOW);//否则关闭
    }
    //client.print(buff);
    client.flush();//丢弃已写入客户端但尚未读取的字节
  }
   if (client.connected()==false ) {
    Serial.println();
    Serial.println("disconnecting.");
    
     bConnected = false;
  }
    //检查UART端口数据
  if(Serial.available()&&bConnected){
    size_t len = Serial.available();
    //Serial.println(len);
    uint8_t sbuf[len];
    Serial.readBytes(sbuf, len);
    //将UART端口数据推送到服务器,实现双向通信
    client.write(sbuf, len);
  }
}

把上面代码下到ESP8266里,再下载 安卓TCP网络调试助手http://pan.baidu.com/s/1dESMXXZ
更改IP和端口号连接服务器就可以和ESP8266通信了,我的代码是向8266发送A打开继电器,发送其他的关闭继电器,继电器是高电平触发的。
这里写图片描述


三、躬行一张懵逼脸,三言两语怎尽言

看完教程很多人估计仍有疑问,比如说上面那些函数说明意思在什么地方有相应的说明和例子,不要着急下面列出相关参考资料以便大家学习。

  • 1、相关函数说明可参考https://www.arduino.cc/en/Reference/WiFi虽然是英文网页但在各种翻译工具会帮助你的
  • 2、对于没有安卓基础的同学,我推荐一个写安卓应用的软件叫E4A(也叫易安卓)我上面的软件就是用这个写的
  • 3、求学嘛,不耻下问。有什么问题实在解决不了可以发邮件到1151042346@qq.com我将第一时间回复你,毕竟我也是这么过来的。
  • 64
    点赞
  • 362
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
ESP8266是一款流行的物联网开发板,它拥有Wifi模块和强大的处理性能,适用于各种物联网应用。阿里云是国内领先的云计算平台,提供了丰富的物联网平台和服务,可实现远程监控和控制。 要实现ESP8266与阿里云生活物联网平台的配合,我们首先需要在ESP8266上进行相应的编程。我们可以使用Arduino IDE进行编程,将ESP8266继电器连接起来。通过配置ESP8266的Wifi连接,使其能够连入阿里云IoT平台。 在阿里云IoT平台上,我们需要创建一个设备,为其分配一个唯一的设备标识符和密钥。然后,我们编写一个将ESP8266与阿里云平台进行连接的程序,利用设备标识符和密钥进行身份验证。 一旦ESP8266成功连接到阿里云IoT平台,我们可以利用平台提供的API来实现对继电器远程控制。我们可以编写一个程序,通过发送指令到阿里云平台,来打开或关闭继电器。阿里云平台将接收到的指令传递给ESP8266,然后ESP8266将控制指令转化为相应的继电器控制信号。 通过这种方式,我们可以在任何有网络连接的地方,通过手机或电脑远程控制继电器的开关状态。例如,我们可以通过手机上的APP发送指令,让继电器控制房间的灯光或电器设备。 总之,利用ESP8266与阿里云生活物联网平台的配合,我们可以轻松实现远程控制继电器的功能,为我们的生活增添了更多的便利性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值