WiFi模块的单片机开发
一直以来都在开发单片机,最近有智能家居的案子需要开发用到WiFi模块,于是刚刚上手RAK411;经过半年时间的了解/学习,总结如下:
一、概念:
1)、Wi-Fi:大部分单片机工程师的理解就是手机/笔记本上面和家里路由器的这些东西叫WiFi,但是具体到物联网等相关行业的时候也经常遇到;这里我说一下我理解的WiFi概念;
按照我的理解是基于2.4G(当然也有5G频段的WiFi)自由无线频段的无线通信方式,简单的理解就是一种跑在2.4G无线上面的协议叫WiFi;
分层理解就是:硬件层的2.4G收发器,和软件层的WiFi协议组成了WiFi;
具体WiFi协议很复杂,据说是类似于3G网络的那种协议,只是简化了;
2)、AP:热点,类似于3G网络的基站,家里的路由器就是AP,手机也可以开AP,我们在WiFi列表里面收到的就是AP的SSID,即:WiFiAP的名字;
3)、STA:Station的缩写,站点的意思,就是你可以找到附近环境里面的可见的AP,但是STA之间是不可见的,STA与STA通信需要通过AP才可以的;这类似于手机,手机之间打电话当然需要基站来传递啦;
4)、TCP/IP:这个是互联网基础的协议,IP就是地址,全球唯一,TCP是网络协议,同样还有UDP,这两者有区别,但是我没有太仔细研究下去,UDP是发送后不管应答,TCP是有应答的,因此TCP更可靠;
5)、MAC地址:就是WiFi本身有个物理地址,48bit,类似于网卡的MAC地址;
信号强度:dB;就功率的单位,具体怎么理解/换算后面再撰写更详细文章研究;
6)、信道:就是2.4G不是刚刚好的2.4G,有一个频率范围,这个范围叫做带宽,这个带宽里又分成好多信道,每个信道又占用一定宽度带宽;好比说是:比如深南大道宽200米,有双向8车道,这样就有每个车道25米了(没考虑中间绿化了哈);但是有些车道又是共享的,比如向左和前行道路是共享的;下面图片就是很清楚说明了WiFi的信道和频段的分布:
这下又有疑问了,AP和STA通信的时候,这个信道在哪个上面是由谁决定的呢?其实,在AP建立的时候信道就确定了,下面的STA要和当前的AP通信就必须选择同一个信道,在WiFi运行的过载中信道号也是不改变的,暂时还没听说过WiFi做跳频处理;大家可以用笔记本登入家里的WiFi试试,里面肯定有一项是选择AP信道。
7)、DHCPSERVER、DHCPCLIENT:
就是开启是否IP地址由AP分配给你的STA,DHCPSERVER是针对AP模式的,就是要不要开始这个IP分配功能,DHCPCLIENT是针对STA的,是自己的静态IP还是接受AP的分配;这个需要根据客户项目需要选择啦;
二、术语:
Beacon信标:就是AP每隔一段时间就会发出了,告诉周围环境里面的Station存在AP;周围环境的STA马上就知道了,就好比我们去一个饭店吃饭的时候总是习惯用手机搜索一下周围环境的WiFi,列表里面的AP名字/SSID就是通过beacon发出来的,好像一般是100ms发一次,时间也是可以设置的;
WPA/WPA2/WEP:就是加密方式啦,接入一个新的WiFi热点要么免费,要么加密,需要输入密钥,这样才能保证别人不蹭网,也能保证网络的安全性;WPA2好像内部用的是AES加密方式,PS:AES貌似是目前最强的加密方式,分成128/196/256bit加密密钥;
三、硬件设计:
411模块硬件设计是很简单的,无非是电源脚,复位脚,配置脚,通信口,指示脚,中断脚;
这里简单起见就直接贴个手册里面的参数电路来;对于单片机工程师来说毫不费力;
四、软件驱动编写:
就是SPI的收发函数了;
中断有数据的时候就会产生,SPI发时钟去读即可(空闲是0,有数据待读取出来是1);
1)、初始化单片机SPI口,注意模块的SPI时钟最高支持16MHz;初始化GPIO/开IO中断;
voidSPI_Init(void)
{//初始化单片机SPI口(注意SPI时钟不能太高);
CPOL=0-------------------------------------时钟信号在低电平时空闲;
CPHA=0------------------------------------数据在时钟上升沿锁存,在时钟下将沿传输;
MSB_FIRST------------------------------------数据高位首先发送;
8BITMODE-----------------------------------数据宽度为8位;
CS----------------------------------------------从机选择信号低有效;
}
voidGPIO_Init(void)
{//设置连接到模块INT脚的那个GPIO口为输入状态;
//开启该GPIO的中断;
}
2)、voidSPI_Send_Bytes(uint8_t*p_temp,uint8_tdata_len)
{//不同单片机,修改底层发函数了
}
3)、voidSPI_Get_Bytes(uint8_t*p_temp,uint8_tdata_len)
{//不同单片机,修改底层收函数了
}
4)、GPIO中断函数编写
voidGPIO_PINx_IRQ_Handler(void)
{while(查询INT脚的电平==1)
{SPI_Get_Bytes(x,y);
}
}
五、RAK411编程手册
RAK411-SPI编程手册V1.2.pdf详细介绍了模块的SPI指令和相关操作数;
六、上面是RAK411模块的简单使用方法,很简单,设计很快就能完成数据传输了;
七、资料补充;
AP是可以看到名称(SSID)的那个——家里路由器那个,很多设备都可以看到并连接的,类事业晚上大海上的灯塔;
STA是不可见的,比如你的手机(不是开AP模式哈)或者笔记本,你只能去连接家里的AP,但是你的笔记本是看不到你手机的,你的手机也没法通过WiFi看到你笔记本嘛;类事业晚上大海上航行的船舶;船舶之间是看不见的,大家都只能看到灯塔;
物联网WiFi是未来趋势,这里推荐本土WiFi模块供货商,RAK,深圳市瑞科慧联
针对物联网推出的模块RAK415、RAK411、RAK413;
RAK415:串口透传模块,PC/手机浏览器配置,使用方式类似于配置家里的路由器,使用十分方便,只要配置模块的IP/端口号,即可快速使单片机通过串口传输数据到指定IP的指定端口号上去,只需10min上手;
RAK411:SPI接口模块,使用稍微复杂一些,速度可达200kbyte/s,最高支持16MSPI时钟;支持多达8个个端口号;单片机通过SPI发松相应的指令即可;
RAK413:该模块完全是由AT指令控制,类似于国外品牌的gainspan那种配置方式,AT指令简单,明了,非常适合单片机串口配置,另外,RAK415模块也支持AT指令,上电后的默认情况下是透传模式,这时只要输入+++,即可退出透传模式,进入AT指令配置模式;
RAK411数据报下载:http://pan.baidu.com/s/1o6jyGAm(去掉冒号后面的空格)
RAK413数据报下载:http://pan.baidu.com/s/1nt9PhFj(去掉冒号后面的空格)
RAK415数据报下载:http://pan.baidu.com/s/1qWPsfLU(去掉冒号后面的空格)
RAK41x系列模块是邮票孔的封装,加屏蔽盖,更能适合复杂环境下的信号稳定。
该系列分为RAK41xA(板载陶瓷天线)和RAK41xB(外接天线)两个版本;对与信号强度和使用方便性都做了很好的考虑;
相对于RAK41x系列,RAK也出品了与之对应的RAK42x系列,两者的硬件、软件一样,只是封装形式改变;RAK42x系列用的是排针接口,分成了弯角排针和直角排针两种,这种设计更是考虑了工程师们的调试便利性和PCB空间利用更完善,对与面积受限/高度受限的设计场合都很好的兼顾到了;
RAK421数据报下载:http://pan.baidu.com/s/1dDyAi69(去掉冒号后面的空格)
RAK423数据报下载:]http://pan.baidu.com/s/1i3tcpY9(去掉冒号后面的空格)
RAK425数据报下载:http://pan.baidu.com/s/1o6C4XBW(去掉冒号后面的空格)
针对一般的家电、医疗、工业控制等领域,RAK即做到了简单易用,也做到了稳定、可靠、低功耗;
顺便附上目前所有WiFi模块的资料下载链接~
RAK全部资料包分享链接:
链接:http://pan.baidu.com/s/1pJv72iR
RAK320文档资料分享链接:
链接:http://pan.baidu.com/s/1cvit4
RAK411资料包分享链接:
链接:http://pan.baidu.com/s/1bnuAair
RAK412API文档资料分享链接:
链接:http://pan.baidu.com/s/1mgzbvpY
RAK413资料包分享链接:
链接:http://pan.baidu.com/s/1c01Z700
RAK415资料包分享链接:
链接:http://pan.baidu.com/s/1jG7mVvo
RAK421资料包分享链接:
链接:http://pan.baidu.com/s/1c0cXb7U
RAK423资料包分享链接:
链接:http://pan.baidu.com/s/1qWoJQt2
RAK425资料包分享链接:
链接:http://pan.baidu.com/s/1o6DQzOm
RAK431资料包分享链接:
链接:http://pan.baidu.com/s/1sj3ATJ3
RAK433资料包分享链接:
链接:http://pan.baidu.com/s/1dDxTHWd
RAK435资料包分享链接:
链接:http://pan.baidu.com/s/1gd9uYbx
510文档资料分享链接:
链接:http://pan.baidu.com/s/1jGKKiuM
LX520文档资料分享链接:
链接:http://pan.baidu.com/s/1qWlwbTE
RAK相关工具及使用说明分享链接:
链接:http://pan.baidu.com/s/1c08LgBY
//===================================================================================
RAK415 UART转WiFi调试工具
前言:
对于大多数单片机工程师来说USB转串口是很实用、很常备的工具,可以调试单片机串口/软件协议等;但是有时候呢,可能存在不方便的问题:比如,我想在实验室测试机子(高低温试验等),又想在自己办公桌电脑前面测试机子的参数,距离很大,不方便连线和搬电脑;又比如,在高压板子上面的应用,要是220V/380VAC供电的场合,我们都是很小心翼翼的连接串口调试,要是非隔离电源供电,还存在烧毁调试电脑主板的隐患;基于此,我们基于我们的RAK415A模块制作的,由于RAK415模式是透传模块,非常适合做调试工具;最近由于一个朋友要调试一款高压供电的BLDC电机,普通串口没有隔离,感觉不安全,因此找了个模块花了1小时时间画了个PCB板子,做了该调试工具(后续我会把原理图和PCB文件放在网盘上面),具体描述如下:
配置:
和RAK415模块使用方法一样,模块上电后,可以用手机或者笔记本WiFi扫描环境中的AP;
1、手机网页配置方式:
手机扫描后如下图(注意:出厂的时候AP名称叫做RAK415+MAC地址后几位):
在连接WiFi 热点RAK415_APxxxx后,打开Siri浏览器(Android也一样打开任何一款浏览器)
打开浏览器后,在地址栏里面输入192.168.7.1
PS:老是忘记这个地址是啥,怎么记好嘞,192.168很常用,最后的7.1好难记哦;
这里简单的记忆方法就是,最后两位是我们“伟大”的党的生日7.1 这下好记了吧,当然了后面您可以自己随便改的啦,唯一的问题就是,模块恢复出厂设置后,IP地址还是192.168.7.1了。
点击“前往”后会出现对话框,模块要求我们输入用户名和密码;
用户名:admin(小写哦)
密 码:admin(小写哦)
正常进入模块后在浏览器上面出现的界面:
下面就是几个配置界面了,很简单,比家里的路由器还简单,一用就会;
需要注意的地方:
1)、模块的每个配置界面都要单独保存,否则不会生效哦;
2)、一般情况下模块最好不要设置成STA模式,除非要加入路由器进行远程调试,传输数据;一般AP模式就够用了,因为模块有保存功能的,设置成STA以后就找不到模块了,需要重新把模块回复出厂设置,或者通过路由器登入模块后在配置模块为AP模式,用起来麻烦一点点;
下面是各个界面的截图:
上面是配置部分啦;很简单就几个操作完成了,下面就是如何通过网络调试助手来调试了;
//======================================================================
未完待续,下次继续讲模块的手机 / PC 通过串口助手或者网络助手调试;