最近发现好多嵌入式工作都需要有无线模块的经验
于是就对wifi,蓝牙以及zigbee做了个小小的研究
突然发现手上的LM3S9B96也可以很强大的支持这些接口
这里和大家分享一下
说到wifi,蓝牙以及zigbee,肯定要提的是LM3S9B96的
EPI接口和
EM2扩展板了
我们买回来的开发板自带的是一个8M的SDRAM,用户还可以买FLASH/SRAM扩展板, FPGA扩展板以及EM2扩展板接到LM3S9B96的EPI实现不同的功能。我用过FLASH/SRAM这个板子,有8M的FLASH以及1M的SRAM,非常给力,足够的空间去装代码跑代码。
我们要讲的wifi,蓝牙以及zigbee都需要EM2扩展板(DK-LM3S9B96-EM2)这个转接口来连接LM3S9B96的EPI接口和无线模块(wifi,bluetooth和zigbee)。来张靓图先
EM2扩展板
EM2插到了LM3S9B96开发板上
下来我们先看看这个蓝牙在9B96上是怎么玩滴。。。
这个蓝牙开发板(DK-EM2-2560B)是以群星系列2.4GHz CC2560-PAN1323ETU 模块为基础,最高数据传输速率可达到2.1Mbps
开发套件包括一个EM2扩展板, 一个松下产的使用TI CC2560蓝牙接收/发射器的 Panasonic PAN1323 ETU 蓝牙模块, 一个eZ430-RF2560评估套件(RF256XT, USB,电池盒,电池。。)
软件方面,用户需要在在9B96软件安装根目录下安装Bluetopia蓝牙协议栈以及支持软件
硬件方面,请看下图
在软件硬件都设置好的情况下,用户就可以用LM FLASH PROGRAMMER来下载官方例程了(bt_a2dp_safertos.bin)到9b96开发板上了。下载完成后重新启动9b96开发板就可以看到LED闪烁,表明9B96可被其他蓝牙设备发现。
下来根据这个例程A2DP(Advanced Audio Distribution Profile),用户可以在蓝牙终端设备(9b96)上播放来自另一蓝牙设备(智能手机)的音频信号。用户首先需要接上耳机或者扩音器在9b96开发板上,然后使用一个蓝牙设备,例如智能手机来搜索并与9b96建立连接。用智能手机搜索蓝牙设备时,9b96会显示“A2DP Demo”这个设备名称,如果需要PIN码,可以输入“0000”。
连接建立好后,9b96上的耳机或者扩音器就可以通过蓝牙接口播放手机上播放的音乐了。
还是很炫滴。。。
这就是A2DP这个例程给我们所展示的。
另外一个蓝牙例程叫做SPP(Serial Port Protocol)。这个例程将使用9b96作为蓝牙主设备来和从设备(eZ430)通信。
和上一个历程一样,需要用 LM Flash Programmer下载“bt_spp.bin”到9b96,下载好后就可以看到LCD上显示Bluetopia这个logo。当按下9b96开发板上的user switch按键后,9b96就开始搜索从设备了。当按下eZ430上的RST按键后,几十秒内就会发现9b96的LCD显示设备已连接。这时当你来回翻转eZ430时,它就会把加速度数据发送到9b96蓝牙模块, 并在LCD上实时显示加速度数据。这就是蓝牙模块的SPP例程。
蓝牙和9b96基本上就这么多,后面再讲讲zigbee以及wifi和强大的9b96开发板。
这里把版面拉开。。。。。。。。。。。。。。。。
LM3S9B96 + ZigBeeZigBee协议是一种低功耗,近距离(20-50米室内),低成本的无线通信技术。当然了它的数据传输速率(<250kbps)和复杂度也要低一些。所以非常适用于远程传感以及控制,自动控制以及要求低功耗的嵌入式设备。相比较于WiFi和蓝牙的相对高功耗,ZigBee在使用两节5号电池的情况下可工作数月甚至2年。
TI的2.4GHz ZigBee 开发套件(DK-EM2-2520Z)采用了TI的CC2520无线电接收/发送器以及TI自己的ZigBee协议栈。
整个套件包括一个EM2扩展板(对9b96开发板来说,这是必须滴),一个低功耗2.4GHz的无线接收/发送器CC2520EM,一个给CC2520EM配套的天线,两个低功耗2.4GHz SOC ZigBee模块, 两个给CC2530EM配套的天线,一个可给CC2530EM烧写代码的debugger。
这是安装好CC2520EM以及天线的9B96,来张图先
和前面的蓝牙那一章一样,这里也需要在9b96开发软件根目录下安装TI自己开发的Z-stack协议(类似于前面的Bluetopia,以及我们熟悉的lwip协议)。
接下来就可以用LM
Flash Programmer烧写例程“zstack_collector.bin”到9b96开发板上了。开发板复位后,就可以看到LCD上显示等待信息,一旦网络建立好9b96成为网络协调员后,9b96就会以一个红圈的形式在LCD上显示出来。
接下来可以安装另外两个ZigBee感应设备(CC2530EM)。
这是安装好的ZigBee CC2530模块
在CC2530模块上有按键来打开感应设备并通过LED显示其网络状态。一旦模块搜索并加入了ZigBee网络,它会发送信息给网络设备,这时9b96的LCD上就会出现一个绿圈来代表新加入网络的CC2530EM 模块。见下图。。。
该图显示的是9B96上的CC2520EM以及另外两个CC2530EM组成的ZigBee网络.当用户用手或者手写笔点击任何一个感应设备时,这些感应设备会通过ZigBee网络自动回复,并且在9b96的LCD上用另外一个小窗口显示回复信息,包括该感应设备的温度以及电压值。
ZigBee还是比较适合于远程传感与控制,这里只是给了个例子展示TI的ZigBee模块如何在9b96上运作。 在ZigBee的感应模块上,相信TI的超低功耗MSP430系列会更适合。
拉开版面。。。。其实可以另开一贴的 :)
LM3S9B96 + WiFi
TI的SimpleLink
WiFi CC3000模块算是一款非常灵活易开发的嵌入式无线解决方案,可支持TI的诸多平台,包括Stellaris(LM3S9B96), LM4F(EKS-LM4F232)以及MSP430。
我们这里主要看看CC3000 WiFi模块提供的示例是如何在9b96上应用的。
示例一,WiFi Bootp应用展示了如何使用电脑上的LM Flash Programmer来通过CC3000 SimpleLink WiFi模块无线更新LM3S9B96上的代码。这个很酷,想想如果要是以后类似9b96这样的芯片集成了WiFi模块,那无线程序升级就是触手可及的了。
这里的通过WiFi升级程序的步骤和9b96开发板上Ethernet程序升级非常相似,只是接口不同了而已。整个过程非常简单,包括设置局域网,安装CC3000 WiFi模块,烧写程序以及无线更新。
来说说如何首次配置CC3000模块,这里还是有点料的。对于首次配置,需要一个有WiFi功能的设备发送相关信息给CC3000,例如iphone,黑莓等智能手机,当然笔记本电脑也可以了。
第一次的配置信息(接入AP的信息)就可以通过信标的方式(包括服务集标识,网络安全码)从智能手机广播出来。处于配置模式的CC3000一直在监听信标,当CC3000收到来自另一WiFi设备的信标后会开始解析这个信标并把它存储起来,随后CC3000用这些解析过的信息去接入网络AP(access point,无线接入点)。
来张原理图
再来张iPhone发送AP接入信息给CC3000的大图
关于如何用Android以及笔记本电脑发送AP信息这里就略过了。关于关联CC3000到无线接入点使用WEP,WPA或者WPA2这些安全系统这里也就不讲了,具体TI给的手册上会有说明。
下面就非常熟悉了,升级程序。用LM FlashProgrammer下载Bootloader和CC3000Bootloader(boot_wifi_demo1).将CC3000目录下的bin file(bin/boot_eth.bin)下载到LM3S9B96 flash的起始位(0x0000)。然后更改“Program Offset Address”到0x6000,再选择“erase necessary pages”,找到CC3000目录下的(bin/boot_wifi_demo1.bin)下载到9b96。这样bootloader和boot_wifi_demo1就下载完成了。
复位后下面需要一个串口调试助手之类的软件来帮忙,使boot_wifi_demo1.bin接入到AP。调试助手配置为115200,8N1。
复位9b96后,在调试助手里会显示“Example App:driver version 1.7.2.2”,这时用户可以用前面讲的配置CC3000的方法将boot_wifi_demo1.bin连接到AP。
我们认为boot_wifi_demo1.bin已经和AP关联起来了,这时应用程序每2秒钟会去监测是否有更新请求,如果有更新请求
(比如手触LCD上的“Update Now”或者点击LM FlashProgrammer上的“Program”按键 ),
boot_wifi_demo1.bin这个应用程序会直接跳转到9b96 flash里的CC3000 Bootloader 代码(boot_eth).
。
这时CC3000 Bootloadr接管更新firmware的任务。
用户只需要用LM FlashProgammer 选择Ethernet作为接口,输入IP和MAC,选择CC3000目录下的“boot_wifi_demo2.bin”来烧写到9b96的flash上。
烧写完成后9b96会自动复位,然后CC3000 Bootloader会将这个新代码“boot_wifi_demo2.bin”从flash加载到RAM并开始运行。
开始运行后会发现LCD上显示“boot_demo2”而不是前面的“boot_demo1”.
到此,通过CC3000 WiFi升级9b96程序就算完成了。
其实过程和大家熟悉的Ethernet更新程序几乎一样,只是这里多了个AP接入这一过程,从而使用了WiFi功能。
此外还有一个CC3000网络服务器和客户端的应用程序也可以在9b96上运行,来实现天气播报。
过程包括设置LAN,然后通过网页浏览器输入9b96的IP地址来配置城市等信息。
这样复位9b96后网络服务器和用户端的应用程序将开始运行,并加载显示天气信息的页面。如下图。。。
到此9b96开发板与WiFi,ZigBee以及蓝牙的应用就介绍完了。
这里也只是给大家一个想法,至于这些无线模块具体如何应用在项目里,应该与哪个芯片结合等还需要大家更深一层次的研究。
[
本帖最后由 tekkon 于 2012-6-15 23:37 编辑 ]