ESP32 WT32-ETH01, WT32-S1 with an Ethernet LAN interface
ESP32를 재미있게 가지고 놀고 싶었으나, 지금 내게 필요한건 이더넷 랜 포트가 있는 놈이였다.
물론, 작년부터 가지고 놀았지만 만들어 볼 시간도 없고.. 정리할 시간도 없고? (정말??)
여하튼 그리하여 이제서야 정리해본다.라는.....?
그리하여 « - - » 이제서야 사이는, 점심시간이라는 큰 시간 간격이 존재한다.
음, 오랜만에 다시 하려니 기억이 가물가물...
어떻게 했드라...?
첫째, 컴퓨터랑 연결해보자
USB용으로 시리얼 CP201x 로 연결할때,
5V 전원과 RX0, TX0로 연결 후 IO0에 그라운드 연결 이후 펌웨어.!
이후 RXD, TXD로 통신.
Arduino IDE를 사용하도록 하겠다.
VS 사용하려고 했으나 또 설정하고 ㅈ-ㅈ-ㅈ 하기 귀찮다.
OTA
업로드 순서를 수동으로 처리하지 않으려면 스케치에 OTA를 추가할 것을 제안한다. OTA로 스케치를 한 번 업로드하면 직렬 인터페이스 없이도 새 스케치를 업로드할 수 있다. OTA를 작동시키려면 파티션 구성표를 '최소 SPIFFS(OTA를 사용하는 1.9MB 앱/190KB SPIFFS)'로 변경해야 했습니다(위 스크린샷 참조, 도구에 보면 있을것이다.)
LAN
랜부터 연결해야될듯한데, 난 유선랜으로 연결할 예정이니까?
하면서 찾아보려다가 그냥 예제로 넘어간다.
[파일]-[예제]-[Ethernet] 보니까
LAN8720과 TLK110이 있는데, 보드를 보니 8720이 보이길래, 8720을 해보겠다.
다 해보고 블로그에 글을 남기는게 아니라,
지금 바로 해보면서 글 적고 있는중이라.. 결과는 알수 없다.
잘된다.
업로드 이후에 위에서 설명한것처럼 그라운드를 제거해야 시리얼통신이 확인이 가능하다.
지금 생각해보면 PoE 되는녀석으로 살걸 그랬나 싶기도 하다.
그럼 편한데...
이상 끝!
아이피 수정
아차차차.. 아이피를 수정할수 있어야 편하지..
IPAddress local_IP(192, 168, -, -); // 사용할 IP 주소
IPAddress gateway(192, 168, 0, 1); // 게이트웨이 IP
IPAddress subnet(255, 255, 255, 0); // 서브넷 마스크
IPAddress primaryDNS(8, 8, 8, 8); // 선택 사항: 기본 DNS 서버
IPAddress secondaryDNS(8, 8, 8, 8); // 선택 사항: 보조 DNS 서버
if (!ETH.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("Static IP configuration failed.");
}
그리고, 필요할터이니 ETH의 주요 메서드를 알아보자
주요 메서드 목록
- ETH.begin():
- 이더넷 인터페이스를 초기화합니다. 기본적으로 이더넷 핀과 설정을 자동으로 구성합니다.
- ETH.config(IPAddress local_ip, IPAddress gateway, IPAddress subnet):
- 정적 IP, 게이트웨이, 서브넷 마스크를 설정합니다. 필요에 따라 추가로 DNS 서버를 설정할 수 있습니다.
- 예: ETH.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS);
- ETH.setHostname(const char* hostname):
- ESP32의 이더넷 인터페이스의 호스트 이름을 설정합니다.
- 예: ETH.setHostname("ESP32_Device");
- ETH.getHostname():
- 현재 설정된 호스트 이름을 반환합니다.
- 예: Serial.println(ETH.getHostname());
- ETH.localIP():
- 현재 할당된 IP 주소를 반환합니다.
- 예: Serial.println(ETH.localIP());
- ETH.gatewayIP():
- 현재 설정된 게이트웨이 IP 주소를 반환합니다.
- 예: Serial.println(ETH.gatewayIP());
- ETH.subnetMask():
- 현재 설정된 서브넷 마스크를 반환합니다.
- 예: Serial.println(ETH.subnetMask());
- ETH.dnsIP(uint8_t dns_no = 0):
- 현재 설정된 DNS 서버 IP 주소를 반환합니다. dns_no 인수를 통해 첫 번째(기본값) 또는 두 번째 DNS 서버를 선택할 수 있습니다.
- 예: Serial.println(ETH.dnsIP(0)); // 첫 번째 DNS
- ETH.macAddress(uint8_t* mac):
- MAC 주소를 반환합니다.
- 예:
uint8_t mac[6]; ETH.macAddress(mac); Serial.printf("MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
- ETH.linkUp():
- 이더넷 링크 상태가 활성화되어 있는지 여부를 반환합니다. 활성화된 경우 true를 반환합니다.
- 예: if (ETH.linkUp()) { /* 링크가 활성화된 경우 */ }
- ETH.fullDuplex():
- 이더넷이 풀 듀플렉스 모드에서 동작하는지 여부를 반환합니다. true면 풀 듀플렉스 모드입니다.
- 예: Serial.println(ETH.fullDuplex());
- ETH.linkSpeed():
- 이더넷 링크 속도(단위: Mbps)를 반환합니다. 일반적으로 10, 100 등의 값을 반환합니다.
- 예: Serial.println(ETH.linkSpeed());
- ETH.stop():
- 이더넷 인터페이스를 중지합니다. 더 이상 이더넷 연결을 사용하지 않을 때 호출할 수 있습니다.
- 예: ETH.stop();
- ETH.setPins(int power, int mdc, int mdio, int phy_addr, int clock_mode):
- 이더넷 PHY와 관련된 핀을 수동으로 설정합니다. 이 메서드는 특별한 핀 구성을 사용할 때 유용합니다.
- 예: ETH.setPins(17, 23, 18, 0, ETH_CLOCK_GPIO0_IN);
- ETH.setPHYAddress(uint8_t addr):
- PHY의 주소를 설정합니다. 일반적으로 기본값이 사용됩니다.
- 예: ETH.setPHYAddress(1);
- ETH.setClockMode(eth_clock_mode_t mode):
- PHY의 클록 모드를 설정합니다. 예를 들어 외부 클록 소스를 사용할 때 이 메서드를 사용합니다.
- 예: ETH.setClockMode(ETH_CLOCK_GPIO0_IN);
'Computer > ESP32' 카테고리의 다른 글
ESP32 WiFi (0) | 2023.07.10 |
---|