当前位置:   article > 正文

ATK-ESP8266和C51通信,手机端控制蜂鸣器,新手笔记_esp8266蜂鸣器

esp8266蜂鸣器

个人买的正点原子的ATK-esp8266,其他版本,不太清楚。

目的:esp8266配置成STA模式,实现手机控制C51的蜂鸣器或者LED

1、通过正点原子的教程 “3、模块作为客户端 STA”

https://blog.csdn.net/weixin_53944340/article/details/125719320

实现通过手机端和esp8266的收发。

2、基于该教程:https://blog.csdn.net/River_and_lake/article/details/121431164

把里面的流程换成,正点原子的 “3、模块作为客户端 STA” 指令。

3、补充资料

https://blog.csdn.net/qq_39470634/article/details/120524207

欢迎 | 安信可科技 (ai-thinker.com)     //安信可的串口助手和安卓端的apk,下载链接。

还有一个:ESP8266_AT指令集V2.1.0.pdf 个人是通过正点原子下载的,自行搜索下载

  1. /*
  2. 代码这里复制:
  3. https://blog.csdn.net/River_and_lake/article/details/121431164
  4. https://blog.csdn.net/qq_39470634/article/details/120524207
  5. 流程:
  6. https://blog.csdn.net/weixin_53944340/article/details/125719320
  7. 这里是t2.c
  8. 基于这里的代码修改,要实现:C51+ESP8266 能给手机端tcp server 发送dat9
  9. https://blog.csdn.net/River_and_lake/article/details/121431164
  10. */
  11. #include<reg51.h>
  12. #define uint unsigned int
  13. #define uchar unsigned char
  14. sbit led1=P1^1;
  15. sbit led2=P1^2;
  16. sbit led3=P1^3;
  17. uchar Recive_table[15];
  18. uchar buff;
  19. uint i;
  20. typedef unsigned char uint8_t;
  21. typedef uint8_t u8;
  22. // sta 模式
  23. code u8 dat1[]="AT+RST\r\n", \
  24. dat2[]="AT+CWMODE=2\r\n", \
  25. dat3[]="AT+CWSAP=\"ESP8266AP_test\",\"12345678\",1,3\r\n", \
  26. dat4[]="AT+CIPMUX=0\r\n", \
  27. dat5[]="AT+CIPSERVER=0\r\n",\
  28. // 安可信安卓端自动配置IP: 192.168.199.208
  29. // 端口:8088
  30. dat6[]="AT+CIPSTART=\"TCP\",\"192.168.199.208\",8088\r\n", \
  31. dat7[]="AT+CIPMODE=1\r\n",\
  32. dat8[]="AT+CIPSEND\r\n", \
  33. dat9[]="hello!!! I am ESP-01S\r\n";
  34. // fmq = 0; 低电平蜂鸣器,0响,1不响
  35. sbit fmq = P2^0;
  36. void delay_ms(uint ms)
  37. {
  38. uchar i,j;
  39. for(i=ms;i>0;i--)
  40. {
  41. for(j=120;j>0;j--)
  42. {
  43. //
  44. }
  45. }
  46. }
  47. void delay_us(uchar us)
  48. {
  49. while(us--);
  50. }
  51. void Usart_Init()//初始化51单片机
  52. {
  53. SCON = 0x50;//串行口中断方式一,且启动串行口接受(REN=1
  54. TMOD = 0x20;//计数器1工作方式2,自动重装载
  55. TH1 = 0xfd;//设置波特率与esp8266达成一致
  56. // AT+CIOBAUD=9600,8,1,0,0 返回ok后 记得将串口先断开然后把串口助手的波特率也进行修改 9600
  57. // AT+UART_DEF=9600,8,1,0,0 该指令是新版的波特率设置指令
  58. TL1 = TH1;
  59. PCON = 0;//波特率不加倍
  60. TR1 = 1;//启动计数器
  61. EA = 1;//开总中断
  62. }
  63. //延时函数, 对于11.0592MHz时钟, 例i=10,则大概延时10ms.
  64. void delayMs(unsigned int i)
  65. {
  66. unsigned int j;
  67. while(i--)
  68. {
  69. for(j = 0; j < 125; j++);
  70. }
  71. }
  72. void SENT_At(uchar *At_Comd)//指针指向At指令
  73. {
  74. ES = 0;
  75. while(*At_Comd!='\0')
  76. {
  77. SBUF = *At_Comd;
  78. while(!TI);//等待该字节发送完毕,发送完后硬件自动置一TI
  79. TI = 0;//硬件之以后必须软件置零才能进行下一次数据传送
  80. delay_us(5);
  81. At_Comd++;//指向下一个字节
  82. }
  83. }
  84. void WIFI_Init()//通过单片机配置AT指令
  85. {
  86. delayMs(6000); //esp8266 模块启动需要时间,所以要延时,个人给了6
  87. //SENT_At("AT+CIPMUX=1\r\n");//多连接模式
  88. SENT_At(dat6);
  89. //delay_ms(20000);
  90. delayMs(2000);
  91. fmq = 0;
  92. //SENT_At("AT+CIPSERVER=1,8080\r\n");//设置端口号
  93. SENT_At(dat7);
  94. //delay_ms(20000);
  95. delayMs(2000);
  96. fmq = 1;
  97. SENT_At(dat8);
  98. //delay_ms(20000);
  99. delayMs(2000);
  100. fmq = 0;
  101. SENT_At(dat9); //实验预期,手机接收dat9数据
  102. delayMs(2000);
  103. fmq = 1;
  104. ES = 1;
  105. }
  106. void main()
  107. {
  108. Usart_Init();
  109. //delayMs(5000);
  110. //fmq = 0;
  111. WIFI_Init();
  112. while(1);
  113. }
  114. void Uart() interrupt 4 //中断程序
  115. {
  116. if(RI==1)//接受一帧完成后由硬件置一
  117. {
  118. RI = 0;//软件清零,防止下次未接收完成就执行程序
  119. Recive_table[i] = SBUF;
  120. buff = SBUF;
  121. if(buff == '1'){
  122. fmq = 1;
  123. }else if(buff == '0'){
  124. fmq = 0;
  125. }
  126. /*
  127. if(Recive_table[0]=='+')
  128. i++;
  129. else
  130. i = 0;
  131. if(i>=10)
  132. {
  133. if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P')&&(Recive_table[3]=='D'))
  134. {
  135. if(Recive_table[9]=='1')//输入1亮灯
  136. //led3 = 0;
  137. fmq = 1;
  138. if(Recive_table[9]=='0')//输入0关灯
  139. //led3 = 1
  140. fmq = 0;
  141. }
  142. i = 0;//如果不清零 就无法达到变化
  143. }
  144. */
  145. }
  146. else
  147. TI = 0;
  148. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/900133
推荐阅读
相关标签
  

闽ICP备14008679号