基于ZStack的LED控制
- 格式:doc
- 大小:2.88 MB
- 文档页数:3
Android手机控制ZigBee板上LED分类:ZigBeeAndroid2013-08-06 16:39344人阅读评论(0)收藏举报环境:Windows编译器:IAREW8051-8.1硬件:CC2530协议栈:ZStack-CC2530-2.3.0-1.4.0手机:Android4.1.2又重新开始学习ZigBee技术,摸索了一哈通信流程,本例程没有涉及到ZigBee组网,读者可自行扩展。
ZigBee流程如下:从串口接收指令信息,根据指令信息控制相应的LED资源,工作模式为协调器,可用GenericApp工程改编,代码如下[cpp]view plaincopyprint?1./**************************************************************************************************2.Filename: TESTApp.c3.Revised: $Date: 2009-03-18 15:56:27 -0700 (Wed, 18 Mar 2009) $4.Revision: $Revision: 19453 $5.6.Description: TEST Application (no Profile).7.8.9.Copyright 2004-2009 Texas Instruments Incorporated. All rights reserved.10.11.IMPORTANT: Your use of this Software is limited to those specific rights12.granted under the terms of a software license agreement between the user13.who downloaded the software, his/her employer (which must be your employer)14.and Texas Instruments Incorporated (the "License"). You may not use this15.Software unless you agree to abide by the terms of the License. The License16.limits your use, and you acknowledge, that the Software may not be modified,17.copied or distributed unless embedded on a Texas Instruments microcontroller18.or used solely and exclusively in conjunction with a Texas Instruments radio19.frequency transceiver, which is integrated into your product. Other than for20.the foregoing purpose, you may not use, reproduce, copy, prepare derivative21.works of, modify, distribute, perform, display or sell this Software and/or22.its documentation for any purpose.23.24.YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE25.PROVIDED 揂S IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,26.INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,27.NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL28.TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,29.NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER30.LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES31.INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE32.OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT33.OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES34.(INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.35.36.Should you have any questions regarding your right to use this Software,37.contact Texas Instruments Incorporated at .38.**************************************************************************************************/39.40./*********************************************************************41.This application isn't intended to do anything useful, it is42.intended to be a simple example of an application's structure.43.44.This application sends "Hello World" to another "TEST"45.application every 15 seconds. The application will also46.receive "Hello World" packets.47.48.The "Hello World" messages are sent/received as MSG type message.49.50.This applications doesn't have a profile, so it handles everything51.directly - itself.52.53.Key control:54.SW1:55.SW2: initiates end device binding56.SW3:57.SW4: initiates a match description request58.*********************************************************************/59.60./*********************************************************************61.* INCLUDES62.*/63.#include "OSAL.h"64.#include "AF.h"65.#include "ZDApp.h"66.#include "ZDObject.h"67.#include "ZDProfile.h"68.69.#include "Common.h"70.#include "DebugTrace.h"71.72.#if !defined( WIN32 )73.#include "OnBoard.h"74.#endif75.76./* HAL */77.#include "hal_lcd.h"78.#include "hal_led.h"79.#include "hal_key.h"80.#include "hal_uart.h"81.82.#include "OSAL_Nv.h"83.84./*********************************************************************85.* MACROS86.*/87.88./*********************************************************************89.* CONSTANTS90.*/91.92./*********************************************************************93.* TYPEDEFS94.*/95.96./*********************************************************************97.* GLOBAL VARIABLES98.*/99.100.// This list should be filled with Application specific Cluster IDs. 101.c onst cId_t TESTApp_ClusterList[TESTAPP_MAX_CLUSTERS] =102.{103.T ESTAPP_CLUSTERID104.};105.106.c onst SimpleDescriptionFormat_t TestApp_SimpleDesc =107.{108.T ESTAPP_ENDPOINT, // int Endpoint;109.T ESTAPP_PROFID, // uint16 AppProfId[2];110.T ESTAPP_DEVICEID, // uint16 AppDeviceId[2];111.T ESTAPP_DEVICE_VERSION, // int AppDevVer:4;112.T ESTAPP_FLAGS, // int AppFlags:4;113.T ESTAPP_MAX_CLUSTERS, // byte AppNumInClusters;114.(cId_t *)TESTApp_ClusterList, // byte *pAppInClusterList;115.0, // byte AppNumInClusters;116.(cId_t *)NULL // byte *pAppInClusterList;117.};//用于描述一个设备节点118.119.// This is the Endpoint/Interface description. It is defined here, but 120.// filled-in in TESTApp_Init(). Another way to go would be to fill 121.// in the structure here and make it a "const" (in code space). The 122.// way it's defined in this sample app it is define in RAM.123.e ndPointDesc_t TestApp_epDesc;//节点描述符124.125./********************************************************************* 126.* EXTERNAL VARIABLES127.*/128.129./********************************************************************* 130.* EXTERNAL FUNCTIONS131.*/132.133./********************************************************************* 134.* LOCAL VARIABLES135.*/136.b yte TestApp_TaskID; // Task ID for internal task/event processing 137.// This variable will be received when138.// TESTApp_Init() is called.139.d evStates_t TestApp_NwkState;140.141.142.b yte TestApp_TransID; // This is the unique message ID (counter) 143.144.a fAddrType_t TestApp_DstAddr;145.146.147.s tatic uint8 SerialApp_TxLen;148.s tatic void rxCB(uint8 port, uint8 event);149./********************************************************************* 150.* LOCAL FUNCTIONS151.*/152.v oid TestApp_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg );153.v oid TestApp_HandleKeys( byte shift, byte keys );154.v oid TestApp_MessageMSGCB( afIncomingMSGPacket_t *pckt );155.v oid TestApp_SendTheMessage( void );156.157./********************************************************************* 158.* NETWORK LAYER CALLBACKS159.*/160.161./********************************************************************* 162.* PUBLIC FUNCTIONS163.*/164.165./********************************************************************* 166.* @fn TESTApp_Init167.*168.* @brief Initialization function for the TEST App Task.169.* This is called during initialization and should contain170.* any application specific initialization (ie. hardware171.* initialization/setup, table initialization, power up172.* notificaiton ... ).173.*174.* @param task_id - the ID assigned by OSAL. This ID should be175.* used to send messages and set timers.176.*177.* @return none178.*/179.v oid TestApp_Init( byte task_id )180.{181.h alUARTCfg_t uartConfig;182.T estApp_TaskID = task_id;183.T estApp_NwkState = DEV_INIT;184.T estApp_TransID = 0;185.186.// Device hardware initialization can be added here or in main() (Zmain.c). 187.// If the hardware is application specific - add it here.188.// If the hardware is other parts of the device add it in main().189.190.T estApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;191.T estApp_DstAddr.endPoint = TESTAPP_ENDPOINT;192.T estApp_DstAddr.addr.shortAddr = 0xFFFF;193.194.// Fill out the endpoint description.195.T estApp_epDesc.endPoint = TESTAPP_ENDPOINT;196.T estApp_epDesc.task_id = &TestApp_TaskID;197.T estApp_epDesc.simpleDesc198.= (SimpleDescriptionFormat_t *)&TestApp_SimpleDesc;199.T estApp_tencyReq = noLatencyReqs;200.201.// Register the endpoint description with the AF202.a fRegister( &TestApp_epDesc );203.204.u artConfig.configured = TRUE;205.u artConfig.baudRate = HAL_UART_BR_115200;206.u artConfig.flowControl = FALSE;207.u artConfig.flowControlThreshold = 64; // 2x30 don't care - see uart driver. 208.u artConfig.rx.maxBufSize = 128; // 2x30 don't care - see uart driver. 209.u artConfig.tx.maxBufSize = 128; // 2x30 don't care - see uart driver. 210.u artConfig.idleTimeout = 6; // 2x30 don't care - see uart driver.211.u artConfig.intEnable = TRUE; // 2x30 don't care - see uart driver.212.u artConfig.callBackFunc = rxCB;213.H alUARTOpen (0, &uartConfig);214.215.// Register for all key events - This app will handle all key events216.//RegisterForKeys( TestApp_TaskID );217.218.// Update the display219.#if defined ( LCD_SUPPORTED )220.H alLcdWriteString( "TestApp", HAL_LCD_LINE_1 );221.#endif222.223.Z DO_RegisterForZDOMsg( TestApp_TaskID, End_Device_Bind_rsp );224.Z DO_RegisterForZDOMsg( TestApp_TaskID, Match_Desc_rsp );225.}226.227./*********************************************************************228.* @fn TESTApp_ProcessEvent229.*230.* @brief TEST Application Task event processor. This function231.* is called to process all events for the task. Events232.* include timers, messages and any other user defined events.233.*234.* @param task_id - The OSAL assigned task ID.235.* @param events - events to process. This is a bit map and can236.* contain more than one event.237.*238.* @return none239.*/240.U INT16 TestApp_ProcessEvent( byte task_id, UINT16 events )241.{242.a fIncomingMSGPacket_t *MSGpkt;243.244.245.246.(void)task_id; // Intentionally unreferenced parameter247.248.i f ( events & SYS_EVENT_MSG )249.{250.M SGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( TestApp_TaskID );251.w hile ( MSGpkt )252.{253.s witch ( MSGpkt->hdr.event )254.{255.256.c ase KEY_CHANGE:257.T estApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); 258.b reak;260.c ase AF_INCOMING_MSG_CMD:261.T estApp_MessageMSGCB( MSGpkt );262.b reak;263.264.d efault:265.b reak;266.}267.268.// Release the memory269.o sal_msg_deallocate( (uint8 *)MSGpkt );//释放消息所占用空间270.271.// Next272.M SGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( TestApp_TaskID );//接着获取消息273.}274.275.// return unprocessed events276.r eturn (events ^ SYS_EVENT_MSG);277.}278.279.// Send a message out - This event is generated by a timer280.// (setup in TESTApp_Init()).281.i f ( events & TESTAPP_SEND_MSG_EVT )282.{283.// Send "the" message284.T estApp_SendTheMessage();285.286.// Setup to send message again287.o sal_start_timerEx( TestApp_TaskID,288.T ESTAPP_SEND_MSG_EVT,289.T ESTAPP_SEND_MSG_TIMEOUT );290.291.// return unprocessed events292.r eturn (events ^ TESTAPP_SEND_MSG_EVT);293.}294.295.// Discard unknown events296.r eturn 0;297.}299./********************************************************************* 300.* Event Generation Functions301.*/302.303./********************************************************************* 304.* @fn TESTApp_ProcessZDOMsgs()305.*306.* @brief Process response messages307.*308.* @param none309.*310.* @return none311.*/312.v oid TestApp_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg )313.{314.s witch ( inMsg->clusterID )315.{316.c ase End_Device_Bind_rsp:317.i f ( ZDO_ParseBindRsp( inMsg ) == ZSuccess )318.{319.// Light LED320.H alLedSet( HAL_LED_4, HAL_LED_MODE_ON );321.}322.#if defined(BLINK_LEDS)323.e lse324.{325.// Flash LED to show failure326.H alLedSet ( HAL_LED_4, HAL_LED_MODE_FLASH );327.}328.#endif329.b reak;330.331.c ase Match_Desc_rsp:332.{333.Z DO_ActiveEndpointRsp_t *pRsp = ZDO_ParseEPListRsp( inMsg );334.i f ( pRsp )335.{336.i f ( pRsp->status == ZSuccess && pRsp->cnt )338.T estApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;339.T estApp_DstAddr.addr.shortAddr = pRsp->nwkAddr;340.// Take the first endpoint, Can be changed to search through endpoints 341.T estApp_DstAddr.endPoint = pRsp->epList[0];342.343.// Light LED344.H alLedSet( HAL_LED_4, HAL_LED_MODE_ON );345.}346.o sal_mem_free( pRsp );347.}348.}349.b reak;350.}351.}352.353./********************************************************************* 354.* @fn TESTApp_HandleKeys355.*356.* @brief Handles all key events for this device.357.*358.* @param shift - true if in shift/alt.359.* @param keys - bit field for key events. Valid entries:360.* HAL_KEY_SW_4361.* HAL_KEY_SW_3362.* HAL_KEY_SW_2363.* HAL_KEY_SW_1364.*365.* @return none366.*/367.v oid TestApp_HandleKeys( byte shift, byte keys )368.{369.z AddrType_t dstAddr;370.371.// Shift is used to make each button/switch dual purpose.372.i f ( shift )373.{374.i f ( keys & HAL_KEY_SW_1 )375.{376.}377.i f ( keys & HAL_KEY_SW_2 )378.{379.}380.i f ( keys & HAL_KEY_SW_3 )381.{382.}383.i f ( keys & HAL_KEY_SW_4 )384.{385.}386.}387.e lse388.{389.i f ( keys & HAL_KEY_SW_1 )390.{391.}392.393.i f ( keys & HAL_KEY_SW_2 )394.{395.H alLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );396.397.// Initiate an End Device Bind Request for the mandatory endpoint 398.d stAddr.addrMode = Addr16Bit;399.d stAddr.addr.shortAddr = 0x0000; // Coordinator400.Z DP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(),401.T estApp_epDesc.endPoint,402.T ESTAPP_PROFID,403.T ESTAPP_MAX_CLUSTERS, (cId_t *)TESTApp_ClusterList,404.T ESTAPP_MAX_CLUSTERS, (cId_t *)TESTApp_ClusterList,405.F ALSE );406.}407.408.i f ( keys & HAL_KEY_SW_3 )409.{410.}411.412.i f ( keys & HAL_KEY_SW_4 )413.{414.H alLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );415.// Initiate a Match Description Request (Service Discovery)416.d stAddr.addrMode = AddrBroadcast;417.d stAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;418.Z DP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR,419.T ESTAPP_PROFID,420.T ESTAPP_MAX_CLUSTERS, (cId_t *)TESTApp_ClusterList,421.T ESTAPP_MAX_CLUSTERS, (cId_t *)TESTApp_ClusterList,422.F ALSE );423.}424.}425.}426.427./********************************************************************* 428.* LOCAL FUNCTIONS429.*/430.431./********************************************************************* 432.* @fn TESTApp_MessageMSGCB433.*434.* @brief Data message processor callback. This function processes 435.* any incoming data - probably from other devices. So, based436.* on cluster ID, perform the intended action.437.*438.* @param none439.*440.* @return none441.*/442.v oid TestApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )443.{444.u nsigned char buffer;445.s tatic unsigned char LEDState[5];446.s witch ( pkt->clusterId )447.{448.c ase TESTAPP_CLUSTERID:449.// "the" message450.o sal_memcpy(&buffer, pkt->cmd.Data, 1);451.s witch(buffer)452.{453.c ase 1:454.L EDState[0]++;455.i f(LEDState[0] == 2)456.{457.L EDState[0] = 0;458.}459.i f(LEDState[0] == 0)460.{461.H alLedSet(HAL_LED_1, HAL_LED_MODE_ON); 462.}463.e lse464.{465.H alLedSet(HAL_LED_1, HAL_LED_MODE_OFF); 466.}467.b reak;468.c ase 2:469.L EDState[1]++;470.i f(LEDState[1] == 2)471.{472.L EDState[1] = 0;473.}474.i f(LEDState[1] == 0)475.{476.H alLedSet(HAL_LED_2, HAL_LED_MODE_ON); 477.}478.e lse479.{480.H alLedSet(HAL_LED_2, HAL_LED_MODE_OFF); 481.}482.b reak;483.c ase 3:484.L EDState[2]++;485.i f(LEDState[2] == 2)486.{487.L EDState[2] = 0;488.}489.i f(LEDState[2] == 0)490.{491.H alLedSet(HAL_LED_3, HAL_LED_MODE_ON); 492.}493.e lse494.{495.H alLedSet(HAL_LED_3, HAL_LED_MODE_OFF);496.}497.b reak;498.c ase 4:499.L EDState[3]++;500.i f(LEDState[3] == 2)501.{502.L EDState[3] = 0;503.}504.i f(LEDState[3] == 0)505.{506.H alLedSet(HAL_LED_4, HAL_LED_MODE_ON);507.}508.e lse509.{510.H alLedSet(HAL_LED_4, HAL_LED_MODE_OFF);511.}512.b reak;513.c ase 5:514.L EDState[4]++;515.i f(LEDState[4] == 2)516.{517.L EDState[4] = 0;518.}519.i f(LEDState[4] == 0)520.{521.H alLedSet(HAL_LED_ALL, HAL_LED_MODE_ON);522.}523.e lse524.{525.H alLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);526.}527.b reak;528.}529.#if defined( LCD_SUPPORTED )530.H alLcdWriteScreen( (char*)pkt->cmd.Data, "rcvd" ); 531.#elif defined( WIN32 )532.W PRINTSTR( pkt->cmd.Data );533.#endif534.b reak;535.}536.}537.538./********************************************************************* 539.* @fn TESTApp_SendTheMessage540.*541.* @brief Send "the" message.542.*543.* @param none544.*545.* @return none546.*/547.v oid TestApp_SendTheMessage( void )548.{549.c har theMessageData[] = "LED";550.551.i f ( AF_DataRequest( &TestApp_DstAddr, &TestApp_epDesc,552.T ESTAPP_CLUSTERID,553.3,554.t heMessageData,555.&TestApp_TransID,556.A F_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )557.{558.// Successfully requested to be sent.559.}560.e lse561.{562.// Error occurred in request to send.563.}564.}565.566./********************************************************************* 567.*********************************************************************/ 568.s tatic void rxCB(uint8 port, uint8 event)569.{570.u int8 Uartbuf[80];571.u int8 buffer;572.s tatic unsigned char LEDState[5];573.b ool result = false;574.i f((event &(HAL_UART_RX_FULL|HAL_UART_RX_ABOUT_FULL|HAL_UART_RX_TIMEOUT)) && 575.#if SERIAL_APP_LOOPBACK576.(SerialApp_TxLen < SERIAL_APP_TX_MAX))577.#else578.!SerialApp_TxLen)579.#endif580.{581.S erialApp_TxLen = HalUARTRead(0, Uartbuf, 2);582.583.o sal_memcpy(&buffer, Uartbuf, 1);584.b uffer -=0x30;585.s witch(buffer)586.{587.c ase 0:588.H alLedSet(HAL_LED_1, HAL_LED_MODE_ON);589.r esult = true;590.b reak;591.c ase 1:592.H alLedSet(HAL_LED_2, HAL_LED_MODE_ON);593.r esult = true;594.b reak;595.c ase 2:596.H alLedSet(HAL_LED_3, HAL_LED_MODE_ON);597.r esult = true;598.b reak;599.c ase 3:600.H alLedSet(HAL_LED_ALL, HAL_LED_MODE_ON);601.r esult = true;602.b reak;603.c ase 4:604.H alLedSet(HAL_LED_1, HAL_LED_MODE_OFF);605.r esult = true;606.b reak;607.c ase 5:608.H alLedSet(HAL_LED_2, HAL_LED_MODE_OFF);609.r esult = true;610.b reak;611.c ase 6:612.H alLedSet(HAL_LED_3, HAL_LED_MODE_OFF);613.r esult = true;614.b reak;615.c ase 7:616.H alLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);617.r esult = true;618.b reak;619.}620.i f(result)621.{622.H alUARTWrite(0, "success\r\n", 9);623.}624.e lse625.{626.H alUARTWrite(0, "failed\r\n", 8);627.}628.S erialApp_TxLen = 0;629.}630.}只需查看TestApp_Init()以及rxCB()函数即可,在TestApp_Init()函数中对串口0进行配置,在rxCB()函数中对接收到的数据进行解析并对LED资源做出相应的处理。
cc2530按键控制流水灯本次设计用LED1,LED2,LED3 灯及按键S1 为外设。
采用P10、P11、P14 口为输出口,驱动LED1/LED2/LED3,P01 口为输入口,接受按键信号输入(高电平为按键信号)。
1.高性能2.4G 射频模块Q2530RFQ2530RF是丘捷技基于TI公司第二代2.4GHz IEEE 802.15.4 /RF4CE/ZigBee的第二代片上系统解决方案CC2530 F256的全功能模块,集射频收发及MCU控制功能于一体。
外围原件包含一颗32MHz晶振和一颗32.768KHz晶振及其他一些阻容器件。
射频部分采用巴伦匹配和外置高增益SMA天线,接收灵敏度高,发送距离远,空旷环境最大传输距离可达400米。
模块引出CC2530所有IO口,便于功能评估与二次开发。
2.多功能开发板Q2530EB多功能扩展板Q2530EB 可支持多种射频主控模块(例如Q2530RF等),配置有串口液晶显示接口,USB供电接口,DC 5V电源接口,电池接口,RS232接口,DEBUG接口,五向按键及指示灯,红外遥控信号接收/发射等模块。
所有的外设均通过SPI总线/UART /DEBUG等接口与射频模块Q2530RF 相连,并完全受Q2530RF 控制和访问。
多功能仿真扩展板Q2530EB 采用三种电源供电方式:DC 5V供电、USB接口供电、电池供电,可在插座P5设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或者USB接口供电。
电源开关为P4。
Q2530EB 板卡背面的电池盒可放置3节5号干电池,输出电压3.4~4.5V,板载电源电路将其调整到+3.3V 稳定的直流电压输出供后级使用。
当电池电压低于3.4V 时,应更换电池以保持模块正常工作。
Q2530EB 带有1个DC 5V的电源适配器接口P2和一个USB接口P1,输入电压经过稳压器降压为+3.3V输出供后极使用。
西北师范大学计算机科学与工程学院课程实验报告实验设计思想描述及实验原理1.ZIGBEE(CC2530)模块LED硬件接口 :ZIGBEE(CC2530)模块硬件上设计有2个LED灯,用来编程调试使用。
分别连接CC2530的P1_0、P、1_1两个IO引脚。
从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。
2. SampleApp实验简介:SampleApp实验是协议栈自带的ZIGBEE无线网络自启动(组网)样例,该实验实现的功能主要是协调器自启动(组网),节点设备自动入网。
之后两者建立无线通讯,数据的发送主要有2中方式,一种为周期定时发送信息(本次实验采用该方法测试),另一种需要通过按键事件触发发送FLASH信息。
由于实验配套ZIGBEE模块硬件上与TI公司的ZIGBEE样板有差异,因此本次实验没有采用按键触发方式。
Periodic消息是通过系统定时器开启并定时广播到group1出去的,因此在SampleApp_ProcessEvent事件处理函数中有如下定时器代码:当设备加入到网络后,其状态就会变化,对所有任务触发ZDO_STATE_CHANGE事件,开启一个定时器。
当定时时间一到,就触发广播periodic消息事件,触发事件SAMPLEAPP_SEND_PERIODIC_MSG_EVT,相应任务为SampleApp_TaskID,于是再次调用SampleApp_ProcessEvent()处理SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件,该事件处理函数调用SampleApp_SendPeriodicMessage()来发送周期信息。
3. MT层串口通讯:协议栈将串口通讯部分放到了MT层的MT任务中去处理了,因此我们在使用串口通讯的时候要在编译工程(通常是协调器工程)时候在编译选项中加入MT层相关任务的支持:MT_TASK,ZTOOL_P1 或ZAPP_P1。
SimpleAPP分析SimpleApp分析程序总是从helloword开始的,如果能找到一个例子开始,那么是最好不多的了,还好Ti为我们提供了很多的机会,让我们开始看一下simpleapp吧【TexasInstruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SimpleApp】SimpleApp里面有两个应用,一个是收集传感器的值,其中有一个传感器设备和一个收集设备;另一个应用时智能开关,有一个控制节点和一个灯节点。
这里主要展示了如何网络建立,绑定和解绑定的演示以及开发一个自己的应用。
双击打开\TexasInstruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SimpleApp\CC2430DB\SimpleApp.eww工程,既然是51的内核那只能用C了,一个地球人都知道的原理就是C程序是从main()开始的,而且整个程序就是一个main()函数,那么好办了,我们找到main()然后分析它就可以看清楚整个程序的结构了。
在工作空间中有8种项目配置,因为TI提供了两种开发板,所以实际上4种项目配置,分别配置成应用中4种设备。
我们直接看智能灯的应用,跟这个应用相关的配置是(以DB开发板为原型):SimpleSwitchDB和SimpleControllerDB。
SimpleSwitchDB是终端设备(我的理解是这里是灯的开关),SimpleControllerDB是控制设备是协调器或者路由器。
这里之所以把和灯相连的设备作为协调器或者是路由器我认为是为了和家庭或者是场景中的其他设备进行交互所需要的。
因为灯的状态还必须被其他的设备知道,就必须通知其他设备当前的状态!演示效果:控制设备-SW1:以协调器启动,SW2:以路由器启动启动控制设备将进入允许绑定状态,此时在10S内按动终端设备上的S1将发送绑定请求,成功绑定后LED1将点亮(如果打开节能选项,将是闪烁状态);按动终端设备上的S2将发送切换命令,将导致控制设备上的LED1开关状态的切换,按S3将此设备接绑定。
用Zigbee协议栈来进行按键控制LED灯的亮灭实验本实验是基于ZStack-CC2530-2.5.1a版本的协议栈来进行实验的,整个实验需要改动hal_board_cfg.h、hal_board_cfg.h、hal_key.c、hal_key.h和自己定义的Coordinator.c这5个文件。
注意:添加自己的按键时尽量不要修改协议栈里面的按键程序,自己另行添加即可。
1、hal_key.h在/* Switches (keys) */下面添加自己的按键定义#define HAL_KEY_SW_8 0x80----------------------------------------------------------------------------------------2、hal_board_cfg.h在/* S6 */#define PUSH1_BV BV(1)#define PUSH1_SBIT P0_1#if defined (HAL_BOARD_CC2530EB_REV17)#define PUSH1_POLARITY ACTIVE_LOW#elif defined (HAL_BOARD_CC2530EB_REV13)#define PUSH1_POLARITY ACTIVE_LOW#else#error Unknown Board Indentifier#endif下面模仿/* S6 */下的程序定义自己的按键值:/* S8 */#define PUSH8_BV BV(4)#define PUSH8_SBIT P0_4#if defined (HAL_BOARD_CC2530EB_REV17)#define PUSH8_POLARITY ACTIVE_LOW#elif defined (HAL_BOARD_CC2530EB_REV13)#define PUSH8_POLARITY ACTIVE_LOW#else#error Unknown Board Indentifier#endif------------------------------------------------------------------------------------------------------------- 在/* ----------- Push Buttons ---------- */#define HAL_PUSH_BUTTON1() (PUSH1_POLARITY (PUSH1_SBIT)) #define HAL_PUSH_BUTTON2() (PUSH2_POLARITY (PUSH2_SBIT)) #define HAL_PUSH_BUTTON3() (0)#define HAL_PUSH_BUTTON4() (0)#define HAL_PUSH_BUTTON5() (0)#define HAL_PUSH_BUTTON6() (0)下定义自己的按键函数#define HAL_PUSH_BUTTON8() (PUSH8_POLARITY (PUSH8_SBIT))---------------------------------------------------------------------------------------------------------------- 在/* SW_6 is at P0.1 */#define HAL_KEY_SW_6_PORT P0#define HAL_KEY_SW_6_BIT BV(1)#define HAL_KEY_SW_6_SEL P0SEL#define HAL_KEY_SW_6_DIR P0DIR/* edge interrupt */#define HAL_KEY_SW_6_EDGEBIT BV(0)#define HAL_KEY_SW_6_EDGE HAL_KEY_FALLING_EDGE/* SW_6 interrupts */#define HAL_KEY_SW_6_IEN IEN1 /* CPU interrupt mask register */#define HAL_KEY_SW_6_IENBIT BV(5) /* Mask bit for all of Port_0 */#define HAL_KEY_SW_6_ICTL P0IEN /* Port Interrupt Control register */#define HAL_KEY_SW_6_ICTLBIT BV(1) /* P0IEN - P0.1 enable/disable bit */#define HAL_KEY_SW_6_PXIFG P0IFG /* Interrupt flag at source */下模仿/* SW_6 is at P0.1 */建立自己的按键函数#define HAL_KEY_SW_8_PORT P0#define HAL_KEY_SW_8_BIT BV(4) //修改#define HAL_KEY_SW_8_SEL P0SEL#define HAL_KEY_SW_8_DIR P0DIR/* edge interrupt */#define HAL_KEY_SW_8_EDGEBIT BV(0)#define HAL_KEY_SW_8_EDGE HAL_KEY_FALLING_EDGE/* SW_8 interrupts */#define HAL_KEY_SW_8_IEN IEN1 /* CPU interrupt mask register */#define HAL_KEY_SW_8_IENBIT BV(5) /* Mask bit for all of Port_0 */#define HAL_KEY_SW_8_ICTL P0IEN /* Port Interrupt Control register */#define HAL_KEY_SW_8_ICTLBIT BV(4) //修改#define HAL_KEY_SW_8_PXIFG P0IFG /* Interrupt flag at source */-------------------------------------------------------------------------------------------------------------注意:将void HalKeyPoll (void)中的// if ((HAL_KEY_JOY_MOVE_PORT & HAL_KEY_JOY_MOVE_BIT)) /* Key is activeHIGH */// {// keys = halGetJoyKeyInput();// }/* If interrupts are not enabled, previous key status and current key status * are compared to find out if a key has changed status.*/// if (!Hal_KeyIntEnable)// {// if (keys == halKeySavedKeys)// {/* Exit - since no keys have changed */// return;// }/* Store the current keys for comparation next time */// halKeySavedKeys = keys;// }// else// {/* Key interrupt handled here */全部注释掉,因为它会对我们设定的按键产生干扰,具体情况我也不知道...然后再在内添加if (HAL_PUSH_BUTTON8()){keys |= HAL_KEY_SW_8;}-------------------------------------------------------------------------------------------------------------最后再在Coordinator.c中的uint16 GenericApp_ProcessEvent( uint8 task_id, uint16 events )添加事件及其处理函数case KEY_CHANGE:GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );再在static void GenericApp_HandleKeys( uint8 shift, uint8 keys ){zAddrType_t dstAddr;if ( keys & HAL_KEY_SW_1 ){if ( keys & HAL_KEY_SW_2 ){}if ( keys & HAL_KEY_SW_3 ){}if ( keys & HAL_KEY_SW_4 ){}if ( keys & HAL_KEY_SW_6 ) //添加自己的按键及其处理函数{HalLedSet(HAL_LED_1, HAL_LED_MODE_FLASH);}}最后烧到开发板中即可,祝大家实验成功。
信号与系统实验室Signal and SystemLaboratory实验室功能:本实验室配备信号与系统实验箱,TKGP-1型高频电子试验箱,示波器,高频信号发生器,万用表等32台套.可以支持《高频电子线路》和《信号与系统》等课程的实验教学。
实验内容:基本运算单元无源和有源滤波器系统时域响应的模拟解非正弦信号的分解与合成二阶网络函数的模拟二阶网络状态轨迹的显示LC与晶体振荡器实验通频带展宽实验非线性波形变换实验幅度调制与解调实验锁相调频与鉴频实验函数信号发生实验数字调频与解调实验数字信号发生实验集成乘法器混频实验小信号调谐放大实验电视图像中放检波实验电视伴音中放鉴频实验电子设计制作实训实验室ElectronicDesignLaboratory实验室配置:配备数字存储示波器20台,函数信号发生器20台,双踪示波器20台,双路直流稳压电源20台,超高频毫伏表20台,数字万用表20台,单片机仿真系统20套。
EDA实验系统20套,联想启天M8250计算机12台,制版系统1套。
实验室功能:重点培养学生的电子产品设计,仿真和制作的能力。
通过本实验室的综合实验,使学生理解各个实验设备的原理和功能,锻炼动手能力。
培养学生成为全面熟悉电子产品制作工艺,有一定的理论知识、熟练的操作技能、实用能力较强的高校毕业生。
物联网实验室Internet of ThingsLaboratory实验室功能:本实验室配备配备了博创智联UP CUP IOT-A9-II型物联网嵌入式教学平台32台、计算机32台、THPLC-2型可编程控制器实验箱及手持编程器32套,可支持“可编程控制器及其应用”等课程的实验教学,直观地进行PLC的基础指令练习,多个PLC实际应用的模拟实验。
实验内容:点对点无线通讯实验点对多点无线通讯实验Z-Stack7007协议栈入门实验基于Zstack的无线组网实验基于Zstack的无线数据(温湿度)传输实验基于Zstack的串口控制LED实验基于Zstack的串口透传实验RFID读卡实验数码管显示控制实验装配流水线模拟控制实验步进电机模拟控制实验LED数码显示控制机械手动作的模拟邮件分拣系统模拟加工中心的模拟控制十字路口交通灯模拟实验电梯模拟控制系统实验传送带模拟控制实验可编程控制器的指令编程练习直线运动控制系统轧钢机控制系统模拟自动售货机的模拟控制实验,液体混合装置控制的模拟ACM实验室ACM Laboratory实验室功能:实验内容:通信技术实验室Communication Technology Laboratory实验室功能:本实验室配备通信技术综合实验台31台套,可供60人同时实验。
基于ZigBee的无线灯光调节器的设计作者:白晓亮宗晓萍孙雪来源:《现代电子技术》2013年第04期摘要:在介绍了ZigBee技术优势的基础上,给出了一种采用ZigBee无线网络的灯光调节器的设计方案。
以TI公司的CC2530无线处理器为核心,采用最新的Z⁃STACK协议栈,通过对市电交流零点的测量,控制双向可控硅导通时间完成对灯光的控制。
实验结果表明,该设计方案硬件成本低,通信距离远,具有很强的实用价值。
关键词:无线灯光调节器; ZigBee; ZSTACK;双向可控硅中图分类号: TN919⁃34; TP212 文献标识码: A 文章编号: 1004⁃373X(2013)04⁃0013⁃030 引言随着科技的进步,以及人们节能意识的增强,人们在日常生活中越来越注重节约能源,节约用电是其中重要的方面。
由于家庭照明用电占整个家庭用电很大一部分,有必要在节约照明用电上做出努力。
近几年出现的LED光源具有高效率、低功耗、低电压、寿命长等优点,是下一代照明的主力军,但由于生产成本高,市场占有率小等问题,价格高居不下,是普通白炽灯的10倍甚至几十倍,近期普及难道很大。
对现在占有率很大的白炽灯进行改造,使其达到节能的目的是个不错的选择[1]。
本文设计了一种采用ZigBee无线网络的灯光调节器,可以控制白炽灯的开关,同时也可以连续调节白炽灯的亮度。
这种设计可以使开关和灯具网络化,便于控制,同时可以免除传统有线布线的线材损耗,其在节能及生活便利方面可以发挥重要作用。
1 ZigBee简介ZigBee 是一种新兴的短距离、低功率、低速率的无线接入技术,具有自组网,网络规模大,通信距离远,低功耗,低造价等优点,工作于无需注册的2. 4 GHz ISM 频段,传输速率为10~250 Kb/s,传输距离为10~75 m。
该项技术自2002 年起由ZigBee 技术联盟研究开发,采用IEEE 802.15.4 标准作为其物理层和媒体接入子层标准,网络层及上层标准采用ZigBee 技术标准。
第1篇一、实验背景随着信息技术的飞速发展,物联网技术逐渐成为我国新一代信息技术的重要组成部分。
物联网(Internet of Things,简称IoT)是指通过信息传感设备,将各种物品连接到网络上进行信息交换和通信,以实现智能化识别、定位、追踪、监控和管理的一种网络技术。
本实验旨在让学生深入了解物联网的基本原理、关键技术及其实际应用,培养学生的实践能力和创新意识。
二、实验目的1. 理解物联网的基本概念、发展历程和未来趋势;2. 掌握物联网关键技术,如传感器技术、通信技术、数据处理技术等;3. 熟悉物联网系统开发流程,包括需求分析、系统设计、实现和测试;4. 培养学生的实践能力和创新意识,提高学生的综合素质。
三、实验内容1. 物联网感知层实验:通过搭建一个简单的传感器网络,实现温度、湿度等环境参数的采集和传输。
(1)实验原理:利用DS18B20数字温度传感器采集环境温度,通过单总线通信协议将数据传输到单片机,单片机再将数据发送到上位机。
(2)实验步骤:1)搭建传感器网络,包括DS18B20传感器、单总线通信模块、单片机等;2)编写单片机程序,实现传感器数据采集和通信;3)使用上位机软件(如LabVIEW)接收传感器数据,并实时显示。
2. 物联网网络层实验:利用ZigBee无线通信技术实现节点间的数据传输。
(1)实验原理:ZigBee是一种低功耗、低成本、低速率的无线通信技术,适用于短距离、低速率的数据传输。
(2)实验步骤:1)搭建ZigBee网络,包括协调器、路由器和终端节点;2)编写节点程序,实现数据采集、传输和接收;3)测试网络性能,如传输速率、通信距离等。
3. 物联网应用层实验:开发一个基于物联网的智能家居控制系统。
(1)实验原理:利用物联网技术实现家居设备的远程控制、实时监测等功能。
(2)实验步骤:1)选择智能家居设备,如智能灯泡、智能插座等;2)搭建智能家居控制系统,包括控制器、传感器、执行器等;3)编写控制器程序,实现家居设备的远程控制、实时监测等功能;4)测试系统性能,如设备响应速度、数据准确性等。
基于Zstack的串口透传实验1.实验环境硬件:UP-CUP IOT-6410-II 型嵌入式物联网综合实验系统, PC 机软件:IAR Embedded Workbench for MCS-51 ZStack-CC2530-2.3.0-1.4.0协议栈2.实验内容学习TI ZStack2007协议栈内容,掌握CC2530模块串口数据透传的方法。
使用IAR开发环境设计程序,ZStack-2.3.0-1.4.0协议栈源码例程SerialApp工程基础上,实现ZIGBEE节点间的串口数据无线透传,实验可能需要2套UP-CUP IOT-6410-II型系统。
3.实验原理ZIGBEE(CC2530)模块LED硬件接口图5.7.1 LED硬件接口ZIGBEE(CC2530)模块硬件上设计有2个LED灯,用来编程调试使用。
分别连接CC2530的P1_0、P1_1两个IO引脚。
从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。
系统框图如下图5.7.2 系统框图无线数据传输,是指用无线信道代替有线连接的方式进行数据传输通讯。
透明数据传输,是指上位机与模块进行信息交换的数据格式,没有像指令头、结束符等特定数据信息,只要上位机有串口数据输出,模块就把串口的数据以无线方式编码发送,当接收模块接收到发射模块发送的无线数据后进行解码,把解码后的数据按发送端的格式从串口输出。
也就是说模块对使用者是开发透明的。
本实验中将使用ZIGBEE无线数传模块替代串口连接线,实现数据的无线透传。
SerailApp实验简介TI的ZStack-2.3.0-1.4.0协议栈中自带了一些演示实验DEMO,存放在默认安装目录的C:\Texas Instruments\ZStack-2.3.0-1.4.0\Projects\相应目录下,本次实验将利用该目录C:\Texas Instruments\ZStack-2.3.0-1.4.0\Projects\zstack\Utilities下的SerialApp实验工程来实现ZIGBEE 模块的无线数据透传。
无线传感器网络设计与实践基础实验教程与任务书东南大学仪器科学与工程学院远程测控实验室1032014年3月基础实验一开发软件与驱动安装与使用LED自动闪烁及按键控制实验一、开发软件与驱动安装与使用1、IAR_EW8051-751A安装与使用1.1IAR嵌入式集成开发环境,是IAR系统公司设计用于处理器软件开发的集成软件包,包含软件编辑,编译,连接,调试等功能。
包含用于ARM软件开发的集成开发环境IAR Embedded Workbench for ARM,用于ATMEL公司单片机软件开发的集成开发环境IAR Embedded Workbench for AVR,CVT-IOT 采用用于兼容8051处理器软件开发的集成开发环境IAR Embedded Workbench for 8051,用于TI公司的CC24XX及CC25XX家族无线单片机的底层软件开发,Zigbee协议移植。
1.2光盘/开发工作及相关驱动/IAR软件/IAR_EW8051-751A.rar,解压后运行Setup.exe;选择Full模式以及默认安装路径。
1.3环境配置步骤(1)Project/create new project->empty project,点击Ok后,保存工程。
(2)Project/Option/General Options/Device information –>devices/Texas Instruments/CC2530.i51,点击打开。
(3)Project/Option/Linker->勾选output file的override default, 将XXX.d51改成XXX.hex。
勾选Format的Other选项。
点击Ok,这样编译后自动生成烧写文件。
(4)需要下载调试运行,Project/Option/Debugger, Device 中选择exas Instruments2、ZigBee协议栈安装与使用2.1 Z-Stack根据IEEE 802.15.4和ZigBee 标准分为以下几层:API(ApplicationProgramming Interface),HAL(Hardware Abstract Layer),MAC(Media Access Control),NWK(Zigbee Network Layer),OSAL(Operating System Abstract System),Security,Service,ZDO(Zigbee Device Objects)。
QT环境下的LED控制设计概述:在嵌入式系统开发中,LED控制是一个常见的需求。
在此基础上,使用QT开发环境设计一个LED控制界面,可以实现对LED的控制和状态反馈。
设计目标:1.实现对LED的开、关功能;2.实现对LED亮度的控制功能;3.实现LED状态的监控和反馈功能。
设计方案:1.硬件方案:使用一个可编程的嵌入式开发板连接到计算机,通过板上的GPIO口控制LED的开、关和亮度。
2.软件方案:1)QT开发环境的安装和配置:首先需要在开发主机上安装和配置QT 开发环境,以便进行QT程序的开发和调试。
设计实施:1.硬件实施:搭建硬件平台,连接开发板和LED,将LED的正极连接到GPIO口,通过控制GPIO口的电平状态,控制LED的亮度和开关。
2.软件实施:1)配置开发环境和创建QT项目:在QT开发环境中,创建一个新的QT项目,配置项目的相关参数。
3)编写业务逻辑代码:在QT项目中添加必要的代码,通过GPIO口控制LED开、关和亮度,并将当前状态和亮度值更新到界面上。
4)测试和调试:在开发环境中进行测试和调试,验证LED的控制和状态反馈功能。
总结:本设计基于QT开发环境,实现了LED的控制和状态反馈功能。
通过连接一个可编程的嵌入式开发板和LED,通过GPIO口控制LED的开、关和亮度。
通过QT界面设计,提供了一个直观的用户界面,方便用户进行LED的控制和状态监控。
通过测试和调试,验证了设计的可行性和稳定性。
该设计可以推广应用于各类嵌入式系统中,方便用户进行LED的控制和状态反馈。
.中南大学信息科学与工程学院物联网无线传感器网络实验报告班级:物联网学号:姓名:指导老师:刘伟荣实验时间:2014年4月11日目录实验一基础实验(LED实验) .................................................................................................................... - 2 -1.1实验目的 ........................................................................................................................................ - 2 -1.2实验设备及工具........................................................................................................................... - 2 -1.3实验原理 ........................................................................................................................................ - 2 -1.4 实验步骤及结果 ......................................................................................................................... - 5 - 实验二射频实验......................................................................................................................................... - 6 -2.1 实验目的 ....................................................................................................................................... - 6 -2.2 实验内容 ....................................................................................................................................... - 6 -2.3 实验设备及工具 ......................................................................................................................... - 7 -2.4 实验原理 ....................................................................................................................................... - 7 -2.5 实验步骤 ....................................................................................................................................... - 9 -2.6 实验数据分析及结论.............................................................................................................. - 10 - 实验三Zstack组网实验......................................................................................................................... - 11 -3.1 实验目的 ..................................................................................................................................... - 11 -3.2 实验内容 ..................................................................................................................................... - 11 -3.3 预备知识 ..................................................................................................................................... - 12 -3.4 实验设备及工具 ....................................................................................................................... - 12 -3.5 实验原理 ..................................................................................................................................... - 12 -3.6 实验步骤 ..................................................................................................................................... - 17 -3.7 实验数据分析及结论.............................................................................................................. - 18 - 实验四综合实验(传感器网络) ............................................................................................................. - 18 -4.1 智能网关程序设计................................................................................................................... - 19 -4.2 Android 用户控制程序设计.................................................................................................. - 20 -4.3 Zigbee 节点控制程序设计.................................................................................................... - 30 -4.4 平台控制操作............................................................................................................................ - 34 -实验一基础实验(LED实验)1.1实验目的◆通过I/O控制小灯闪烁的过程。
实验1 基于ZStack的LED控制实验-V20160506
1.实验目的
1.1学习基于ZStack控制LED的操作;
1.2学习OSAL系统API接口函数使用;
2.实验设备
硬件:无线传感网实验箱1台,CC Debugger仿真器一套;
软件:IAR Embedded WorkBench,ZStack协议栈;
芯片手册:配套光盘\附件\芯片手册\CC2530数据手册\CC2530中文数据手册完全版.pdf;
协议栈API接口说明文档:配套光盘\附件\Zigbee协议栈资料\ZigBee协议栈API 接口说明\ZigBee2007协议栈API函数使用说明.pdf;
源码路径:配套光盘\源代码\Zigbee无线传感网原理与应用\实验1 基于ZStack的LED 控制实验\Projects\zstack\Samples\Z-Stack_LED;
hex文件路径:配套光盘\源代码\Zigbee无线传感网原理与应用\可执行文件\实验1 基于ZStack的LED控制实验;
3.实验原理
这个实验主要是一个体验性的实验,我们先来体验一下基于OSAL系统的CC2530外设的驱动和相关API函数的使用。
在这里就先不相信介绍原理,我们只体验实验效果和实验流程。
4.实验步骤
4.1 编写实验源代码文件
4.1.1 双击打开配套光盘\源代码\Zigbee无线传感网原理与应用\实验1 基于ZStack的LED控制实验\Projects\zstack\Samples\Z-Stack_LED\CC2530DB\下的SampleApp.eww工程文件,如图4.1所示,工程目录如图4.2所示:
注意:如在打开工程时,出现如图4.0所示提示,是工程文件路径太长造成的,将解压后的源码包换一个路径即可。
图4.0
图4.1 打开工程文件
图4.2 工程项目
4.1.2 点击上边工具栏project->Rebuild All,编译整个工程,将生成z-stack-LED.hex 可执行文件,该可执行文件自动保存在配套光盘\源代码\Zigbee无线传感网原理与应用\实验1 基于ZStack的LED控制实验
\Projects\zstack\Samples\Z-Stack_LED\CC2530DB\DemoEB\Exe目录下。
(注意:请根据该目录下 z-stack-LED.hex 文件的生成时间,判断该文件是否是自己刚刚编译完成的。
)
编译成功,则下边信息栏会提示0错误。
如图4.3所示。
图4.3 编译成功
4.1.3 使用实验箱配套的CCDebugger仿真器将电脑与实验箱的6号节点下载接口相连。
(注意观察CCDebugger仿真器的灯是否变绿,如果是红色则按仿真器的复位键;让仿真器灯变绿)如图4.4所示。
图4.4 连接方法
4.1.4 点击工具栏的下载按钮,将程序下载到CC2530上;如图4.5所示。
图4.5 下载程序
4.1.5 将下载完程序的节点重新上电或按下Reset键复位。
4.3 运行效果
当程序下载进CC2530之后重新打开或按Reset复位相应节点底板,可以看到标号为D1的LED开始快闪几次然后熄灭表示设备初始化完成,然后LED1每1S闪烁一次。