Arduino DUE with WIZ550io

Arduino Ethernet Lib. -FTP Client를 Ethernet Shield-WIZ550io 에 적용해보자

Arduino Ethernet Lib.중 File transfer protocol (FTP) Client를 대표적 Ethernet Shield인 WIZ550io를 이용하여 간단히 SD file system과 Ethernet 통신을 경험해 보자

Preparation materials

  1. Hardware :
    - Arduino board : Arduino Due
    - Ethernet Shield : WIZ550io with ioShield-A (included Micro SD connector)
    - Micro-SD Memory card
  2. Software :
    - Ethernet Lib. : WIZ_Ethernet_LIB_IDE-1.5.7 (included FTPPassiveClient Sketch)
    - SD Lib. : https://github.com/adafruit/SD
    - Arduino IDE : IDE 1.5.7
    - Ethernet example : FTPPassiveClient sketch
  3. Etc
    - FTP Server on PC side

준비물을 이용하여 Arduino Due + Ethernet Shield가 Ethernet과 SD Lib.를 기반으로 FTPPassiveClient로 구동하여, 보드에서 PC쪽의 FTP Server에 접속한뒤 미리 지정한 파일을 다운받는 예제이다.

Setting of FTPPassiveClient Sketch

  1. WIZ Ethernet Lib setting
    WIZ550io을 사용하기 위해 “~/arduino1.5.7/libraries/Ethernet/src/utility/w5100.h”파일의
    19~24 lines을 확인한다.
    #define W5500_ETHERNET_SHIELD //WIZ550io혹은 W5500을 사용
    #if defined (W5500_ETHERNET_SHIELD)
    #define WIZ550io_WITH_MACADDRESS //WIZ550io의 MAC 주소 사용
    #include “utility/w5500.h”
    #endif
  2. Network setting
    Arduino Due + Ethernet Shield와 FTP Server가 구동중인 PC가 같은 Network로 묶기 위해 Network를 설정해야 하며 이것은 PC 혹은Board쪽에서 설정할 수 있다.
    먼저, Sketch에서 설정하는 방법은 PC가 IP address가 192.168.1.10이고 subnet과 gateway가 각각 255.255.255.0, 192.168.1.1로 설정되어 있을 경우
    Sketch의 IPaddress함수를 아래와 같이
    IPaddress ip(192.168.1.177);
    IPaddress gateway(192.168.1.1);
    IPaddress subnet(255.255.255.0);

    로 설정할 수 있다.
    두번째 방법은 Sketch의 Network의 설정을 보고 windows인 경우는 Local area connection-> Properties ->Internet Protocol -> Properties에서 첫번째 예시에서 든 주소를 사용하여 각각 IP/Subnet/gateway를 설정하면된다.
  3. FTP address Account / password setting / filename
    FTP의 Address와 Account 및 passowrd는 미리 FTP server에서 설정해 놓은 것을 이용하여 Sketch에 적용하면된다.
    예를 들어 FTP Server의 설정이 아래와 같은 경우
    FTP의 IP address : 192.168.1.10
    Account : test
    password : testtest
    다운할 file name : test.txt
    Sketch에서 아래의 부분을 수정하면 된다.
    -28Line : IPAddress server ( 192.168.1.10 ); //FTP IP address
    -36Line : char fileName[13] = “test.txt”; //Server쪽에 test.txt를 반드시 준비!!
    -126Line: clinet.println(F(“USER test”)); //FTP account
    -130Line: clinet.println(F(“PASS testtest”)); //FTP account

이제 준비는 다 끝났으니 컴파일 후 sketch를 board로 다운로드 후 FTP Server의 계정과 password를 이용하여 login한후 test.txt를 보드의 Micro-SD 카드에 다운받게 됨을 확인 했다. 그리고 마지막에 받은 파일을 SD카드에서 읽어 시리얼포트로 출력까지 해준다.

Tip1. WIZ550io와 Micro-SD의 Data line은 Serial Peripheral Interface Bus(SPI)를 함께 사용하며 Chip Select(CS)신호로 WIZ550io와 Micro-SD를 구별하게 된다. WIZ550io는 GPIO인 D10을 Micro-SD는 D4를 각각 CS로 사용하고 있다. 기존 코드에 CS의 충돌을 막기 위해 Micro-SD의 Init전에 D10을 GPIO를 Output high로 설정하고 이후 WIZ550io의 Init을 실시하였으나, 이번 적용한 sketch에서는 WIZ55oio를 먼저 Init한뒤 SD를 Init하도록 변경하여 CS의 충돌을 피하도록 수정하였다.

Tip2. FTP USER와 PASSWORD설정시에 반드시 공백(Space)필요합니다. 이것때문에 로그인 한동안 할 수 없어 WireShark로 Packet capture한 뒤 알아내었다는...T.T

Show your support

Clapping shows how much you appreciated Embeddist (Soohwan Kim)’s story.