앞의 글에서 설명한 대로 송신 기능을 구현하여 동작시켜 놓은 상태이므로, 송신기에서는 주기적으로 16비트 카운트 값을 내 보내주고 있다.이번에는 이 데이터를 수신하여 콘솔창에 출력함으로써 데이터 송신과 수신 과정이 정상적으로 수행되고 있음을 확인해 보도록 하겠다. static uint8_t tranceiver_addr[ADDR_WIDTH] = {0x12, 0x34, 0x56, 0x78, 0x90}; void nrf24_init(void) { ce_low(); cs_high(); _delay_ms(10); nrf24_close_pipe(NRF_ALL); nrf24_open_pipe(NRF_PIPE0); nrf24_crc_mode(NRF_CRC_16BIT); nrf24_auto_retr(15, 500); n..
nRF24L01을 이용한 무선 통신nRF24L01 register 읽어보기 nRF24L01의 내부 레지스터들을 정상적으로 읽어 오는 것을 확인하였으면 다음 과정으로 송신 기능을 구현해 보도록 하겠다.static uint8_t tranceiver_addr[ADDR_WIDTH] = {0x12, 0x34, 0x56, 0x78, 0x90}; void nrf24_init(void) { ce_low(); cs_high(); _delay_ms(10); nrf24_close_pipe(NRF_ALL); nrf24_open_pipe(NRF_PIPE0); nrf24_crc_mode(NRF_CRC_16BIT); nrf24_auto_retr(15, 500); nrf24_addr_width(NRF_AW_5BYTES); nrf24..
앞의 글에서 구성한 회로가 제대로 연결 되었는지 확인해 보기 위하여 nRF24L01 안에 있는 레지스터들의 default 값(reset register value)을 한번 읽어 보기로 하겠다.nRF24L01 모듈은 AVR과 SPI로 연결되어 있으며, 이미 이전에 여러 프로젝트에서 SPI통신을 해보았기 때문에 큰 어려움 없이 nRF24L01의 레지스터 값들을 읽어 올 수 있을것이다. /*============================================================================*/ #define PORTB_REG 0x23 struct port { uint8_t pin; uint8_t ddr; uint8_t port; }; volatile struct port *..
이번에 진행할 프로젝트는 nRF24L01을 이용하여 양방향 무선 통신 시스템을 만들어 보는 것이다.칩 이름에서도 알 수 있듯이 nRF24L01은 2.4GHz 대역의 주파수를 이용하고 있다.당연하지만, 이 칩이 어떤 특징을 가지고 있고, 어떻게 동작되는지 알기 위해서는 제조사의 홈페이지에서 datasheet 문서를 다운받아 자세히 분석하여야 한다.이 프로젝트에 사용할 nRF24L01 모듈은 아래 그림처럼 생겼으며 transmitter, receiver 형식으로 통신할 것이므로 2세트가 필요하다. nRF24L01 칩을 실장한 모듈은 많은 제조사에서 만들어 판매하고 있지만 외부로 나오는 pin 구성은 거의 같다고 보면 되므로 굳이 특정 회사의 제품을 구입할 필요는 없고 가격이나 배송을 고려하여 적당한 제품을 ..