找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用51单片机和esp8266实现通过手机app控制单片机小灯

  [复制链接]
跳转到指定楼层
楼主
ID:255806 发表于 2017-11-30 18:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用51单片机和esp8266实现通过手机app控制单片机小灯,也可以控制其他外设,可以自行添加。附件为源程序,app可使用附件里面的安卓手机测试app或者ios系统可以去apple store下载netassist使用。

设计目的:
给所有客户提供一个标准全功能而又经济适用的体验平台!客户拿到手直接测试,而
没有任何争议的环节。
本测试板能完成什么:
拥有本测试板,你可以无需任何其他开发工具,对ESP8266 模块进行AT 类应用与SDK类应用开发。
简单的演示功能:用安卓手机做的一个控制界面,用手机WIFI 和板载WIFI 进行数据交互,让手机控制 板载WIFI 输出数据,板载CPU 收到数据后控制板载LED,和蜂鸣器的动作!当然你还可以进过串口调试工具,直接对板载WIFI 模块进行手动测试!
测试版是一块51/AVR开发板,MCU可更换,板上资源丰富。既可以学习WiFi又能学习单片机,一举两得
下面是收到测试版后的简单说明:
1. 默认收到的开发板内有开发板测试程序,使用WiFi功能时,需要用户把程序烧写到单片机(程序烧写见“KR-51程序烧写说明”)。
2.烧写完程后,连接蓝牙模块,如下图;
上图为收到开发板的跳线的跳线帽位置,只需插USB供电,或者插上独立供电电源供电(独立供电电源不小于5V/600mA)。上电后如果电源灯不亮,请尝试多次开关(左上角开关)。正常上电后可看到模块蓝灯在间歇性闪烁,这是MCU在配置模块作为服务端,在灯无闪烁后,可以在手机上搜索到ESP8266的WiFi名称,安卓手机设置里可以看到这个WIFI,如下图
连上这个WIFI,打开手机端APP(在测试版程序文件夹里),等待模块蓝灯停止闪烁,直接点连接,可以控制LED,蜂鸣器。
  • 如果以上试过后无反应,依旧提示连接失败,请检查模块波特率和单片机是否一致。
上图:(注:此跳线用跳线帽短接3,5 和4,6,代表USB_UART和模块的串口直连,)

查看波特率方法:模块:打开03_调试工具里的“SSCOM”串口调试助手,如果这样显示 代表模块工作在115200波特率下,如果不是,可调节波特率(一般是115200或者9600),直到输出正常字符。这时可通过AT+CIOBAUD=9600,改为9600的波特率. (更多指令请参照指令说明设置)
恢复连接,插上模块,重新连接

单片机源程序如下:
  1. /**************************************************************************************
  2. *功能:Wifi模块测试                                                                                                               *
  3. *说明:手机安装测试APP,手机连接WiFi模块,控制开发板上的LED、蜂鸣器                                          *
  4. *硬件连接:在J10处插上跳线帽  1,3用跳线短路 2,4用跳线短路                                                          *
  5. *作者:研发中心                                                                                                                                                  *
  6. ***************************************************************************************/
  7. #include <REGX52.H>
  8. #include<intrins.h>

  9. typedef unsigned int uint;
  10. typedef unsigned char uchar;
  11. /**串口数据使用**/
  12. #define        RX1_Lenth                32                        //串口接收缓冲长度

  13. uchar        idata RX1_Buffer[RX1_Lenth];        //接收缓冲
  14. uchar        TX1_Cnt;        //发送计数
  15. uchar        RX1_Cnt;        //接收计数
  16. bit                B_TX1_Busy;        //发送忙标志

  17. /*************        端口引脚定义        **************/
  18. sbit LED1=P1^0;//LED1
  19. sbit LED2=P1^1;//LED2
  20. sbit LED3=P1^2;//LED3
  21. sbit DK1=P1^3;//继电器
  22. sbit BEEP=P2^5;//蜂鸣器        

  23. /**wifi模块命令**/
  24. unsigned char RST[8]="AT+RST\r\n";
  25. unsigned char LYMS[13]="AT+CWMODE=2\r\n";
  26. //unsigned char SZLY[38]="AT+CWSAP='ESP8266','0123456789',11,0\r\n";

  27. unsigned char SZDLJ[13]="AT+CIPMUX=1\r\n";
  28. unsigned char KQFU[21]="AT+CIPSERVER=1,5000\r\n";
  29. unsigned char FSSJ[13]="AT+CIPSEND=\r\n";//AT+CIPSEND= 发送数据         


  30. void Delay2(unsigned long cnt)
  31. {
  32.         long i;
  33.          for(i=0;i<cnt*100;i++);
  34. }
  35. void Delay3(unsigned int N)
  36. {
  37.         int i;
  38.         for(i=0;i<N*10;i++);
  39. }



  40. /********************************************************************
  41. * 名称 : Uart_Init()
  42. * 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中断
  43. * 输入 : 无
  44. * 输出 : 无
  45. ***********************************************************************/
  46. void Uart_Init(void)
  47. {
  48.      TMOD = 0x20;   //定时器工作在定时器1的方式2
  49.      PCON = 0x00;   //不倍频
  50.      SCON = 0x50;        //串口工作在方式1,并且启动串行接收        
  51.      TH1 = 0xFd;    //设置波特率 9600
  52.      TL1 = 0xFd;
  53.      TR1 = 1;                //启动定时器1
  54.          ES = 1;                //开串口中断
  55.          EA = 1;                //开总中断
  56.          RX1_Cnt=0;                //接受计数清零
  57.          TX1_Cnt = 0;        //发送计数清零
  58.          B_TX1_Busy = 0;//初始化判忙标志位               
  59. }
  60. /********************************************************************
  61. * 名称 : Main()
  62. * 功能 : 主函数
  63. * 输入 : 无
  64. * 输出 : 无
  65. ***********************************************************************/
  66. void main(void)
  67. {
  68.         char i=0;

  69.         Uart_Init();

  70.         Delay3(2000);
  71.   /******************设置WiFi模块**********************************************/
  72.         for(i=0;i<8;i++)//AT+RST 重启
  73.         {
  74.                 SBUF=RST[i];Delay3(5);
  75.         }
  76.         Delay3(5000);
  77.         for(i=0;i<13;i++)//AT+CWMODE=2 设置成路由模式
  78.         {
  79.                 SBUF=LYMS[i];Delay3(5);
  80.         }
  81.         /*Delay3(1000);
  82.         for(i=0;i<38;i++)//AT+CWSAP="ESP8266","0123456789",11,0 设置路由
  83.         {
  84.                 SBUF=SZLY[i];Delay3(5);
  85.         }*/
  86.         Delay3(3000);
  87.         
  88.         for(i=0;i<13;i++)//AT+CIPMUX=1 设置成多连接
  89.         {
  90.                 SBUF=SZDLJ[i];Delay3(5);
  91.         }
  92.         Delay3(2000);
  93.         for(i=0;i<21;i++)//AT+CIPSERVER=1,5000 开启TCP服务端口
  94.         {
  95.                 SBUF=KQFU[i];Delay3(5);
  96.         }
  97.         Delay3(2000);
  98.         while (1)
  99.         {
  100.         
  101.         }
  102. }

  103. /********************************************************************
  104. * 名称 : Uart_Int()
  105. * 功能 : 串口中断子函数
  106. * 输入 : 无
  107. * 输出 : 无
  108. ***********************************************************************/
  109. void UART1_int (void) interrupt 4
  110. {
  111. //        char i,a,b,c;
  112.         if(RI)
  113.         {
  114.                 RI = 0;
  115.                 RX1_Buffer[RX1_Cnt] = SBUF;                //保存一个字节
  116.                 if(RX1_Buffer[0]==0x45)
  117.                 {
  118.                         RX1_Cnt++;
  119.                 }
  120.                 else
  121.                 {
  122.                         RX1_Cnt=0;
  123.                 }
  124.                 if(RX1_Cnt>=10)
  125.                 {
  126.                         if(RX1_Buffer[0]==0x45&&RX1_Buffer[1]==0x53&&RX1_Buffer[2]==0x50)
  127.                         {
  128.                                 if(RX1_Buffer[4]==0x4C&&RX1_Buffer[5]==0x45&&RX1_Buffer[6]==0x44)//判断LED
  129.                                 {
  130.                                         if(RX1_Buffer[7]==0x31)//判断LED1
  131.                                         {
  132.                                                 if(RX1_Buffer[3]==0x4B)//判断开
  133.                                                 {
  134.                                                         LED1=0;
  135.                                                 }
  136.                                                 if(RX1_Buffer[3]==0x47)//判断关
  137.                                                 {
  138.                                                         LED1=1;
  139.                                                 }
  140.                                         }
  141.                                         if(RX1_Buffer[7]==0x32)//判断LED2
  142.                                         {
  143.                                                 if(RX1_Buffer[3]==0x4B)//判断开
  144.                                                 {
  145.                                                         LED2=0;
  146.                                                 }
  147.                                                 if(RX1_Buffer[3]==0x47)//判断关
  148.                                                 {
  149.                                                         LED2=1;
  150.                                                 }
  151.                                         }
  152.                                         if(RX1_Buffer[7]==0x33)//判断LED3
  153.                                         {
  154.                                                 if(RX1_Buffer[3]==0x4B)//判断开
  155.                                                 {
  156.                                                         LED3=0;
  157.                                                 }
  158.                                                 if(RX1_Buffer[3]==0x47)//判断关
  159.                                                 {
  160.                                                         LED3=1;
  161.                                                 }
  162.                                         }
  163.                                 }
  164.                                 if(RX1_Buffer[4]==0x4A&&RX1_Buffer[5]==0x44&&RX1_Buffer[6]==0x51)//判断继电器
  165.                                 {
  166.                                         if(RX1_Buffer[7]==0x31)//判断LED1
  167.                                         {
  168.                                                 if(RX1_Buffer[3]==0x4B)//判断开
  169.                                                 {
  170.                                                         DK1=1;
  171.                                                 }
  172.                                                 if(RX1_Buffer[3]==0x47)//判断关
  173.                                                 {
  174.                                                         DK1=0;
  175. ……………………

  176. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



以上资料51hei下载地址:
wifi测试程序.zip (2.46 MB, 下载次数: 1246)


评分

参与人数 7黑币 +126 收起 理由
zqy181818 + 5
wefdw + 2 回帖助人的奖励!
Aphroditezero9 + 1 回帖助人的奖励!
chaselbaymax + 5
arthuryu + 8 赞一个!
qjzyx + 5 赞一个!
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:255806 发表于 2017-12-1 11:39 | 只看该作者
以上实验图片来自此款开发板卖家提供的资料
回复

使用道具 举报

板凳
ID:255806 发表于 2017-12-1 11:43 | 只看该作者
这幅图为自己使用苹果手机进行的调试,经检测,板子上的3.3V实际上不够这个电压,所以esp8266模块的供电是使用电池从外部供电的,还有就是实现时,注意各个模块供地。

9D69A02DBC8C474946010FD2B3764EE3.png (120.2 KB, 下载次数: 191)

实验图

实验图
回复

使用道具 举报

地板
ID:255806 发表于 2017-12-3 09:11 | 只看该作者
我全部的资料都分享在上面了
回复

使用道具 举报

5#
ID:272887 发表于 2018-1-7 22:01 | 只看该作者
楼主,我的手机用不了你这个软件,怎么回事
回复

使用道具 举报

6#
ID:373 发表于 2018-2-1 11:33 | 只看该作者
APP用不了,怎么回事呢?
回复

使用道具 举报

7#
ID:66287 发表于 2018-2-9 08:49 | 只看该作者
好贴,谢谢楼主!
回复

使用道具 举报

8#
ID:293625 发表于 2018-4-9 18:29 | 只看该作者
ESP8266需要烧写吗?
回复

使用道具 举报

9#
ID:6428 发表于 2018-4-11 20:53 来自手机 | 只看该作者
hulujia 发表于 2018-4-9 18:21
求分享

谢谢非常不错哦
回复

使用道具 举报

10#
ID:306348 发表于 2018-4-12 13:04 | 只看该作者
萌新有一个问题请教大佬:
我用的和你一样的开发板,然后运行程序没有反应,手机上搜不到wifi,阴差阳错打开了串口调试助手,发现这样的一幕,我每按一次复位,就会从串口输到电脑上一串应该传送给wifi模块的信息。 (试了试,没打开串口调试助手,程序也没有反应)
我刚开始学,不是很懂,是不是我哪连线连错了,把单片机传送给wifi模块的信息传到了电脑上
还是说这两个接口是连通的,发送到wifi模块的信息都能通过数据线显示在电脑上,如果这样的话,我为啥搜不到模块的wifi。。。
回复

使用道具 举报

11#
ID:304623 发表于 2018-4-12 15:00 | 只看该作者
楼主请问电池外部供电怎么实现?是要自己接线吗,不知道用usb转ttl模块接电脑上可以供电吗?
回复

使用道具 举报

12#
ID:302373 发表于 2018-4-16 20:49 | 只看该作者
chaselbaymax 发表于 2018-4-12 13:04
萌新有一个问题请教大佬:
我用的和你一样的开发板,然后运行程序没有反应,手机上搜不到wifi,阴差阳错打 ...

你解决了吗
回复

使用道具 举报

13#
ID:312159 发表于 2018-4-20 08:18 | 只看该作者
谢谢分享
回复

使用道具 举报

14#
ID:306809 发表于 2018-4-29 17:27 | 只看该作者
您的app用不了啊,麻烦问下app向单片机发送的具体是什么字符或字符串呢
回复

使用道具 举报

15#
ID:327484 发表于 2018-5-12 11:17 | 只看该作者
为什么下载了资料里面的程序打不开?
回复

使用道具 举报

16#
ID:332490 发表于 2018-5-17 21:22 | 只看该作者
你们的可以用吗
回复

使用道具 举报

17#
ID:332490 发表于 2018-5-18 19:17 | 只看该作者
不能用
回复

使用道具 举报

18#
ID:319167 发表于 2018-5-27 00:38 | 只看该作者
好东西,来这里学习一下~
回复

使用道具 举报

19#
ID:345303 发表于 2018-6-28 11:22 | 只看该作者
chaselbaymax 发表于 2018-4-12 13:04
萌新有一个问题请教大佬:
我用的和你一样的开发板,然后运行程序没有反应,手机上搜不到wifi,阴差阳错打 ...

我遇到了和你一模一样的问题,你的问题解决了吗? 是什么原因造成的?
回复

使用道具 举报

20#
ID:25153 发表于 2018-7-9 22:33 | 只看该作者
好东西,正是我想要的!
回复

使用道具 举报

21#
ID:369805 发表于 2018-7-11 23:38 | 只看该作者
请问有app的代码吗
回复

使用道具 举报

22#
ID:355680 发表于 2018-8-1 08:55 | 只看该作者
本帖最后由 ligongping 于 2018-8-1 10:44 编辑

为什么我下载后会弹出来这个E:捕获1.PNG

捕获1.PNG (41.01 KB, 下载次数: 142)

捕获1.PNG
回复

使用道具 举报

23#
ID:381550 发表于 2018-8-1 09:44 | 只看该作者
看到楼主做的,瞬间自己也想做一个了
回复

使用道具 举报

24#
ID:385131 发表于 2018-8-10 21:45 | 只看该作者
谢谢分享
回复

使用道具 举报

25#
ID:398467 发表于 2018-9-15 22:06 | 只看该作者
谢谢楼主了
回复

使用道具 举报

26#
ID:406035 发表于 2018-10-10 20:22 | 只看该作者
大家能发一份wifi程序和app给我吗?多谢
回复

使用道具 举报

27#
ID:130231 发表于 2018-10-13 11:58 | 只看该作者
ligongping 发表于 2018-8-1 08:55
为什么我下载后会弹出来这个

这个E4A文件造成的,因为你的杀毒软件会误判。你可以放心用好了。
回复

使用道具 举报

28#
ID:137736 发表于 2018-10-14 09:54 | 只看该作者
用8266的端口直接输出不更好么,省掉了单片机
回复

使用道具 举报

29#
ID:137736 发表于 2018-10-14 10:00 | 只看该作者
朋友会做APP么。这个8266,用的是AT固件,单片机通过串口和8266通讯,不如直接用NODMCU固件
回复

使用道具 举报

30#
ID:186637 发表于 2018-10-19 21:44 | 只看该作者
Floray002 发表于 2017-12-3 09:11
什么意思?资料都在上面

谢谢分享!学习学习!
回复

使用道具 举报

31#
ID:66287 发表于 2018-10-26 14:18 | 只看该作者
很不错,谢谢分享!
回复

使用道具 举报

32#
ID:405298 发表于 2018-11-25 20:51 | 只看该作者
第一次学习Wifi,谢谢楼主分享!
回复

使用道具 举报

33#
ID:436164 发表于 2018-11-30 19:57 来自手机 | 只看该作者
chaselbaymax 发表于 2018-4-12 13:04
萌新有一个问题请教大佬:
我用的和你一样的开发板,然后运行程序没有反应,手机上搜不到wifi,阴差阳错打 ...

现在能用了吗?我也出现了这样的情况
回复

使用道具 举报

34#
ID:418772 发表于 2018-11-30 22:10 | 只看该作者
尝试一下呀
回复

使用道具 举报

35#
ID:325517 发表于 2019-3-23 13:13 来自手机 | 只看该作者
资料不错,值得学习
回复

使用道具 举报

36#
ID:452731 发表于 2019-4-22 22:37 | 只看该作者
这个挺好的
回复

使用道具 举报

37#
ID:368281 发表于 2019-4-24 12:48 | 只看该作者
不错的东东,赞一个!
回复

使用道具 举报

38#
ID:395560 发表于 2019-6-20 22:16 | 只看该作者
Floray002 发表于 2017-12-3 09:11
什么意思?资料都在上面

楼主软件用不了。。
回复

使用道具 举报

39#
ID:588682 发表于 2019-7-23 14:27 | 只看该作者
学习学习
回复

使用道具 举报

40#
ID:583132 发表于 2019-7-23 19:59 | 只看该作者
hulujia 发表于 2018-4-12 15:00
楼主请问电池外部供电怎么实现?是要自己接线吗,不知道用usb转ttl模块接电脑上可以供电吗?

可以
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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