정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

웹사이트 구동속도 관련문의!!
변한빈 | 2015-05-20

이번 프로젝트는 와이파이쉴드로 웹사이트 구동후  휴대폰 블루투스를 통해서 번호를 아두이노에 보내어서 그 값에 따라

웹사이트 상에 글자를 출력하고 모터를 돌려지는 프로그램을을 작성 중 에 있습니다.

1번은 그냥 글자이고, 2번은 음악과 글자가 뜨게 하고있습니다.(3번은 무시하시면 됩니다.)

그런데. 휴대폰 블루투수르 번호를 전송하면 20~30초 정도 시간 경과 후에 웹사이트에 나옵니다.

휴대폰으로 번호를 전송해서 바로 웹사이트로 글자를 뜨게 하는 방법은 욕심인건가요?? 소스 한 번 봐주시고 조언 좀 부탁드리겠습니다^^

 

=============================================================================

#include <avr/pgmspace.h>
#include <Servo.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <WiFi.h>
char ssid[] = "SungSu";     // 연결하실 와이파이 SSID
char pass[] = "12345678";    // 네트워크 보안키
int status = WL_IDLE_STATUS;
WiFiServer server(80);     // 80포트를 사용하는 웹서버 선언
Servo myservo;
SoftwareSerial BTSerial(2, 3);    // SoftwareSerial
byte buffer[1024];     // 데이터를 수신 받을 버퍼
int bufferPosition;     // 버퍼에 데이타를 저장할 때 기록할 위치
void setup()
{
 myservo.attach(6);    // servo motor 6번 핀 설정
 myservo.write(10);    // 초기각도
 BTSerial.begin(9600);
 Serial.begin(9600);
 if (WiFi.status() == WL_NO_SHIELD)  // 현재 아두이노에 연결된 실드를 확인
 {
  while (true){
  ;
}    // 와이파이 실드가 아닐 경우 계속 대기
 }
 // 와이파이에 연결 시도
 while ( status != WL_CONNECTED)   // 연결될 때까지 반복
 {
  status = WiFi.begin(ssid, pass); // WPA/WPA2 연결
 }
 server.begin();
 printWifiStatus();    // 연결 성공시 연결된 네트워크 정보를 출력
}
void loop()
{
 WiFiClient client = server.available();  // 들어오는 클라이언트를 수신한다.
 if (client)  // 클라이언트를 수신 시
 {
  boolean currentLineIsBlank = true;
  if (BTSerial.available())  // 블루투스로 데이터 수신
  {
   while (client.connected ())
   {
    if (client.available())
    {
     char c = client.read();
     // 문자의 끝을 입력 받으면 http 요청이 종료되고, 답신을 보낼 수 있습니다.
     if (c == '\n' && currentLineIsBlank)
     {
      client.println(F("HTTP/1.1 200 OK"));
      client.println(F("Content-Type: text/html"));
      client.println(F("Connection: close"));
      client.println(F("Refresh: 4"));   // 3.5초당 페이지 refresh
      client.println();
      client.println(F("<!DOCTYPE HTML>"));
      client.println(F("<meta charset=utf-8/>"));
      client.print(F("<meta name=view content=width=device-width, "));
      client.println(F("initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no />"));
      client.println(F("<html><body style=background-color:white>"));
      client.println(F("<div data-role=content>"));
      client.println(F("<br>"));
      client.print(F("<font color=\"Black\"> <h1>경남 경찰서<h1>"));
      client.println(F("</div>"));
      client.println(F("</body>"));
      client.println(F("</html>"));

      byte data = BTSerial.read();
      buffer[bufferPosition++] = data;// 블루투스에서 받아온 값을 byte data에 저장
      Serial.println(data);
     
      if(data == '1')    // 스위치가 닫혀있는 상태(누른 상태)
      {
       client.print(F("<font color=\"Black\"> <h1>EB전자은행 이상없음<h1>"));
       myservo.write(10);  // 10도, 초기각도
       delay(10);
       myservo.write(180);  // 180도
       delay(5000);
       myservo.write(10);
      }

      if(data == '2')    // 스위치가 닫혀있는 상태(누른 상태)
      {
      client.println(F("<embed src=\"http://blogattach.naver.com/cd58d162722b29f5db3c5c6f50bdc6be1643b25ced/20150519_254_blogfile/byh2674_1432025738008_B2YE7S_mp3/%B1%E4%B1%DE%BB%F3%C8%B2.mp3?type=attachment\">"));
      client.print(F("<font color=\"Red\"> <h1>EB전자은행 긴급상황 발생<h1>" ));

       myservo.write(10);  // 10도, 초기각도
       delay(10);
       myservo.write(180);  // 180도
       delay(5000);
       myservo.write(10);
      }
     
      if(data == '3')    // 스위치가 닫혀있는 상태(누른 상태)
      {
       client.print(F("<font color=\"Black\"> <h1>EB전자은행 이상없음<h1>"));

      }
      break;
     }
    
     if (c == '\n')
     {
      currentLineIsBlank = true;
     }
     else if (c != '\r')
     {
      currentLineIsBlank = false;
     }
    }
   }
   delay(1);
   client.stop();
  }
 }
}

 

void printWifiStatus()     // 연결된 네트워크 정보 출력
{
 IPAddress ip = WiFi.localIP();
 Serial.println(ip);    // 네트워크 ip 출력
}

이전글   |    if 구문과 조건하나 질문드립니다 2015-05-20
다음글   |    사운드 센서 관련 질문드립니다. 2015-05-20