Arduino Ethernet Shield obsahuje integrovaný obvod W5100. Tento šikovný obvod od firmy WIZnet umožňuje připojit Arduino k domácí síti, potažmo Internetu. Samotný Shield obsahuje kromě obvodu W5100 také konektor RJ45 pro připojení síťového kabelu a slot pro paměťové karty typu microSD. Shield lze používat s různými typy desek, jako například Uno, Leonardo či Mega. Výhodou je také vyvedené tlačítko pro Reset na Shield. Pro jednoduchou kontrolu činnosti LAN portu jsou umístěný na Shieldu také indikační LED diody. Obvod W5100 zvládá práci s adresami typu IPv4 a komunikuje rychlostí 10 či 100 Mb/s. S Arduinem probíhá komunikace pomocí protokolu SPI, a to jak komunikace s obvodem W5100, tak i se slotem na paměťové karty.
Pro úspěšné propojení Ethernet Shieldu s Arduinem tedy stačí do desky Arduino Uno (nebo jiné) zapojit Shield a propojit Shield síťovým kabelem RJ45 s routerem či switchem. Výhodou tohoto Shieldu je také to, že se na něm nachází průchozí konektory a my tedy můžeme zapojit nevyužité piny Arduina s jinými zařízeními. Ethernet Shield využívá piny 11, 12 a 13 pro SPI a dále pin 10 pro CS signál W5100 a pin 4 pro CS signál slotu pro paměťové karty.
Ukázkový kód s web serverem obsahuje na svém začátku připojení potřebných knihoven, které jsou součástí Arduino IDE. Jako další si nastavíme vlastní MAC adresu, přičemž tuto adresu musí mít každé zařízení unikátní, a poté nastavíme IP adresu, která musí být přidělitelná DHCP serverem či nastavena routerem ručně. Použitý rozsah můžeme jednoduše zjistit tak, že na libovolném počítači připojeném ke stejné síti zjistíme IP adresu (např. 10.0.0.2) a poté nastavíme pro Arduino IP adresu o několik adres větší (např. 10.0.0.55). Poté stačí už jen inicializovat Ethernet Shield do módu server se standardním portem 80. Podprogram setup obsahuje nastavení komunikace po sériové lince, po kterém následuje zapnutí komunikace s Ethernet Shieldem a výpis nastavené IP adresy. Nekonečná smyčka loop na svém začátku jako první načte připojené klienty do proměnné klient a poté zkontrolujeme, zda máme nějakého klienta. V případě, že je klient připojen, vytiskneme si informaci na sériovou linku a následně mu pošleme všechna data. Jako první tedy pošleme standardní http odezvu, kde můžeme nastavit u příkazu „Refresh: 5“ počet vteřin, po kterých se provede u klienta znovunačtení stránky. Dále je pro nás důležité místo pro tištění vlastních údajů, kde v tomto programu vytiskneme čas od spuštění Arduina a poté pomocí for smyčky informace ze všech analogových vstupů. Poté co je vytištěna celá odezva, uzavřeme spojení a smyčka loop se opakuje.
// Ethernet Shield - web server
#include <SPI.h>
#include <Ethernet.h>
// nastavení MAC adresy
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
// nastavení IP adresy - musí být přidělitelná DHCP serverem,
// tedy ve správném rozsahu, případně přidělena routerem ručně
IPAddress ip(10, 0, 0, 55);
// inicializace serveru na portu 80
EthernetServer server(80);
void setup() {
// komunikace po sériové lince rychlostí 9600 baud
Serial.begin(9600);
// zapnutí komunikace s Ethernet Shieldem
Ethernet.begin(mac, ip);
server.begin();
// výpis informace o nastavené IP adrese
Serial.print("Server je na IP adrese: ");
Serial.println(Ethernet.localIP());
}
void loop() {
// načtení připojených klientů
EthernetClient klient = server.available();
// pokud se připojí nějaký klient, provedeme následující
if (klient) {
Serial.println("Novy klient:");
// http request končí prázdným řádkem
boolean aktualniRadkaPrazdna = true;
// pokud je klient připojen a k dispozici,
// vytiskneme mu dostupná data
while (klient.connected()) {
if (klient.available()) {
// načtení a vytištění informace o klientovi
char c = klient.read();
Serial.write(c);
// pokud se dostaneme na konec řádku a následující je prázdný,
// byl ukončen request a my můžeme poslat odezvu
if (c == '\n' && aktualniRadkaPrazdna) {
// nejprve pošleme standardní http odezvu
klient.println("HTTP/1.1 200 OK");
klient.println("Content-Type: text/html");
klient.println("Connection: close");
// nastavení automatické obnovy stránky po 5 vteřinách
klient.println("Refresh: 5");
klient.println();
klient.println("");
klient.println("");
// místo pro tištění vlastních údajů
klient.print("Cas od spusteni: ");
klient.print(millis()/1000);
klient.print(" vterin.<br />");
// ukázka výpisu dat ze všech analogových vstupů
for (int analogPin = 0; analogPin < 6; analogPin++) {
int analogData = analogRead(analogPin);
klient.print("Analogovy vstup A");
klient.print(analogPin);
klient.print(": ");
klient.print(analogData);
// příkaz "<br />" funguje jako krok na další řádek
klient.println("<br />");
}
klient.println("");
break;
}
// začátek nové řádky
if (c == '\n') {
aktualniRadkaPrazdna = true;
// detekce znaku na nové řádce
} else if (c != '\r') {
aktualniRadkaPrazdna = false;
}
}
}
// pauza pro prohlížeč, aby stihl zpracovat všechny data
delay(1);
// uzavření spojení
klient.stop();
Serial.println("Klient odpojen.");
Serial.println("---------------------");
}
}
Po nahrání ukázkového kódu do Arduino desky s připojeným Ethernet Shieldem dostaneme například tento výsledek:
Cas od spusteni: 16 vterin.
Analogovy vstup A0: 337
Analogovy vstup A1: 265
Analogovy vstup A2: 221
Analogovy vstup A3: 167
Analogovy vstup A4: 131
Analogovy vstup A5: 110
Cas od spusteni: 21 vterin.
Analogovy vstup A0: 150
Analogovy vstup A1: 144
Analogovy vstup A2: 143
Analogovy vstup A3: 115
Analogovy vstup A4: 103
Analogovy vstup A5: 84
Arduino Ethernet Shield je zajímavým síťovým prvkem, který nám umožňuje připojit Arduino do naší domácí sítě. Po připojení můžeme sledovat naměřené údaje z libovolného zařízení, které se nachází ve stejné síti. Tento Ethernet Shield tedy můžeme využít jako měřící zařízení v části domu, kde je rozvedena LAN síť. Pokud budete chtít využít také SD kartu, lze s ní pracovat obdobně jako v tomto návodu, stačí pouze změnit datový pin sd_CS na pin 4.
Motorizovaný kulový ventil. Má široké uplatnění v různých průmyslových a obytných instalacích. Může být integrován do automatických systémů řízení, kde je možné ovládat průtok dálkově nebo automatizovaně podle předem nastavených podmínek.
Motorizované kulové vently s obvodem CR01, CR02, CR03 nebo CR04 je poměrně jednoduché po elektrické stránce správně zapojit. U ventilu s obvodem CR05 je tomu ale trochu jinak - ventil si sám nehlídá krajní polohy otevření, nebo zavření. Z toho důvodu vznikl tento článek, ukazující některé výhody, použití a především správné zapojení ventilu s obvodem CR05.