Cortex-M/INFINEON2013. 12. 1. 23:00

XMC1300 EVM - Simple Embedded Web Server Test

[XMC1300 EVM] Simple Embedded Web Server Test



XMC1300과 W5200을 이용하여 TCP/IP 통신이 테스트 되었기 때문에 활용 방안으로 간단히 임베디드 웹서버응 테스트 해 보았다

XMC1300은 저렴한 MCU이지만 16Kbyte의 램과 200Kbyte의 플래시 메모리를 가지고 있기 때문에 웹페이지를 저장 할 수 있는 공간이 충분하다. 웹서버는 이러한 XMC1300의 장점을 잘 살릴 수 있는 어플리 케이션이다



XMC1300 EVM을 이용한 임베디드 웹서버 테스트 동영상





XMC1300 Embedded WebServer 테스트 소스코드

간한히 테스트 하기 위해 코드를 최대한 단순하게 작성하였다.

void ProcessTCPS(unsigned int sock)

{

    int i;

int len;

unsigned int port = MY_LISTEN_PORT;

int wait_send=0;

switch (getSn_SR(SOCK_TCPS))

{

case SOCK_ESTABLISHED:

if(m_SokStatus1==1)

{

DebugPrint("%d : Connected by %s(%u)\r\n");

m_SokStatus1 = 2;

}

if ((len = getSn_RX_RSR(sock)) > 0)

{

if (len > TX_RX_MAX_BUF_SIZE) len = TX_RX_MAX_BUF_SIZE;

len = recv(sock, data_buf, len);


            U0_PutBuf(data_buf, len);


//LED 제어 처리 

            if(strstr(data_buf, "ledr_on.jpg"))

{

                for(i=0;i<(IMG_BUF_SIZE/TX_RX_MAX_BUF_SIZE);i++)

                {

    send(sock, &img_buf[i*TX_RX_MAX_BUF_SIZE], TX_RX_MAX_BUF_SIZE, 0);

                }

                

                send(sock, &img_buf[i*TX_RX_MAX_BUF_SIZE], IMG_BUF_SIZE%TX_RX_MAX_BUF_SIZE, 0);

}             

else if(strstr(data_buf, "ledr_of.jpg"))

{

                for(i=0;i<(IMG_BUF_SIZE2/TX_RX_MAX_BUF_SIZE);i++)

                {

    send(sock, &img_buf2[i*TX_RX_MAX_BUF_SIZE], TX_RX_MAX_BUF_SIZE, 0);

                }

                

                send(sock, &img_buf2[i*TX_RX_MAX_BUF_SIZE], IMG_BUF_SIZE2%TX_RX_MAX_BUF_SIZE, 0);

}

            else if(strstr(data_buf, "led_off.html"))

{

                send(sock, str_msg3, strlen(str_msg3), 0);

Led1Off();

                Led2Off();

DebugPrint("led off\r\n");

}            

            else if(strstr(data_buf, "led_on.html"))

{

                send(sock, str_msg, strlen(str_msg), 0);

Led1On();

                Led2On();


DebugPrint("led on\r\n");

}

else if(strstr(data_buf, "index.html"))

{

                send(sock, str_msg, strlen(str_msg), 0);

                DebugPrint("main\r\n");

}

            else

            {

                if(led_flag == 0)

                {

                    led_flag = 1;

                    

                send(sock, str_msg, strlen(str_msg), 0);

                DebugPrint("main\r\n");                    

                }

            }

while(getSn_TX_FSR(sock)!= getIINCHIP_TxMAX(sock))

{

if(wait_send++ > 1500)

{

DebugPrint( "HTTP Response send fail");

break;

}

Delay(1);

}

disconnect(sock);

DebugPrint("closed\r\n");

}

break;

case SOCK_CLOSE_WAIT:                          

disconnect(sock);

m_SokStatus1 = 0;

break;

case SOCK_CLOSED:

if(!m_SokStatus1)

{

DebugPrint("[%d] : Web Server Started.",sock);

m_SokStatus1 = 1;

}


if(socket(sock, Sn_MR_TCP, DEFAULT_HTTP_PORT, 0x00) == 0)

{

DebugPrint("\a%d : Fail to create socket.",sock);

m_SokStatus1 = 0;

}

else listen(sock);

break;

        

    default:

        break;

}

}




Posted by nexp

댓글을 달아 주세요

  1. 비밀댓글입니다

    2013.12.12 09:55 [ ADDR : EDIT/ DEL : REPLY ]

Cortex-M/EFM322013. 5. 4. 21:30

EFM32G210 EVM - 웹서버를 이용한 온습도 모니터링 예제

EFM32G210 EVM - 웹서버를 이용한 온습도 모니터링 예제

 

 

 

 

 

EFM32의 저전력 기능을 활용하기 위해 저전력으로  온습도 모니터링 가능한 임베디드 웹서버를 제작했다.

온도, 습도 센서는 STH10 온습도 센서 모듈을 이용하였다.

 

 

SHT10 온습도 센서 드라이버 소스

//-----------------------------------------------------------------------------
// SHT10 Sensor
#define SHT_DAT_BIT      BIT13
#define SHT_DAT_PORT     GPIOB

#define SHT_DATA_H()     sbi(SHT_DAT_PORT, SHT_DAT_BIT);
#define SHT_DATA_L()     cbi(SHT_DAT_PORT, SHT_DAT_BIT)

#define SHT_SCK_BIT      BIT14
#define SHT_SCK_PORT     GPIOB
#define SHT_DAT_DDR      DDRD 
#define SHT_DAT_READ()     ((pGPIO->P[1].DIN&SHT_DAT_BIT)?1:0)

#define SHT_SCK_H()      sbi(SHT_SCK_PORT, SHT_SCK_BIT);
#define SHT_SCK_L()      cbi(SHT_SCK_PORT, SHT_SCK_BIT)

#define SHT_PORT_INIT()     GPIO_PinModeSet(gpioPortB, 14, gpioModePushPull, 1);\
                                        GPIO_PinModeSet(gpioPortB, 13, gpioModeInputPull, 0)


#define OUT_MODE()      GPIO_PinModeSet(gpioPortB, 13, gpioModePushPull, 1)
#define IN_MODE()      GPIO_PinModeSet(gpioPortB, 13, gpioModeInputPull, 0)
#define _SHT_DELAY()     Delay_us(10);
//-----------------------------------------------------------------------------

 

 

 

EFM32 Embedded Webserver - Temperature and Humidity Web Monitoring 동영상

EFM32 웹서버에 접속하면 2초에 한번씩 온습도 데이터를 전송하는 테스트 이다. 인터넷이 연결되는 핸드폰이나 모바일 기기에서 온습도 모니터 가능하다.

 

 

 

 

EFM32 Webserver Test Page

웹서버 IP 로 접속하면 가장 최근의 온습도 데이터를 확인할 수 있다.

Posted by nexp

댓글을 달아 주세요

Cortex-M/EFM322013. 5. 1. 23:00

EFM32G210 EVM - 저전력 Embedded Web Server 테스트

EFM32G210 EVM - 저전력 Embedded Web Server 테스트




EFM32G210의 장점으로 Cortex-M3코어(128k Flash/16k RAM)에 저전력으로 구동 된다. 소형에 저렴하면서 플래시와 램이 풍부해서 소형 임베디드 웹서버 제작하기에 좋을것 같다.


간단히하기 위해 내부 플레쉬메모리에 웹서버를 구현 해 보았다.




할당된 IP에 접속하면 출력될 Web Page

간단한 이미지와 입출력 제어를 위한 CGI코드로 구성되어 있다.




EFM32 Web Server 테스트 동영상


Posted by nexp

댓글을 달아 주세요

[INTERFACE]/Ethernet2012. 12. 31. 02:28

실시간 임베디드 웹서버 테스트 - 가속도 센서 그래프출력

실시간 임베디드 웹서버 테스트 - 가속도 센서 그래프출력



W5200을 이용하여 실시간 임베디드 웹서버 테스트 (참고 adStar 을 이용한 웹서버 테스트)



실시간 업데이트 웹서버 테스트 동영상

실시간성 테스를 위해 3축 가속도 센서 데이터를 모니터링 하는 예제를 테스트 했다. 

 

 


SD Card를 이용한 Embedded Webserver 테스트 동영상 

SD card에 웹페이지를 저장하고 네으웍으로 접속하여 간단한 웹서버 기능을 테스트 하고 있다. 디지털 입력, 디지털 출력, 아날로그 입력 등을 웹브라우저나 스마트폰등에서 접속하여 테스트할수 있다.

 

 

Posted by nexp
TAG webserver

댓글을 달아 주세요

[MCU]/adStar2012. 12. 30. 23:30

[adStar EVM] AJAX를 이용한 실시간 업데이트 웹서버 - 가속도 센서 그래프출력

 [adStar EVM] AJAX를 이용한 실시간 업데이트 웹서버 - 가속도 센서 그래프출력

 

 

임베디드 웹서버의  센서 모니터링을 위한 기술로 실기간 업데이트 가능한 JAVA(AJAX) 기술을 이용하면 쉽게 구현 가능하다.

참고 : Mini WebServer real time page update(실시간 웹페이지 업데이트)

 

 

[adStar EVM] 보드를 이용하여 실시간 업데이트 가능한 임베디드 웹서버를 구현 해보았다. 웹페이지에서 JAVA코드를 디버깅하기는 쉽지 않기 때문에 자주 수정해야 한다. 웹페이지는 SD Card를 통해 업데이트 되어 복사만 하면 되므로 손쉽게 디버깅 할 수 있다.

 

 

adStar 실시간 업데이트 웹서버 테스트 동영상

실시간성 테스를 위해 3축 가속도 센서 데이터를 모니터링 하는 예제를 테스트 했다. 

 

 

 

실시간 업데이트 테스트 코드

실시간 페이지 업데이트를 위해 웹페이지에서는 AJAX가 스레스생하여 xml파일을 요청하고 임베디드 보드에서 xml 데이터만 수정하여 전소하게 된다. 그러면 부하없이 고속으로 실시간 데이터를 전송할 수 있다.

 

void SendToWebpage_sd(int s, char *name, unsigned char *http_response, unsigned long len, int req_type)

{

  : 

  if(req_type==PTYPE_CGI)
  {
   send_len = replace_sys_env_value(http_response,send_len);
  }
  else if(req_type == PTYPE_TEXT)
  {
   send_len = replace_sys_env_value(http_response,send_len);
   

  //XML 데이터 요청이 있으면
   if(strstr(name,"adc_val.xml"))
   {

       //센서 데이터 업데이트
       send_len = replace_sys_env_value(http_response,send_len);
   }      
  }  
  send(s, http_response, send_len, 0);

  file_len -= send_len;
 }
   
 f_close(&fp);

}

 

 

 

realtime embedded web server 테스트 페이지

 

Posted by nexp

댓글을 달아 주세요