아두이노로 만드는 수경재배 장치 목차
8. 와이파이 연결 (ESP 01) - 1
이제 온도, 습도, 빛을 측정할 수 있고 스위치를 끄고 켜는 기능을 아두이노에 연결했으니 와이파이 인터넷에 연결해서 식물이 있는 곳으로 가지 않아도 내 컴퓨터에서 조회할 수 있도록 해 볼 예정이다.
1. 와이파이 (wifi) 모듈
아두이노에 연결할 수 있는 와이파이 모듈은 다양하다. 가장 오래되었지만 아직도 많이 사용하고 있는 ESP 01에서 강력한 ESP 32까지 있고,
아두이노 보드 위에 올려서 사용할 수 있는 와이파이 쉴드(Wifi Shield)도 있고,
아두이노 우노에 와이파이 ESP 12가 통합되어 있는 Wemo D1보드도 있다.
그중에서 나는 가장 저렴하고 가장 오래된 와이파이 모듈인 ESP 01을 선택했다. 보드에 통합된 Wemo D1도 있지만 아두이노 우노의 모든 옵션들을 테스트해 볼 생각도 있었고, 또 실험단계이다 보니 왠지 약해 보이는 클론 아두이노 우노보다는 내가 뭘 테스트 하든 잘 버틸 것 같은 오리지널 아두이노 우노 보드를 선택했다. 실제로 사용해 보니, 오리지널 아두이노 보드가 클론 아두이노 보다 잘못된 전류에도 더 잘 버티고, 실수로 디지털 출력에서 더 많은 전류를 뽑아내었을 때에도 더 잘 버틴다.
2. ESP 01 (ESP8266)
인터넷을 검색하면 와이파이 모듈인 ESP 01에 대한 정보가 넘쳐난다. 모두 다 같은 내용이어서 어느 것이 오리지널인지 구분이 되지 않을 뿐 아니라, 실제 해 보고 나니 펌웨어를 업데이트해야 동작한다는 등 현재와는 맞지 않는 부분이 있어, ESP 01 모듈을 아두이노에 연결하면서 얻은 경험을 글로 썼다.
ESP 01 모듈은 핀이 브레드 보드에 넣어서 테스트할 수 있는 핀 배열을 가지고 있다. 4핀씩 두줄로 8개의 핀을 연결하도록 되어 있는데 그대로는 브레도 보드에 연결할 수 없다. 그래서
- Female to male 점프 선을 사용하거나,
- ESP 01 어댑터를 사용하면 된다.
나도 처음에는 어댑터를 구매하지 않아서 2가지 방법을 다 써 봤는데, 마지막에는 만능기판에 땜질을 해서 완성할 계획이면 테스트할 때에만 점프 선을 사용해도 되지만, 대부분의 경우는 어댑터를 사용하는 것이 편하다. (만능기판에 최종 회로를 만들 계획이면 어댑터를 사용하면 부피가 커져서 개인적으로는 선호하지 않는다.)
먼저 ESP 01 어댑터에 ESP 01 모듈을 꽂고, RX는 디지털 3번에 TX는 디지털 2번에 서로 엇갈리게(아두이노의 RX는 ESP 01의 TX에, ESP 01의 RX는 아두이노의 TX에) 연결하고 Vcc와 GND를 각각 프로토타일 쉴드의 전원 커넥터에 연결해서 테스트할 보드를 완성한다. 어댑터를 사용하면 좋은 점 또 한 가지는 Vcc를 5V에 연결할 수 있는 점이다. 원래 ESP 01은 3.3V와 연결해야 한다. 만일 5V와 연결하면 망가질 수 있다. 어댑터 없이 테스트할 때 5V와 연결한 적이 있는데, 다행히 바로 고장 나거나 하지는 않았다. 휴 ~
모두들 ESP 01을 아두이노에 연결하고 나면 펌웨어를 업그레이드하라고 한다. 사실 모든 펌웨어는 가급적 최신버전으로 업그레이드하는 것이 맞다. 그래서 ESP 01을 만드는 제조사 Espressif사에서 Tool (Tools | Espressif Systems)을 다운로드하고 펌웨어 (AT | Espressif Systems)를 받으려고 들어가 보니, 최신 버전이 2020년 인 것을 알 수 있다. 나는 알리에서 최근에 구매했고 또 구매한 사이트가 거래량이 많은 사이트에서 구매했기에 2021년 이전에 생산된 제품이 아닐 것이라는 생각이 들었고 따라서 펌웨어를 업그레이드하지 않아도 되겠다는 생각이 들었다.
그래서 펌웨어 업그레이드 없이 테스트해 보았다. 누군가가 만들어 놓은 간단한 echo terminal프로그램이 인터넷에 많이 있다. 통신하면 제일 먼저 배우는 예제이지만 있으니 그냥 사용해 봤다.
#include <SoftwareSerial.h>
SoftwareSerial SoftSerial(2, 3); // RX, TX
void setup() {
Serial.begin(9600); // whatever you want to connect with arduino
SoftSerial.begin(115200); // initial baud rate
}
void loop() {
if (SoftSerial.available()) {
Serial.write(SoftSerial.read());
}
if (Serial.available()) {
SoftSerial.write(Serial.read());
}
}
아두이노 보드와의 통신은 baud rate를 9600이나 115200이나 원하는 대로 설정하면 된다. SoftSerial의 속도는 ESP 01이 판매될 때 설정된 속도로 맞춰줘야 하는데, 내가 구매한 몇 개의 ESP 01은 테스트해 보니 모두 115200으로 설정되어 있었다. 스케치 프로그램을 Upload 하고 나면 Serial Monitor의 Message입력창에 AT 명령어를 입력할 수 있다.
먼저 아두이노 IDE에서 Serial Monitor를 열고 Serial Monitor창의 오른쪽 두 번째 드롭다운의 값이 "Both NL & CR"로 설정되어 있는지 확인해야 한다. "Both NL & CR"로 설정되어 있지 않으면 응답이 없거나 "ERROR"가 나오니 먼저 "Both NL & CR"로 설정하여 Message입력창에 명령을 입력하면 자동으로 NL (New Line)과 CR (Carrage Return)을 이어 붙이도록 설정한다.
이제 명령어를 Message 입력칸에 입력하고 Enter를 누르면 된다. 그런데, ESP 01 주변의 Wifi AP 목록을 표시하는 명령(AT+CWLAP)을 실행하면 글자가 깨어지는 것을 확인할 수 있다.
이것은 아두이노의 Software Serial이 115200 baud rate를 지원하지 않기 때문에 발생하는 일이기 때문에 AT명령(AT+UART_DEF=9600,8,1,0,0)을 사용해서 9600으로 baud rate를 변경한다. 명령을 Message 입력창에 입력한다.
스케치 프로그램에서 SoftSerial.begin(115200)을 SoftSerial.begin(9600)으로 변경하고 아두이노 보드로 Upload 한 다음, 다시 와이파이 목록을 표시해 보면 제대로 나오는 것을 알 수 있다. 역시 펌웨어 업데이트 없이도 잘 동작한다.
이제 CWJAP명령을 사용해서 와이파이에 연결해 본다.(AT+CWJAP="SSID","PASSWORD")
(요건, 그냥 따라 하면 되고, 민감정보도 있어서 그림 없이 통과...)
하나 더 참고할 만한 명령은 CWMODE명령이다. 이 명령은 ESP 01 모듈을 Client로 사용할 것인지 Host (또는 공유기처럼 AP)로 사용할 것인지 선택하는 것이다. 나는 ESP 01을 내 공유기에 연결하려는 것이 목적이니 Client로 설정하면 된다 (AT+CWMODE=1). 만일 공유기 프로그램을 설치해서 공유기로 만들고 싶다면 Host로 설정하면 된다.
1. Station mode (Client)
2. AP mode (Host)
3. Station + AP mode (Host이면서 Client)
이 외에도 AT명령이 많이 있는데, blog for room-15에 정리가 잘 되어 있어 아래에 링크를 걸었다.
ESP8266 - AT Command Reference · room-15
ESP8266 - AT Command Reference 26 Mar 2015 | by fuho ESP8266, in it’s default configuration, boots up into the serial modem mode. In this mode you can communicate with it using a set of AT commands. I will present to you a reference of all known AT comma
room-15.github.io
이제 아두이노가 ESP 01을 사용해서 와이파이 인터넷에 연결하고 통신할 준비가 되었다.
'IoT 자동화' 카테고리의 다른 글
ESP 01 와이파이 펌웨어 업그레이드 (꼭 해야 한다면 성공 방법으로) (0) | 2023.04.30 |
---|---|
아두이노로 만드는 수경재배 장치; 8. 와이파이 연결 (ESP 01) - 2 (2) | 2023.03.26 |
아두이노와 순수 릴레이를 사용한 시간 지연 릴레이 (자동 스위치) (1) | 2023.03.23 |
아두이노로 만드는 수경재배 장치; 7. 시간 지연 릴레이 (자동 스위치) (2) | 2023.03.21 |
아두이노로 만드는 수경재배 장치; 6. 조도계 (광센서) (2) | 2023.03.19 |