(完整版)基于单片机Wifi无线通信方案-Demo

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机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绿线-----------ESP8266的URXD脚

PL2303白线-----------ESP8266的UTXD 脚

注意:用PC机上的串口助手测试时,由于ESP8266的电源是3.3V,所以先要把开发板的电源配置成3.3V ,如下图J-PWR,跳线冒连接3.3V。PL2303 的电源(红线)不接!ESP8266引脚的VCC和CH_PD连接开发板JPWR的vcc两个脚,ESP8266的地与PL2306的地连接开发板JPWR的GND两个脚(共地)!!!!!!

在PC上打开软件sscom42.exe,界面如下:

注意:发送新行选择上,波特率默认为115200,8,1,None

串口号选择PL2303的COM口(查看设备管理器)

打开串口即可测试(软件的发送新行要打勾)

第一步:配置波特率

然后在字符串输入框中输入:AT+UART=9600,8,1,0,0

发送给ESP8266 ,若返回OK,表示成功(注意最后一位不要选择流控)

第二步:ESP8266配置AP的SSID和密码

然后在字符串输入框中输入:AT+CWSAP="ESP8266-gigi","1234567890",5,3注意:操作第二步时,要把串口软件的波特率设置成9600。

设置成功后,可以利用PC上的无线网卡去连接

到此,ESP8266配置完成,然后下载单片机程序,此时要单片机的电源重新换成5V!注意:单片机下载程序需要5V,运行时可以为3.3V。在换成5V,注意要把ESP8266的电源断开,避免烧毁芯片!!!!!!!

第三步:单片机与ESP8266连接(注意单片机供电换成3.3V)

单片机与ESP8266连接

ESP8266的URXD脚-------------------单片机的P3.1

ESP8266的UTXD 脚-------------------单片机的P3.0

ESP8266的VCC脚-------------------开发板JPWR排针的VCC(3.3v)ESP8266的CH_PD脚-----------------开发板JPWR排针的VCC(3.3v) ESP8266的GND脚--------------------开发板JPWR排针的GND

第四步:安装Android程序

在手机上安装MyClient.apk,然后对开发板重新上电,等待10S左右,手机无线网络连接SSID为ESP8266-gigi的网络,密码为1234567890.然后打开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):

相关文档
最新文档