四博智联产品售后

 找回密码
 立即注册
搜索
查看: 14014|回复: 0
打印 上一主题 下一主题

UNO开发板+WiFi拓展板实现AT指令转发控制

[复制链接]

31

主题

32

帖子

441

积分

版主

Rank: 7Rank: 7Rank: 7

积分
441
跳转到指定楼层
楼主
发表于 2017-12-4 11:51:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 linXJ 于 2017-12-4 13:02 编辑

1)物料准备

Arduino UNO R3开发板1块  + USB方口线1根

Doit WiFi拓展板1块  

公-母杜邦线2根
2)程序烧录
① Doit WiFi拓展板烧录AT固件;
② 将UNO开发板用USB方口线连上电脑,打开Arduino IDE,将程序烧录到UNO开发板上;
  1. #include <SoftwareSerial.h>
  2. //本程序通过再UNO开发板上构造一个软串口(GPIO 10---RX,  GPIO 11—TX),
  3. //通过程序实现软串口与硬串口(gpio0-RX,gpio1-TX)即USB接口的数据透传转发功能
  4. //由于WiFi拓展板的串口用杜邦线与UNO开发板的软串口用杜邦线对接,所以实现了两个开发
  5. //板的硬串口(在同等电平幅值下)通过软串口作为中转的透传转发功能。
  6. #define MAX_PACKETSIZE 128
  7. SoftwareSerial softSerial(10, 11); // RX, TX
  8. void doSerialTick()
  9. {
  10.   //uartdata
  11.   static uint8_t buffSerial[MAX_PACKETSIZE];
  12.   static unsigned int buffSerialIndex = 0;
  13.   static unsigned long preSerialTime = millis();
  14.   uint8_t t = 0;
  15.   if (Serial.available()>0)
  16.   {
  17.     t = Serial.read();
  18.     buffSerial[buffSerialIndex++] =t ;
  19.     preSerialTime = millis();
  20.     if(buffSerialIndex>=MAX_PACKETSIZE - 1){
  21.       buffSerialIndex = MAX_PACKETSIZE-2;
  22.       preSerialTime = preSerialTime - 100;
  23.     }
  24.   }
  25.   if(buffSerialIndex > 0 && (millis() - preSerialTime >= 50 || t=='\n'))
  26.   {//data ready
  27.     buffSerial[buffSerialIndex]=0x00;
  28.     Serial.flush();
  29.     softSerial.write(buffSerial,buffSerialIndex);
  30.     buffSerialIndex = 0;
  31.   }
  32. }
  33. void dosoftSerialTick()
  34. {
  35.   //uartdata
  36.   static uint8_t buffsoftSerial[ MAX_PACKETSIZE ];
  37.   static unsigned int buffsoftSerialIndex = 0;
  38.   static unsigned long presoftSerialTime = millis();
  39.   uint8_t t = 0;
  40.   if (softSerial.available() >0 )
  41.   {
  42.     t = softSerial.read();
  43.     buffsoftSerial[buffsoftSerialIndex++] = t ;
  44.     presoftSerialTime = millis();
  45.     if(buffsoftSerialIndex >= MAX_PACKETSIZE - 1){
  46.       buffsoftSerialIndex = MAX_PACKETSIZE-2;
  47.       presoftSerialTime = presoftSerialTime - 100;
  48.     }
  49.   }
  50.   if(buffsoftSerialIndex > 0 && (millis() - presoftSerialTime >= 50 || t =='\n'))
  51.   {//data ready
  52.     buffsoftSerial[buffsoftSerialIndex]=0x00;
  53.     // softSerial.flush();
  54.     Serial.write(buffsoftSerial,buffsoftSerialIndex);
  55.     buffsoftSerialIndex = 0;
  56.   }
  57. }
  58. void setup() {
  59.   // Open serial communications and wait for port to open:
  60.   Serial.begin(115200);

  61.   while (!Serial) {
  62.     ; // wait for serial port to connect. Needed for native USB port only
  63.   }
  64.   Serial.println("start");
  65.   // set the data rate for the SoftwareSerial port
  66.   softSerial.begin(115200);
  67.   softSerial.println("AT+UART_DEF=9600,8,1,0,0");
  68.   delay(100);
  69.   softSerial.begin(9600);
  70. }
  71. void loop() { // run over and over
  72.   doSerialTick();
  73.   dosoftSerialTick();
  74. }
复制代码

3)硬件连接
再将Doit WiFi拓展板直插到UNO板上,在Doit WiFi拓展板上用杜邦线按以下规则连接:
Doit WiFi拓展板的Arduino部分   ----------------------   Doit WiFi拓展板的ESP13部分
GPIO11          --------------------------------------------       RX0
GPIO10          --------------------------------------------       TX0
具体连接如图:



然后将Doit WiFi拓展板右上角的两个开关拨到“OFF”端;
打开电脑的串口助手,选择对应端口号,
波特率设置为115200;勾上“发送换行”;

4)上电调试
在串口工具的输入窗口中,输入AT+RST,然后点击发送;观察串口接收窗口返回的信息;
例如:
发送复位命令:AT+RST(执行指令)
指令:AT
响应:OK
指令:AT+RST
响应:ready
现象如下:



其他指令同理操作即可;


5)开发板串口波形分析:

图①                                                                    图②

如图①,这是之前的接线方式,将WiFi拓展板右上角的开关拨到OFF档,然后用
2根杜邦线将左边的2个串口对接,虽然这样也可以直接用Arduino UNO的、usb接口
与电脑连接直接发送AT指令,但那样子是直接将Arduino串口的5V电压ESP8266
3.3V电压对接,难免造成二者高低电平不对等,所客观存在的差异也就体现在如图②波
形的不正常上了。


图③

  现在这种关闭WiFi拓展板右上角的开关,用杜邦线将ArduinoUNO板的软串口
(softSerial(10---RX,  11--TX))和ESP8266 的串口0对接,再通过UNO板中的程序(软
串口与硬串口的转发透传),这样两个开发板的串口通过UNO的软串口实现数据转发,同
样也可以实现用UNO开发板的usb接口实现对ESP8266的AT指令控制,也就避免了二者物
理存在的高低电平不对等造成的波形异常,如图③。














回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|四博智联 Inc. ( 粤ICP备15034758号-1

GMT+8, 2024-4-23 23:30 , Processed in 0.059520 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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