Scheda ethernet di arduino

Slides:



Advertisements
Presentazioni simili
Programmazione con socket
Advertisements

Programmazione distribuita in Java
Piattaforma Arduino Arduino uno Arduino Mega.
void binario(int n); …………………
Sensori digitali Ds18b20.
ARDUINO Duemilanove Parte_4 Arduino e Processing
Xbee, Bluetooth, SD, Ethernet
Per questo organizza un corso di Arduino per tutti i soci Amon e GMS.
Programmazione in linguaggio C
Linguaggio Arduino: Struttura di un programma
Come comunicano i processi ?
ARDUINO Duemilanove Parte_2 Laboratorio
ARDUINO Duemilanove Parte_5 Arduino e PHP
Arduino: introduzione alla programmazione
SENSORI OTTICI - FOTORESISTENZE
Hardware necessario Una board Intel galileo Un alimentatore Dc 7-15 v
Progetti con arduino e pic.  Il trasduttore è analogico  Trasforma la temperatura in tensione secondo la relazione V millivolts =10*t celsius Essendo.
Comunicare con Arduino
Hands-On Arduino Come collegare i sensori ad Arduino P. Perego- Politecnico di Milano AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno.
ISTITUTO TECNICO – SETTORE TECNOLOGICO
Reti Mobili Ad Hoc e di Sensori Andrea De Salve. COS'È ARDUINO ? Piattaforma Open-Source per il Physical Computing basata su Microcontrollore Arduino.
Corso di Alta formazione in TL&OS Modulo 1.3 Reti e Servizi - lezione 1 Modulo 1.3 Reti e servizi 1. Introduzione al Networking Connettere il PC in rete;
Fondamenti di Informatica A - Massimo Bertozzi ARRAY E STRINGHE Curiouser and curiouser! Alice's Adventures in Wonderland, Lewis Carrol.
H T M L Hyper Text Markup Language L' HTML è un linguaggio di markup usato per la creazione di documenti ipertestuali sotto forma di pagine web.
MODULI FORMATIVI ESTIVI: ANDROID E ARDUINO PICCOLO PROGETTO CREATO CON UNA SCHEDA ARDUINO E APPINVENTOR.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
I socket.
IL SOFTWARE (FPwin 6.0).
Arduino uno Introduzione.
Progetto Parcheggio intelligente
Come comunicano i processi ?
Java World Introduzione.
A/D con Raspberry MCP300X MCP320X.
GPIO: General Purpose Input Output I parte
Introduzione al linguaggio C
Applicazione web basata su web service e web socket
Dati in rete Appunti.
Python per Raspberry Introduzione.
PROGRAMMAZIONE SHELL -
Microcontrollori e microprocessori
CIRCUITO PORTA AND Laura Mura Corso di Laurea in Informatica (ARE1)
I2c.
10. Programmazione Ricorsiva Ing. Simona Colucci
Unità didattica 1: Introduzione al linguaggio Java
APACHE2-PHP su Raspberry
I FILES AD ACCESSO SEQUENZIALE
Ambienti di Programmazione per il Software di Base
modulo 6 Prof. Salvatore Rosta
Corso Java Introduzione.
istalliamo l’ambiente di sviluppo - ide
Global System for Mobile Comunication
A/D seconda parte.
ABAP Objects ALV Grid Mantova, 30 dicembre 2018.
Interrupt Arduino.
© 2007 SEI-Società Editrice Internazionale, Apogeo
OpenLayers Client di mappe “non solo” WMS
Maker_INO Lezione Quarta Trasduttori e Sensori Digitali
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
APPUNTI SUL LINGUAGGIO C
Lezione Seconda Primi passi di programmazione
UNIT 12 INTERFACCIA SERIALE.
Prof.ri Ponte Vincenzo Ovazza Sergio
Protocolli di comunicazione
Unità 6 SCHERMI LCD.
Java Introduzione.
Lezione Terza Primi passi di programmazione
Progettiamo un robot Prof.ri Ponte Vincenzo Ovazza Sergio
Array e Stringhe Linguaggio C.
Comunicazioni sincronizzate: I2c SPI
TCS230 Sensore di colore.
Transcript della presentazione:

Scheda ethernet di arduino

Introduzione La scheda ethernet di arduino si serve dei pin 10, 11, 12, 13 di Arduino appoggiandosi alla interfaccia SPI L’interfaccia SPI Serial Peripheral Interface è utilizzata per la comunicazione seriale sincronizzata Il pin 4 viene utilizzato per il segnale Slave Select

Librerie #include <Dhcp.h> #include <Dns.h> #include <Ethernet.h> #include <EthernetClient.h> #include <EthernetServer.h> #include <EthernetUdp.h> #include <util.h>

Librerie La libreria fondamentale è Ethernet.h da essa dipendono tutte le altre librerie Dhcp.h è la libreria che permette l’acquisizione di un indirizzo IP tramite server DNS.h attribuisce un indirizzo IP ad ogni hostname. Ciò è possibile solo se si riesce ad interagire con un server EthernetClient ed EthernetServer gestiscono la scheda Arduino a seconda se funziona rispettivamente da client o da server EthernetUdp è utile per le comincazioni tramite il protocollo Udp Util gestisce le conversioni da a esadecimale

Indirizzi Gli indirizzi utili sono: MAC address, Media Access Control; è un indirizzo di 6 cifre esadecimali univoco per ogni scheda per la comunicazione. La sintassi è la seguente :byte mac[]={ 0xDE, 0xAD, 0xBE, 0xEF, 0xFE,0xED} ; Indirizzo IP con sintassi:IPAddress ip(192, 168, 1,1);

Classe EthernetServer EthernetServer: crea una porta sul server desiderato. Per http serve la porta 80. Essendo una classe, bisogna creare una istanza es. EthernetServer mioserver=Server(80); Metodi: write(dato): scrive un carattere a tutti i client correttamente collegati print(dati, base), println(dati,base): scrive i dati in una determinata base; la differenza tra print e println è che il primo, scrive su una sola riga, il secondo torna daccapo

Classe EthernetClient La classe EthernetClient va instanziata; non ha parametri in ingresso e non ha parametri in uscita Metodi: Connected() Connect(ip,porta) Write(dato)- scrive un dato sul server connesso Print(dato,base), println(dato,base) Available() Read()-legge il byte successivo nel buffer; se non ci sono dati il valore restituito è -1 Flush()-rimuove dal buffer i dati non ancora letti Stop()-disconette il server

Esempio: un host remoto legge i dati inviati da arduino #include <LiquidCrystal.h> #include <SPI.h> #include <Ethernet.h> boolean lettura; int addr = 0; #define RS 12 #define EN 11 #define D7 2 #define D6 3 #define D5 4 #define D4 5 LiquidCrystal lcd( 12,11,5,4,3,2 ); // 'lcd' è una variabile di tipo LiquidCrystal */ byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(172, 16, 200, 243); EthernetServer server(80); int n=0; int m=0; int k=0; const int led=10; void setup() { lcd.begin( 16, 2 ); Serial.begin(9600); pinMode(led,OUTPUT); pinMode(7,INPUT); Ethernet.begin(mac,ip); server.begin(); }void loop() {delay(3000); digitalWrite(led,LOW); lettura=digitalRead(7); lcd.setCursor(0,0); if (lettura==LOW){ m=m+1; if(n==4){ n=0; k=k+1; digitalWrite(led,HIGH); } else{n=n+1;digitalWrite(led,LOW);} } lcd.print(n); 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("Connection: close"); client.println("Refresh: 5"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<p />"); client.println("<H1>"); client.println("m="); client.print(m); client.println("</H1>"); client.println("<H2>"); client.print("k= "); client.println("</H2>"); client.print(k); client.println("</html>"); break; if (c == '\n') { currentLineIsBlank = true; else if (c != '\r') { currentLineIsBlank = false; }}}}}

Esempio: controllo di una lampada da remoto (parte 1) #include <SPI.h> #include <Ethernet.h> int pinLED = 9; int pinLED1 = 8; boolean acceso = false; boolean acceso1= false; byte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip(172, 16, 200, 243); EthernetServer server(80); void setup() { pinMode(pinLED,OUTPUT); digitalWrite(pinLED,LOW); pinMode(pinLED1,OUTPUT); digitalWrite(pinLED1,LOW); Serial.begin(9600); 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; String postText =""; String postText1 =""; while (client.connected()) { if (client.available()) { char c = client.read(); if(postText.length()<10){ postText +=c; } if(postText1.length()<10){ postText1 +=c; if (c == '\n' && currentLineIsBlank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); client.println("<meta charset=UTF-8>"); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head> <TITLE>Lambade</TITLE> </head>"); client.println("<body> <h1> Benvenuto nel Webserver Arduino </h1>"); client.println("<h1> Controllo di due lampade</h1>"); client.println("</body>"); client.println("</html>"); break; } if (c == '\n') { currentLineIsBlank = true; else if (c != '\r') { currentLineIsBlank = false;

Esempio: controllo di una lampada da remoto (parte 2) if(postText.indexOf("?on") >0){ digitalWrite(pinLED,HIGH); Serial.println("Accendi LED"); acceso = true; acceso1= true; } // Se l'utente ha premuto l'icona per spegnere il LED if(postText.indexOf("?off") >0 ){ digitalWrite(pinLED,LOW); Serial.println("Spegni LED"); acceso = false; acceso1=false; if(postText1.indexOf("?on") >0){ digitalWrite(pinLED1,HIGH); if(postText1.indexOf("?off") >0 ){ digitalWrite(pinLED1,LOW); if(acceso){ client.println("<a href=\"./?off\"> <img src = \"http://mariangelamone.altervista.org/bt_OFF.png\"alt = \"Spegni\" ></a>"); client.println("<h3> La lampada è accesa </h3>"); }else{ client.println("<a href=\"./?on\"> <img src = \"http://mariangelamone.altervista.org/bt_ON.png\"alt = \"Accendi\" ></a>"); client.println("<h3> La lampada è spenta </h3>"); } if(acceso1){ delay(1); client.stop(); Serial.println("client disconnected");

Template #include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(172, 16, 200, 243); // Viene inizializzata la libreria Ethernet di Arduino e il webserver gira sulla porta 80 EthernetServer server(80); void setup() { Serial.begin(9600); 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(); // {variabili inviate dal server} // Se viene completato l'invio della richiesta HTTP, allora il server invia la risposta if (c == '\n' && currentLineIsBlank) { // Viene fatta una risposta HTTP, in pratica viene creata una pagina WEB in HTML client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // Dopo la risposta la connessione si interrompe client.println(); client.println("<meta charset=UTF-8>"); // serve per inserire i caretteri speciali client.println("<!DOCTYPE HTML>"); client.println("<html>"); //continuo pagina web break; if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; delay(1); // Viene chiusta la connessione client.stop(); Serial.println("client disconnected");