DHT 11 XBee Ethernet ile Networkten yayın yapılması
Bu uygulamada DHT 11 sensöründen okuduğumuz verileri ethernet ile network üzerinde yayınlıyoruz. Uygulama belli aralıklarla kendini yenileyen bir html sayfa response ediyor.
Güzel de bir termometre görseli var:) Html kısımda style değişiklikleri yapabilirsiniz.
XBee ethernet modülünün en güzel özelliği arduino dan bağımsız çalışabilmesi. Cihazı FT 232R ile programlıyoruz. (FTDI). POE olanını alırsanız besleme konusunda da çok kolaylık sağlayacaktır.
Biraz pahalı ama değer.
dht arduino kütüphanesi
#include "DHT.h"
#define DHTPIN A2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(172,31,3, 63);
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
dht.begin();
while (!Serial) {
;
}
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html style='font-family:Tahoma'>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.print("<div style='font-size:14pt; background-color:Orange; color:#ffffff'>Sicaklik ve Nem Degerleri</div>");
client.println("<br />");
Serial.print("Sensör oku: ");
float h = dht.readHumidity();
float t = dht.readTemperature();
int top =0;
client.print("<table><tr><td style='font-size:10pt;color:#000000; font-style:bold;'>Sicaklik (C):</td><td><b style='color:");
if(t>22)
client.print("Red;");
else
client.print("Green;");
client.print("font-size:19pt;'> ");
client.println(t, 1);
client.println("</b></td><td style='font-size:10pt;color:#000000; font-style:bold;'>Nem (%):</td><td><b style='color:");
if(h>40)
client.print("Red;");
else
client.print("Green;");
client.print("font-size:19pt;'> ");
client.println(h, 0);
top = 345-int(t)*6;
client.print("</b></td></tr></table><img src='http://fscomps.fotosearch.com/compc/CSP/CSP160/k1607578.jpg'/><div style='position:absolute; top:");
client.print(int(top));
client.print("px; left:52px; width:56px; height:");
client.print(int(t)*8);
client.print("px; background-color:#d53b2f'></div>");
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
}
}
Güzel de bir termometre görseli var:) Html kısımda style değişiklikleri yapabilirsiniz.
XBee ethernet modülünün en güzel özelliği arduino dan bağımsız çalışabilmesi. Cihazı FT 232R ile programlıyoruz. (FTDI). POE olanını alırsanız besleme konusunda da çok kolaylık sağlayacaktır.
Biraz pahalı ama değer.
dht arduino kütüphanesi
#include "DHT.h"
#define DHTPIN A2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(172,31,3, 63);
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
dht.begin();
while (!Serial) {
;
}
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop()
{
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html style='font-family:Tahoma'>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.print("<div style='font-size:14pt; background-color:Orange; color:#ffffff'>Sicaklik ve Nem Degerleri</div>");
client.println("<br />");
Serial.print("Sensör oku: ");
float h = dht.readHumidity();
float t = dht.readTemperature();
int top =0;
client.print("<table><tr><td style='font-size:10pt;color:#000000; font-style:bold;'>Sicaklik (C):</td><td><b style='color:");
if(t>22)
client.print("Red;");
else
client.print("Green;");
client.print("font-size:19pt;'> ");
client.println(t, 1);
client.println("</b></td><td style='font-size:10pt;color:#000000; font-style:bold;'>Nem (%):</td><td><b style='color:");
if(h>40)
client.print("Red;");
else
client.print("Green;");
client.print("font-size:19pt;'> ");
client.println(h, 0);
top = 345-int(t)*6;
client.print("</b></td></tr></table><img src='http://fscomps.fotosearch.com/compc/CSP/CSP160/k1607578.jpg'/><div style='position:absolute; top:");
client.print(int(top));
client.print("px; left:52px; width:56px; height:");
client.print(int(t)*8);
client.print("px; background-color:#d53b2f'></div>");
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
}
}
Yorumlar
Yorum Gönder