Arduino Nano와 ESP8266 Wifi 모듈 연결

최근에 Arduino를 사용하여 몇 개의 센서를 연결하기 시작했습니다. 저는 Arduino Nano를 사용하여 온도, 습도, 기압 및 조도를 측정했습니다.

데이터를 데이터베이스에 저장하기 위해 Raspberry Pi에 연결된 또 다른 Arduino를 사용하고 두 Arduino가 이야기하도록했습니다. 433MHz를 통해 서로 무선으로 연결할 수 있습니다.

모두 잘 작동하지만 433MHz 통신이 가장 신뢰할 수있는 것은 아닙니다 (나는 종종 전송을 놓칩니다). ESP8266 모듈을 우연히 발견했을 때 통신을위한 최적의 솔루션 인 것 같았습니다. 라즈베리 파이에서 HTTP 호출을 통해 정보를 추출 할 수 있다면 얼마나 멋질까요?

몇 시간 동안 장난을 치고 여러 펌웨어를 업로드 한 후 할 수 없어서 점점 더 답답해집니다. 무엇이든 할 수있게되면 마침내 다음과 같이 연결된 FTDI 모듈을 통해 작동하게됩니다.

이미지 설명 입력 여기

MB102 전원 모듈을 사용하여 ESP8266에 필요한 3.3v를 제공합니다. 적절한 응답을 얻으려면 MB102의 접지를 FTDI 모듈의 접지에 연결해야합니다. 그 후 AT 명령을 보내고 적절한 응답을 얻을 수있었습니다. 집 Wi-Fi에 연결할 수도 있습니다.

다음으로 할 일은 Arduino에 연결하는 것입니다. RX를 TX로, TX를 RX로 연결하는 매우 간단한 스키마 ( http://blog.huntgang.com/2015/01/20/arduino-esp8266-tutorial-web-server-monitor-example/ )를 찾았습니다. MB102를 사용하여 다음과 같이 연결했습니다.

여기에 이미지 설명 입력

아두 이노에 빈 스케치를 업로드 한 다음 직렬 모니터를 다시 사용하여 AT 명령을 감지 할 수 있습니다. FTDI 모듈을 사용할 때와 똑같은 방식으로 수행했습니다.

문제는 내가 이런 식으로 아무것도 얻지 못한다는 것입니다. 콘솔에서 내 AT 명령도 볼 수 없습니다. 명령을 보낼 때마다 ESP8266이 깜박이는 것을 봅니다 (아직 라우터에 연결되어있는 것도 보았습니다. 아마도 FTDI를 통해 보낸 정보를 기억했을 것입니다 .. .?)

질문은, 내가 뭘 잘못하고 있니? Arduino의 TX에 대한 게시물도 5v이고 3.3v로 되돌리려면 무언가를해야한다는 글을 읽었지만 필요하지 않다고 말하는 많은 자습서도 있습니다.

답변

이러한 개발자로 작업하는 가장 쉬운 방법은 연결하는 것입니다. 이를 여분의 Arduino 핀 쌍에 연결하고 통신을 위해 SoftwareSerial을 사용합니다 ( “두 개 이상의 UART가있는 Arduino 중 하나를 사용하지 않는 한). SoftwareSerial은 16MHz 장치에서 최대 9600 보드, 8MHz 장치에서 4800 보드까지 작동하므로 필요합니다. 이를 수용하기 위해 ESP8266을 설정합니다. 현재 115200 보드로 배송됩니다. 핀 (0, 1)에서 하드웨어 UART를 사용할 수 있지만 Arduino를 다시 프로그래밍하면 매번 일시적으로 ESP를 다시 연결하는 & 연결을 끊고 매우 빨리 오래됩니다.

새 ESP로 수행하는 작업은 다음과 같습니다. ESP를 다시 플래시 한 경우 먼저 AT 명령어 세트 에뮬레이터를 다운로드하고이를 사용하여 다시 플래시해야합니다.

# To configure a new ESP module: # Connect the ESP and the FTDI as in your top diagram, set your # terminal-emulator to 115200 baud, and enter the following: AT # ESP should respond "OK" AT+RST # Resets the ESP AT+UART_DEF=9600,8,1,0,0 # Sets ESP UART: 9600,N,8,1,no flow ctl # Now change the terminal emulator baud rate to 9600 AT+CWMODE=1 # Set ESP to station mode (client) ATE0 # Set ESP"s echo off AT+CWLAP # List access points - after a short pause # the ESP returns a list of WiFi access points 

다음은 ESP8266 AT Instruction Set 링크입니다.

2020 년 6 월 업데이트 : 위 링크가 깨져서 수정되었습니다. Espressif의 github 계정 (온라인에서 읽을 수 있지만 pdf,이 날짜 기준).

댓글

  • 이 질문이 6 개월 전에 답변되지 않은 질문 자료실에서 삭제되었음을 깨달았습니다. . 아, 글쎄요.이 답변이 지금 또는 조만간 다른 사람에게 도움이 될 수도 있습니다.

답변

Nano FTDI 칩에서 RX / TX 및 ESP8266으로의 전송 속도 문제. 스케치를 업로드 할 때 연결을 끊었습니까?

대신 를 시도해 보는 것은 어떻습니까?

건배!

댓글

  • 내가 ESP8266으로 작업 할 때 115200 보드에서 작동하고 나머지는 모두 쓰레기를 제공합니다. . ' 링크 된 블로그에서 코드를 시도했습니다 (전송 속도 만 변경). '에서 ESP8266에 명령을 보내는 것을 확인했습니다. (파란색 표시등이 깜박임) 그러나 Serial.find (" > ) 명령. 나는 또한 ESP8266의 nou 출력을 봅니다. 업로드하는 동안 ESP8266의 연결을 끊었습니다.

답변

여기에서 좋은 튜토리얼을 발견하고 시도한 결과 직업 : https://blogs.msdn.microsoft.com/abhinaba/2016/01/23/esp8266-wifi-with-arduino-uno-and-nano/

댓글

  • 교체 된 CIOBAUD 명령을 제외하고는 작동합니다.모든 UART 기능에 대한 현재 명령은 AT+UART_DEF=<baud>,<databits>,<stopbits>,<parity>,<flowcontrol> 또는 SoftwareSerial과 호환되는 AT+UART_DEF-9600,8,1,0,0입니다. " _DEF "를 " _CUR "이 변경이 세션에만 해당되는 경우; 첫 번째 명령은 기본적으로 전원을 켭니다.
  • 링크가 죽으면 해당 블로그의 정보를이 답변으로 확장 할 수 있지만 더 나은 답변으로 만들 수 있습니다.

답변

예, 다른 전원을 사용하는 경우 항상 접지를 연결해야합니다. 그렇지 않으면 보드가 무엇을 알지 못합니다. 0 볼트입니다.

Arduino의 TX는 5v입니다. 5v를 3.3v로 변환하려면 레벨 시프터가 필요합니다 ( https://shop.pimoroni.com/products/adafruit-4-channel-i2c-safe-bi-directional-logic-level-converter?utm_medium=cpc&utm_source=googlepla&variant=302017581&gclid=CPqujsPxlc0CFcYcGwodb8YIoA )

ESP8266의 TX는 3.3v이고 Arduino의 RX는 5V이며이를 처리하려면 레벨 시프터가 필요합니다. 4 개의 높은 (5v) 신호를 4 개의 낮은 (3.3v) 신호로 변환 할 수 있기 때문에 위에 나열된 것과 동일한 것을 사용하십시오.

사람들은 저항으로 그렇게 할 수 있다고 말하지만 나는 또한 읽었습니다. 빠른 스위칭 디지털 신호를 처리 할만큼 충분히 성능을 발휘하지 못합니다 (그러므로 직렬의 300 Baud는 괜찮지 만 115000은 아닙니다 :))

People a 그래서 레벨 변환기가 필요하지 않다고 말합니다. 그것은 사실이 잠시 동안 작동 할 수도 있지만 조만간 무언가 갑자기 나타날 것입니다. 전압을 높이면 프로세스 속도가 빨라지므로 230v 전원을 연결하면 어떤 일이 일어날 지 상상할 수 있습니다. 마지막으로, ESP8266은 256KB RAM을 갖춘 80 / 160MHz 프로세서라는 사실을 아시나요? Arduino와 비교할 때 휴대 전화를 통해 PC를 프로그래밍하는 것과 같습니다. FTDI 모듈을 통해 ESP8266을 연결하고 Arduino C의 Arduino IDE를 통해 프로그래밍 할 수 있습니다.이 모든 연결 항목보다 훨씬 쉽습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다