Wykorzystujemy standardowo Arduino Uno oraz moduł ENC28J60. Wszystko jest banalnie proste gdyż oprócz Arduino potrzebujemy jedynie czujników temperatury DHT11 lub DHT22. Ja w tym artykule wykorzystuje moduł czujnika DTH22 (AM2302) gdyż mam ich od pioruna. Jeżeli wykorzystywać będziesz sam czujnik, pamiętaj o wpięciu miedzy zasilanie a pin DAT rezystora 10k.
Do wykonania będą nam potrzebne następujące elementy:
– Arduino np. Arduino UNO, MEGA lub odpowiednik
– Moduł sensora temperatury DHT22,
– moduł ENC28J60
– bibliotekę UIPEthernet
– Kable do połączenia wszystkiego.
– Rezystor 10k opcjonalne patrz opis
Połączenie modułu ENC z Adruino:
ENC28J60 | Arduino UNO | Arduino MEGA |
VCC | 5V | 5V |
GND | GND | GND |
RESET | RESET | RESET |
SCK | PIN 13 | PIN 52 |
SO | PIN 12 | PIN 50 |
SI | PIN 11 | PIN 51 |
CS | PIN 8 | PIN 53 |
Kod:
// Example DHT humidity/temperature sensors
// Written by swistak
// www.tranzystor.pl
// www.shellmix.pl#include „DHT.h”
#define DHT1PIN 2
#define DHT2PIN 3#define DHT1TYPE DHT22 // DHT 22
#define DHT2TYPE DHT22DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);#include <SPI.h>
#include <UIPEthernet.h>
#include <UIPServer.h>
#include <UIPClient.h>byte ip[] = {10, 10, 10, 39 }; //Manual setup only
byte gateway[] = {10, 10, 10, 1 }; //Manual setup only
byte subnet[] = {255, 255, 255, 0 }; //Manual setup only
byte mac[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //add your MAC
EthernetServer server(80);
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
dht1.begin();
dht2.begin();Ethernet.begin(mac, ip);
server.begin();
Serial.print(„server is at „);
Serial.println(Ethernet.localIP());
}
void loop() {
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();if (isnan(t1) || isnan(h1)) {
Serial.println(„Failed to read from DHT”);
} else {
Serial.print(„Humidity zew: „);
Serial.print(h1);
Serial.print(” %\t”);
Serial.print(„Temperature zew: „);
Serial.print(t1);
Serial.println(” *C”);
}
if (isnan(t2) || isnan(h2)) {
Serial.println(„Failed to read from DHT”);
} else {
Serial.print(„Humidity wew: „);
Serial.print(h2);
Serial.print(” %\t”);
Serial.print(„Temperature wew: „);
Serial.print(t2);
Serial.println(” *C”);
}
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println(„new client”);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);if (c == '\n’ && currentLineIsBlank) {
// send a standard http response header
client.println(„HTTP/1.1 200 OK”);
client.println(„Content-Type: text/html”);
client.println(„Connection: close”);
client.println(„Refresh: 5”);
client.println();
client.println(„<!DOCTYPE HTML>”);
client.println(„<html>”);
client.println(„<center><H2>”);
client.print(„The temperature inside and outside”);// temp sensor 1
client.println(„<H2>”);
client.print(„Humidity out: „);
client.println(„</H2>”);
client.println(„<p />”);
client.println(„<H1>”);
client.print(h1);
client.print(” %\t”);
client.println(„</H1>”);
client.println(„<p />”);
client.println(„<H2>”);
client.print(„Temperature out: „);
client.println(„</H2>”);
client.println(„<H1>”);
//client.print(t*1.8+32); //temp fahrenheit
client.print(t1); //temp Celsjusz
client.println(” °”);
//client.println(„F”); //temp fahrenheit
client.println(„C”); //temp celsjusz
client.println(„</H1>”);// temp sensor 2
client.println(„<H2>”);
client.print(„Humidity in: „);
client.println(„</H2>”);
client.println(„<p />”);
client.println(„<H1>”);
client.print(h2);
client.print(” %\t”);
client.println(„</H1>”);
client.println(„<p />”);
client.println(„<H2>”);
client.print(„Temperature in: „);
client.println(„</H2>”);
client.println(„<H1>”);
//client.print(t*1.8+32); //temp fahrenheit
client.print(t2); //temp Celsjusz
client.println(” °”);
//client.println(„F”); //temp fahrenheit
client.println(„C”); //temp celsjusz
client.println(„</H1>”);
client.print(„Copyright © by <a href=’http://www.tranzystor.pl’>swistak</a>”);
client.println(„</center>”);
client.println(„</html>”);
break;
}
if (c == '\n’) {
// you’re starting a new line
currentLineIsBlank = true;
}
else if (c != '\r’) {currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println(„client disonnected”);
}
}