Arduino Ethernet Shield

Tutorial Arduino – Programming: Ethernet 2

Ethernet Programming con Arduino, parte 2

In questo secondo episodio del tutorial continuiamo miniserie che tratterà della programmazione delle schede ethernet con Arduino. Nello specifico in questo episodio ci occupiamo di evolvere il server di chat Telnet creato la scorsa volta per permettergli di accettare comandi speciali, nello specifico collegheremo alla scheda un sensore di temperatura e programmeremo un comando che ci invierà i dati rilevati dal sensore attraverso Telnet, questo ci permette di comprendere più a fondo le interazioni tra lo shield ethernet e arduino e inoltre apre la strada per un utilizzo di arduino per applicazioni di domotica

Buona Visione e Happy Making

 

Di seguito trovate il codice sorgente (sketch):

#define SENSOR_PIN 4
#define PORT 23

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 0, 177);
IPAddress myDns(192,168,0, 1);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 0, 0);
EthernetServer server(PORT);

boolean alreadyConnected = false;
char message[100];
char thisChar;

void setup() {
// initialize the Ethernet device
Ethernet.begin(mac, ip, myDns, gateway, subnet);
// start listening for clients
server.begin();
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.print("Chat server address:");
Serial.println(Ethernet.localIP());
}

void loop() {
// wait for a new client:
EthernetClient client = server.available();
//reset the array
for( int i = 0; i < 100; i++ )
message[i] = (char)0;

if (client) {
if (!alreadyConnected) {
// clear out the input buffer:
client.flush();
Serial.println("We have a new client");
client.println("Hello, client!");
alreadyConnected = true;
}
}

int k = 0;

while(client.available() > 0) {
thisChar = client.read();
message[k] = thisChar;
k++;
}
Serial.println(message);
if(message[0] == '_') {
if(message[1] == 'h' && message[2] == 'e' && message[3] == 'l' && message[4] == 'p') {
client.write("\n\n ********************************** \n You asked for help, here a list of available commands: \n _getTemperature :return you the temperature in the server room \n ********************************** \n\n ");
} else if(message[1] == 'g' && message[2] == 'e' && message[3] == 't' && message[4] == 'T' && message[5] == 'e' && message[6] == 'm' && message[7] == 'p' && message[8] == 'e' && message[9] == 'r' && message[10] == 'a' && message[11] == 't' && message[12] == 'u' && message[13] == 'r' && message[14] == 'e'){
client.print("\n\n ********************************** \nTemperature: ");
client.print(readTemperature(SENSOR_PIN));
client.print("° Celsius \n ********************************** \n\n");
} else {
client.print("\n\n ********************************** \n Command Unknown, type _help for a list of commands \n ********************************** \n\n");
}
} else {
client.print(message);
}

}
float readTemperature(int pin) {
float lettura = analogRead(pin);
float voltage = (lettura/1024.0)*5.0;
return((voltage - .5) * 100);
}

Ti piaciono i miei tutorial e progetti? Aiutami a realizzarne altri. Supporta Zamein – Tutorials & Projects su Patreon!

One thought on “Tutorial Arduino – Programming: Ethernet 2

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *