반응형

https://youtube.com/live/8L12YOqq6qU

[아두이노#562] ESP32의 BLE를 이용해서 iBeacon으로 작동시켜보고, 주변 iBeacon을 검색해서 거리 측정해보기!(녹칸다ESP32#12)

녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)

이번편은 ESP32의 BLE를 활용해보도록 하자!
BLE는 기존 블루투스 통신이라고 하는 bluetooth classic(2.0)과는 사뭇 다른 개념이다!
BLE로 CLASSIC처럼 1:1 통신을 할 수 있긴 하지만 그것은 다른 대안이 있으므로 생략한다!

2.0에서 할 수 없고 BLE에서만 할 수 있는 기능을 살펴보는 것이다!
먼저 애플에서 iBeacon이라는 개념을 과거에 만들어 냈다!(애플에서 한건지 원래있는건지는 확인 필요)

스마트폰에 BLE가 장착되고 주변 비콘과 통신을해서 뭔가 새로운 서비스를 만들어 내려고 했기 때문이다!
BLE의 핵심은 연결을 하지 않고 통신을 하는데 있다!

지금 ESP32로 아래 2가지 형태로 작동시키는게 가능하다!
1.ESP32가 iBeacon이 되어서 스마트폰에 의해서 검색이 된다!(ESP32에 특정한 값을 입력하는게 가능함)
2.ESP32가 스마트폰 역할을 하며 주변에 있는 iBeacon을 검색한다!

1번과 같은 경우 ESP32가 어떻게 하면 스마트폰에 값을 전송해줄것인가가 핵심이다!
그러나 스마트폰이 BLE로 데이터를 받아서 시각화할만한 앱을 직접 구현하기가 어려우므로 가볍게만 해보자!

2번과 같은 경우 ESP32가 주변 비콘을 검색할 수 있고 비콘이 보내는 각종 정보를 수신할 수 있다!
이때 비콘이 무선신호를 송신하는 송신파워인 TXPOWER값과 ESP32가 수신할때 수신파워인 RSSI값을 이용하면 거리를 측정가능하다!

거리를 측정가능하다는 것은 하나의 연구주제이고 무선신호의 강도로 거리를 "예측"하는 것이다!
이것으로 정확한 거리가 몇cm이다 이런것은 평가가 불가능하겠지만 가까이 있다 멀리있다 정도는 알 수 있다!

오늘 녹칸다의 주제는 비콘과의 거리를 이용해서 다양한 응용서비스를 나름대로 만들어 보는 것이다!
그리고 향후 ESP32가 3개 이상의 비콘과 통신하면서 거리를 측정하게 된다면 실내 위치측위(실내GPS)로 개념을 확장 할 수 있다!
(이것은 많은 실험과 연구가 필요하다)

 

(참고자료1 ESP32핀맵)
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/user-guide-devkitm-1.html
(참고자료2 INPUT_PULLUP가능핀)
불가능 34,35,2,36,39
가능 32, 33,25,26,14,27,12,13,22,23,19,21,5,18,16,17,4,15
(참고자료3 ESP32의 I2C핀)
SDA : 21
SCL : 22
(참고자료4 ESP32의 SPI핀)
SCK : 18
MOSI : 23
MISO : 19
CS : 5
(참고자료5 ESP32의 Serial핀)
RX : 16
TX : 17

(참고자료6 녹칸다의 BLE로 거리를 측정하는 공식)
pow(10,((TXPOWER-RSSI)/20.0));

(깨알지식)
1.BLE로 broadcasting할 수 있는 데이터는 메이저 16bit, 마이너16bit로 총 32bit이고 부호가 없는 정수(uint32_t)를 전송가능하고, 실수(float), 문자는 4개, byte 배열로 하자면 총 4개를 전송가능하다!
2.ESP32가 수신하는 데이터중 RSSI값은 비콘이 전송하는 무선신호를 수신했을때 수신강도를 의미한다!
3.ESP32에서 거리를 측정하기 위해서는 비콘이 전송하는 송신파워를 알아내야한다!(TXpower)

반응형


(예제)
1.ESP32보드를 BLE iBeacon으로 만드는 예제를 이용해서 스마트폰에 스캔하는 예시를 보이시오!

562-1(BLE데이터전송하기).txt
0.00MB

2.녹칸다가 설치한 비콘 스캐너앱에 메이저값과 마이너값을 10진수로 변환해서 출력하는 것을 확인했다! EPS32에서 메이저값으로 1234를 전송하고 마이너값으로 5678을 전송해서 스마트폰 화면에 출력하시오!

562-2(ble로원하는데이터전송하기).txt
0.00MB

3.ESP32보드가 비콘 스캐너가 되어서 주변에 있는 비콘을 검색하는 예시를 보이시오!

562-3(주변비콘을검색하는예제).txt
0.00MB

4.(예제3으로부터) ESP32와 비콘과의 거리를 추정하는 예시를 구현하시오!

562-4(비콘과의거리를측정해보기).txt
0.00MB

5.ESP32의 15번핀에 LED를 1개 연결하고 본인이 정한 가상의 범위 안으로 비콘이 들어오면 LED를 켜고 밖으로 나가면 LED를 끄는 예시를 보이시오!

562-5(비콘으로LED제어하기).txt
0.00MB

6.ESP32에 의해서 비콘이 감지되면 5초동안 LED를 켜고 비콘이 지속적으로 감지가되면 5초라는 시간을 계속 유지하도록 하시오!(5초 이내에 비콘 신호가 감지되지 않는다면 자동적으로 LED OFF)

562-6(비콘으로LED제어하기2).txt
0.00MB

7.(예제6과코드가같음)LED가 연결된 15번핀에 릴레이를 연결해서 비콘이 가까이 가면 자동으로 작동하는 모터를 구현하시오!

8.ESP32에 ILI9341을 연결하고 비콘이 근접하면 hello를 출력하고 이탈하면 bye를 화면에 출력하는 예시를 구현하시오!(Adafruit ILI9341,Adafruit GFX Library라이브러리 설치필요)

562-8(LCD에비콘감지결과출력하기).txt
0.00MB

반응형
Posted by 덕력킹
,