电子产业一站式赋能平台

PCB联盟网

搜索
查看: 86|回复: 0
收起左侧

全攻略自制esp8266 WIFI智能排插教程

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

积分
2304
发表于 2023-12-30 21:00:00 | 显示全部楼层 |阅读模式

01cpcr5lxcc64087482618.png

01cpcr5lxcc64087482618.png

# n  q1 ~+ r; p, f0 w$ M. c, |一,前言其实自己动手制作一个智能排插很容易,看见网上的教程有点乱,所以我决定自己写一篇,只需要你懂一点编程知识,就可以制作自己专属的智能排插。有兴趣的小伙伴可以往下看,下面我会给出代码和需要购买的硬件,和淘宝购买链接,你们也可以买同款的就行。个人觉得自己制作一个智能排插还是很酷的,这是智能家居的第一步,而且这个教程对于初学者来说也很简单。只需要懂一点点的编程知识和基本的电路知识!准备的硬件材料,材料在淘宝都可以买到,而且便宜。你们可以自己淘宝购买1、一个ESP8266继电器模块;2、220v转5v直流电源模块一个;3、esp8266下载器一个;4、普通排插一个。其实最后就是将这些模块集成在排插里面,让排插变成一个我们可以控制的器件,实物如下图:$ a4 e! J# o0 Z$ F% g9 P0 L

kju4zhcbgjm64087482718.jpg

kju4zhcbgjm64087482718.jpg

6 ?9 _  `4 M, b. U# k2 l; c" _$ Y

01uom3btqrl64087482818.jpg

01uom3btqrl64087482818.jpg

+ E: F* R3 L8 m7 @注意事项:1、将变压模块输入端连接到220V输出端连接到esp8266模块的电源输入端;2、将排插的火线截断,两根分别连接到继电器的com端和nc端; r8 ]! u( I& X2 U
二,编程准备对ESP8266程序写入的教程大致有两种,1是下载别人做好的bin文件包,使用专用软件烧录到ESP8266,我查了下,资料比较多,貌似难度很大;2是使用USB转TTL工具进行写入,先利用Arduino IDE进行写入,我们就用这种方法。1 F) Q8 B/ U2 o' P& ~% |: M6 b  {
打开Arduino IDE,默认的Arduino IDE是没有ESP8266库的,需要我们自己添加上。
' H; v, c- i* |# Q点击Arduino IDE的文件-首选项,在附加开发板管理器网址中填入:: `& f7 _# H+ X

1jbe2wqsagz64087482918.png

1jbe2wqsagz64087482918.png

6 J7 n6 s( J2 y: u
  N  Q% ]7 n0 O# p( D# c3 L

le3eewqehdl64087483018.png

le3eewqehdl64087483018.png

4 f! h. T, X  g% o这些工作都准备好以后我们就可以编程
* {2 ~7 f( p1 Y* a& u
  • // An highlighted block#include #define MAX_SRV_CLIENTS 5    //定义可连接的客户端数目最大值 不能超过5个4 O6 Z" s+ ^: _& [! \0 j
    //设置成TCP连接,服务端WiFiServer server(8080);//服务器端口8080WiFiClient serverClients[MAX_SRV_CLIENTS];//WiFiClient  client;   //创建客户端//const int tcpPort = 8266;//服务器端口//打开继电器uint8_t  tmp1[]= {0xA0,0x01,0x01,0xA2};//关闭继电器uint8_t  tmp2[]= {0xA0,0x01,0x00,0xA1};
    9 w3 |. n9 @! D4 X' D  N# hchar ssid[] = "WWW";  //  你的路由器SSID (name)char password[] = "cc123456"; // 你的wifi密码 passwordString aa = "";//接收到客户端的数据uint8_t fale1 = 0;uint8_t fale2 = 0;//char   *Value16;void setup(){  //这个波特率是和模块的通讯频率,不能更改  Serial.begin(9600);  pinMode(4,OUTPUT);//继电器io  //  IPAddress Localip(192,168,8,107);//指派模块的局域网ip  IPAddress Gateway(192,168,8,1);//局域网网关,路由器ip,这里的ip根据你的路由设置  IPAddress Subnet(255,255,0,0);//局域网子网掩码 ,可以在电脑或者路由器查到  WiFi.config(Localip, Gateway, Subnet);//配置网络  WiFi.begin(ssid, password);//连接wifi  WiFi.mode(WIFI_STA);//wifi为客户端  //启动UART传输和服务器  server.begin();  server.setNoDelay(true);  }  void loop(){  // kongzhi();// if(Serial.available() >0)// { // Value16 =(char*)(Serial.read());  //  }  uint8_t i;  //检测服务器端是否有活动的客户端连接  if (server.hasClient()){    for(i = 0; i       //查找空闲或者断开连接的客户端,并置为可用      if (!serverClients || !serverClients.connected()){        if(serverClients) serverClients.stop();        serverClients = server.available();        continue;      }    }    //若没有可用客户端,则停止连接    WiFiClient serverClient = server.available();    serverClient.stop();  }  //检查客户端的数据  for(i = 0; i     if (serverClients && serverClients.connected()){      if(serverClients.available()){        //从Telnet客户端获取数据,并推送到串口        while(serverClients.available())        {         aa+= char(serverClients.read());//aa就是收到的数据,用来做对比执行操作                 delay(2);}         if(aa == "a")  //接收到字符a打开继电器         {          //回复客户端,已经接收到指令          serverClients.write("kai");                   if(fale1 == 0){            fale1 = 1;            fale2 = 0;         //  int Length1 = sizeof(tmp1);         //打开继电器         for(int j = 0 ; j3 ;j++)         {          Serial.write(tmp1[j]);         //  Serial.print(tmp1[j],HEX);         //  Serial.println("");          }         }         }           if(aa == "b")         {          //关闭继电器           serverClients.write("guan");           if (fale2 == 0){         //  int Length2 = sizeof(tmp2);         fale1 = 0;         fale2 = 1;         for(int j = 0 ; j3 ;j++)         {          Serial.write(tmp2[j]);         //  Serial.print(tmp1[j],HEX);         //  Serial.println("");          }         }         }         if(aa == "c")         {          //心跳包           serverClients.write("ok");          }                    aa = "";
    3 @- U& B" x* Q' P) e2 W      }    }  }}然后就可以烧录程序了。# n$ N( [1 b9 L
    三,烧录1、将esp8266的驱动安装好;2、将esp8266插在烧录器上,使用ARDUINO烧录;3、将烧录好的esp8266插回去继电器模块;- W) J! I* `2 T# M6 ^( r4 }7 V
    四,改装排插1、把220V接在220V转5V的变压模块输入上,注意不要接反了;2、将变压模块输出口接在继电器模块的电源口上;3、之后将排插的火线截断,接在继电器的COM口和NC口上,最后整理一下,把排插盖上。. G& j3 ~7 h  h% i% [) R
    效果图:0 C: C* I5 P( c2 y' _5 J7 L

    ruhxzkf32zs64087483118.png

    ruhxzkf32zs64087483118.png
    ) D/ d8 y) E! I8 c; @2 y& A2 F
    使用TCP测试工具,测试信号是否导通。用电脑打开TCp助手,按图上配置,按连接,然后发送字符a看排插是否通电了。
      s" k! m# \4 a( C

    omfrqgp2ojd64087483219.png

    omfrqgp2ojd64087483219.png

    * ~2 O% O; f" I$ M; v, e) |' ?如果可以通电,再发送b,看是否关闭。如果都可以,那就是已经成功了!经过上面,就可以在局域网控制家中的家电了,现在只是局域网,如果你想在外面查看家中电器的打开或者关闭情况,则你需要部署到服务器,或者你也可以在家里做个内网穿透。# ]" B! L3 H; G; O+ {; P& x
    ==========, C; Y3 K8 T5 ~0 r* F
    往期回顾:一个通道如何捕获PWM的频率和占空比?1 n* M4 S8 u. l( y: ?1 h
    MCU需要去耦电容的原因
    & t: q! Q$ V, G6 dMCU厂商推荐的外围敏感电路设计# I' W) O/ h* s" ?' z' p5 \
    国产单片机的输出比较是小思考/ H) Y0 l  t& |
    MCU厂商推荐的外围敏感电路设计5 M8 [. C2 }0 R9 g9 `
    ==========原文:点击阅读原文
    5 s. Z+ @9 t5 E+ E' H* M作者:放羊的码字猿平台:CSDN
      g/ H2 S; q+ R# b

    leqkeaehyfl64087483319.png

    leqkeaehyfl64087483319.png

    $ }( \1 ?! I$ E

    nkihh2nohvp64087483419.png

    nkihh2nohvp64087483419.png
    # T* b; u4 Y: R$ s8 a$ o) u

    kixd4onyuro64087483519.png

    kixd4onyuro64087483519.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表