위즈네트 아카데미

TUTORIAL

튜토리얼

Home  > 튜토리얼

WIZnet W5500-EVB and Blynk App communication 2015.06.08 127

Intro 스마트폰 앱 개발이 대중화 되어 가면서, 관심만 있다면 일반인도 쉽게 앱 개발이 가능해지고 있습니다. 이번 튜토리얼에서는 스마트폰 App 을 활용하여 위즈네트 보드를 컨트롤 하는 방법에 대해서 설명합니다. 본 튜토리얼의 저자는 최근에 'Blynk'라는 매우 흥미로운 앱 플랫폼을 찾게됩니다. 하지만 아쉽게도 이 플랫폼은 Arduino와 같은 특정한 디바이스 관련한 라이브러리만 제공됩니다. 본 포스팅에서는 WIZnet W5500-EVB 보드에 Blynk Library를 포팅해 보겠습니다. About W5500-EVB W5500-EVB는 32-bit ARMW5500® Cortex™-M0 마이크로 컨트롤러 기반의 W5500 칩에 대한 테스트...

ioLibrary 100% 활용하기 (4) 2015.06.08 195

앞서 살펴 본 ioLibrary의 가장 큰 특징은 다음과 같습니다. 모든 함수의 Success & Fail 처리 : SOCKET ERROR 시 상황 코드 Blocked & Non-Blocked I/O function Datagram Data의 Flexible 처리 각 특징들이 어떻게 활용되는지 하나씩 알아보도록 하겠습니다 Datagram Data의 Flexible 처리 UDP와 같은 Connection-less Datagram 통신은 1:N 통신이 가능하여 WIZnet chip들은 Data Packet외에 IP, Port number와 같은 추가 정보를 Data packet 앞에 추가합니다. 따라서 수신한 Data 처리를 Packet단위로 하지 못할 경우 Packet 정보를 제대로 분석할 수 없어 통신에 에러가 발생하게...

ioLibrary 100% 활용하기 (3) 2015.06.08 54

앞서 살펴 본 ioLibrary의 가장 큰 특징은 다음과 같습니다. 모든 함수의 Success & Fail 처리 : SOCKET ERROR 시 상황 코드 Blocked & Non-Blocked I/O function Datagram Data의 Flexible 처리 각 특징들이 어떻게 활용되는지 하나씩 알아보도록 하겠습니다 Blocked vs Non-Blocked I/O function Blocked I/O function 이란, 함수를 호출 할 경우 해당 함수 수행이 완료되기 전까지 return하지 않는 함수입니다. 예로, connect(sn, ip, port) 함수를 호출 하였다고 가정할 경우 ip와 port 정보를 갖는 상대방과 접속을 성공하거나 실패할 때 까지 connect() 계속 기다립니다. 즉 리...

ioLibrary 100% 활용하기 (2) 2015.06.08 57

앞서 살펴 본 ioLibrary의 가장 큰 특징은 다음과 같습니다. 모든 함수의 Success & Fail 처리 : SOCKET ERROR 시 상황 코드 Blocked & Non-Blocked I/O function Datagram Data의 Flexible 처리 각 특징들이 어떻게 활용되는 하나씩 알아보도록 하겠습니다. SOCKET ERROR 시 상황 코드 SOCKET ERROR는 아래와 같이 정의됩니다.(socket.h 참조) #define SOCK_OK 1 ///< Result is OK about socket process. #define SOCK_BUSY 0 ///< Socket is busy on processing the operation. Valid only Non-block IO Mode. #define SOCK_FATAL -1000 ///< Result is fatal error about socket ...

ioLibrary 100% 활용하기 (1) 2015.06.08 90

ioLibray? ioLibrary는 WIZnet의 W5XXX(W5100,W5200,W5300,W5500) 기반의 통합 BSD socket Library입니다. 칩별로 차이가 있는 Hardware dependent code들을 Driver로 분리하여 각각 구현되었으며, 이를 이용하여 BSD Socket API를 구현함으로써, Webserver, FTP와 같은 Application Protocol을 구현함에 있어 Hardware적 제약 조건으로부터 자유로워질 수 있으며, Application의 최소한의 수정으로 쉽게 원하는 WIZnet Chip들로 Porting이 가능합니다. ioLibrary 특징 DRIVER 분리 기본 입출력 기능 WIZCHIP_READ 및 WIZCHIP_WRITE 모든 Register & Memory Access를 WIZCHIP_READ & W...

W5500 Ethernet Sheild 2015.05.15 54

이번 포스팅에서는 위즈네트에서 신규 출시한 W5500 Ethernet Shield을 소개하고 그 특징에 대해서 살펴보겠습니다. W5500 Ethernet Shield 는 이름 그대로 위즈네트의 최신 Ethernet Controller 인 W5500 기반의 쉴드로 각종 오픈하드웨어 플랫폼에 연결하여 이더넷 기능을 추가하도록 설계되어 있습니다. 아두이노와 보드와는 하드웨어 적으로 바로 꽂아서 사용될 수 있도록 핀이 구성되어 있으며, mbed 플랫폼들과의 사용될 수 있도록 mbed 라이브러리를 제공합니다. 아래는 보드 외형입니다. 위에 보시는 바와 같이 기존의 ioShield 등과 달리 타 오픈 플랫폼 및 쉴드와의 Stacking 에 용...

W5500-EVB 활용 버스도착 알리미 보드 만들기 2015.04.13 136

내가 이용하는 버스가 내가 이용하는 정거장에 도착할 때쯤 이를 알려주는 시스템이 있다면? 정말 편리할 것 같습니다. 미국에 있는 한 고객이 이러한 시스템을 만들어서 소개한 적이 있습니다. (☞ 관련 포스팅 확인) 이번 포스팅에서는 위즈네트의 연구원 허봉준 마스터가 W5500-EVB 를 활용하여 제작한 내용을 소개합니다. 대중교통 시스템이 잘되어 있는 한국에서는 각종 사이트를 통해 버스 노선 및 도착 정보를 알려주고 있습니다. 본 포스팅에서는 위즈네트 사무실이 위치한 분당 수내동에서 강남역까지 버스를 타고 이동한다고 가정하고 설명하도록 하겠습니다. 1. 버스 노선 및 도착 ...

W5500-EVB활용 Chat Client 구현하기 - 5 2015.04.09 25

[W5500-EVB 활용 Chat Client 구현하기 1~4]를 통해 Chat Client 구현하는 방법에 대해서 설명을 드렸습니다. W5500의 드라이버 소스를 이용하는 것에서는 큰 문제는 없었지만, UART 데이터를 받아 처리하는 부분에서 데이터가 유실 되는 문제가 있었습니다. 관련 문제를 해결하기 위해 구글링을 통해 링버퍼를 소스를 찾아 적용, UART 데이터 처리하는 분이 해결하게 되었으며, 이번 포스팅에는 그와 관련된 설명 입니다. 아래 소스는 링버퍼 소스입니다. ring_buffer.h와 ring_buffer.c에 링버퍼를 사용하기 위한 소스가 있습니다. 여기서는 링버퍼의 간단한 함수 설명만 진행하겠습니다. rb...

W5500-EVB활용 Chat Client 구현하기 - 4 2015.04.09 7

지난 포스팅 [W5500-EVB 활용 Chat Client 구현하기 - 3]에서는 UART 데이터가 유실되는 문제점을 발견 그 원인을 추측해 보았습니다. 이번 포스팅에서는 어떻게 문제를 해결하였는지 설명해 보겠습니다. 아래와 그림과 같이 일단 문제는 해결이 되어 정상 동작하는 것을 확인하였습니다. TCP===>> UART : 정상동작 UART ===>> TCP : 코드를 수정 후 아래와 같이 정상적으로 동작하는 것을 볼수 있습니다. UART 버퍼 사이즈는 5byte 이고 전송한 데이터는 '1234567890' 이다. 5byte 이상의 데이터가 수신되어도 모든 데이터를 TCP로 전송 성공합니다. #define SR_RX_BUF_SIZE 5 #define TCP_TX...

W5500-EVB활용 Chat Client 구현하기 - 3 2015.04.09 15

[W5500-EVB활용 Chat Client 구현하기 - 2]에서 UART 인터럽트를 사용하고, CR과 LF에 의해 출력되는 부분을 진행했었습니다.  이번 포스팅에서는 관련하여 약간의 업그레이드를 시도, 정해진 UART 버퍼 사이즈보다 큰 데이터가 들어왔을때 처리하기 위한 작업을 진행하였지만 실패한 내용에 대해서 분석해 보겠습니다. 1. TCP Server ===>> UART : 정상동작 2. UART===>>TCP Server 이부분에 대한 수정을 진행했는데, 정상적으로 동작하지 않습니다. UART 버퍼 사이즈를 5byte로 설정을 하고 5byte 이상이 들어오면 TCP로 전송을 하고 다시 UART 데이터를 수신하도록 했지만, 5byte 이후에 들...

W5500-EVB활용 Chat Client 구현하기 - 2 2015.04.09 13

지난 포스팅(W5500-EVB 활용 Chat Client 구현하기 - 1)에 구현된 Chat Client 를 업그레이드 해보겠습니다. 아래의 2가지로 업그레이드 합니다. “Socket Status Register”의 상태에 따라 해당 동작 진행 Serial로 입력 받은 값을 버퍼에 저장을 하다가, CR과 LF 값을 입력 받으면 저장된 버퍼의 값을 TCP로 전송 첫번째 수정, main 함수의 while문에서 “Socket Status Register”의 상태를 계속 확인을 하고, 그 상태에 따라 동작하게 됩니다. SOCK_CLOSED 상태일때, 소켓을 생성함. SOCK_INIT 상태일때, 서버에 접속 시도함. SOCK_ESTABLISHED 상태일때, 데이터를 주고 받음. while(1) { swit...

W5500-EVB 활용 Chat Client 구현하기 -1 2015.03.31 69

W5500-EVB 를 활용 Chat Client 를 구현하는 방법에 대해서 설명합니다.  본 프로젝트는 위즈네트의 정석균 연구원이 직접 구현한 내용으로 총 5개의 시리즈로 소개합니다. W5500-EVB는 NXP社의 Cortex M0 MCU인 LPC11E36FHN33이 Main MCU로 포함되어 있고 W5500을 제어할수 있게 제작되어 있습니다. W5500-EVB의 자세한 내용은 아래 URL을 통해 확인 가능합니다. http://wizwiki.net/wiki/doku.php?id=products:w5500:w5500_evb Chat Client란? 간단하게 말하면 TCP Client로 구동되며, TCP Server로 접속해서, TCP로 수신된 데이터를 Serial로 송신하고, Serial로 수신된 데이터를 TCP로 송...

WIZ550io를 활용 mbed LPC114FN28 플랫폼을 Cloud 서버인 AXEDA에 연결하기 2015.03.19 56

이번 포스팅은 mbed 플랫폼인 LPC114FN28 보드에 이더넷 기능을 추가, Cloud 서비스의 하나인 AXEDA 에 연결하는 방법에 대해서 설명합니다. LPC114FN28 보드의 특징은 아래와 같습니다. The mbed LPC1114FN28 operates at CPU frequencies of 48 MHz. The LPC1114FN28 includes up to 32 kB of flash memory, up to 4 kB of data memory, one Fastmode Plus I2C-bus interface, one RS-485/EIA-485 UART, one SPI interface with SSP features, four general purpose counter/timers, a 10-bit ADC, and up to 22 general purpose I/O pins. 플래쉬 사이즈가 작아 RTOS 구동이 어렵기 때문에 ...

WIZ550io 와 ioShield-A 를 이용한 실시간 모니터링 Web Server 구현 2015.03.18 50

WIZnet Museum 에는 Web Server 구현에 대해 여러 예제들이 소개되고 있습니다.  그중에 가장 시각적으로 들어오는 예제는 W5100 Ethernet Shield 를 이용하여 Gauge로 센서(ADC)값을 표현하는 것이었다. 영문이기는 하지만  소스가 오픈되어 있으므로  따라하며 공부하기는 그리 어렵지 않으니, 웹서버 구현에 관심이 있으신 분들은 눈여겨 볼 수 있을 것 같습니다. Gauge 자바스크립트를 활용하고, 강력한 TCP/IP hard-wired 칩인 W5500 이 적용된 ioShield-A를 이용하여, Ajax를 활용해 실시간 모니터링이 가능한 Web Server 구현을 실행해 보겠습니다. 먼저 AJAX(Asynchronous JavaScript ...

W5500-EVB 활용, 임베디드 FTP Server 구현하기 2015.02.16 40

이번 포스팅은 위즈네트의 전병도 마스터가 작업하신 FTP Server 코드를 W5500-EVB 구현 및 테스트하는 방법에 대해서 설명합니다. 이번 튜토리얼은 W5500, ioLibrary, W5500-EVB 특/장점에 대해서 이미 이해를 하고 있다는 가정하에서 작성되었으며, 필요하다면 아래 링크를 클릭하셔서 필요한 사항에 대해서 숙지하시기 바랍니다. - W5500 Chip 소개 - W5500 ioLibrary - W5500-EVB 1. LPCXpresso 개발환경 셋업 LPCXpresso는 NXP사에서 지원하는 개발 IDE입니다. LPCXpresso 설치에 대한 내용은 http://xeon011.tistory.com/147 을 참고하시기 바랍니다 2. W5500-EVB FTP 예제 실습 GitHub...

Unattackable Hardware TCP/IP 2015.02.12 124

위즈네트의 Hardware TCP/IP 솔루션의 최대 장점 중 하나는 인터넷의 각종 유해 공격들 (DDoS, Virus 등) 을 원천 차단할 수 있다는 점입니다. 이번 포스팅에서는 일반 Software TCP/IP 대비 위즈네트의 Hardware TCP/IP 솔루션이 얼마나 그러한 공격에 강한지 실제 비교 테스트를 통해 입증해 보고자 합니다. MCU Platform : mbed NXP LPC1768 이번 테스트를 위해 사용할 MCU로 NXP LPC1768 기반의 mbed 플랫폼입니다. It is based on the NXP LPC1768, with a 32-bit ARM Cortex-M3 core running at 96MHz. It includes 512KB FLASH, 32KB RAM and lots of interfaces including built-in Et...

W5500 Linux 드라이버 2015.01.09 63

W5500 및 위즈네트의 모든 칩셋은 TCP/IP Offload Engine, 즉 하드웨어 로직으로 구현된 TCP/IP protocol stack을 내장하고 있습니다. 따라서 임베디드 디바이스에 인터넷 기능을 추가 할때 Software Stack이나 각종 임베디드 OS를 사용해야하는 번거로움 없이 위즈네트 칩 사용만으로 펌웨어 레벨에서 이더넷 구현이 가능하다는 장점이 있습니다. 그렇다면 Linux 등 OS가 구동되고 있거나 Software Stack 을 사용중인 시스템에서는 위즈네트 칩을 사용할 수 없을까요? 그렇지 않습니다. 아래의 3가지 방법으로 위즈네트 칩을 사용하실 수 있습니다. W5500의 MACRAW mode를 이용하여 W5500을 M...

W5500 ioLibrary_BSD를 SiLab 8051 에 포팅하기 – Loopback (Echo Server) 구현하기 2014.12.12 61

지난 포스팅에서 W5500에 대한 Ping Test까지 완료하였습니다.  이제 본격적으로 ioLibrary를 활용 실제 응용을 구현해 보겠습니다. - TCP Loopback (Echo Server) 구현하기 Loopback 은 수신한 데이타를 아무런 가공없이 그대로 되돌려주는 Echo Server 프로그램으로,  TCP Server나 Client 그리고 UDP등으로 구현이 가능합니다. Echo Server에서 Protocol은 말그대로 수신한 데이타를 아무런 가공없이 그대로 수신한 상대방에게 돌려 줍니다. 일반적으로 Telnet, FTP, HTTP, NTP 등과 같은 Protocol은 정해진 Data를 수신하고 그것을 해석하고 그에 상응하는 Data를 가공하여 상대방에 돌려...

W5500 ioLibrary_BSD를 Silab8051에 포팅하기-W5500 초기화 2014.12.12 51

지난 포스팅에서 W5500 I/O Control Function 구현하기 까지 마쳤습니다. 하지만 W5500 SPI 통신 검증에 있어 VERSIONR 레지스터의 Read가 되지 않는 현상이 있었는데, 이번 포스팅에서는 SPI  통신에 무슨 문제가 있는지 Debugging 한 후 W5500 초기화까지 진행해 보도록 하겠습니다. - W5500 SPI interface 검증 Hardware 연결 상태는 정상인데, 왜 동작하지 않을까? 일단 SPI Clock을 조정해보겠습니다. 현재 12MHz로 동작하나, 이를 8MHz, 4MHz 등 으로 낮추어 테스트 해보겠습니다. SPI clcok을 Configuratioin Wizard2 tool의 [Peripherals >> SPI] 이용하여 SPI0CKR  값을 조절 해보면...

W5500 ioLibrary_BSD를 SiLab 8051 에 포팅하기-W5500 I/O control function 구현하기 2014.12.09 47

W5500에 초기화에 앞서 Debugging및 Logging을 위한 printf() 함수를 먼저 등록해 보겠습니다. 일반적으로 printf() & scanf() 함수를 사용하기 위해서는 getchar() & putchar() 함수를 Target System에 맞게 구현한 후 overriding 해주어야 합니다. 하지만  Simplicitity Studio IDE 는 단순히 stdio.h 파일만 include해주면 됩니다.(getchar()& putchar()가 이미 8051 에 맞게 수정되어 있음) ioLibaray_W5500_main.c 에서 #include 부에 아래와 같이 #include <stdio.h>를 추가한다. main() 함수에 printf() 문을 다음과 같이 추가합니다. [sourcecode language="plain"] int m...