[PIC16F723] RF 전송 테스트 - 무선으로 ACD값 그래프 표시 하기
PIC16F723은 마아크로칩사의 저렴한 저전력 MCU(실제 쇼핑몰에서 600원대에 구매 했다)이다. 저전력으로 구동할 수 있는 어플리케이션으로 RF가 좋은데 915(433)Mhz RF 모듈로 ADC값을 전송하는 테스트를 해 보았다.
테스트 보드는 기존에 다른 용도로 제작되었던 보드인데 핀맵이 호환되므로 PIC16F723 보드를 연결하여 사용이 가능하다.
RF모듈 드라이버 코드
//-----------------------------------------------------------------------------
#define NRF_PWR_UP BIT6
#define NRF_PWR_HIGH() Sbi(PORTB, NRF_PWR_UP)
#define NRF_PWR_LOW() Cbi(PORTB, NRF_PWR_UP)
#define NRF_TXEN BIT3
#define NRF_TXEN_HIGH() Sbi(PORTA, NRF_TXEN)
#define NRF_TXEN_LOW() Cbi(PORTA, NRF_TXEN)
#define NRF_TRX_CE BIT7
#define NRF_TXCE_HIGH() Sbi(PORTB, NRF_TRX_CE)
#define NRF_TXCE_LOW() Cbi(PORTB, NRF_TRX_CE)
#define NRF_CS_PORT PORTC
#define NRF_CS_BIT BIT2
#define NRF_CS_HIGH() Sbi(NRF_CS_PORT, NRF_CS_BIT)
#define NRF_CS_LOW() Cbi(NRF_CS_PORT, NRF_CS_BIT)
#define NRF_DR_BIT BIT2
#define NRF_GET_DR() (PORTB&NRF_DR_BIT)
#define NRF_AM_BIT BIT3
#define NRF_GET_AM() (PORTB&NRF_AM_BIT)
#define NRF_SendByte SPI0_WriteReadByte
#define NRF_InitSpi() SPI0_Init()
#define NRF_SpiSpeed_Low() SPI0_SetSpeed(SPI_SPEED_1MHZ)
#define NRF_SpiSpeed_High() SPI0 _SetSpeed(SPI_SPEED_4MHZ)
#define NRF_PORT_INIT() Cbi(TRISB, (BIT6|BIT7));Sbi(TRISB, (BIT2|BIT3));Cbi(ANSELB, (BIT2|BIT3|BIT6|BIT7));\
Cbi(TRISA, BIT3);Cbi(ANSELA, BIT3);\
Cbi(TRISC, BIT2);
//-----------------------------------------------------------------------------
PIC16F723 RF테스트 동영상
저렴하게 구성한 RF모듈임에도 실제 전송되는 속도는 2ms로 아주 고속으로 전송이 가능하다.
아래는 PIC16F723 보드에서 가변저항의 ADC값을 RF로 전송하는 테스트 데모이다.