国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【物聯網無線通信技術】ZigBee從理論到實踐(CC2530)

這篇具有很好參考價值的文章主要介紹了【物聯網無線通信技術】ZigBee從理論到實踐(CC2530)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

文章延續(xù)之前【物聯網無線通信技術】系列文章的風格,首先對ZigBee這種在物聯網發(fā)展初期出現的無線通信技術進行了相關背景概念的介紹,并橫向介紹了幾款時間跨度比較大的ZigBee芯片。然后以CC2530為例,從硬件到軟件介紹了ZigBee這中無線通信技術的實現。相信讀者通過通讀本篇文章,能夠對ZigBee無線通信的實現有一個直觀的認識。因篇幅有限,本篇中有些概念和功能沒有詳細展開,讀者可以通過文中的外鏈進行更深的探究。

目錄

ZigBee概述

CC2530EM+SmartRF05

例程解析

工程代碼結構

Basic RF?

Hardware Abstraction Layer

工程編譯與下載


ZigBee概述

ZigBee技術是一種短距離無線通信技術,主要的特色有數據傳輸速率低、功耗低、實現成本低、網絡容量大等,常用于智能家居,工業(yè)自動化等領域。Zigbee基于IEEE 802.15.4標準,該標準定義了用于低速無線個人局域網(LR-WPANs)的物理層和介質訪問控制(MAC)層。Zigbee在此基礎上提供了網絡層、安全特性和各種用例的應用框架,應用層的開發(fā)可以根據用戶的應用需要,對其進行靈活的組網、開發(fā)利用。常見的ZigBee的工作頻段為2.4G,一共具有16個信道11 (2405 MHz) to 26 (2480 MHz),理論上通信速率可達250kbps,采用O-QPSK調制,實際的通信距離取決于發(fā)射功率和天線的效率。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

下面介紹幾款常見的ZigBee芯片廠商。

  • Jennic (JN5148,已停產):N5148 是一款超低功耗、高性能 MCU,結合了符合 IEEE802.15.4 標準的收發(fā)器。它面向低功耗無線網絡應用,具有增強型 32 位 RISC 處理器,通過可變寬度指令、多級指令流水線和具有可編程時鐘速度和各種睡眠模式的低功耗操作提供高編碼效率。該器件包括 128 kB ROM、128 kB RAM 以及豐富的模擬和數字外設組合。大內存占用空間允許該器件既可以運行網絡堆棧(如ZigBee PRO或恩智浦專有的JenNet網絡堆棧),也可以運行嵌入式應用或協處理器模式。工作電流低于 18 mA,允許直接從紐扣電池工作。

    basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

  • Nordic(NRF52840):NRF52840是Nordic Semiconductor公司推出的一款多協議無線通信模塊,其中包括對Zigbee的支持。它采用了高性能的ARM Cortex-M4處理器,集成了豐富的硬件資源和Zigbee協議棧,適用于高性能和低功耗要求的應用場景。

    basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

  • TI(CC2530)::CC2530是德州儀器(Texas Instruments)推出的一款常用的Zigbee模塊。它采用了低功耗的SoC(系統級芯片)設計,集成了Zigbee通信協議棧并結合了領先的射頻收發(fā)器,采用行業(yè)標準增強型 8051 MCU,提供在系統內可編程閃存、8KB大小的RAM和許多其他強大功能。CC2530模塊廣泛應用于家庭自動化、工業(yè)控制和傳感器網絡等領域。

    basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信


CC2530EM+SmartRF05

射頻板我們使用CC2530EM,它是使用CC2530為核心基于推薦的參考設計實現的完整射頻模塊。該模塊配備一個32 MHz 晶振、一個32.768 kHz 晶振、射頻電路上的巴倫和天線匹配濾波器等無源元件以及用于連接天線的SMA 連接器。其相關的參考原理設計可以點擊此處跳轉。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

這里如果需要有更遠的傳輸距離,可以選用CC2530-CC2591EM,它增加了具有高達+22dBm增益的2.4GB射頻前端芯片CC2591。

底板我們使用SmartRF05,它能連接多個德州儀器(TI)低功耗射頻模塊。該板具有廣泛的外圍接口,例如:

  • 3x16字符串行LCD
  • 全速USB 2.0接口
  • UART
  • LED
  • Buttons
  • Joystick

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

我們在上圖的底板紅框處插入射頻板,然后通過CC Debug連接到底板即可進行程序下載調試,點擊這里跳轉底板相關參考設計。


例程解析

Ti官網提供了相關例程供用戶評估射頻性能,點擊這里跳轉下載(不要私信博主要代碼了,能上傳的網絡資源均已上傳或者在文章中添加鏈接,具體的項目工程代碼絕不會給)。

官網的例程一共包含以下三個功能實現:

  1. Light/Switch application:這個例程用于實現無線控制LED燈,芯片需要提前刷寫‘light_switch’工程 。例程需要兩個節(jié)點,一個作為無線開關,一個作為無線燈控制器。具體例程的使用過程如下:
    1. 在底板摁下Button1進入應用程序菜單。
    2. 選擇節(jié)點模式。通過向右或向左移動joystick來導航菜單。選擇其中一個節(jié)點上的設備模式為“Switch”,另一個節(jié)點上的設備模式為“Light”。確認選項按Button1。
    3. LED開關應用示例現已準備就緒?!癓ight”節(jié)點上的 LED1現在可以通過向下移動“Switch”上的joystick來切換。
  2. Packet Error Rate tester application(PER測試):這個例程需要提前刷寫‘per_test’工程,需要兩個節(jié)點來完成數據報誤碼率測試,數據包誤碼率測試應用程序在兩個節(jié)點之間建立單向射頻鏈路。一塊板子將作為發(fā)射節(jié)點運行,另一塊板將作為接收節(jié)點運行。發(fā)送器節(jié)點必須配置了要使用的輸出功率和作為 PER 測試的一部分要傳輸的數據包數(burst size)。在 PER 測試期間,接收方節(jié)點將顯示接收的數據包數,即 RSSI電平(信號強度)和 PER。發(fā)射節(jié)點需要配置模式為發(fā)送,接收節(jié)點配置模式為接收,兩者的通道配置需要保持一致。CC2530EM與CC2530-CC2591EM兩種不同的射頻板提供了不同的配置選項,CC2530-CC2591EM增加了接收增益,并提供了更高的輸出功率:
    1. CC2530EM:Channel=11–26 (2405 – 2480 MHz);Operating Mode=Receiver/Transmitter;TX Output Power=-3dBm/0dBm/4dBm;Burst Size=1K/10K/100K/1M;Packet rate=100, 50, 20 or 10 packets per second。
    2. CC2530-CC2591EM:Channel=11 – 26 (2405 – 2480 MHz);Operating Mode=Receiver/Transmitter;Receiver gain=High Gain/Low Gain;TX Output Power=0 dBm/13 dBm/16 dBm/18dBm/20 dBm;Burst Size=1K, 10K, 100K, 1M;Packet rate=100, 50, 20 or 10 packets per second。
  3. Spectrum Analyzer application:此應用程序使用 SmartRF05EB上的LCD顯示所有IEEE 802.15.4定義通道(11到26)的RSSI值。應用程序以條形圖顯示模式啟動。在此模式下,只有 16 個通道的條形圖顯示。條形圖范圍為-120dBm至-10dBm。文本模式添加文本顯示通道號和一個特定通道的測量值,同時仍顯示所有通道的條形圖,盡管分辨率有所降低。用戶可以在通過向上移動joystick來顯示模式。在文本模式下,通過移動joystick來選擇頻道向左或向右。

工程代碼結構

工程代碼主要由以下三個部分組成(組件):

  • Application layer:該部分包含了上述所示的三種例程實現,可訪問到基本RF和HAL。
  • Basic RF:提供了一個簡單的協議,用于使用雙向射頻鏈路實現傳輸和接收。
  • Hardware Abstraction Layer:包含訪問片內外設,諸如RF、ADC、定時器等;以及板載的功能外設模塊如LCD、UART、操縱桿、按鈕。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

工程的幫助文檔位于docs文件夾中。工作區(qū)文件位于ide文件夾中。不同應用程序的代碼可以在文件夾 source/Apps 中找到。組件文件夾包括應用程序使用的不同組件的源代碼。HAL和基本射頻
源代碼組件位于組件文件夾下。?

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

Basic RF?

基本射頻層使用雙向射頻鏈路提供簡單的發(fā)射和接收協議?;旧漕l協議提供數據包傳輸和接收服務。它還通過使用CCM-64身份驗證和數據包加密/解密進行通信,提供安全功能。安全功能的使能可以通過定義編譯開關SECURITY_CCM來實現。該協議使用符合IEEE 802.15.4的MAC標準數據包。然而,它不提供完整的MAC層,僅提供用于兩個節(jié)點之間通信的簡單數據鏈路層。

  • Association, scanning or beacons均沒有實現。
  • 沒有定義coordinator/device角色(所有節(jié)點平等)。
  • 沒有報重發(fā)。

數據幀如下圖所示。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

Basic RF的使用主要分為以下三個部分。

  1. Startup:?確保外設和RF已初始化,即調用halBoardInit()。創(chuàng)建一個basicRfCfg_t結構,并初始化其成員。如果使用Basic RF的安全特性,上層負責分配16字節(jié)密鑰。調用basicRfInit()初始化數據包協議。
  2. Transmission:建立一個buffer用于存儲要發(fā)送的數據,最大為103字節(jié)。調用basicRfSendPacket()發(fā)送。
  3. Reception:通過調用 basicRfPacketIsReady()來執(zhí)行輪詢,以檢查是否接收到新數據包可以由上層處理。調用basicRfReceive()以接收完成數據包。調用方負責為數據包分配足夠大的緩沖區(qū),為RSSI值分配2字節(jié)緩沖區(qū)空間。

通過調用 basicRfReceiveOn(),無線電接收器將始終保持開啟狀態(tài)。節(jié)點能夠隨時接收數據包,缺點是電流消耗較高。通過調用 basicRfReceiveOff()關閉無線電接收器。

如果需要調用Basic RF層相關API,需要提前包含basic_rf.h與basic_rf_security.h。

下面是結構體與API原型代碼,代碼中包含API的功能說明。

typedef struct {
    uint16 myAddr;
    uint16 panId;
    uint8 channel;
    uint8 ackRequest;
    #ifdef SECURITY_CCM
    uint8* securityKey;
    uint8* securityNonce;
    #endif
} basicRfCfg_t;

/***********************************************************************************
* GLOBAL FUNCTIONS
*/

/* Initialise basic RF datastructures. Sets channel, short address and PAN ID in the chip and configures interrupt on packet reception. The board peripherals and radio interface must be called before this function with the function halBoardInit(). */
uint8 basicRfInit(basicRfCfg_t* pRfConfig);

/* Send packet to the given destination short address. Returns TRUE if packet was sent
successfully, and FAILED otherwise. If ackRequest is TRUE the return value of this function will only be TRUE if an acknowledgment is received from the destination. */
uint8 basicRfSendPacket(uint16 destAddr, uint8* pPayload, uint8 length);

/* Returns TRUE if a received packet is ready to be retrieved by higher layer. */
uint8 basicRfPacketIsReady(void);

/* Returns the RSSI value of the last received packet */
int8 basicRfGetRssi(void);

/* Retrieve packet from basic RF layer. The caller is responsible for allocating buffer space for data and the RSSI value. */
uint8 basicRfReceive(uint8* pRxData, uint8 len, int16* pRssi);

/*Turn on receiver on radio. After calling this function the radio is kept on until basicRfReceiveOff is called. */
void basicRfReceiveOn(void);

/* Turn off receiver on radio, and keep it off unless for transmitting a packet with Clear Channel Assessment. */
void basicRfReceiveOff(void);

下面的時序圖介紹了軟件組件在初始化工作中完成的調用流程。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

下面的時序圖介紹了軟件組件在發(fā)送工作中完成的調用流程。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

?下面的時序圖介紹了軟件組件在接收工作中完成的調用流程。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

最后再次強調以下例程中的Basic RF只是一種非常簡單的IEEE 802.15.4實現,它并不完整,建議使用TIMAC或SimplicTI代替 Basic RF進行產品開發(fā)。

Hardware Abstraction Layer

要使用HAL組件中的API,需要包含hal_rf.h和hal_rf_security.h。

下面的代碼包含此組件涉及的API以及對應的功能說明。

/* Powers up the radio, configures the radio with recommended register settings, enables
autoack and configures the IO on the radio. This function must be called after halBoardInit(). */
uint8 halRfInit(void);

/* Set TX output power */
uint8 halRfSetTxPower(uint8 power);

/* Transmit frame */
uint8 halRfTransmit(void);

/* Set gain mode. This is only used if external LNA/PA is used. */
void  halRfSetGain(uint8 gainMode);     // With CC2590/91 only

/* return radio chip id register */
uint8 halRfGetChipId(void);

/* Return radio chip version register */
uint8 halRfGetChipVer(void);

/* Return random byte. */
uint8 halRfGetRandomByte(void);

/* Return RSSI offset for radio. */
uint8 halRfGetRssiOffset(void);

/

/* Write the number of bytes given by length from the memory location pointed to by the pointer data to the radio TX buffer. */
void  halRfWriteTxBuf(uint8* pData, uint8 length);

/* Read the number of bytes given by length from radio RX buffer to the memory location pointed to by the pointer data. The radio status byte is returned. */
void  halRfReadRxBuf(uint8* pData, uint8 length);

/* Wait until the transceiver is ready */
void  halRfWaitTransceiverReady(void);



/* Turn on receiver on radio. */
void  halRfReceiveOn(void);

/* Turn off receiver on radio. */
void  halRfReceiveOff(void);

/* Clear and disable RX interrupt. */
void  halRfDisableRxInterrupt(void);

/* Enable RX interrupt. */
void  halRfEnableRxInterrupt(void);

/* Configure RX interrupt, and setting the function to be called on interrupt. */
void  halRfRxInterruptConfig(ISR_FUNC_PTR pfISR);

///
// IEEE 802.15.4 specific interface

/* Set RF channel. Channel must be in the range 11-26. */
void  halRfSetChannel(uint8 channel);

/* Write 16 bit short address to the radio. */
void  halRfSetShortAddr(uint16 shortAddr);

/* Write 16 bit PAN ID to the radio. */
void  halRfSetPanId(uint16 PanId);

工程編譯與下載

首先,連接好底板和主板,并將開發(fā)板與電腦通過USB線連接。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

首先確保EM選擇開關(SmartRF05EB上的P19)位于SoC/TRX位置,使用IAR打開CC2530_SW_examples.eww??梢钥吹较聢D有針對三種不同例程的工程。選擇對應工程,然后選擇Project->Rebuild All進行代碼編譯。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信

此時可以直接通過IAR進行在線仿真調試,也可以通過通過Ti提供Flash Programmer進行hex程序燒寫。

basic rfgetrssi,物聯網,網絡,嵌入式開發(fā),無線通信


十六宿舍 原創(chuàng)作品,轉載必須標注原文鏈接。

?2023 Yang Li. All rights reserved.

歡迎關注?『十六宿舍』,大家喜歡的話,給個??,更多關于嵌入式相關技術的內容持續(xù)更新中。文章來源地址http://www.zghlxwxcb.cn/news/detail-767259.html

到了這里,關于【物聯網無線通信技術】ZigBee從理論到實踐(CC2530)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【物聯網無線通信技術】802.11無線安全認證

    【物聯網無線通信技術】802.11無線安全認證

    本文由簡入繁介紹了IEEE802.11i無線局域網安全技術的前世今生,幫助路由器開發(fā)者對WLAN的加密安全策略有一個概念上的認知,能夠更好地分析STA掉線以及漫游等問題。 目錄 WEP WPA WPA/WPA2-PSK認證過程 802.11i WEP是Wired Equivalent Privacy的簡稱,有線等效保密(WEP)協議對在兩臺設備間

    2024年02月11日
    瀏覽(19)
  • 無線網絡通信技術詳細介紹

    以下是對各類網絡各自常見和常用的通信技術進行簡單介紹。 一、無線廣域網(WWAN) 無線廣域網WWAN(Wireless Wide Area Networks)主要是為了滿足超出一個城市范圍的信息交流和網際接入需求,讓用戶可以和在遙遠地方的公眾或私人網絡建立無線連接。在無線廣域網的通信中一般要用

    2024年02月08日
    瀏覽(22)
  • 元宇宙挑戰(zhàn)現實世界無線通信技術

    導 言 事 件 2021年10月28日,在名為Facebook Connect的年度大會上,Facebook宣布,公司名稱將更改為“Meta”,這是元宇宙Metaverse的前綴,意思是包含萬物無所不連。標志著這一世界級的科技巨頭從傳統的社交媒體公司,all in元宇宙的戰(zhàn)略決心。這一信息也將醞釀多年的元宇宙概念研

    2024年02月05日
    瀏覽(32)
  • 物聯網通信技術

    物聯網通信技術

    UWB:超寬帶無線通信技術(UWB)是一種無載波通信技術,UWB不使用載波,而是使用短的能量脈沖序列,并通過正交頻分調制或直接排序將脈沖擴展到一個頻率范圍內。 NFC:全稱是Near Field? Communication,即“近場通信”,也叫“近距離無線通信”。 ARQ:自動重傳請求(Automati

    2024年02月09日
    瀏覽(19)
  • 物聯網中的通信技術

    物聯網中的通信技術

    閱讀引言: 本文主要大致為大家?guī)砦锫摼W中的常見的通信方式的知識梳理。 目錄 一、概述 二、無線通信技術 1.物聯網電子標簽 RFID 1.1 RFID 概念 1.2 RFID 系統組成 2.WI-FI技術 3.UWB技術 4.ZigBee技術 5.NFC技術 6.藍牙技術 7.EnOcean技術 ???? ????????物聯網的通信層擔負著極其重

    2024年01月18日
    瀏覽(18)
  • 物聯網通信技術復習題整理

    1【單選題】三層結構類型的物聯網不包括( )。 A、感知層 B、網絡層 C、應用層 D、會話層 答案:D 2【單選題】物聯網的核心是( )。 A、應用 B、產業(yè) C、技術 D、標準 答案:A 3【單選題】屬于感知控制層通信技術的是( ). A、ZigBee技術 B、3G網絡 C、4G網絡 D、局域網 答案:

    2024年02月09日
    瀏覽(21)
  • MIMO-OFDM無線通信技術(Matlab代碼實現)

    MIMO-OFDM無線通信技術(Matlab代碼實現)

    ????目錄 ??1 概述 ??2 運行結果 ??3 參考文獻 ?????4 Matlab代碼 本代碼為MIMO-OFDM無線通信技術及MATLAB實現。分為十章,供大家學習。 主函數部分代碼: [1]黃丘林. MIMO無線通信技術研究[D].西安電子科技大學,2007. 部分理論引用網絡文獻,若有侵權聯系博主刪除。

    2023年04月16日
    瀏覽(23)
  • 車聯網V2X通信技術及應用介紹

    車聯網V2X通信技術及應用介紹

    摘要: V2X技術影響用戶體驗的主要系統指標有延時時間、可靠性、數據速率、通信覆蓋范圍移動性、用戶密度、安全性等。 車聯網是物聯網在交通這個特殊行業(yè)的典型應用。在車聯網體系參考模型中主要包括三層:數據感知層、網絡傳輸層和應用層。 1. 數據感知層 數據感知

    2024年02月06日
    瀏覽(23)
  • STM32與無線通信技術的應用:藍牙、Wi-Fi和LoRa

    STM32與無線通信技術的應用:藍牙、Wi-Fi和LoRa

    STM32是一款廣泛應用于嵌入式系統的微控制器單元(MCU),它可以與多種無線通信技術進行集成,包括藍牙、Wi-Fi和LoRa。本文將分別介紹STM32與這三種無線通信技術的應用。 1. STM32與藍牙應用 藍牙技術是一種短距離無線通信技術,用于在設備之間傳輸數據。STM32可以與藍牙模塊集

    2024年04月27日
    瀏覽(24)
  • 最新消息:谷歌將在Chromebook上運用UWB技術,無線通信更上一層

    最新消息:谷歌將在Chromebook上運用UWB技術,無線通信更上一層

    超寬帶(UWB)技術是一種創(chuàng)新的短距離無線通信技術,具有高速數據傳輸和精確定位物體位置的優(yōu)勢。盡管該技術已經存在一段時間,但最近開始廣泛應用于各種設備中。據最新報道,Pixel Watch 2可能會搭載UWB模塊,這也許不會是谷歌唯一一款采用這項技術的新產品。 除了智

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包