基于CC2530的WiFi模块实验

实验内容

  • 熟悉WiFi模块AT指令使用;
  • 编写程序,使用WIFI模块使用SP模式连接OneNET云平台;
  • 了解OneNET云平台,并创建自己的产品。

实验目的

  • 熟悉WIFI模块的使用;
  • 熟悉常用AT指令的功能;
  • 了解OneNET平台。

实验环境

实验所需硬件

序号 名称 数量 备注
1 电脑 1台 系统Windows7及以上
2 CC2530底座模块 1个 ·
3 WIFI模块 1个 ·
4 CC Debugger 仿真器和连接线 1套 ·
5 USB线 1根 ·
6 WIFI模块实验代码 1份 ·

实验所需软件

CC2530底座:HIVE ZigBee Pro(简称CC2530底座)是一种基于CC2530F256芯片的蜂巢底座。

实验硬件

CC Debugger 仿真器和连接线

实验硬件

WIFI模块

WIFI模块

USB线

USB线

实验要求

  • 了解如何使用AT指令建立SP站点;
  • 了解SP通信要设置哪些关键参数;
  • 了解OneNET平台,独立使用OneNET平台。

实验原理

WIFI技术基本概念

WIFI英语全称是Wireless Fidelity,中文译成无线保真。WIFI是建立连接和进行通讯的手段,它对应一套通讯的规则,保证让两个节点能互相连接,设备连接建立后,通过TCP/IP和UDP等协议,传输数据,连接互联网络。

WIFI模块介绍

Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。

ESP12F内部结构图

硬件设计

WIFI模块硬件电路

实验步骤

① 参考oneNET平台应用手册进行OneNET账号注册及产品创建。

② 将WIFI模块安装到底座上,如下图所示:

模块组装

③ 轻按CCDebugger复位按键,指示灯变绿,表示连接正常。如下图:

模块组装

④ 访问github,进入github界面后点击Code,Clone HTTPS安全链接,如下图所示:

操作步骤

⑤ 打开电脑终端,进入工作目录workspace (workspace 为工程文件夹所在目录):

$ cd workspace

⑥ 运行clone命令:

$ git clone https://github.com/aiotcom/eps.git 

下载目录至指定文件夹下。
如果提示“command not found”表示电脑没有安装Git,请至Git官网下载。
如果电脑没有安装 Git 软件,也可以进入Github,点击 Code -> DownLoad ZIP 下载所有工程代码。如下图所示:
下载代码
如果电脑没有公网,可以进:D盘\实验教程与代码选择相应的代码。

⑦ 打开 IAR Embedded Workbench 工程软件,点击工具栏: File -> Open -> Workspace,选择工程文件:基于CC2530的模块实验\9.WiFi模块\WIFI\WIFI.eww 并打开。

打开工程

选择文件

⑧ 待工程启动完毕,打开“WIFI.h”,如下图所示,修改参数设置,修改WIFI连接的路由器名称和密码,修改OneNET平台个人识别码。

源程序WIFI.h

⑨ 点击Make按钮,重新编译文件,显示没有错误。

文件编译

⑩ 点击Download and Debug按钮,将程序下载到模块中。

下载程序

代码下载成功

⑪ 点击X退出仿真模式。

退出仿真

⑫ 移除CC Debugger仿真器,采用USB线供电。

⑬ 程序运行后,等待设备上线,上传脚本,创建应用,关联设备及绑定数据流。 ⑭ 在OneNET平台上查看数据,程序中模拟了三组传感器数据。 查看数据

代码讲解

① 程序目录结构,源代码文件如下图:
代码目录结构

② main.c代码,对WIFI串口、定时器器初始化,WIFI模块初始化(包括连接OneNET),完成后,每2秒向OneNET平台发送数据。

    void main(void)
    {
    Hal_Init_32M();//初始化32M时钟
    USRT0_Init();//初始化串口0
	Init_Timer1();//定时器1初始化,中断周期1ms。为发送数据到OneNET提供时间基准。
    WiFi_Init();//初始化WiFi模块    
	Tick_SendOneNET = Time1_GetTicks()+2000;//2秒发送一次
        while(1)
        {
            if(Time1_GetTicks() > Tick_SendOneNET){
                /*转化成字符串*/
                sprintf((void*)&Buffer_Tmp[0],"%02d%02d%04d",temp,humi,Linght_Intensity);
                USART0_SendString(Buffer_Tmp,strlen((char const*)Buffer_Tmp));//串口发送到OneNET 
                        
                Tick_SendOneNET = Time1_GetTicks()+2000;//2秒发送一次
                        
                /*temp,humi,Linght_Intensity为模拟数据*/
                temp++;
                humi++;
                temp = temp%100;//等于100,清零
                humi = humi%100;//等于100,清零
                Linght_Intensity += 50;
                if(Linght_Intensity>2000){//大于2000,赋值1000
                    Linght_Intensity = 1000;
                }
            }
        }   
    }

通过调用WIFI_Init()函数,初始化WIFI模块,并连接到OneNET。

    Hal_Init_32M();//初始化32M时钟
    USRT0_Init();//初始化串口0
	Init_Timer1();//定时器1初始化,中断周期1ms。为发送数据到OneNET提供时间基准。
    WiFi_Init();//初始化WiFi模块    
	Tick_SendOneNET = Time1_GetTicks()+2000;//2秒发送一次

当连接到OneNET之后,发送数据OneNET,只需要向串口发送数据即可。

    /*转化成字符串*/
    sprintf((void*)&Buffer_Tmp[0],"%02d%02d%04d",temp,humi,Linght_Intensity);
    USART0_SendString(Buffer_Tmp,strlen((char const*)Buffer_Tmp));//串口发送到OneNET 
    Tick_SendOneNET = Time1_GetTicks()+2000;//2秒发送一次

常见问题

  1. 弹出警告窗口,不能下载程序。

    • 请确认CCDebugger驱动否安装。
    • 轻按CCDebugger仿真器的按键,指示灯不是绿色连接有问题。
    • CCDebugger仿真器是否正常接入到底座,参考实验步骤第一步。
  2. 下载代码后程序没观察到实验现象。

    • 请重新上电,或者按下底座上的复位按键。
    • 模块没有安装稳妥。
  3. OneNET平台设备没有上线。

    • WIFI名字、WIFI密码、OneNET脚本,权鉴信息是否正确。

实验思考

  1. 显示屏显示最近三次输入的卡号,如果卡号相同只显示一次。