无线通信模块——WiFi,蓝牙,2.4G

一、无线通信模块

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;
}
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值