제가 와이파이쉴드를 통해 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) 버튼을 만들어 제어할 수 있나요!?
|