
Nordic Semiconductor nRF24LU1+ 기반 USB 동글 및 브레이크아웃 보드를 위한 펌웨어 및 연구 도구
Nordic Semiconductor nRF24LU1+ 기반 USB 동글 및 브레이크아웃 보드를 위한 펌웨어와 연구 도구입니다.
Ubuntu에서 의존성을 설치합니다:
sudo apt-get install sdcc binutils python python-pip
sudo pip install -U pip
sudo pip install -U -I pyusb
sudo pip install -U platformio
다음 하드웨어는 테스트되었으며 작동이 확인되었습니다.
make
nRF24LU1+ 칩은 플래시 메모리의 최상위 2KB를 차지하는 공장 프로그래밍 부트로더와 함께 제공됩니다. CrazyRadio 펌웨어와 RFStorm 연구용 펌웨어는 Nordic 부트로더로 진입하기 위한 USB 명령을 지원합니다.
동글 및 브레이크아웃 보드는 다음 펌웨어 중 하나를 실행 중인 경우 USB로 프로그래밍할 수 있습니다:
USB로 펌웨어를 플래시하려면:
sudo make install
가장 일반적인 Unifying 동글은 nRF24LU1+ 기반이지만 일부는 Texas Instruments 칩을 사용합니다. 이 펌웨어는 모델 번호가 C-U0007인 nRF24LU1+ 변형만 지원합니다. 플래싱 스크립트는 연결된 동글 유형을 자동으로 감지하며 nRF24LU1+ 변형만 플래시를 시도합니다.
Logitech Unifying 동글에 USB로 펌웨어를 플래시하려면:
sudo make logitech_install
RQR_012_005_00028.hex 또는 유사한 이름의 Logitech 펌웨어 이미지를 다운로드하여 압축을 해제합니다. 그런 다음 아래 명령으로 Logitech 펌웨어를 동글에 플래시합니다:
sudo ./prog/usb-flasher/logitech-usb-restore.py [path-to-firmware.hex]
동글이나 브레이크아웃 보드가 벽돌이 된 경우, Teensy를 사용하여 SPI로 프로그래밍할 수 있습니다.
Teensy 3.1/3.2에서만 테스트되었지만 다른 Arduino 변형에서도 작동할 가능성이 높습니다.
platformio run --project-dir teensy-flasher --target upload
sudo make spi_install
의사 무차별 모드로 채널 목록을 스캔하고 디코딩된 Enhanced Shockburst 패킷을 출력하는 장치 검색 도구입니다.
usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-p PREFIX, --prefix PREFIX Promiscuous mode address prefix
-d DWELL, --dwell DWELL Dwell time per channel, in milliseconds
채널 1-5에서 장치 스캔
./nrf24-scanner.py -c {1..5}
모든 채널에서 0xA9로 시작하는 주소를 가진 장치 스캔
./nrf24-scanner.py -p A9
특정 nRF24 장치가 호핑할 때 따라가며 해당 장치에서 디코딩된 Enhanced Shockburst 패킷을 출력하는 장치 추적 스니퍼입니다.
usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Address to sniff, following as it changes channels
-t TIMEOUT, --timeout TIMEOUT Channel timeout, in milliseconds
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
모든 채널에서 주소 61:49:66:82:03의 패킷 스니핑
./nrf24-sniffer.py -a 61:49:66:82:03
주어진 주소의 마지막 바이트를 변경하고 채널 목록의 각 채널에서 256개의 가능한 주소 각각에 ping을 보내 스타 네트워크의 활성 주소를 발견하려 시도하는 스타 네트워크 매퍼입니다.
usage: ./nrf24-network-mapper.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
-a ADDRESS, --address ADDRESS Known address
-p PASSES, --passes PASSES Number of passes (default 2)
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK timeout in microseconds, accepts [250,4000], step 250
-r RETRIES, --retries RETRIES Auto retry limit, accepts [0,15]
주소 61:49:66:82:03이 속한 스타 네트워크 매핑
./nrf24-network-mapper.py -a 61:49:66:82:03
nRF24LU1+ 칩에는 연속 톤을 전송하는 테스트 메커니즘이 포함되어 있으며, SDR이 있다면 그 주파수를 검증할 수 있습니다. 장치 간 주파수 오프셋으로 인해 예기치 않은 동작이 발생할 가능성이 있습니다. 예를 들어, 테스트한 SparkFun 브레이크아웃 보드 중 하나는 약 300kHz의 주파수 오프셋이 있어 인접한 두 채널에서 패킷을 수신했습니다.
이 스크립트는 트랜시버가 전달된 첫 번째 채널에서 톤을 전송하도록 합니다.
usage: ./nrf24-continuous-tone-test.py [-h] [-c N [N ...]] [-v] [-l]
optional arguments:
-h, --help show this help message and exit
-c N [N ...], --channels N [N ...] RF channels
-v, --verbose Enable verbose output
-l, --lna Enable the LNA (for CrazyRadio PA dongles)
2405MHz에서 연속 톤 전송
./nrf24-continuous-tone-test.py -c 5
| Teensy | CrazyRadio PA | Sparkfun nRF24LU1+ Breakout |
|---|
| GND | 9 | GND |
| 8 | 3 | RESET |
| 9 | 2 | PROG |
| 10 | 10 | P0.3 |
| 11 | 6 | P0.1 |
| 12 | 8 | P0.2 |
| 13 | 4 | P0.0 |
| 3.3V | 5 | VIN |