找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14774|回复: 44
打印 上一主题 下一主题
收起左侧

ESP8266+51单片机WIFI控制多路遥控开关程序设计

  [复制链接]
跳转到指定楼层
楼主
这是一个基于单片机WIFI多路遥控开关设计,里面有文档,程序,图片等资料

制作出来的实物图如下:


电路原理图如下:


Wifi开关元件清单

1)    9*15万用板
2)    STC89C52单片机
3)    40脚IC座
4)    11.0592MHz晶振
5)    30pF瓷片电容*2
6)    10uF电解电容
7)    ESP8266模块
8)    2*4P排母
9)    2P排母*2
10)    3.3V稳压模块
11)    2P接线端子*3
12)    继电器*3
13)    3MM LED灯*3(红、绿、蓝)
14)    8550三极管*3
15)    按键
16)    1k电阻*6
17)    10k电阻
18)    自锁开关
19)    DC电源插座
20)    USB电源线
21)    导线
22)    手机APP(赠送)

1、单片机是通用的无论51还是52、无论stc还是at都一样,引脚功能都一样。
   程序也是一样的。
2、原理图中的.ddb、.Bkp等格式是要用protelse打开的,没有软件的不要紧,
   我已帮您转换成word格式和pdf格式的了。
3、程序中的.c文件可以用记事本(文本文档)打开,就是程序了。其他的是写程序是自动
   生成的,没什么用的。
4、可以按照正面布局,不要按照实物的背面焊接,要按照原理图焊接。

单片机多路遥控开关源程序如下:
  1. /********************************************************************/
  2. #include <REGX51.H>
  3. #define uint unsigned int
  4. #define uchar unsigned char   
  5. sbit LED0=P2^0;          //红灯
  6. sbit LED1=P2^3;                //黄灯
  7. sbit LED2=P2^6;            //绿灯

  8. /*****************相关变量**************/
  9. uchar Receive,i,qj,yz,zz,ht;                              
  10. uint n;  
  11. uchar Recive_table[40];                  //用于接收wifi模块反馈到MCU上的数据  

  12. /*******************************************************************
  13. 名称:延时函数  作用:毫秒级延时,微妙级延时函数,为数据收发完成作等待.......  
  14. ********************************************************************/
  15. void ms_delay(uint t)
  16. {  
  17.         uint i,j;  
  18.         for(i=t;i>0;i--)   
  19.         for(j=110;j>0;j--);
  20. }   

  21. void us_delay(uchar t)
  22. {  
  23.         while(t--);
  24. }         

  25. void Uart_Init()                                //使用定时器1作为波特率发生器(STC89C52、STC89C51、AT89C51等均可)
  26. {  
  27.     TMOD = 0x20;
  28.     SCON = 0x50;                                 //设置串行方式
  29.     TH1 = 0xFD;                                         //波特率9600
  30.     TL1 = TH1;
  31.     PCON = 0x00;
  32.     EA = 1;                                                //总中断打开
  33.     ES = 1;                                                //开串口中断  
  34.     TR1 = 1;                                        //启动定时器1
  35. }

  36. /********************************************************************
  37. 名称:串口发送函数  功能:MCU向无线WIFI模块ESP8266发送数据  
  38. ********************************************************************/
  39. void Send_Uart(uchar value)
  40. {  
  41.         ES=0;                                                  //关闭串口中断  
  42.         TI=0;                                           //清发送完毕中断请求标志位   
  43.         SBUF=value;                                 //发送  
  44.         while(TI==0);                                 //等待发送完毕   
  45.         TI=0;                                           //清发送完毕中断请求标志位   
  46.         ES=1;                                                  //允许串口中断  
  47. }  

  48. /********************************************************************
  49. 名称:WIFI模块设置函数  作用: 启动模块,以便可以实现无线接入和控制  
  50. ********************************************************************/

  51. void ESP8266_Set(uchar *puf)         // 数组指针*puf指向字符串数组               
  52. {   
  53.         while(*puf!='\0')                    //遇到空格跳出循环  
  54.         {   
  55.                 Send_Uart(*puf);                  //向WIFI模块发送控制指令。   
  56.                 us_delay(5);   
  57.                 puf++;   
  58.         }  
  59.         us_delay(5);  
  60.         Send_Uart('\r');                         //回车  
  61.         us_delay(5);  
  62.         Send_Uart('\n');                           //换行  
  63. }

  64. /********************************************************************
  65. 名称:主函数  作用:程序的执行入口  
  66. ********************************************************************/

  67. void main()
  68. {         
  69.         Uart_Init();                                                                                        //波特率发生器
  70.         ms_delay(2000);
  71.         ESP8266_Set("AT+CWMODE=2");                                                         //设置路由器模式1 station,模式2 AP,模式3 station+AP混合模式   
  72.         ms_delay(2000);
  73. //        ESP8266_Set("AT+RST");                                                                         //重新启动wifi模块            
  74. //  ms_delay(2000);
  75.         ESP8266_Set("AT+CWSAP=\"wifi_yuan\",\"123456789\",11,4");          //AT+CWSAP="wifi_yuan","123456789",11,4  设置模块SSID:WIFI, PWD:密码 及安全类型加密模式(WPA2-PSK)
  76.         ms_delay(2000);
  77.         ESP8266_Set("AT+CIPMUX=1");                                                                //开启多连接模式,允许多个各客户端接入
  78.         ms_delay(2000);
  79.         ESP8266_Set("AT+CIPSERVER=1,5000");                                          //启动TCP/IP 实现基于网络//控制         ESP8266_Set("AT+CIPSERVER=1,5000");  
  80.         ms_delay(2000);
  81.         ESP8266_Set("AT+CIPSTO=0");                                                         //永远不超时
  82.         ES=1;                                                                                           //允许串口中断                 
  83.         qj=1;
  84.         zz=1;
  85.         yz=1;
  86.         ht=1;
  87.         LED0=1;
  88.         LED1=1;
  89.         LED2=1;
  90.         while(1)   
  91.         {   
  92.                 if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭   
  93.                 {           
  94.                         if((Recive_table[9]=='G')&&(Recive_table[10]=='P'))            
  95.                         {      
  96.                                 if(Recive_table[15]=='0')      
  97.                                 {      
  98.                                         LED0=0;                         //红灯亮                          
  99.                                 }                                
  100.                                 else
  101.                                 if (Recive_table[15]=='1')      
  102.                                 {              
  103.                                         LED0=1;                         //红灯灭
  104.                                 }
  105.                                 else
  106.                                 if (Recive_table[15]=='2')      
  107.                                 {              
  108.                     LED1=0;            //黄灯亮           
  109.                                 }
  110.                                 else
  111.                                 if (Recive_table[15]=='3')      
  112.                                 {              
  113.                         LED1=1;                    //黄灯灭
  114.                                 }
  115.                                 else
  116.                                 if (Recive_table[15]=='4')      
  117.                                 {              
  118.                         LED2=0;                       //绿灯亮
  119.                                 }  
  120.                                 else
  121.                                 if (Recive_table[15]=='5')      
  122.                                 {              
  123.                         LED2=1;                       //绿灯灭
  124.                                 }                                                                                                                                                            
  125.                         }  
  126.                 }
  127.           }   
  128. }   

  129. /*********************************************************************  
  130. 名称:串行通讯中断  作用:发送或接收结束后进入该函数,对相应的标志位软件清0,实现模块对数据正常的收发。  
  131. ********************************************************************/

  132. void Uart_Interrupt() interrupt 4         
  133. {   
  134.         static uchar i=0;  
  135.         if(RI==1)  
  136.         {   
  137.                 RI=0;   
  138.                 Receive=SBUF;                                                        //MCU接收wifi模块反馈回来的数据      
  139.                 Recive_table[i]=Receive;   
  140.                 if((Recive_table[i]=='\n'))
  141.                 {                     
  142.                         i=0;
  143.                 }   
  144.                 else i++;                                                                                  //遇到换行 重新装值  
  145.         }   
  146.         else TI=0;   
  147. }  
复制代码

所有资料51hei提供下载:
50基于单片机WIFI多路遥控开关设计.7z (2.5 MB, 下载次数: 723)


评分

参与人数 2黑币 +55 收起 理由
mashuiyou + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏43 分享淘帖 顶5 踩
回复

使用道具 举报

来自 2#
ID:647953 发表于 2019-11-23 17:06 | 只看该作者
if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭   
                        
没有看到D的判断
                        

if((Recive_table[9]=='G')&&(Recive_table[10]=='P'))   
这行是啥意思

求求高手解释下
回复

使用道具 举报

板凳
ID:222183 发表于 2019-4-16 11:41 | 只看该作者
非常感谢解了我的燃眉之急
回复

使用道具 举报

地板
ID:493109 发表于 2019-4-16 13:33 | 只看该作者
先保存,等以后试试,是不是完全资料能一次成功.谢谢
回复

使用道具 举报

5#
ID:92810 发表于 2019-5-27 10:27 | 只看该作者
谢谢楼主分享了,学习一波去
回复

使用道具 举报

6#
ID:484845 发表于 2019-5-28 18:21 | 只看该作者
谢谢你,很有帮助
回复

使用道具 举报

7#
ID:525478 发表于 2019-6-12 09:56 | 只看该作者
谢谢楼主分享了  正需要
回复

使用道具 举报

8#
ID:312929 发表于 2019-7-8 21:56 | 只看该作者
在么,我这个连接不上什么原因?
回复

使用道具 举报

9#
ID:56665 发表于 2019-7-9 08:16 | 只看该作者
怎么能够远程控制的,写一个帖子。
回复

使用道具 举报

10#
ID:167337 发表于 2019-7-9 08:30 | 只看该作者
楼主,资料很详细,值得学习!谢谢楼主分享好资源
回复

使用道具 举报

11#
ID:577538 发表于 2019-7-10 12:38 | 只看该作者
问一下,为什么要外接一个晶振,C52不是自带晶振吗?
回复

使用道具 举报

12#
ID:572103 发表于 2019-8-10 17:59 | 只看该作者
非常想要学习一下,有没有APP的源码?
回复

使用道具 举报

13#
ID:630282 发表于 2019-11-4 19:45 | 只看该作者
学习做的第二个东西。感谢分享。
回复

使用道具 举报

14#
ID:635750 发表于 2019-11-5 06:10 来自手机 | 只看该作者
学习一下,很感兴趣
回复

使用道具 举报

15#
ID:385637 发表于 2019-11-7 16:59 | 只看该作者
谢谢楼主分享那么好的资料!
回复

使用道具 举报

16#
ID:77126 发表于 2019-11-12 20:49 | 只看该作者
非常感谢楼主无私分享,助我学习,解我燃眉之急
回复

使用道具 举报

17#
ID:396487 发表于 2019-11-13 10:53 来自手机 | 只看该作者
好像你拷贝我的吧?
回复

使用道具 举报

18#
ID:573271 发表于 2019-11-14 16:59 | 只看该作者
非常感谢楼主无私分享,助我学习,解我燃眉之急
回复

使用道具 举报

19#
ID:613618 发表于 2019-11-14 21:46 来自手机 | 只看该作者
能用吗
回复

使用道具 举报

20#
ID:642363 发表于 2019-11-15 03:36 | 只看该作者

非常感谢楼主无私分享,助我学习,解我燃眉之急
回复

使用道具 举报

21#
ID:642933 发表于 2019-11-21 22:43 | 只看该作者
你好 我用了你的例程 但是手机发送字符1的时候单片机没有反应 测试好多遍 单片机都没有反应 这是为什么呢  想请教一下
回复

使用道具 举报

22#
ID:634862 发表于 2019-11-23 20:12 | 只看该作者
下载了三个,对于我学习单片机挺有帮助的,真心感谢这个网站,希望可以提供点玩具车遥控代码和电路图
回复

使用道具 举报

23#
ID:93929 发表于 2019-11-24 20:47 | 只看该作者
手机APP是在哪里下载
回复

使用道具 举报

24#
ID:137736 发表于 2019-11-24 22:06 来自手机 | 只看该作者
用单片机控制,电路有点麻烦
回复

使用道具 举报

25#
ID:218360 发表于 2019-11-25 13:35 | 只看该作者
使用安信可的模块把。有模块指令吗?
回复

使用道具 举报

26#
ID:686631 发表于 2020-1-17 16:58 | 只看该作者
谢谢楼主分享,正在学习中
回复

使用道具 举报

27#
ID:56960 发表于 2020-7-10 15:18 | 只看该作者
非常感谢楼主的分享!已收藏了
回复

使用道具 举报

28#
ID:605585 发表于 2020-7-10 15:54 | 只看该作者
挺好的,感谢楼主,也希望能加入我的STC51单片机的开发932747872,分享技术,分享心得。
回复

使用道具 举报

29#
ID:801121 发表于 2020-7-10 16:29 | 只看该作者
非常感谢楼主无私分享,助我学习,解我燃眉之急
回复

使用道具 举报

30#
ID:65237 发表于 2020-7-28 22:06 来自手机 | 只看该作者
楼主按照你指导,模块wifi手机能连上 但手机app打开上面第一排显示TCP服务器IP 192. 168.4.1第二排是TCP通信端口5000  上面显示未连接 请问一二排怎么设置 手机app 模块 8266 无线路由器  你的贴中没有提到路由器那里的设置 是不用路由器吗 但我看APP上面一二排好像要用路由器新手望指点

Screenshot_2020-07-28-21-46-12-788_com.newapp.png (44.59 KB, 下载次数: 19)

Screenshot_2020-07-28-21-46-12-788_com.newapp.png
回复

使用道具 举报

31#
ID:65237 发表于 2020-7-28 22:10 来自手机 | 只看该作者
揩油鹏 发表于 2019-11-21 22:43
你好 我用了你的例程 但是手机发送字符1的时候单片机没有反应 测试好多遍 单片机都没有反应 这是为什么呢   ...

你好 连上了吗 ?你是模块+单片机 app 有无线路由器没 我的手机连上模块了 app连不上
回复

使用道具 举报

32#
ID:809905 发表于 2020-7-31 07:18 | 只看该作者
51hei电控1125 发表于 2019-11-23 17:06
if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时 ...

我也是这一块搞不懂
回复

使用道具 举报

33#
ID:65237 发表于 2020-7-31 17:23 来自手机 | 只看该作者
有按照楼主做成功的没,我做的wifi模块和手机联上了 但app和模块总是显示未连接  望师傅们指点
回复

使用道具 举报

34#
ID:65237 发表于 2020-8-2 11:46 | 只看该作者
坛友们有没有APP和模块能正常通信成功的
回复

使用道具 举报

35#
ID:61390 发表于 2020-8-3 15:31 | 只看该作者
DING,谢谢,正需要此方面资料!
回复

使用道具 举报

36#
ID:724172 发表于 2020-10-10 09:33 | 只看该作者
如果能与天猫精灵连上就perfect了
回复

使用道具 举报

37#
ID:849826 发表于 2020-12-7 14:34 来自手机 | 只看该作者
程序里面的指令无法修改8266的wifi名称和端口号,导致手机软件TCP连不上
回复

使用道具 举报

38#
ID:849826 发表于 2020-12-7 22:01 来自手机 | 只看该作者
8266- 01s原来的固件无法用AT指令修改波特率,重新刷的固件,用AT指令修改波特率为9600,8266连到单片机上,单片机里面的程序能够修改wifi名称和密码,能够设置端口,手机TCP软件能够连上,发送字符,发现单片机没反应,问了好多人也没给出合理的答案
回复

使用道具 举报

39#
ID:849826 发表于 2020-12-7 22:04 来自手机 | 只看该作者
对照蓝牙遥控开关里面的按键程序,把他的按键程序部分删掉,把蓝牙遥控开关里面的程序写进去,编译通过,下载,上电,TCP软件发送字符,单片机能够做出反应,至此局域网wifi遥控开关完成,里面的按键程序改成8路遥控的了
回复

使用道具 举报

40#
ID:849826 发表于 2020-12-7 22:14 来自手机 | 只看该作者
重要的一点82866必须用AT指令修改波特率9600,单片机才能和8266通信,如果不能修改波特率,请重新刷个固件,再试试。一个遥控开关研究了两天,才做成功。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表