Page 48 - Linux_7

Basic HTML Version

K
υρίες και κύριοι, αγαπητά παιδιά. Καλωσήρθατε στο
αποψινό μας σόου... εεεεεεε... δηλαδή, ευχαριστούμε
που παίρνοντας το περιοδικό στα χέρια σας, ξεκινήσα-
τε φυσικά διαβάζοντας αυτό το άρθρο (σωστάάάάάά;). Χωρίς
να θέλω να μειώσω τους υπόλοιπους αρθρογράφους, είναι
γνωστό ότι αυτό είναι το αγαπημένο άρθρο κάθε τεύχους. Για
μία ακόμη φορά, σας έχουμε ετοιμάσει ένα φαντασμαγορικό
υπερθέαμα γεμάτο δράση, πόνο, διαπλοκή, προδοσία και φυ-
σικά, Arduino. Για όσους ξεχνάνε εύκολα, θυμίζω ότι στα
προηγούμενα τεύχη μάθαμε πώς να ελέγχουμε ένα φωτιστι-
κό με Arduino, στη συνέχεια πώς να το κάνουμε ασύρματα,
ενώ ύστερα δείξαμε και πώς μπορούμε να προγραμματίζου-
με το Arduino ασύρματα με τη χρήση XBee, ώστε να μη χρει-
αστεί ποτέ να βγάλουμε από το κύκλωμα ένα Arduino που
χρησιμοποιούμε για κάποιο πρότζεκτ μας (το οποίο φυσικά
έχει να κάνει με την παγκόσμια κυριαρχία). Τέλος, στο προη-
γούμενο άρθρο δείξαμε πώς μπορούμε να βάζουμε το
Arduino μας για ύπνο, ώστε να εξοικονομούμε ενέργεια.
Θα μου πείτε, «ε δεν έμεινε και τίποτα να δείξουμε». Λάθος,
αγαπητοί μου. Δεν είναι τυχαίο το σήμα του Arduino. Θυμίζω
ότι πρόκειται για το σήμα του απείρου, με ένα συν και ένα
πλην. Τα +/– συμβολίζουν τον ηλεκτρισμό, ενώ το σήμα του
απείρου τις ατελείωτες δυνατότητες και τα αμέτρητα διαφο-
ρετικά πράγματα που μπορεί κανείς να κάνει με το Arduino.
Το μόνο όριο είναι η φαντασία μας (εντάξει εντάξει, και το
πορτοφόλι μας). Γι’ αυτό κι εμείς αυτή τη φορά θα σας δεί-
ξουμε πώς να ανοιγοκλείνετε τα φώτα σας... από το Internet!
Για την ακρίβεια, θα δείτε πώς μπορούμε να στήσουμε έναν
υποτυπώδη Web server στο Arduino, χρησιμοποιώντας ένα
Arduino Ethernet Shield για συνδέσουμε το Arduino με το το-
πικό μας δίκτυο και κατά συνέπεια με το Internet. Σκοπός μας
είναι να έχουμε ένα site, μέσα από το οποίο θα μπορούμε να
ελέγχουμε το Arduino μας. Για παράδειγμα, φανταστείτε ότι
έχετε συνδέσει τα φώτα του σπιτιού σας στο Arduino και δεν
είστε σίγουροι αν έχετε αφήσει κάποιο ανοιχτό. Μπαίνετε
απλά στο «site» του σπιτιού σας από το Smartphone ή από
οποιονδήποτε υπολογιστή, βλέπετε την κατάσταση των φώ-
των και τα ανοιγοκλείνετε όπως θέλετε. Σκεφτείτε επίσης ότι
θα μπορούσατε να συνδέσετε και το θερμοσίφωνά σας, και
όταν θέλετε να γυρίσετε στο σπίτι από τη δουλειά και να κάνε-
τε μπάνιο, να τον ανοίγετε και να έχετε ήδη ζεστό νερό μόλις
φτάσετε. Ελπίζω να σας κέντρισα το ενδιαφέρον. Ας αρχίσου-
με με έναν απλό κώδικα, ο οποίος μας δείχνει τις τιμές των
αναλογικών εισόδων του Arduino, στο πρόγραμμα του οποίου
υπάρχει και ως παράδειγμα, και επομένως μπορείτε να τον
χρησιμοποιήσετε εύκολα.
Υλικά
Αυτό το άρθρο είναι λιτό και απέριττο, οπότε δεν θα χρεια-
στούμε πολλά πράγματα. Συγκεκριμένα θέλουμε:
n
1 Arduino
n
1 Ethernet Shield
n
Αναλογικοί Αισθητήρες (προαιρετικά)
n
1 LED
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller
below.
// The IP address will be dependent on your local
network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1, 177 };
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
Server server(80);
void setup()
{
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
// listen for incoming clients
Client client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you’ve gotten to the end of the line (received
a newline
// character) and the line is blank, the http request
has ended,
// so you can send a reply
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();
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6;
analogChannel++) {
client.print(“analog input “);
client.print(analogChannel);
client.print(“ is “);
client.print(analogRead(analogChannel));
client.println(“<br />”);
}
break;
}
Του Βασίλη Γεωργιτζίκη <billgeo13@gmail.com>
Project – Arduino Hacks
Κοίτα, μαμά, ανοιγοκλείνω τα φώτα από το Internet!
Linux Inside
48
KΩΔΙΚΑΣ
ΣΤΟ DVD
Ο Βασίλης είναι φοιτητής μηχανικός Η/Υ, και τελικά ίσως τη βγάλει τη σχολή (σε πολυωνυμικό χρόνο).
Έλεγχος Arduino μέσω Internet