通信新技术综合训练报告 实验八 ADC及数据采集实验
建网N成功Y节点加入成功Y进入休眠模式NN按键终端SW0Y按键终端SW1采集温度并发送Y采集电压并发送NN按键终端SW2Y采集温度电压并发送Coordinator接受数据写入PC机串口Coordinator接受数据写入PC机串口Coordinator接受数据写入PC机串口
流程图解析:节点加入成功后,就如休眠模式,当检测到有DIO口中断时,唤醒定时器完成数据包的采集发送。由流程图可以看出:分别按下SW0~SW2,分别采集温度、电压、温度和电压。 2.程序流程图:
节点加入成功后,PC机经串口发送数据,Coordinator将数据发送给EndDevice。当EndDevice接受到数据后,将数据的信息和数据的长度保存在Flash内存中;断电再启动时。自动将协议栈的内容恢复,将数据发送出去,Coordinator接收数据,经显示在PC机的串口窗口上。 流程图如下:
开始延迟一会建网N成功?Y节点入网保存数据的内容和大小写入Flash内存中成功?YPC机经串口发数据NY断电?N协调器接收数据Coordinator发送数据经串口写入PC机窗口中等待上电EndDevice接收数据
31
通信新技术综合训练报告 实验八 ADC及数据采集实验
四、实验结果与分析
1. EndDevice的SW0 时,PC机的串口调试工具输出窗口上显示采集温度值。按动EndDevice的SW1时,PC机的串口调试工具输出窗口上显示采集电压值。按动EndDevice的SW2 时,PC机的串口调试工具输出窗口上显示采集电压和温度值。
2. 接通电源,建网节点加入完成后,经PC机串口发送数据,发完后,关闭电源。等会从新接通电源,我们会发现PC机窗口显示刚才发的数据。
分析:节点加入成功后,EndDevice接受到数据后,将数据的信息和数据的长度保存在Flash内存中;断电再启动时。自动将协议栈的内容恢复,将数据发送出去,Coordinator接收数据,经显示在PC机的串口窗口上。
五、存在问题和解决方法
1. 再设计进入休眠模式时,刚开始很难理清楚合适进入休眠模式,何时唤醒定时器;后理清头绪,方才好编写程序。
2.在掉电保护中,关闭电源从新开启时,PC机串口不显示发送的数据,后查明原因,EndDevice可以不保存Coordinator的地址,因为协调器的地址是定的0x00;但是Coordinator必须保存EndDevice的地址,两者之间才可以进行断电启动后保持两者之间的通信。
心得体会
通过了为期四周的无线网络的实验,我们初步了解了ZigBee。熟悉Jnnice—WSN的开发环境。首先我们对硬件进行初步的了解,JN5139 芯片所设计的 WSN 开发板的外围电路以及复位电路、电源电路、和DIO口的分布。再设计程序时我们首先要知道硬件的电路连接和主芯片的了解,之后才可以就行软件的设计,相当于标准C中的main函数,
再设计课题时,开始头绪很凌乱,无从下手。经过老师的指导,了解了Jnnice—WSN的开发环境中得语言,虽然基于C的编写,当时由于C语言有区别。C语言有主函数,启动时从main()开始运行,当时Jnnice—WSN开发环境是从 AppColdStart( ) 开始运行;结点上电后将从这里开始运行程序。也了解到一些专用 函数,例如:初始化协议栈函数、中断响应函数、BOS定时响应函数等等。 再设计程序时,我们也深刻指导做任何事情都要恒心和毅力。坚持不懈,成功的必将使我们自己。不懂就问这时学习的重要环节,当我们遇到困难时,团队之间讨论;在没有解决办法的情况下,我们要学会利用我们身边的资源--咨询老师。
总的来说,在这四周的专业设计中,虽然我们过得很艰辛,但是我们受益也很大。学到了许多知道,让我们将理论与实际结合。使我们设计能力有了明显的提高,熟悉设计一相课题的流程图及步骤。先画流程图,按流程图设计软件程序。巩固我们C语言的基础,为我们即将毕业的学子,温习c的知识。同时也提高了我们分析C语言的能力和熟读C的能力。
32
通信新技术综合训练报告 实验八 ADC及数据采集实验
1.Coordinator程序:
/****************************************************************************/ /*** Include files ***/ /****************************************************************************/ #include \#include \#include \
#include
/****************************************************************************/ /*** Macro Definitions ***/ /****************************************************************************/
#define HW_INT_Q_SIZE #define HW_INT_Q_PTR_MASK
33
附件ADC及数据采集实验
32 0x1f
通信新技术综合训练报告 实验八 ADC及数据采集实验 //#define APP_TICK_PERIOD_ms
500
/****************************************************************************/ /*** Type Definitions ***/ /****************************************************************************/
typedef struct {
uint32 u32Device; uint32 u32ItemBitmap; } tsHwIntData;
typedef struct
{
tsHwIntData asHwIntData[HW_INT_Q_SIZE]; volatile uint8 u8ReadPtr; volatile uint8 u8WritePtr; } tsHwEventQueue;
/****************************************************************************/ /*** Local Function Prototypes ***/ /****************************************************************************/ PRIVATE void vInit(void); //函数申明
PRIVATE void vAddDesc(void);
/****************************************************************************/ /*** Exported Variables ***/ /****************************************************************************/
/****************************************************************************/ /*** Local Variables ***/ /****************************************************************************/ tsHwEventQueue sHwEventQueue;
PRIVATE bool_t bNwkStarted = FALSE;
//PRIVATE bool_t NextReadStart = TRUE ; PRIVATE uint16 DstAddress = 0 ;
PRIVATE bool_t LED0 = FALSE; PRIVATE bool_t LED1 = FALSE; PRIVATE uint16 u16data = 0x0000;
PUBLIC void AppColdStart(void) {
HAL_GDB_INIT();
34
通信新技术综合训练报告 实验八 ADC及数据采集实验 HAL_BREAKPOINT();
WSN_CHANNEL; // 设置信道号
WSN_PAN_ID; // 设置网络ID vInit(); // 初始化函数 }
PUBLIC void AppWarmStart(void) // 热启动 {
AppColdStart(); }
PRIVATE void vInit(void) // 初始化函数 {
JZS_u32InitSystem(TRUE); // 初始化ZigBee协议栈 vLedInitFfd(); // 初始化LED灯 vLedControl(0,TRUE); // LED0亮 vLedControl(1,TRUE); // LED1 亮 vLedControl(2,FALSE); vLedControl(3,FALSE);
//vAHI_HighPowerModuleEnable (TRUE, TRUE ); (void)bBosRun(TRUE); // 启动BOS环境 }
// Bos周期性调用函数
void JZA_vAppEventHandler(void) { }
// 中断响应函数
PUBLIC void JZA_vPeripheralEvent(uint32 u32Device, uint32 u32ItemBitmap) { }
PUBLIC void JZA_vAppDefineTasks(void) { }
35
JZS_sConfig.u32Channel JZS_sConfig.u16PanId
= =