概述
用手机控制Arduino上的LED灯
(使用ESP8266模块的AT指令方式)
ESP8266的设置方法五花八门,网上各种都有,让人眼花缭乱。对于Arduino新手来说ESP8266入门的话相对有点复杂。一时半会儿难以理解。不过,这不能影响到ESP8266的强大,通过对ESP8266无线模块在Arduino上的AT指令方式的学习,我们知道了,ESP8266可以设置成自动进入透传模式。让ESP8266无线模块做服务端,来实现我们所需要的功能。现在,我们将通过这一个功能,让手机和ESP8266进行互相通信,并控制Arduino上的LED灯。(原理是让手机和ESP8266无线模块在同一个WIFI网络里,连接同一个路由器,ESP8266为客户端、手机建立服务端)。通过此教程示例让创客进一步了解和掌握ESP8266的使用。
所需材料:
arduino主控板一块
ESP8266无线模块一个
LED发光二极管一个
220欧姆电阻一个
小面包板一个
杜邦线若干
手机一部(安卓手机)
第一步:通过USB-TTL连接ESP8266设置AT指令,保存透传模式。(整个实验的关键!!)
==接线方式==
*VCC—-3.3
*GND–GND
*CH_PD–3.3
*RX–TX
*TX–RX
==设置方式==
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位是结束符
{
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负极
第四步:打开“有人网络助手”APP(版本不同可能略有差异),添加一个TCP SERVER,端口号要保持一致(检查设置)
1、打开网络调试助手,点击TCP SERVER—-配置-设置端口号
2、当开启服务端后
3、当开启服务端后,AT指令在PC端设置连接手机服务器
4、在发送框内发送”on”即可点亮Arduino板载LED灯。
4、在发送框内发送”off”即可熄灭Arduino板载LED灯。
提醒事项:
1、如果ESP8266没有出现在服务端(手机端),请检查手机和ESP8266是否连接在同一路由器上。
2、该小实验中:透传模式一定要记得保存,不保存的话,重新上电就没法自动进入透传模式了,建议您可以先去了解一下ESP8266的使用方法后再尝试本实验。
3、IP地址为手机在路由器WIFI上的IP地址,不要填错了。
4、手机上的网络调试助手,发送框发送的为小写的”on”、“off”,反馈为大写的”ON”、”OFF”。
实验思维扩展:
通过此次小实验,我们成功的实现了,手机控制LED灯,同样的道理,我们可不可以接一个其他模块,修改Arduino控制代码,是否一样能控制。如果连接一个继电器,我们是否可以控制家里的大功率用电器了呢?往后我们要尝试更多的模块,实现更多的功能。
最后
以上就是俊逸导师为你收集整理的用手机控制Arduino上的LED灯 -- AT指令的全部内容,希望文章能够帮你解决用手机控制Arduino上的LED灯 -- AT指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复