許新曦
摘要:在噪音較大的場合中,現場環境復雜,在各個崗位上的工作人員往往需要及時有效的溝通。通過手機、無線對講機等設備在噪音大的場合中受干擾程度大,本文針對此需求設計了一種基于PIC單片機和NRF24L01無線模塊的無線應答裝置,硬件設計包含開關電源模塊,DC-DC電源模塊,PIC16F1936單片機系統,NRF24L01無線發射接收模塊,在不同的使用地點布置一臺無線系統,任何一個對應的指令按鈕被按下后,各個對應的命令指示器均亮,任何一個地點都可對此命令進行消除操作,實現了信息的傳遞,無線配置節省了布線,靈活移動,便于維護。
關鍵詞:無線 ?單片機 ?穩壓電源
硬件電路設計:
系統可在不同位置布置多臺設備,每臺設備由PIC單片機控制NRF24L01執行運作,設置4個按鍵用于發送指令,同時四個指示燈用于指示命令的類型,類型可由使用者自行定制統一,當任何一臺設備按下按鈕,相對應的指示燈亮起,同時通過單片機的處理通過NRF24L01發送相對應的指令給每個設備,各個設備接收到指令后對其解碼,識別指令后將遠傳過來的指令進行亮燈,每臺設備可以判斷各個設備的當前狀態,任何一臺設備均可以消除相對應的指示指令,實現信號同步。
1、穩壓電源
7805三端穩壓 IC內部控制電路是一種具有過壓、超流、過熱等保護作用的控制電路,這樣就使它在工作時性能非常穩定。該器件都是具備良好的高溫和導體系數,所以該產品在工業中的應用也是非常普遍。它們就是運用自動化的本地調制方法去消掉噪音的影響。可以提供給系統穩定的電源,增強了無線傳輸過程中信號的抗干擾程度。
220v 交流電源經過四個 in4007 二極管進行整流后再經過電解電容濾波后生成直流電源,其中輸出電壓取樣電阻連接到 2n2222a 基極,隨著輸出電壓波動的變化,三極管的發射極和集電極之間的壓降幅度受基極所控制,當輸入電壓波動幅度增大時,基極的電位減小,發射極、集電極壓降幅度增大,輸出電壓變化減小,完成了調整。 通過TL431G可以對鋰電池進行充電,系統可以配個7.4V的鋰電池,防止無外部電源供電情況下保持正常通信。
2、CPU主控電路,CPU采用PIC單片機,PIC 8位單片機的指令很少、晶振可以配置4MHZ,PIC系列單片機具有雙總線和兩級指令流水結構,而且集成了多種通信接口,與NRF24L01通信使用SPI接口設計,編程簡便,只需要對單片機進行簡單的配置和程序編輯就可實現控制。PIC16F1936的RB端口可以配置為中斷功能,當無線模塊有數據需要接收時產生中斷,單片機立即進行中斷處理,中斷程序中采用設定標志位后立即離開,隨后立即釋放,不會占用CPU資源進行中斷長時間處理數據,根據標志位在程序在主程序循環中進行處理。RC5和RC4可復用引腳,配置為SPI的輸入與輸出。L300為磁珠,可以提高供電電源的抗干擾作用。
3、NRF24L01無線通訊模塊設計,可以在2.4G到2.5G頻道上進行通訊。通信速度快,輸出功率頻道選擇和協議的設置可以通過SPI 接口進行設置。幾乎可以連接到各種單片機芯片,并完成無線數據傳輸,功耗很低。模塊可以設置為接收模式或者發送模式,可以由主控單片機根據需要設置為發送或者接收,擁有一個發送通道,六個接收通道,發送端配置的地址需要與接收端的地址相同,在硬件初始化中需要對模塊進行地址的固化,在設置PCB的時候可以使用PCB的銅板部分作為天線的設計。
軟件設計:
系統上電后對單片機系統的內部模塊和接口進行初始化后,對按鍵狀態進行掃描,設定一臺主機,主機對每臺設備進行狀態檢查,輪詢發送檢查狀態指令進行校驗,保證每臺設備狀態的統一性,如果有設備狀態不同,產生報警信號,確保了傳遞信息的正確性。每臺設備掃描按鍵事件,當有事件產生發送相對應的指令給主機,由主機發送相應的狀態給每個子機,子機接收信號后進行處理,程序流程如下:
子站程序流程為上電后對PIC系統進行初始化和對中斷的配置,端口根據具體情況進行配置,接著對NRF24L01進行初始化,包括接收模式和發射模式的配置,NRF24L01有中斷產生后對緩沖區內容進去讀取保存,解碼緩沖區內容并進行指令判斷。通過端口掃描的方式對按鍵事件進行掃描,如果有按鈕觸發進行狀態改變并發送給主機。
主站程序流程也是上電后初始化,判斷是否有按鍵事件觸發,有事件觸發將指令編碼通過寫入NRF24L01緩沖區進行輪詢發送,每臺子機有對應的地址,發送完畢后空閑狀態進行每臺狀態比對校驗。
NRF24L01在PIC單片機中的初始化程序。
void nRF24L01_Initial(void)
{
NRF_StatusBits.nRF24L01_IRQ_Flag=0;
ANSELBbits.ANSB1=0;
INTCONbits.IOCIE=1;
IOCBNbits.IOCBN1=1;
nRF24L01_IRQ_T = 1;
OPTION_REGbits.nWPUEN=0;
WPUBbits.WPUB1=1;
nRF24L01_MISO_T = 1;
nRF24L01_CE_T = 0;
nRF24L01_CSN_T = 0;
nRF24L01_SCK_T = 0;
nRF24L01_MOSI_T = 0;
nRF24L01_CE=0;
nRF24L01_CSN=1;
nRF24L01_SCK=0;
OpenSPI(SPI_FOSC_16,MODE_00,SMPMID);
TX_Mode();
RX_Mode();
SPI_RW_Reg(WRITE_REG+STATUS,0xff);
}
接收模式程序
void RX_Mode(void)
{
uchar i;
nRF24L01_CE=0;
di();
if(GetRunStateMode()==LEARN_RUN_MODE){
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,RX_ADDRESS1,TX_ADR_WIDTH);
}
else{
for(i=0;i<4;i++){
RX_ADDRESS0[i]=_readcharfrom_EE(0xf0+i);
}
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,RX_ADDRESS0,TX_ADR_WIDTH);
}
SPI_RW_Reg(WRITE_REG + RX_PW_P0,TX_PLOAD_WIDTH); ? SPI_RW_Reg(WRITE_REG + RX_PW_P1,TX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + EN_AA,0x3F);
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3F);
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x0f);
SPI_RW_Reg(WRITE_REG + CONFIG,0x0f);
ei();
nRF24L01_CE=1;
datarate = 2Mbps.
}
發射模式程序
void TX_Mode(void)
{
uchar i;
nRF24L01_CE=0;
di();
if(GetRunStateMode()==LEARN_RUN_MODE){
SPI_Write_Buf(WRITE_REG + TX_ADDR,TX_ADDRESS1,TX_ADR_WIDTH);
}
else{
for(i=0;i<4;i++){
TX_ADDRESS0[i]=_readcharfrom_EE(0xf0+i);
}
SPI_Write_Buf(WRITE_REG + TX_ADDR,TX_ADDRESS0,TX_ADR_WIDTH);
}
if(nrf_Pipe==0x00)SPI_RW_Reg(WRITE_REG + RF_CH,0);
if(nrf_Pipe==0x01)SPI_RW_Reg(WRITE_REG + RF_CH,40);
SPI_RW_Reg(WRITE_REG + EN_AA,0x3F);
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x3F);
SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x1a);
SPI_RW_Reg(WRITE_REG + RF_SETUP,0x0f);
SPI_RW_Reg(WRITE_REG + CONFIG,0x0e);
ei();
nRF24L01_CE=1;
}
本無線應答裝置適用于工廠環境比較嘈雜的場所,實測通訊距離250K傳輸速率50米,可以外加天線得到更遠的傳送距離,對比手機、對講機等通訊工具來說信息傳遞準確率高,抗噪聲能力強,現場只需要提供系統的供電電源,無需其余線纜,結合系統互相校驗防錯報警功能,可以提供可靠的信息交互,提高現場人員之間的交流質量與效率。
參考文獻:
[1]李學海 .PIC單片機實用教程[M].第一版.北京航空航天大學出版社,2002:69-94,19-52
[2]丁錦淘 .PIC單片機速成教程[M].第一版.電子制作雜志社.2004:3
[3]彭樹生 .PIC單片機原理與接口技術 電子工業出版社 2008.4
[4]王玲,孫冬冬 基于無線傳輸模塊NRF24L01的簡易智能家居系統設計電子測試