资源描述
基于单片机Wifi无线通信方案
第一部分:功效介绍
经过手机发送指令控制LED亮和灭
单片机原理图
第二部分:硬件接法
1. 连接试验相关模块连线
图:
JP10(P0)接J12
J21跳线帽接左边
Aà P22
BàP23
CàP24
J10和J12相连接(即是P0口控制LED)
单片机和ESP8266连接:因为单片机串口通常配置成9600,而ESP8266初始波特率为115200,所以先用PC经过PL2303去配置ESP8266模块波特率为9600
ESP8266图示 PL2303图示
PC和ESP8266经过PL2303连接
PL2303绿线-----------ESP8266URXD脚
PL2303白线-----------ESP8266UTXD 脚
注意:用PC机上串口助手测试时,因为ESP8266电源是3.3V,所以先要把开发板电源配置成3.3V ,以下图J-PWR,跳线冒连接3.3V。PL2303 电源(红线)不接!ESP8266引脚VCC和CH_PD连接开发板JPWRvcc两个脚,ESP8266地和PL2306地连接开发板JPWRGND两个脚(共地)!!!!!!
在PC上打开软件sscom42.exe,界面以下:
注意:发送新行 选择上,波特率默认为115200,8,1,None
串口号选择PL2303COM口(查看设备管理器)
打开串口即可测试 (软件发送新行要打勾)
第一步:配置波特率
然后在字符串输入框中输入:AT+UART=9600,8,1,0,0
发送给ESP8266 ,若返回OK,表示成功(注意最终一位不要选择流控)
第二步:ESP8266配置APSSID和密码
然后在字符串输入框中输入:AT+CWSAP="ESP8266-gigi","",5,3
注意:操作第二步时,要把串口软件波特率设置成9600。
设置成功后,能够利用PC上无线网卡去连接
到此,ESP8266配置完成,然后下载单片机程序,此时要单片机电源重新换成5V!注意:单片机下载程序需要5V,运行时能够为3.3V。在换成5V,注意要把ESP8266电源断开,避免烧毁芯片!!!!!!!
第三步:单片机和ESP8266连接(注意单片机供电换成3.3V)
单片机和ESP8266连接
ESP8266URXD脚-------------------单片机P3.1
ESP8266UTXD 脚-------------------单片机P3.0
ESP8266VCC脚 -------------------开发板JPWR排针VCC(3.3v)
ESP8266CH_PD脚-----------------开发板JPWR排针VCC(3.3v)
ESP8266GND脚--------------------开发板JPWR排针GND
第四步:安装Android程序
在手机上安装MyClient.apk,然后对开发板重新上电,等候10S左右,手机无线网络连接SSID为ESP8266-gigi网络,密码为.然后打开MyClient.apk软件即可,以下图!
第三部分:程序分析
Android程序中给出了2个按键对应发送码
APK中协议:
第一个按钮 private final String FAN_ON = "1"; //数码管依次显示01234567
第二个按钮 private final String FAN_OFF = "2";//数码管不显示
单片机程序:
//--申明全局函数--//
void DigDisplay(); //动态显示函数
/*******************************************************************************
* 函 数 名 : main
* 函数功效 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
unsigned char i;
for(i=0;i<8;i++)
{
DisplayData[i]=DIG_CODE[i];
}
while(1)
{
DigDisplay();
}
}
/*******************************************************************************
* 函 数 名 : DigDisplay
* 函数功效 : 使用数码管显示
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void DigDisplay()
{
unsigned char i;
unsigned int j;
for(i=0;i<8;i++)
{
switch(i) //位选,选择点亮数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//显示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//显示第7位
}
GPIO_DIG=DisplayData[i];//发送段码
j=10; //扫描间隔时间设定
while(j--);
GPIO_DIG=0x00;//消隐
}
}
若ESP接收数据,数据模式为:+IPD,0,1,1 累计10个字符,我们只需要得到最终一个传过来一个字节即可!
最终现象是:按APP第一个按键,数码管依次显示01234567,按第二个按键,数码管全灭,不显示。
展开阅读全文