物聯網WiFi

来源:互联网 发布:土耳其历史 知乎 编辑:程序博客网 时间:2024/05/17 04:20

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列表里面收到的就是APSSID,即:WiFi AP的名字;

3)、STAStation的缩写,站点的意思,就是你可以找到附近环境里面的可见的AP,但是STA之间是不可见的,STASTA通信需要通过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的信道和频段的分布:

WiFi信道分布

这下又有疑问了,APSTA通信的时候,这个信道在哪个上面是由谁决定的呢?其实,在AP建立的时候信道就确定了,下面的STA要和当前的AP通信就必须选择同一个信道,在WiFi运行的过载中信道号也是不改变的,暂时还没听说过WiFi做跳频处理;大家可以用笔记本登入家里的WiFi试试,里面肯定有一项是选择AP信道。

7)、DHCP SERVER、 DHCP CLIENT:

就是开启是否IP地址由AP分配给你的STADHCP SERVER是针对AP模式的,就是要不要开始这个IP分配功能, DHCP CLIENT是针对STA的,是自己的静态IP还是接受AP的分配;这个需要根据客户项目需要选择啦;

二、术语:

Beacon 信标:就是AP每隔一段时间就会发出了,告诉周围环境里面的Station存在AP;周围环境的STA马上就知道了,就好比我们去一个饭店吃饭的时候总是习惯用手机搜索一下周围环境的WiFi,列表里面的AP名字/SSID就是通过beacon发出来的,好像一般是100ms发一次,时间也是可以设置的;

WPA/WPA2/WEP:就是加密方式啦,接入一个新的WiFi 热点要么免费,要么加密,需要输入密钥,这样才能保证别人不蹭网,也能保证网络的安全性;WPA2好像内部用的是AES加密方式,PSAES貌似是目前最强的加密方式,分成128/196/256bit加密密钥;

三、硬件设计:

411模块硬件设计是很简单的,无非是电源脚,复位脚,配置脚,通信口,指示脚,中断脚;

这里简单起见就直接贴个手册里面的参数电路来;对于单片机工程师来说毫不费力;

硬件原理图

四、软件驱动编写:

就是SPI的收发函数了;

中断有数据的时候就会产生,SPI发时钟去读即可(空闲是0,有数据待读取出来是1);

1)、初始化单片机SPI口,注意模块的SPI时钟最高支持16MHz;初始化GPIO/IO中断;

     void SPI_Init(void)

     { //初始化单片机SPI口(注意SPI时钟不能太高);

CPOL = 0-------------------------------------时钟信号在低电平时空闲;
    CPHA = 0------------------------------------数据在时钟上升沿锁存,在时钟下将沿传输
    MSB_FIRST------------------------------------数据高位首先发送
    8 BIT MODE-----------------------------------数据宽度为 
    CS----------------------------------------------从机选择信号低有效

     }

     void GPIO_Init(void)

     {//设置连接到模块INT脚的那个GPIO口为输入状态;

      //开启该GPIO的中断;

     }

2)、void SPI_Send_Bytes(uint8_t* p_temp,uint8_t data_len)

     {//不同单片机,修改底层发函数了

     }

3)、void SPI_Get_Bytes(uint8_t* p_temp,uint8_t data_len)

     { //不同单片机,修改底层收函数了

     }

4)、GPIO中断函数编写

     void GPIO_PINx_IRQ_Handler(void)
     { while(查询INT脚的电平==1

  {SPI_Get_Bytes(x,y);

  }

}

五、RAK411编程手册

RAK411-SPI 编程手册 V1.2.pdf详细介绍了模块的SPI指令和相关操作数;

六、上面是RAK411模块的简单使用方法,很简单,设计很快就能完成数据传输了;


//================================================================

物聯網WiFi 是未來趨勢,這裡推薦本土WiFi模塊供應商,RAK,深圳市瑞科慧聯

針對物聯網推出的模塊RAK415、RAK411、RAK413;
RAK415:串口透傳模塊,PC/手機瀏覽器配置,使用方式類似于配置家裡的路由器,使用十分方便,只要配置模塊的IP/端口號,即可快速使單片機通過串口傳輸數據到指定IP的指定端口號上去,只需10min上手;
RAK411:SPI接口模塊,使用稍微複雜一些,速度可達200kbyte/s,最高支持16M SPI時鐘;支持多達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即做到了簡單易用,也做到了穩定、可靠、低功耗;


//==============================================================================

RAK415UARTWiFi调试工具

前言:

对于大多数单片机工程师来说USB转串口是很实用、很常备的工具,可以调试单片机串口/软件协议等;但是有时候呢,可能存在不方便的问题:比如,我想在实验室测试机子(高低温试验等),又想在自己办公桌电脑前面测试机子的参数,距离很大,不方便连线和搬电脑;又比如,在高压板子上面的应用,要是220V/380VAC供电的场合,我们都是很小心翼翼的连接串口调试,要是非隔离电源供电,还存在烧毁调试电脑主板的隐患;基于此,我们基于我们的RAK415A模块制作的,由于RAK415模式是透传模块,非常适合做调试工具;最近由于一个朋友要调试一款高压供电的BLDC电机,普通串口没有隔离,感觉不安全,因此找了个模块花了1小时时间画了个PCB板子,做了该调试工具(后续我会把原理图和PCB文件放在网盘上面),具体描述如下:

配置:

RAK415模块使用方法一样,模块上电后,可以用手机或者笔记本WiFi扫描环境中的AP

1、手机网页配置方式:

手机扫描后如下图(注意:出厂的时候AP名称叫做RAK415+MAC地址后几位):

Description: http://gd2.alicdn.com/imgextra/i2/289830451/TB2FI8_bFXXXXcqXpXXXXXXXXXX-289830451.jpg  

在连接WiFi 热点RAK415_APxxxx后,打开Siri浏览器(Android也一样打开任何一款浏览器)

Description: http://gd1.alicdn.com/imgextra/i1/289830451/TB2LKynbFXXXXbnXXXXXXXXXXXX_!!289830451.png  

 

打开浏览器后,在地址栏里面输入192.168.7.1

PS:老是忘记这个地址是啥,怎么记好嘞,192.168很常用,最后的7.1好难记哦;

这里简单的记忆方法就是,最后两位是我们伟大的党的生日7.1 这下好记了吧,当然了后面您可以自己随便改的啦,唯一的问题就是,模块恢复出厂设置后,IP地址还是192.168.7.1了。

 Description: http://gd3.alicdn.com/imgextra/i3/289830451/TB2JW9fbFXXXXaLXpXXXXXXXXXX_!!289830451.png

点击前往后会出现对话框,模块要求我们输入用户名和密码;

用户名:admin(小写哦)

   码:admin(小写哦)

Description: http://gd3.alicdn.com/imgextra/i3/289830451/TB2OhOnbFXXXXbqXXXXXXXXXXXX_!!289830451.png  

 

正常进入模块后在浏览器上面出现的界面:

 Description: http://gd2.alicdn.com/imgextra/i2/289830451/TB2rhmrbFXXXXcgXXXXXXXXXXXX_!!289830451.png

下面就是几个配置界面了,很简单,比家里的路由器还简单,一用就会;

需要注意的地方:

1)、模块的每个配置界面都要单独保存,否则不会生效哦;

2)、一般情况下模块最好不要设置成STA模式,除非要加入路由器进行远程调试,传输数据;一般AP模式就够用了,因为模块有保存功能的,设置成STA以后就找不到模块了,需要重新把模块回复出厂设置,或者通过路由器登入模块后在配置模块为AP模式,用起来麻烦一点点;

下面是各个界面的截图:

 Description: http://gd2.alicdn.com/imgextra/i2/289830451/TB2dRmjbFXXXXbnXXXXXXXXXXXX_!!289830451.pngDescription: http://gd1.alicdn.com/imgextra/i1/289830451/TB2nqmjbFXXXXcWXXXXXXXXXXXX_!!289830451.pngDescription: http://gd1.alicdn.com/imgextra/i1/289830451/TB2_WGdbFXXXXb9XpXXXXXXXXXX_!!289830451.pngDescription: http://gd2.alicdn.com/imgextra/i2/289830451/TB2oYqqbFXXXXXLXXXXXXXXXXXX_!!289830451.pngDescription: http://gd2.alicdn.com/imgextra/i2/289830451/TB2DYiebFXXXXbuXpXXXXXXXXXX_!!289830451.png

 上面是配置部分啦;很简单就几个操作完成了,下面就是如何通过网络调试助手来调试了;

//======================================================================

未完待续,下次继续讲模块的手机 / PC通过串口助手或者网络助手调试;

 










0 0