정보나눔

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

와이파이 이용해서 스피커 제어하기
조연지 | 2015-08-17

제가 와이파이쉴드를 통해 3가지의 센서들의 값을 웹상으로 볼수 있는 응용예제를 해보았습니다.

#include
#include
#include
#include

#include

 

char ssid[] = "AndroidHotspot4793";      //  연결하실 와이파이 SSID
char pass[] = "11111111";   // 네트워크 보안키

int status = WL_IDLE_STATUS;

WiFiServer server(80);  // 80포트를 사용하는 웹서버 선언

void setup() {
  Serial.begin(9600);

  // 와이파이에 연결 시도
  while ( status != WL_CONNECTED) { //연결될 때까지 반복
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);  // WPA/WPA2 연결
  }

  server.begin();

  printWifiStatus();  // 연결 성공시 연결된 네트워크 정보를 출력
}


void loop() {
  int flexval = analogRead(A5);
  int FSR = analogRead(A0);
  int Soil = analogRead(A2);
  int Rfsr = ((9.78 * FSR)/(1-(FSR/1023.0)));
  // flex 센서와 조도센서 토양수분센서에서 값을 가져옴

  WiFiClient client = server.available();  // 들어오는 클라이언트를 수신한다.
  if (client) {  // 클라이언트를 수신 시
    Serial.println("new client");  // 클라이언트 접속 확인 메시지 출력
    boolean currentLineIsBlank = true;

    while (client.connected ()) {
      if (client.available()) {
        char c = client.read();
        // 문자의 끝을 입력 받으면 http 요청이 종료되고, 답신을 보낼 수 있습니다.
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1"); // 1초당 페이지 refresh
          client.println();
          client.println("");
          client.println("");
          client.print("           client.println("initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no />");
          client.println("

");
          client.println(""); 
          client.println("Many Sensor");
          client.println("");
          client.println("

Many Sensor

");
          client.println("

");
          client.print("Flex Sensor value : ");
          client.println(flexval);  // flex 센서 값 출력
          client.println("
");
          client.println("
");
           client.print("Soid Sensor value : ");
          client.println(Rfsr);  // flex 센서 값 출력
          client.println("
");
          client.println("
");
          client.print("FSR Sensor value : ");
          client.println(FSR);  // 조도 센서 값 출력
          client.println("
");
          client.println("

");
          client.println("");
          client.println("");
          break;
        }
      
        if (c == '\n') {
          currentLineIsBlank = true;
        }

 

        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
    // 클라이언트와 연결을 끊는다.
  }
}

void printWifiStatus() {  // 연결된 네트워크 정보 출력
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  // 네트워크 SSID 출력

  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  // 네트워크 ip 출력

  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
  // 수신 강도 출력
}

 

이 코딩에서 만약 스피커(5w 8옴짜리)를 연결을 하여

 

1. 만약 flex 센서 압력센서 토양수분센서 범위값을  가정으로 정하여 

각 센서들의 값이 범위안에 들어온다면 멜로리가 울리게 할 수 있나요?

 

#include

 int PIEZO = 8;


 void setup()

 {

pinMode(PIEZO,OUTPUT);
 }

 


 void loop()

 {
PlayMelody(PIEZO,"l8ggaagge4ggeed4r4ggaagge4gedec4");

 }

 

위에 스케치는 스피커 스케치입니다.

 

2. 또한 웹상에서 각 3개의 센서들의 값을 볼 수 있는데

혹시 그 웹상에서 스피커를 제어 (on off) 버튼을 만들어 제어할 수 있나요!?

 

 

이전글   |    금고 질문해서 궁금한점 있습니다. 2015-08-17
다음글   |    오랜지보드는 스크래치와 연결가능하나요?... 2015-08-18