用手机控制Arduino上的LED灯 -- AT指令

                                                      用手机控制Arduino上的LED灯

                                                 (使用ESP8266模块的AT指令方式)

ESP8266的设置方法五花八门,网上各种都有,让人眼花缭乱。对于Arduino新手来说ESP8266入门的话相对有点复杂。一时半会儿难以理解。不过,这不能影响到ESP8266的强大,通过对ESP8266无线模块在Arduino上的AT指令方式的学习,我们知道了,ESP8266可以设置成自动进入透传模式。让ESP8266无线模块做服务端,来实现我们所需要的功能。现在,我们将通过这一个功能,让手机和ESP8266进行互相通信,并控制Arduino上的LED灯。(原理是让手机和ESP8266无线模块在同一个WIFI网络里,连接同一个路由器,ESP8266为客户端、手机建立服务端)。通过此教程示例让创客进一步了解和掌握ESP8266的使用。

 

用手机控制Arduino上的LED灯 -- AT指令

 

 

所需材料:

arduino主控板一块

ESP8266无线模块一个

 LED发光二极管一个

220欧姆电阻一个

小面包板一个

杜邦线若干

手机一部(安卓手机)

 

第一步:通过USB-TTL连接ESP8266设置AT指令,保存透传模式。(整个实验的关键!!)

==接线方式==

*VCC—-3.3
*GND–GND
*CH_PD–3.3
*RX–TX
*TX–RX

用手机控制Arduino上的LED灯 -- AT指令

 

 

==设置方式==

AT指令(按照您的模块固件版本,选择AT指令进行设置):

ESP8266-AT固件版本V1.0以上版本(ESP8266为最新AT固件版本:1.5.4.1)

//设置WiFi应用模式为Station
AT+CWMODE=3
//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码
AT+CWJAP="SSID","Password"
//连接单连模式
AT+CIPMUX=0
//设置为透传模式
AT+CIPMODE=1
//进入透传模式,并保存(进入后模块就一直为透传模式,需要退出则取消发送新行,发送+++)
,IP地址为远端设备地址,例:我用手机控制,那么我的手机在路由器WIFI上的IP地址为192.168.1.110
AT+SAVETRANSLINK=1,”192.168.1.110”,8080,”TCP”

 

ESP8266-AT固件版本V0.9.5.2版本(老版本固件)

//设置WiFi应用模式为Station
AT+CWMODE=1
//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码
AT+CWJAP="SSID","Password"
//连接手机端服务器,IP地址为远端设备地址,例:我用手机控制,那么我的手机在路由器WIFI上的IP地址为192.168.1.110
AT+CIPSTART="TCP","192.168.1.110",8181
//设置为透传模式
AT+CIPMODE=1
//进入透传模式(进入后模块就一直为透传模式,需要退出则取消发送新行,发送+++)
AT+CIPSEND

上述设置完成后,模块自动成为透传模块。↑↑

第二步:将Arduino 上传LED控制程序。(注意板子型号和COM口号不要选错)

==Arduino控制程序==

int led_pin = 7;

//定义一个10字节的字符型数组变量ch

char ch[10];

void setup()

{

  pinMode(led_pin,OUTPUT);

  Serial.begin(115200);

}

void loop()

{     

  if (Serial.available())//检查是否至少有一个可用字符

  {

    for(int i=0;i<9;i++) //此时i只能取前9位,第10位是结束符\0

    {

        ch[i]= char(Serial.read());//读取串口数据

        delay(1);

    }   

    if(strncmp(ch,"on",2)==0)//判断ch前2个字符是否是on

    {

      digitalWrite(led_pin, HIGH);//点亮LED

      Serial.println("ON");//串口打印ON

    }

    else if(strncmp(ch,"off",3)==0) //判断ch前2个字符是否是off

    {

      digitalWrite(led_pin, LOW); //熄灭LED

      Serial.println("OFF");//串口打印OFF

    }

  }

}

第三步:将ESP8266、LED灯Arduino连接。(接线不要接错了)

在Arduino上再连接一个LED灯,我程序中使用的是PIN7引脚。(连接LED灯需要在正极连接一个220欧姆的电阻)。

*VCC—-3.3
*GND–GND
*CH_PD–3.3
*RX–TX
*TX–RX

D11——LED正极

GND—–LED负极

用手机控制Arduino上的LED灯 -- AT指令

 

第四步:打开“有人网络助手”APP(版本不同可能略有差异),添加一个TCP SERVER,端口号要保持一致(检查设置)

1、打开网络调试助手,点击TCP SERVER—-配置-设置端口号

用手机控制Arduino上的LED灯 -- AT指令

 

2、当开启服务端后

用手机控制Arduino上的LED灯 -- AT指令

3、当开启服务端后,AT指令在PC端设置连接手机服务器

用手机控制Arduino上的LED灯 -- AT指令

 

4、在发送框内发送”on”即可点亮Arduino板载LED灯。

用手机控制Arduino上的LED灯 -- AT指令

 

4、在发送框内发送”off”即可熄灭Arduino板载LED灯。

用手机控制Arduino上的LED灯 -- AT指令

 

提醒事项:

1、如果ESP8266没有出现在服务端(手机端),请检查手机和ESP8266是否连接在同一路由器上。

2、该小实验中:透传模式一定要记得保存,不保存的话,重新上电就没法自动进入透传模式了,建议您可以先去了解一下ESP8266的使用方法后再尝试本实验。

3、IP地址为手机在路由器WIFI上的IP地址,不要填错了。

4、手机上的网络调试助手,发送框发送的为小写的”on”、“off”,反馈为大写的”ON”、”OFF”。

实验思维扩展:

通过此次小实验,我们成功的实现了,手机控制LED灯,同样的道理,我们可不可以接一个其他模块,修改Arduino控制代码,是否一样能控制。如果连接一个继电器,我们是否可以控制家里的大功率用电器了呢?往后我们要尝试更多的模块,实现更多的功能。