:::: MENU ::::
Posts tagged with: ESP32

SmartConfig – WiFi provisioning

유선 네트워크인 이더넷은 랜선을 연결하면 DHCP로 자동으로 IP가 부여된다. 하지만 WiFi에서는 AP의 이름 및 패스워드를 알고 AP에 접속을 해야지 IP를 얻을 수 있다. 이 과정이 WiFi provisoning인데, 스마트폰이나 PC와 달리 IoT 디바이스는 UI가 없는 경우가 많아서 AP의 이름이나 패스워드를 다른 방법으로 입력을 해야한다. 이때 주로 스마트폰을 사용을 하는데, 쉽게 말하면 스마트 폰을 이용해서 이 정보를 전달을 한다. 보통 디바이스를 softAP 모드로 놓고 이 디바이스에 스마트폰이 연결를 한후 UDP, TCP로 이 정보를 전달을 하는데, 이 방법외에 다음과 같은 방법이 있다.

SamrtConfig

ESP8266, ESP32에서 사용하는 WiFi 설정프로그램은 TI사의 CC3000에서 사용했던 SmartConfig를 사용한다. 단말은 SmartConfig 모드(packet sniffing mode)에 있고 스마트 폰에서 SSID, PW를 암호화해서 UDP broadcasting한다. 단말은 이 패킷을 받아서 SSID에 접속을 하고 IP를 부여 받는다.

WPS (WiFi Protected Setup)

WPS 버튼을 눌러서 기기를 세팅하는 방법. SSID, PW를 모르고 있어도 설정이 가능.

Local AP

서두에 설명한대로 softAP로 동작을 하고 웹 또는 TCP, UDP로 SSID, PW를 전달하는 방식.

참고


ESP32에 OLED 연결하기

SSD1306 OLED display는 다음과 같이 I2C로 연결을 한다. 참고로 ESP32 모듈의 핀맵은 Datasheet를 참고해야 한다.

그리고 ESP32 SSD1306 아두이노 라이브러리를 설치를 하고, 같이 설치되는 예제프로그램에서 하드웨어 핀에 맞게 코드를 수정하면 된다.

// Initialize the OLED display using Wire library
SSD1306 display(0x3c, 21, 22);

참고문서:


ESP32 개발 환경 설정 – Mac OS

Mac OS에서 ESP32 개발 환경 설정은 다음의 링크를 참고한다.

Tool chain 설정

pip와 pyserial을 설치- 이 과정중에 dependency가 있는 라이브러리 설치는 sudo easy_install xxx  형태로 설치한다.

sudo easy_install pip
sudo pip install pyserial

Toolchain을 다운로드하고, /esp 폴더에 압축을 푼다.

mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz

bash_profile에 다름 경로를 입력한다.

export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin

ESP-IDF(IoT Development Framework)

https://github.com/espressif/esp-idf.git 이걸 클론하고, IDF_PATH를 설정한다.

export IDF_PATH=~/esp/esp-idf

추후에 리모트 깃의 내용을 업데이트 하려면 다음과 같이 한다.

cd ~/esp/esp-idf
git pull
git submodule update --init --recursive

프로젝트 확인

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .

설정

cd ~/esp/hello_world
make menuconfig

빌드 및 다운로드

make flash

Monitor

make monitor

To exit the monitor use shortcut Ctrl+]