[WizFi250심화과정 6] Cortex M3에서 Wi-Fi 사용하기 – LED Control using TCP Communication

0
798

LED Control using TCP Communication Example  구성도

본 포스팅에서는 W5200E01-M3(CortexM3)를 이용하여 Wi-Fi TCP Server 예제 및 LED Control을 위한 예제를 설명한다.

아래 그림은 위 예제를 구동하기 위한 구성도를 나타내며, 위 예제는 [WizFi250 TCP Server Loopback Example] 구성에서 PC에서 TCP Client로 명령을 송신하면 W5200E01-M3의 LED가 On/Off 되는 예제이다. 명령으로는 “TURN ON LED0″,”TURN ON LED1″,”TURN OFF LED0″,”TURN OFF LED1” 을 사용한다.

20150325_111120

Source Code

[code language=”cpp”]
#define SSID "wizohp"
#define PASSWORD "wiznet218"
#define SERVER_PORT "5000"

int main()
{
char cmd[256];
char recv_data[256];
int32_t idx=0,cr_lf_check=0;
int32_t uart_recv;

platform_init();

WizFi250_Restart();

if ( send_and_check_command("AT+WLEAVE", 1, 500, 10, "[OK]", "", 1) !=0 ) { printf("DBG>>> Error : AT Command\r\n");}
if ( send_and_check_command("AT+WNET=1", 1, 500, 10, "[OK]", "", 1) !=0 ) { printf("DBG>>> Error : AT Command\r\n");}

sprintf(cmd,"AT+WSET=0,%s",SSID);
if ( send_and_check_command(cmd, 1, 500, 10, "[OK]", "", 1) !=0 ) { printf("DBG>>> Error : AT Command\r\n");}
sprintf(cmd,"AT+WSEC=0,,%s",PASSWORD);
if ( send_and_check_command(cmd, 1, 500, 10, "[OK]", "", 1) !=0 ) { printf("DBG>>> Error : AT Command\r\n");}
if ( send_and_check_command("AT+WJOIN", 1, 500, 100, "[OK]", "", 1) !=0 ) { printf("DBG>>> Error : AT Command\r\n");}

sprintf(cmd,"AT+SCON=O,TSN,,,%s,1",SERVER_PORT);
if ( send_and_check_command(cmd, 1, 500, 100, "[OK]", "", 1) !=0 ) { printf("DBG>>> Error : AT Command\r\n");}

printf("DBG>>> Recv Data\r\n");

pltfrm_gpio_init(GPIOA,(GPIO_Pin_0 | GPIO_Pin_1),GPIO_Mode_Out_PP);
pltfrm_gpio_set(GPIOA,(GPIO_Pin_0 | GPIO_Pin_1),1);

while(1)
{
usart_gets(PF_USART2,&recv_data);

if( strcmp(recv_data,"TURN ON LED0\r\n") == 0 ) pltfrm_gpio_set(GPIOA,GPIO_Pin_0,0);
else if( strcmp(recv_data, "TURN OFF LED0\r\n") == 0) pltfrm_gpio_set(GPIOA,GPIO_Pin_0,1);
else if( strcmp(recv_data, "TURN ON LED1\r\n") == 0 ) pltfrm_gpio_set(GPIOA,GPIO_Pin_1,0);
else if( strcmp(recv_data, "TURN OFF LED1\r\n") == 0 ) pltfrm_gpio_set(GPIOA,GPIO_Pin_1,1);

usart_puts(PF_USART1,recv_data,strlen(recv_data));
usart_puts(PF_USART2,recv_data,strlen(recv_data));
}
}

void usart_gets(platform_usart usart, uint8_t * ch)
{
while(1)
{
*ch = (uint8_t)usart_getc(usart);
if(*ch == ‘\n’)
{
ch++;
*ch = 0;
return;
}

ch++;
}
}

[/code]

  • 50 ~ 64 : Line Feed 값이 수신 될 때 까지 문자를 읽는 함수
  • 36 ~ 48 : WizFi250에서 수신 되는 Data를 읽어서 유효한 명령인지 체크 한 후, 명령 수행

 

Download Example Code

NO COMMENTS