[아두이노#551] ESP8266예제는 있는데 ESP32예제는 하나도 없어서 시작하는 녹칸다의 ESP32시리즈(ESP32#1 시작하기)
프로그래밍/ESP32와 아두이노 2023. 4. 5. 22:44
https://youtube.com/live/pdpPnTUyb7g
[아두이노#551] ESP8266예제는 있는데 ESP32예제는 하나도 없어서 시작하는 녹칸다의 ESP32시리즈(ESP32#1 시작하기)
녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)
이번편에서는 아두이노 개발툴로 ESP32보드를 어떻게 하면 시작할 수 있는지와 시작할때 주의사항등을 주요내용으로 해보도록 한다!
아래와 같은 순서로 접근해보도록 하자!
1.녹칸다가 선정한 ESP32보드(ESP32보드도 종류가 많음)
2.ESP32보드를 아두이노 개발툴에 추가하는 방법!
3.ESP32의 GPIO활용 하는 방법!
-디지털 입력과 출력
-아날로그 입력과 출력
4.(3) 내용을 바탕으로 LED를 제어하거나 LED의 밝기제어하는 기본적인 예제들 구성해보기!
(실제로한거)
(참고자료1 ESP32핀맵...이건 향후에 수정하는걸로)
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/user-guide-devkitm-1.html
(참고자료2 5V 내성관련자료)
https://www.qworqs.com/2021/05/19/are-the-esp32-and-esp8266-5v-tolerant-yes-they-officially-are/
(참고자료3 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
(참고자료4 아날로그 출력PWM)
//0~15까지 채널입력이 가능함!
//주파수는 LED제어할때는 5000정도를 입력한다
//해상도를 8로 해두면 8bit를 쓴다는 의미이고 아두이노 우노와 같음!(0~255)
ledcSetup(채널, 주파수, 해상도);
//setup에서 설정한 채널을 ESP32의 어떤 번호의 핀과 연결할 것인가?
ledcAttachPin(핀번호, 채널);
//setup에서 설정한 채널에 입력값을 삽입한다!
ledcWrite(채널, 값);
(참고자료5 CH340드라이버...이건 필요한보드도 있고 아닌것도 있음)
https://www.wch.cn/download/CH341SER_ZIP.html
(참고자료6 ESP32보드추가하기)
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
(시작하기)
1.ESP32보드와 MICRO USB선을 구입하면 하드웨어적으로는 OK!
2.ESP32의 코딩을 위해서 필요한 개발툴이 ESP-IDF이다! 아두이노 IDE에 ESP32의 개발이 가능하도록 그렇게 만들어두었다! 그렇기때문에 아두이노쪽 개발툴에서 ESP32개발환경을 세팅해주어야 가능하다! ESP32의 모든 기능을 100%활용하기 위해서는 ESP-IDF를 사용해야한다!
3.참고자료5에 있는 CH340드라이버 설치하기!
4.아두이노 개발툴 설치하기!
5.ESP32보드 추가하기!(파일-환경설정-추가적인보드매니저urls)
6.툴-보드-보드매니저로 들어가서 ESP32보드 추가하기!
7.툴-보드-ESP32 arduino-ESP32 dev module 선택하기!
8.장치관리자에 들어가서 ESP32가 사용하는 COM번호를 확인해서 그것을 아두이노 개발툴에 선택하는것으로 시작할 준비가 완료되는 것이다!
(깨알같은지식)
1.ESP32보드의 기본적인 통신 보레이트는 115200이다!(재부팅할때 결과 확인해보기)
2.ESP32는 컴파일하는데 시간이 꽤 오래걸린다!
3.ESP32보드중에 boot모드에 진입을 안하면 코드가 업로드 안되는 보드가 있다! 업로드 진행중일때 boot버튼을 수동으로 눌러줘야 업로드가 가능하다!
4.아두이노의 디지털핀과 아날로그핀은 딱 역할이 정확하게 정해져있지만 ESP32보드의 GPIO는 각핀마다 특별하게 주의해야하는 사항들이 있을 수 있음!
5.아날로그입력이 크게 2세트로 구성이되어있으나 ADC1은 자유롭게 사용할 수 있고 ADC2는 WIFI작동중에는 아날로그입력으로써의 기능은 사용할 수 없음!
6.(5,8,10,11)핀은 디지털 입력으로만 사용할 수 있음(출력불가)
7.ESP32 GPIO의 통신레벨은 3.3V이므로 5V입력하면 곤란하다! 그러나 ESP32는 5V내성이 있도록 설계되어있고 특별히 재수가 없지 않으면 그러하다!
8.출력일때는 3.3V가 출력되고, 아날로그입력은 3.3V가 MAX이기때문에 5V를 아날로그 입력으로 넣어주면 고장이 나는것은 아니지만 5V와 3.3V의 구분이 없다!
9.아두이노는 시리얼모니터를 껐다가키면 아두이노보드가 재부팅되지만 ESP32보드는 그렇지않다!
10.버튼을 ESP32에 연결하는 방식은 크게 풀업저항을 사용(INPUT)하느냐 아니냐(INPUT_PULLUP)로 나눌 수 있다!
11.연결할때 저항을 별도로 연결하는것은 누가봐도 상당히 귀찮은 행위이므로 녹칸다는 풀업저항을 사용안하는 연결법을 기본으로 하도록 한다!
12.아두이노에서 HIGH는 숫자1에 해당하고 LOW는 숫자 0에 해당한다!
13.디지털입출력은 pinmode를 해주어야하고 아날로그입출력은 pinmode를 안해도된다!
14.아두이노 우노는 아날로그입력이 10bit이기 때문에 0~1023범위를 가지고 ESP32는 12bit이기 때문에 0~4095의 범위를 가진다!
15.아두이노 우노는 0~5V를 1024등분하고 ESP32는 0~3.3V를 4096등분한다!
16.출력핀에서 PWM을 발생시켜서 아날로그출력을 구현한다! 아두이노 우노는 PWM핀이 지정되어있고 0~255(8bit)로 0~5V를 표현할수있다! ESP32는 아두이노 우노와 사용하는 코드가 전~~~~혀다르다!
(예제1) 나의 ESP32보드가 잘 작동하는지 확인하는 간단한 예시를 보이시오!
(예제2) ESP32에 LED를 15번핀에 1개 연결해서 1초간격으로 깜빡이는 예시를 구현하시오!(디지털출력)
(예제3) ESP32에 택트스위치(버튼)를 4번핀에 1개 연결해서 디지털입력을 구현하시오!(디지털입력)
(예제4) 4번핀에 연결된 버튼을 누르면 15번핀에 연결된 LED가 켜지고 안누르면 꺼지는 단순한 예제를 만드시오!(디지털입력+출력)
(예제5) ESP32에 가변저항을 34번핀에 연결해서 아날로그 입력값을 시리얼모니터에 출력하시오!
(예제6) 측정한 12bit 아날로그값을 전압으로 계산해보시오!
(예제7) 가변저항으로 측정한 전압이 2.2V이상이면 15번에 연결된 LED를 켜고 미만이면 끄시오!
(예제8) 15번핀에 연결된 LED의 밝기를 점점 밝아졌다가 점점 어두워지는 예시를 만들어보시오!
(예제9) 34번에 연결된 가변저항을 돌려서 15번에 연결된 LED의 밝기를 조절하시오!
'프로그래밍 > ESP32와 아두이노' 카테고리의 다른 글
[아두이노#556] ESP32를 MQTT프로토콜을 이용해서 C#윈폼, node-red, app-inventor로 제어해보기!(녹칸다ESP32#6) (1) | 2023.04.20 |
---|---|
[아두이노#555] ESP32를 MQTT프로토콜을 이용해서 스마트폰으로 제어해보기!(녹칸다ESP32#5) (1) | 2023.04.19 |
[아두이노#554] ESP32에 GET/POST웹서버로 LED제어 및 온습도센서값 측정 해보기!(녹칸다ESP32#4) (0) | 2023.04.13 |
[아두이노#553] ESP32에 대표적인 디스플레이를 연결해서 작동테스트 해보기!(녹칸다ESP32#3) (0) | 2023.04.12 |
[아두이노#552] ESP32에 대표적인 센서를 연결해서 작동테스트 해보기!(녹칸다ESP32#2) (0) | 2023.04.06 |