一、无线通信模块
1: ESP8266
介绍:ESP8266无线模块拥有TTL通信接口,用一个USB转TTL模块连接无线模块即可通信。关于ESP8266的手册都很好搞,安信可官网就有,没有的可以留言我上传一下。
WIFI STA:客户端模式
在此模式下,模块相当于一个客户端,可以链接到其他路由器发出的WIFI信号。主要应用在网络通信中。
WIFI AP:软路由模式
在此模式下,模块本身相当于一个路由器,其他设备可链接到该模块发送的信号,主要应用在主从设备的主机部分。
WIFI STA+WIFI AP :混合模式
在此模式下,模块可在与其他设备链接的同时充当路由器,结合上面两种模式的综合应用,一般可应用在需要网络通信且在主从关系中的主机。可以通过USB发送AT指令即可配置无线模块的工作模式,也可通过单片机上的串口来控制。
服务器(AP)
代码如下(C):
AT+CWMODE=2 //AP模式
AT+RST //重启
AT+CWSAP="ESP_8266","12345678",6,4 //名称+密码+通道+加密方式
“以上可以提前设置,以下用代码写入”
AT+CIPMUX=1 //启动多连接
AT+CIPSERVER=1,8080 //开启服务器模式,端口333
AT+CIFSR //查看ESP8266 IP
+CIFSR:APIP,"192.168.4.2"、"192.168.4.1"
+CIFSR:APMAC,"86:f3:eb:db:fe:49"
//互发信息:
AT+CIPSEND=0,5 //开启透传模式,0表示发送至客户端0,5表示发送5字节
窗口发送:12345
客户端接收:+IPD,5:123456
客户端(STA)
代码如下(C++):
AT+RST //重启
AT+CWMODE=1 //STA模式
// 如果没有OK,需从此
AT+CIPMUX=0 //单连接,只连接一个服务器
AT+CWJAP="ESP_8266","12345678" //连接wifi
“ WIFI CONNECTED
WIFI GOT IP
OK”
//从这步开始:
AT+CIPSTART="TCP","192.168.4.1",8080 //连接服务器
//互发信息:
AT+CIPSEND=2 //客户端是单连接模式,不需要服务器编号,只有一台服务器
窗口发送:A1
服务器接收:+IPD,2:A1
其他补充命令
代码如下:
先按住键盘上的 ALT 键不放,
然后在小键盘区(数字键区)输入 9745 ,最后松开 ALT 键。
P3.0 //RxD
P3.1 //TxD
AT+CWLIF //列出当前可用IP
AT+CWMODE? //查询模式
AT+CIOBAUD=9600 //修改波特率,安信可出厂固件默认11520;
AT+UART=9600,8,1,0,0 //老式wifi修改命令,同时需硬件使能!切记切记!
AT+CIPSEND=id,size //服务端给客户端发送数据:
//其中id为接入设备的序号,size为准备发送数据的长度;
//发送完该指令后服务端会出现OK>的回应,此时再输入准备发送的数据发送即可。
AT+CIPSEND=size //客户端给服务端发送数据;
//因为是单连接,所以不需要序号,直接输入准备发送数据的长度,等待回应后再输入发送的数据即可。
比特舟
2: 蓝牙
介绍:使用于手机与单片机通信。
HC05:
void Uart_Int(void) interrupt 4
{
// static uchar i = 7; //定义为静态变量,当重新进入这个子函数时 i 的值不会发生改变
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
R_data= SBUF;
x = R_data; // - 0x30 这里减去0x30是因为从电脑中发送过来的数据是ASCII码。
if(x==1)
relay=1;
if(x==0)
relay=0;
P1=tab[x];
RI = 0;
R_flag=1;
}
EA = 1;
}
HC08:
void Uart_Interupt(void) interrupt 4
{
// uchar i;
uchar receive_data;
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
RI = 0;
receive_data = SBUF;//接收到的数据
if(receive_data == '1')
{
LED = 0;//接收到1亮灯
relay = 0;
}
else
{
LED = 1; //其他情况灯灭
relay = 1;
}
}
// for(i=0; i<36; i++)
// {
// SBUF = PuZh[i]; //将要发送的数据放入到发送寄存器
// while(!TI); //等待发送数据完成
// TI=0; //清除发送完成标志位
// Delay_1ms(1);
// }
EA = 1;
}