아두이노 우노에 ESP8266 WiFi 모듈을 연결하는 방법과 컴퓨터에 구성한 TCP 서버와 통신 테스트한 과정을 설명합니다.
2019. 1. 16
아두이노 우노에 연결한 핀을 D11, D10에서 D10, D9로 변경
2019. 1. 17
시리얼 버퍼 크기 조정
2020. 9. 28
동작 확인
ESP8266 WiFi 모듈을 Arduino Uno에서 사용하기 위해 필요한 WeeESP8266 라이브러리는 다음 링크에서 다운로드 가능합니다.
https://github.com/itead/ITEADLIB_Arduino_WeeESP8266
Code 초록색 버튼을 클릭 후, Download ZIP를 클릭하면 압축된 라이브러리가 다운로드됩니다.
압축을 풀어서 다음 경로에 복사해줍니다.
C:\Users\사용자이름\Documents\Arduino\libraries
Arduino Uno에는 시리얼이 하나라서 ESP8266에서 소프트웨어 시리얼을 사용하도록 해주어야 합니다.
ESP8266와 Arduino IDE의 시리얼 모니터에서 각각 시리얼을 사용해야 접속 상황을 볼 수 있기 때문입니다.
다음 경로에 있는 ESP8266.h 파일을 열어서 다음 줄에 있는 주석을 제거해줍니다.
C:\Users\사용자이름\Documents\Arduino\libraries\ITEADLIB_Arduino_WeeESP8266-master
변경전
//#define ESP8266_USE_SOFTWARE_SERIAL
변경후
#define ESP8266_USE_SOFTWARE_SERIAL
‘
시리얼 버퍼 크기를 조정하기 위해서 C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino에 있는 HardwareSerial.h 파일을 수정해야 합니다.
권한 문제로 수정후 저장이 안될 수 있습니다.
HardwareSerial.h 파일울 다른 폴더로 복사해서 아래 처럼 수정한 후 다시 원래 위치로 복사해야 합니다.
버퍼 크기를 64에서 256으로 변경합니다.
Arduino Uno와 ESP8266 Wifi 모듈을 다음처럼 연결해줍니다.
Hercules SETUP utility를 이용하여 TCP 서버를 구성하여 테스트를 진행하였습니다. 아래 링크에서 다운로드 할 수 있습니다.
http://new.hwg.cz/files/download/sw/version/hercules_3-2-8.exe
Hercules SETUP utility를 실행한 후, TCP Server 탭을 선택하고 Listen을 클릭합니다.
포트 번호를 변경하지 않고 23번으로 하고 진행했습니다.
Arduino Uno에서 접속할 서버 IP를 확인해야 합니다.
명령 프롬프트를 실행시켜 ipconfig 명령으로 컴퓨터에서 사용중인 IP를 확인합니다.
WeeESP8266 라이브러리에 포함되어 있는 TCPClientSingleUNO 예제 코드를 수정하여 사용했습니다.
원본 코드는 Arduino IDE 메뉴에서 파일 > 예제 > ITEADLIB_Arduino_WeeESP8266 > TCPClientSingleUNO를 선택하면 불러올 수 있습니다.
Arduino IDE의 메뉴에서 파일 > 새파일을 선택한 후 다음 코드를 복사해줍니다.
Hercules SETUP utility에서 한글이 깨져보이는 현상이 있어서 코드에선 영어 메시지를 사용합니다.
상단에 있는 다음 4줄을 환경에 맞게 수정한 후, Arduino Uno에 업로드시켜줍니다.
주의할 점은 컴퓨터가 연결된 공유기의 정보를 입력해줘야 합니다.
ESP8266 모듈의 접속 과정을 확인하기 위해 Arduino IDE의 메뉴에서 툴 > 시리얼 모니터를 선택합니다.
공유기로부터 IP를 할당 받았다면 Join AP success 문자열과 함께 할당받은 IP를 출력해줍니다.
컴퓨터에서 실행시킨 서버 프로그램에 접속했다면 create tcp ok 문자열을 보여줍니다.
create tcp err 문자열이 보이면, 컴퓨터의 방어벽 문제일 가능성이 있습니다.
Hercules SETUP utility의 TCP 서버에서 사용중인 포트를 차단중인지 확인해보세요.
해당 포트를 허용해주거나, 방어벽을 잠시 끄고 진행해보세요..
Hercules SETUP utility에서 Arduino Uno가 클라이언트로 접속했음을 확인할 수 있고
Arduino Uno가 전송한 문자열이 보입니다.
Send에 1을 입력하고 Send를 클릭하면 Hercules SETUP utility에서 Arduino Uno 보낸 문자열 “LED is on” 메시지를 확인할 수 있습니다.
시리얼 모니터에서 Arduino Uno가 1을 받았음을 볼 수 있고 Arduino Uno 13번핀에 연결되어 있는 내장 LED가 켜지게됩니다.
몇가지 테스트를 더 해본 결과입니다.
관련 포스팅
'WiFi ESP8266' 카테고리의 다른 글
Arduino UNO에서 ESP8266 WiFi 모듈을 사용하는 방법 (120) | 2019.01.16 |
---|---|
Arduino Uno에서 ESP8266을 이용하여 MYSQL에 온도값(DB18B20) 넣기 (245) | 2018.10.17 |
Android 앱에서 ESP8266 WiFi 모듈을 연결한 Arduino Uno 제어하기 (66) | 2018.09.02 |
ESP8266 모듈을 위한 펌웨어 컴파일 환경 구축 및 MicroPython 스크립트 태스트 (0) | 2016.05.22 |
ESP8266 모듈에서 MicroPython 프로그래밍 (0) | 2016.05.22 |
ESP8266 펌웨어 업그레이드 및 공유기 접속 테스트 (3) | 2016.05.21 |
포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.
여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다.
감사합니다 ~~
유튜브 구독하기
제가 쓴 책도 한번 검토해보세요 ^^
- 이전 댓글 더보기
-
스팩토마 2019.01.24 17:37
네 헤더파일이랑 다른파일 수정완료 했습니다.ㅠㅠ
https://blog.naver.com/ism6891/221450133223 여기링크에 문제되는 오류코드 첨부하였습니다!
혹시 인식이 안되는지 확인하기위해 강제로 라이브러리를 아두이노 ide 설치폴더안에 넣어보았는데
충돌이 났고 오류소스의 첫번째 경로를 보니 라이브러리는 적용이 되고 있는 것 같습니다.
-
스팩토마 2019.01.24 17:47
라이브러리 적용여부와 경로를 확인하려고 충돌시켜서 확인한 후에
충돌 라이브러리 삭제하고 다시 컴파일해도 같은 에러가 발생합니다..ㅠㅠ -
김재윤 2019.03.24 10:49
안녕하세요? 아두이노를 공부하는 학생입니다!
setup begin
FW Version:
to station + softap err
Join AP failure
single err
setup end
create tcp err
이라고 뜨는데 어떻해야되나요?ㅠㅠ
ssid와 password, ip, 포트 모두 잘 입력했어요ㅠㅠ -
lsj 2019.03.25 19:18
setup begin
FW Version:
to station + softap err
Join AP failure
single err
setup end
에러가 이렇게 나오는데 저희가 위에 포스트를 성실시 따라하고 공유기 SSID아이디와 비밀번호 허큘러스 포트번호 등등 입력은 잘하였습니다. 라이브러리도 아두이노 예제에서 확인이 되는것으로 보아 라이브러리에 문제도 없는것 같은데 왜 이렇게 뜨는지 이해가 안됩니다. 혹시나 해서 아두이노를 다른것으로도 바꿔서 실행해 봤는데도 같은 결과가 나오고 있습니다. -
jinuee 2019.04.03 01:49
너무나도 유익하고 좋은 게시글 진짜진짜 감사합니다!!!! 이해하는데 정말 많은 도움이 되었어요.
궁금한게 있는데 혹시 pc와 아두이노 와이파이 모듈이 서로 다른 공유기에 접속되어 있어도 서버에 접근할 수 있을까요?
-
SHI 2019.05.05 23:26
ESP8266:15:22: error: no matching function for call to 'ESP8266::ESP8266(SoftwareSerial&)'
ESP8266 wifi(mySerial);
^
In file included from C:\Users\shink\Documents\AduinoDocument\ESP8266\ESP8266.ino:1:0:
C:\Users\shink\Documents\AduinoDocument\libraries\ITEADLIB_Arduino_WeeESP8266-master/ESP8266.h:60:5: note: candidate: ESP8266::ESP8266(HardwareSerial&, uint32_t)
ESP8266(HardwareSerial &uart, uint32_t baud = 9600);
^
C:\Users\shink\Documents\AduinoDocument\libraries\ITEADLIB_Arduino_WeeESP8266-master/ESP8266.h:60:5: note: no known conversion for argument 1 from 'SoftwareSerial' to 'HardwareSerial&'
C:\Users\shink\Documents\AduinoDocument\libraries\ITEADLIB_Arduino_WeeESP8266-master/ESP8266.h:38:7: note: candidate: constexpr ESP8266::ESP8266(const ESP8266&)
class ESP8266 {
^
C:\Users\shink\Documents\AduinoDocument\libraries\ITEADLIB_Arduino_WeeESP8266-master/ESP8266.h:38:7: note: no known conversion for argument 1 from 'SoftwareSerial' to 'const ESP8266&'
C:\Users\shink\Documents\AduinoDocument\libraries\ITEADLIB_Arduino_WeeESP8266-master/ESP8266.h:38:7: note: candidate: constexpr ESP8266::ESP8266(ESP8266&&)
C:\Users\shink\Documents\AduinoDocument\libraries\ITEADLIB_Arduino_WeeESP8266-master/ESP8266.h:38:7: note: no known conversion for argument 1 from 'SoftwareSerial' to 'ESP8266&&'
exit status 1
no matching function for call to 'ESP8266::ESP8266(SoftwareSerial&)'
이런 오류가 나왔습니다.
아래 댓글들을 참고하여 라이브러리 위치도 확인했지만
계속해서 오류가 나옵니다.
-
궁금해요 2019.06.03 15:40
위 포스팅 되어있는대로 순서대로 하고나서 결과를 돌리면 이렇게 뜨고
setup begin
FW Version:
to station + softap ok
Join AP success
IP:+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:39:60:4e"
+CIFSR:STAIP,"192.168.0.29"
+CIFSR:STAMAC,"18:fe:34:39:60:4e"
single ok
setup end
create tcp err
create tcp err
create tcp err
create tcp err
계속 이렇게 뜹니다. 왜그런지 알수 있을까요... ?
-
lim 2019.07.17 18:49
안녕하세요
물어볼 것이 있어서 물어보렬고 댓글을 작성하였습니다. ESP8266보드와 OV2640으로 IP카메라가 제작 가능한가요?
가능하면 방법을 알려주세요
그리고 코드도 올려주시거나 보내주실수 있으면 보내주세요 만약에 보내주시면 IP카메라 만드는 코드를 보내주세요
빨리 답변 봐주시면 감사하겠습니다. -
jy 2019.10.17 20:50
Hercules SETUP utility의 TCP 서버에서 사용중인 포트를 차단중인지 확인해보세요.
해당 포트를 허용해주거나, 방어벽을 잠시 끄고 진행해보세요..
여기서 포트23번이 차단중인지를 어떻게 확인하나요.??ㅠㅠ -
-
좋은글감사합니다 2019.12.03 12:46
setup begin
FW Version:
to station + softap err
Join AP failure
single err
setup end
create tcp err
create tcp err
라이브러리 꼼꼼하게 확인하구 포트 연결도 제대로 하구 핸드폰 핫스팟 틀어서 연결을 시도해봤는데 계속 이렇게 뜨네요.. 거의다 따라왔나 싶었는데 ㅜㅜ 혹시 해결 할 방법 있을까요..?
-
-
단디 2019.12.17 22:37
위 코드 따라 했는데, 아래와 같이 오류가 나네요.
78 unit32_t len = wifi.recv(buffer, sizeof(buffer), 10000);
exit status 1
'wifi' was not declared in scope
부탁드립니다. -
제이 2020.02.05 11:10
TX RX 다 잘동작합니다.
하지만
일정시간동안 아무 동작을 안하면 소켓통신 연결이 끊기는데 혹시 이문제는 해결이 가능한가요? -
-
-
suyeon 2020.05.28 17:38
저희는 스프링에서 tcp 서버를 만들어서
tcp.socket.port = 50051로 지정해 주었는데
#define HOST_PORT (Hercules SETUP utility에서 설정한 TCP 서버 포트번호)
이 부분에 50051을 넣는게 맞나요? 잘 안되서요ㅜㅜ -
ddonii 2020.09.28 15:12
안녕하세요.
동일한 방법으로 하고, 댓글들 참고하여 했는데
collect2.exe: error: ld returned 1 exit status
exit status 1
보드 Arduino Uno 컴파일 에러.
이러한 컴파일 에러가 뜹니다. 왜 그런 걸까요 ? ㅜ ㅜ
-
안녕하세요. 이 글을 보고 열심히 따라하던 도중 코드에 문제가 생겨 질문드립니다.
계속 이러한 오류가 납니다..
C:\Users\사용자이름\Desktop\wifitestuno\wifitestuno.ino: In function 'void loop()':
wifitestuno:69:52: error: expected primary-expression before ')' token
exit status 1
expected primary-expression before ')' token
올려주신 코드 루프 부분에
if (wifi.createTCP(HOST_NAME, HOST_PORT)) { // 이 줄이 오류가 납니다.
어떻게 해결해야할 지 잘 모르겠습니다.
도와주시면 감사하겠습니다...
-
안녕하세요 구글검색 통해 본 블로그를 알게되었습니다. esp8266모델로 통신공부를 하는 중입니다.
작성자님께서 작성하신 위의 코드대로 아두이노 우노보드에 스케치를 하였고 업로딩하는 중 no matching function for call to 'ESP8266::getVersion()' 이라는 오류가 발생하여
이 오류가 혹시 ESP8266모듈 헤더파일이 제대로 설치가 되지 않아서 그런 것인지.. 해결을 아직 못했습니다.. 혹시 이 오류에 대해서 알고 계시면 답글부탁드리겠습니다.