- Bluetooth 저에너지 (BLE)는 어떻게 다릅니 까?
- NRF24L01 모듈의 BLE 기능
- 필요한 구성 요소
- nRF24L01 모듈로 시작
- Arduino
- BLE 통신을 위해 nRF24L01을 Arduino와 인터페이스
BLE (Bluetooth Low Energy)는 Bluetooth 버전이며 클래식 Bluetooth의 더 작고 최적화 된 버전으로 제공됩니다. 스마트 블루투스라고도합니다. BLE는 특히 저비용, 저 대역폭, 저전력 및 낮은 복잡성을 위해 가능한 최저 전력 소비를 염두에두고 설계되었습니다. ESP32에는 BLE 기능이 내장되어 있지만 Arduino와 같은 다른 마이크로 컨트롤러의 경우 nRF24L01을 사용할 수 있습니다. 이 RF 모듈은 스마트 폰, 컴퓨터 등과 같은 다른 Bluetooth 장치로 데이터를 전송하기 위해 BLE 모듈로도 사용할 수 있습니다.
이 튜토리얼에서는 nRF24L01을 사용하여 BLE를 통해 데이터를 보내는 방법을 보여줍니다. 우리는 것이다 BLE를 통해 아두 이노와 NRF 모듈을 사용하여 스마트 폰을 DHT11에서 온도 측정을 보낼 수 있습니다.
Bluetooth 저에너지 (BLE)는 어떻게 다릅니 까?
BLE는 코인 셀만으로도 장시간 구동이 가능해 전력 소모 특성상 채택되었습니다. 다른 무선 표준에 비해 BLE의 급속한 성장은 스마트 폰, 태블릿 및 모바일 컴퓨팅의 경이적인 애플리케이션으로 인해 더욱 빨라졌습니다.
NRF24L01 모듈의 BLE 기능
BLE는 250Kbps ~ 2Mbps의 전송 속도로 동일한 2.4GHz ISM 대역을 사용하며 이는 많은 국가에서 허용되며 산업 및 의료 애플리케이션에 적용 할 수 있습니다. 밴드는 2400MHz ~ 2483.5MHz에서 시작하며 40 개 채널로 나뉩니다. 이러한 채널 중 3 개는 '광고'라고 하며 다른 BLE 장치가 연결할 수 있도록 장치에 대한 정보와 함께 광고 패킷을 전송하는 데 사용됩니다. 이러한 채널은 초기에 여러 채널을 방해 할 수있는 간섭을 피하기 위해 대역의 하단 상단과 대역의 중간에서 선택되었습니다. BLE에 대해 자세히 알아 보려면이 자습서를 따르십시오.
이 튜토리얼은 NRF24L01 모듈을 BLE 트랜시버로 사용 하는 방법을 설명 합니다. RF 모듈로서의 NRF24L01에 대한 튜토리얼은 이미 nRF24L01과 Arduino 튜토리얼의 인터페이스에서 설명되었습니다. 오늘이 모듈의 BLE 기능은 센서 데이터를 스마트 폰으로 전송하여 설명합니다. 여기서이 nRF24L01 모듈은 Arduino 마이크로 컨트롤러와 인터페이스되며 DHT11 센서 온도 데이터는 공식 Nordic BLE Android 애플리케이션으로 전송됩니다.
필요한 구성 요소
하드웨어:
- Arduino UNO
- nRF24L01 BLE 모듈
- DHT11 온도 및 습도 센서
- 점퍼
소프트웨어:
- Arduino IDE
- Nordic BLE Android 애플리케이션 (BLE 용 nRF Temp 2.0 또는 모바일 용 nRF Connect)
nRF24L01 모듈로 시작
nRF24L01 모듈은 트랜시버 모듈입니다. 즉, 각 모듈은 데이터를 송수신 할 수 있지만 반이중이므로 한 번에 데이터를 송수신 할 수 있습니다. 모듈에는 데이터 전송 및 수신을 담당하는 Nordic 반도체의 일반 nRF24L01 IC가 있습니다. IC는 SPI 프로토콜을 사용하여 통신하므로 모든 마이크로 컨트롤러와 쉽게 인터페이스 할 수 있습니다. 라이브러리를 쉽게 사용할 수 있기 때문에 Arduino를 사용하면 훨씬 쉬워집니다. 우리는 이미 Arduino와 함께 nRF24L01 모듈을 사용하여 대화방을 만들고 무선으로 서보 모터를 제어했습니다.
표준 nRF24L01 모듈의 핀아웃은 다음과 같습니다.
이 모듈은 1.9V ~ 3.6V (일반적으로 3.3V)의 작동 전압을 가지며 정상 작동 중에 12mA의 매우 적은 전류를 소비하므로 배터리 효율이 높아져 코인 셀에서도 작동 할 수 있습니다. 작동 전압이 3.3V이지만 대부분의 핀은 5V를 허용하므로 Arduino와 같은 5V 마이크로 컨트롤러와 직접 인터페이스 할 수 있습니다. 이러한 모듈 사용의 또 다른 장점은 각 모듈에 6 개의 파이프 라인이 있다는 것입니다. 즉, 각 모듈은 6 개의 다른 모듈과 통신하여 데이터를 송수신 할 수 있습니다. 따라서이 모듈은 IoT 애플리케이션에서 스타 또는 메시 네트워크를 생성하는 데 적합합니다. 또한 125 개의 고유 ID의 넓은 주소 범위를 가지고 있으므로 폐쇄 된 영역에서 서로 간섭하지 않고 125 개의 모듈을 사용할 수 있습니다.
Arduino
BLE 통신을 위해 nRF24L01을 Arduino와 인터페이스
nRF24L01은 SPI에서 작동하므로 인터페이스는 SPI 프로토콜을 사용합니다. 전체 코드와 비디오는 이 튜토리얼의 마지막에 첨부됩니다. Android 앱 가이드도 동영상에 설명되어 있습니다. 여기서 nRF24L01 모듈은 Nordic의 Smartphone App 과 통신하는 데 사용됩니다 .먼저 필요한 라이브러리를 포함합니다. 라이브러리에는 nRF24L01 명령에 액세스하기위한 RF24, DHT11 명령에 액세스하기위한 DHT11 라이브러리 및 BLE 기능을 사용하기위한 BTLE 라이브러리가 포함되어 있습니다.
#포함
DHT11 및 BLE 모듈에 대한 핀 및 기능을 정의하고 초기화합니다. DHT11을 사용하고 있기 때문에 DHT 유형은 DHT11로 초기화됩니다. DHT는 GPIO 핀 4에 연결되고 nRF 모듈의 CE 및 CSN 핀은 각각 핀 9 및 10에 연결됩니다.
#define DHTPIN #define DHTTYPE DHT11 DHT22 DHT dht (DHTPIN, DHTTYPE); RF24 라디오 (9, 10); BTLE btle (& radio);
9600에서 직렬 포트를 시작하면 모든 포트를 선택할 수 있습니다. 그런 다음 DHT 센서를 시작 하고 최대 8 자 길이의 Bluetooth 로컬 이름으로 BTLE 을 시작합니다.
Serial.begin (9600); dht.begin (); btle.begin ("CD 온도");
루프를 통해 온도를 읽고 부동 변수 temp에 저장합니다. DHT의 전원이 꺼 지거나 예상치 못한 일이 발생하는 경우 오류 메시지를 표시하는 디버그 라인을 추가합니다.
부동 온도 = dht.readTemperature (); // 온도 데이터 읽기 if (isnan (h)-isnan (t)) { Serial.println (F ("DHT 센서에서 읽지 못했습니다!")); 반환; }
값을 Buffer에 저장하고 BLE 모듈로 구문 분석합니다. 또한 온도 값을 BLE 모듈로 보냅니다. BLE 모듈은 온도 데이터를 알립니다. 안드로이드 앱은 BLE 모듈을 검색하고 센서 데이터를 수신 할 수 있습니다.
nrf_service_data buf; buf.service_uuid = NRF_TEMPERATURE_SERVICE_UUID; buf.value = BTLE:: to_nRF_Float (temp); if (! btle.advertise (0x16, & buf, sizeof (buf))) { Serial.println ("BTLE 실패..!"); }
완료되면 다음 채널로 이동하십시오.
btle.hopChannel ();
DHT 센서 문서는 1 회 판독 후 최소 2 초의 지연을 유지하도록 권장하므로 2 초의 지연을 추가하십시오.
지연 (2000);
스마트 폰을 업로드하고 nRF 모듈과 페어링하면 아래와 같이 BLE android 애플리케이션 용 nRF Temp 2.0의 값을 가져 오기 시작합니다. Android 앱에서 페어링하고 데이터를 가져 오는 전체 절차도 비디오에 설명되어 있습니다.
이것으로 BLE nRF24L01을 사용하여 Nordic Android 앱에 센서 데이터를 광고하는 방법에 대한 전체 자습서를 마쳤습니다. 어려움이 있으면 아래에 댓글을 달거나 포럼에 글을 남겨주세요. nRF24L02에 대해 자세히 알아 보려면 Arduino, nRF24L01 및 Processing을 사용하여 비공개 채팅방을 만들 수도 있습니다.