Monitoraggio pannello fotovoltaico attraverso il Web



Documenti analoghi
Dal protocollo IP ai livelli superiori

ARP (Address Resolution Protocol)

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Reti di Telecomunicazione Lezione 6

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Reti di Calcolatori. Il Livello delle Applicazioni

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Reti di Calcolatori

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Siti web centrati sui dati (Data-centric web applications)

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Inizializzazione degli Host. BOOTP e DHCP

InterNet: rete di reti

La VPN con il FRITZ!Box Parte I. La VPN con il FRITZ!Box Parte I

Lo scenario: la definizione di Internet

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Reti di Telecomunicazione Lezione 8

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Informatica per la comunicazione" - lezione 8 -

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Applicazioni web centrati sui dati (Data-centric web applications)

Lezione n 1! Introduzione"

Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, Pisa

Transmission Control Protocol

Progettare un Firewall

Reti di Calcolatori. Vantaggi dell uso delle reti. Cosa è una rete? Punto di vista logico: sistema di dati ed utenti distribuito

19. LA PROGRAMMAZIONE LATO SERVER

Registratori di Cassa

Reti di Telecomunicazione Lezione 7

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Internet: Domini e spazi web. conoscerlo al meglio per usarlo meglio Gabriele Riva - Arci Barzanò

Il Web Server e il protocollo HTTP

La VPN con il FRITZ!Box Parte I. La VPN con il FRITZ!Box Parte I

MyFRITZ!, Dynamic DNS e Accesso Remoto

Protocolli applicativi: FTP

Introduzione alle applicazioni di rete

Configurazione di Outlook Express

ESERCITAZIONE Semplice creazione di un sito Internet

Reti di Calcolatori. Il software

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Firewall, Proxy e VPN. L' accesso sicuro da e verso Internet

Gestione degli indirizzi

Guida alla configurazione

BREVE GUIDA ALL ATTIVAZIONE DEL SERVIZIO DDNS PER DVR SERIE TMX

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Circuiti amplificatori

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Cenni di programmazione distribuita in C++ Mauro Piccolo

Interconnessione di reti

Elementi di Informatica e Programmazione

Corso di recupero di sistemi Lezione 8

Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica.

Come leggere ed interpretare la letteratura scientifica e fornire al pubblico informazioni appropriate sui farmaci

Capitolo 4 Pianificazione e Sviluppo di Web Part

Elementi sull uso dei firewall

Le Reti Informatiche

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 3 a lezione a.a. 2009/2010 Francesco Fontanella

Internet. Introduzione alle comunicazioni tra computer

Manuale d'uso del Connection Manager

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Guida alla registrazione on-line di un DataLogger

Informatica per la comunicazione" - lezione 9 -

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Guida all impostazione. Eureka Web

Elementi di Informatica e Programmazione

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Comprendere cosa è Internet e sapere quali sono i suoi principali impieghi. 25/09/2011 prof. Antonio Santoro

Gestione degli indirizzi

Client - Server. Client Web: il BROWSER

Manuale Utente Albo Pretorio GA

Apparecchiature di Rete

REVISIONI ottobre 2010 RTI Prima stesura

Reti e Internet: introduzione

Network Services Location Manager. Guida per amministratori di rete

LaCie Ethernet Disk mini Domande frequenti (FAQ)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

RETI DI COMPUTER Reti Geografiche. (Sez. 9.8)

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Cos è. Protocollo TCP/IP e indirizzi IP. Cos è. Cos è

appunti delle lezioni Architetture client/server: applicazioni client

RETI E SISTEMI INFORMATIVI Domain Name System. Prof. Andrea Borghesan

Distribuzione internet in alberghi, internet cafè o aziende che vogliono creare una rete "ospite"

Guida rapida Vodafone Internet Box

2.1 Configurare il Firewall di Windows

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI

Finalità delle Reti di calcolatori. Le Reti Informatiche. Una definizione di Rete di calcolatori. Hardware e Software nelle Reti

Introduzione all elaborazione di database nel Web

Software per Helpdesk

Dipartimento per le Libertà Civili e l Immigrazione

SIEMENS GIGASET S450 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

Manuale per la configurazione di AziendaSoft in rete

Guida alla registrazione on-line di un NovaSun Log

Corso di Amministrazione di Reti A.A. 2002/2003

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB

INDIRIZZI IP ARCHITETTURA GENERALE DEGLI INDIRIZZI IP FORME DI INDIRIZZI IP CINQUE FORME DI INDIRIZZI IP

Transcript:

Monitoraggio pannello fotovoltaico attraverso il Web A.S. 2012/2013 Classe 5 B/E Alunni: Giacomo Focante Artem Mikushov sito web: www.monitoraggiofotovoltaico.altervista.org

INDICE: 1 L'idea 1.1 Introduzione 1.2 Il progetto 1.3 Quali dati analizzare 1.4 La raccolta dei dati 1.5 La trasmissione dei dati 1.6 L'elaborazione/archiviazione dei dati 2 La realizzazione 2.1 Progetto circuito elettrico 2.2 Reperimento dei materiali 2.3 Montaggio e collaudo circuito elettrico 2.4 Rilevazione dei dati 2.5 Realizzazione Database 2.6 Comunicazione dati 2.7 Realizzazione sito web 3 Gli Utilizzi 3.1 Introduzione 3.2 Utilizzi 4 Schemi e codice 4.1 Schema generale 4.2 Schema elettrico 4.3 Codice Arduino 4.3.1 Lo sketch 4.3.2 Le funzioni 5 Conoscenze 5.1 Elettronica 5.1.1 Circuito di condizionamento 5.2 Sistemi 5.2.1 Arduino 5.2.2 Router 5.2.3 TCP 5.2.4 HTTP 5.2.5 DHCP 5.2.6 DNS 5.2.7 FTP 5.2.8 TELNET 5.2.9 SSH 5.3 Informatica 5.3.1 HTML 5.3.2 SQL 5.3.3 PHP 5.3.4 Javascript 5.4 Calcolo 5.4.1 Perequazione

1. L'idea 1.1 Introduzione L'idea è quella di realizzare un impianto composto da vari blocchi (circuito di condizionamento, Arduino) in grado di monitorare un pannello fotovoltaico inviando i valori rilevati, in termini di tensioni e correnti, in un database online tramite un router. Con questa tecnologia è possibile verificare in tempo reale, consultando l'apposita pagina web, la produzione, l'efficienza e il rendimento del pannello fotovoltaico. 1.2 Il progetto Dopo una prima analisi il progetto è stato suddiviso in quattro macro-aree: Dati da analizzare; Raccolta dei dati; Trasmissione dei dati; Archiviazione/elaborazione dei dati. 1.3 Quali dati analizzare Per quanto riguarda i dati da analizzare sono stati considerati importanti: La Tensione generata dal pannello; La Corrente assorbita da un carico. Altro dato importante è la potenza [ W ], che viene calcolata al momento dell'inserimento sul database moltiplicando la corrente per la tensione. 1.4 La raccolta dei dati La raccolta dei dati viene effettuata da una scheda Arduino Uno Rev3. Le misure, per essere il più veritiere possibili, vengono effettuate più volte nell'arco di tempo che intercorre tra un invio e l'altro al database, per poi inviare una media mobile delle stesse. Viene infatti utilizzato il metodo della Perequazione per ridurre al minimo eventuali errori.

1.5 La trasmissione dei dati La trasmissione dei dati raccolti da Arduino verso il database viene effettuata attraverso l'ethernet Shield ufficiale di Arduino connesso ad un router e ad una pennetta 3g. In questo modo è possibile sfruttare questo dispositivo ovunque ci sia una sufficiente ricezione telefonica ed un'alimentazione sufficiente. L'Arduino utilizza il protocollo http, che interrogando pagine php permette l'elaborazione ed il caricamento dei dati nel database. 1.6 L'elaborazione/archiviazione dei dati Su un servizio di hosting come quello di altervista, che utilizza la accoppiata MySQL/PHP, è stato attivato un servizio di database. I dati raccolti sono immagazzinati in un database MySQL, che viene poi interrogato per la costruzione delle varie statistiche e per la creazione dei grafici. Proprio per i grafici vengono utilizzate le API Google, che permettono in maniera abbastanza semplice di disegnarne degli ottimi.

2. La realizzazione 2.1 Progetto circuito elettrico Considerando che l'arduino accetta in ingresso solamente tensioni comprese tra 0 e 5V, il circuito di condizionamento è stato progettato affinché la tensione massima che il pannello è in grado di generare in uscita corrisponda a 5V. Per poter verificare quanta corrente scorre su di un carico e quindi, successivamente, calcolare la potenza assorbita è stato necessario aggiungere al progetto un blocco composto da una serie di resistori che, commutati uno alla volta, vengono applicati in parallelo al pannello. Il circuito è stato realizzato attraverso opportune reti resistive ed un integrato contenente amplificatori operazionali. 2.2 Reperimento dei materiali Sono stati utilizzati comuni materiali facilmente reperibili in commercio, quali resistori, trimmer, resistori di potenza, diodi led e l'integrato LM324. Part list: n.1 integrato LM324 n.5 morsetti bipolari n.1 trimmer da 10k n.1 trimmer da 220k n.1 trimmer da 470k n.1 diodo led n.1 potenziometro a scatti 11 posizioni n.1 condensatore elettrolitico da 100uF n.1 condensatore da 100nF n.4 resistori da 1/4 di watt n.9 resistori di potenza n.1 arduino uno n.1 arduino ethernet shield n.1 router n.1 pennetta 3G n.1 display LCD 48x84

2.3 Montaggio e collaudo circuito elettrico Il circuito di condizionamento è stato prima creato e simulato su software Multisim della National Instruments e successivamente riportato e cablato su una basetta breadboard. Per una corretta amplificazione degli operazionali, abbiamo utilizzato dei trimmer da calibrare in modo che l'uscita dall'amplificatore si trovasse nell'intervallo desiderato. Il circuito è stato montato seguendo lo schema elettrico. 2.4 Rilevazione dei dati La rilevazione dei dati avviene attraverso le porte analogiche dell'arduino. Esse leggono un valore compreso tra 0 e 1023 (intervallo corrispondente a 0 5V). Attraverso una proporzione è stato quindi possibile calcolare il valore reale della corrente ed inviarlo al database. Nella lettura dall'arduino avviene la perequazione, ovvero l'arduino effettua 11 letture al secondo, e attraverso il metodo statistico arriva ad ottenere un unico valore che invierà al database. Questa operazione è necessaria affinché eventuali errori casuali nella lettura vengano limitati. 2.5 Realizzazione Database Considerando che il progetto prevede la misurazione di Tensione e Corrente il database creato è così strutturato: Il database è formato da due tabelle: una contenente il valore della tensione misurato la data e l'ora della misurazione, ed un'altra tabella dove vengono memorizzate la corrente e la tensione misurate. La seconda tabella ha una foreign key collegata alla chiave primaria della tabella delle tensioni, cosicché, con le necessarie accortezze, alla modifica o alla cancellazione di una riga nella tabella delle tensioni la riga collegata nella tabella della corrente farà la stessa operazione a cascata. 2.6 Comunicazione dati Per la comunicazione dei dati è stato scelto il protocollo http, dato che l'arduino deve collegarsi con un webserver per l invio dei dati ad un database remoto. La comunicazione avviene attraverso la shied ethernet dell'arduino ed il router a cui è collegato.

2.7 Realizzazione sito web Nella realizzazione del sito web è stato necessario utilizzare più linguaggi. In HTML sono state create le pagine statiche, ad esempio tutte quelle contenenti le spiegazioni teoriche o gli schemi. In PHP sono invece state create le pagine dinamiche o quelle che devono interagire con il database. Una delle pagine dinamiche è ad esempio quella dei download, che controlla con che browser viene aperto il sito prima di impostare gli indirizzi dei file di download. Le pagine che invece devono interagire con il database sono per lo più collegate alla pagina "Produzione elettrica", tutti i dati mostrati in quella pagina vengono infatti estratti dal database. Con questo linguaggio è stata creata anche la pagina contatti, cioè quella adibita ad inviare mail con le richieste degli utenti al proprietario del sito. Per alcune pagine, come quella "Produzione elettrica", che necessita di aggiornare frequentemente gli indicatori della tensione e della corrente, è stato utilizzato il javascript che ad intervalli di tempo regolari, aggiorna la posizione della lancetta sul misuratore, il grafico a spezzate della tensione, o i vari valori mostrati.

3. Gli Utilizzi 3.1 Introduzione Il nostro progetto è un sistema che permette di monitorare un pannello fotovoltaico rendendo noti i dati relativi alla produzione elettrica del pannello in tempo reale. Quest'esperienza, sebbene si tratti di un progetto di contenuta complessità, nonché in scala, potrebbe simulare un impianto su scala più ampia che svolge le stesse funzioni. Un sistema analogo di opportune proporzioni potrebbe monitorare, infatti, la produzione di piccoli impianti autonomi (stand-alone). 3.2 Utilizzi Questa figura rappresenta un piccolo impianto fotovoltaico autonomo in cui è possibile utilizzare una serie di pannelli, regolati tramite un opportuno regolatore di carica, per alimentare ad esempio elettrodomestici. Lo stesso sistema può essere adoperato per alimentare altri tipi di dispositivi, quali lampade a led, lampade a risparmio energetico, caricabatterie ed altri utilizzatori che richiedono una modesta potenza elettrica. Il nostro progetto è assolutamente applicabile a questo genere di apparati, permettendo la visualizzazione della produttività del fotovoltaico.

4. Schemi e codice 4.1 Schema Generale 4.2 Schema elettrico

4.3 Codice Arduino 4.3.1 Lo sketch #include <SPI.h> #include <Ethernet.h> #include <stdio.h> byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xD5, 0x37 }; //byte server[] = { 178,63,11,147 }; // Altervista char server[] = "www.monitoraggiofotovoltaico.altervista.org"; EthernetClient client; const float VMax = 20.00; const float IMax = 300.00; // tensione massima prodotta dal pannello // corrente massima prodotta dal pannello int led_con_1 = 1; int led_con_2 = 2; int sensorpinv = A0; int sensorpini = A2; //LCD #define PIN_SCE 8 // SCE #define PIN_RESET 7 // RST #define PIN_DC 6 // D/C #define PIN_SDIN 5 // DN(MOSI) #define PIN_SCLK 4 // SCLK int led = 3; // LED = Retroilluminazione LCD int lagnd = 9; int alim = 10; #define LCD_C #define LCD_D LOW HIGH #define LCD_X 84 #define LCD_Y 48. void setup() { Serial.begin(9600); pinmode(led, OUTPUT); //LED Retroilluminazione pinmode(lagnd, OUTPUT); pinmode(alim, OUTPUT); digitalwrite(lagnd, LOW); digitalwrite(alim, HIGH); digitalwrite(led, HIGH); LcdInitialise(); LcdClear(); LcdString("connessione"); Serial.println("Connessione...");

pinmode(led_con_1, OUTPUT); pinmode(led_con_2, OUTPUT); pinmode(sensorpinv, INPUT); pinmode(sensorpini, INPUT); if(ethernet.begin(mac) == 0) { LcdClear(); gotoxy(1,1); LcdString("Failed to"); gotoxy(1,10); LcdString("configure"); gotoxy(1,20); LcdString("Ethernet"); Serial.println("Failed to configure Ethernet using DHCP"); } delay(1000); // give the Ethernet shield a second to initialize LcdClear(); gotoxy(1,1); LcdString("Ethernet"); gotoxy(1,10); LcdString("initialized"); Serial.print("This IP address: "); IPAddress myipaddress = Ethernet.localIP(); Serial.print(myIPAddress); delay(500); LcdClear(); gotoxy(0,10); LcdString("connessione"); LcdString(" in corso..."); } delay(1500); LcdClear(); void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); digitalwrite(led_con_1, HIGH); digitalwrite(led_con_2, LOW); LcdClear(); Serial.println("Connessione in corso...");

client.stop(); delay(1000); LcdClear(); } } if (!client.connected()){ httprequest(); } 4.3.2 Le funzioni Sono inoltre presenti alcune funzioni; per vedere quelle necessarie per il funzionamento del display vai nella pagina download e scarica il file zip contenete il codice completo caricato su arduino. Le altre funzioni presenti sono: httprequest(), necessaria in quanto è quella che effettua le letture ed invia i risultati al database. void httprequest() { // if there's a successful connection: if (client.connect(server, 80)) { gotoxy(0,0); LcdString("Connesso"); Serial.println("Connesso"); digitalwrite(led_con_1, LOW); digitalwrite(led_con_2, HIGH); float ValTen[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; float ValCor[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; for (int i=0; i <= 10; i++) { int ten_in = analogread(sensorpinv); ValTen[i] = ((5/1024)*(float)ten_In); int cor_in = analogread(sensorpini); ValCor[i] = ((5/1024)*(float)cor_In); } delay(80); float ten = PEREQ(ValTen);

float cor = PEREQ(ValCor); float tenv = (ten*(vmax/5)); float corv = (cor*(imax/5)); gotoxy(0,10); LcdString("V: "); char laten[7]; dtostrf(tenv,2,2,laten); LcdString(laten); gotoxy(0,20); LcdString("mA: "); char lacor[7]; dtostrf(corv,2,2,lacor); LcdString(lacor); Serial.print("Tensione: "); Serial.print(ten); Serial.print(" -> "); Serial.println(tenV); Serial.println(); Serial.print("Corrente: "); Serial.print(cor); Serial.print(" -> "); Serial.println(corV); Serial.println(); Serial.println("Richiesta http in corso"); // HTTP request: client.println(); client.print("get /pagina.php?volt="); client.print(tenv); client.print("&ampere="); client.print(corv); client.println(" HTTP/1.0"); client.println("host: nomehost.it"); client.println("user-agent: arduino-ethernet"); client.println("connection: close"); client.println(); Serial.println("Richiesta http completata"); } else { Serial.println("Connessione fallita"); Serial.println("Disconnesso."); gotoxy(0,0); LcdString("Connessione fallita"); gotoxy(0,20); LcdString("Disconnesso.");

} } client.stop(); delay(1000); LcdClear(); PEREQ(), che è la funzione che ha il compito di effettuare la perequazione dei valori letti. float PEREQ(float Vettore[10]) { float Ret=0; float N1 = ((Vettore[0]+Vettore[1]+Vettore[2]+Vettore[3]+Vettore[4])/5); float N2 = ((Vettore[1]+Vettore[2]+Vettore[3]+Vettore[4]+Vettore[5])/5); float N3 = ((Vettore[2]+Vettore[3]+Vettore[4]+Vettore[5]+Vettore[6])/5); float N4 = ((Vettore[3]+Vettore[4]+Vettore[5]+Vettore[6]+Vettore[7])/5); float N5 = ((Vettore[4]+Vettore[5]+Vettore[6]+Vettore[7]+Vettore[8])/5); float N6 = ((Vettore[5]+Vettore[6]+Vettore[7]+Vettore[8]+Vettore[9])/5); float N10 = ((N1+N2+N3+N4+N5)/5); float N11 = ((N2+N3+N4+N5+N6)/5); Ret = ((N10+N11)/2.); } return Ret;

5. Conoscenze 5.1 Elettronica 5.1.1 Circuito di condizionamento Per poter analizzare le funzionalità del pannello fotovoltaico e monitorarle tramite Arduino è necessario condizionare la sua tensione di uscita per adattarla alla dinamica d'ingresso standard dell'arduino, ovvero compresa tra 0 e 5V. Il blocco di condizionamento può offrire funzionalità quali amplificazione o attenuazione del segnale, adattamento di impedenze, traslazione della curva caratteristica del segnale di uscita, inversione della curva caratteristica e filtraggio. Il nostro circuito di condizionamento deve essere configurato in modo tale che l'arduino possa leggere sia la tensione fornita dal pannello fotovoltaico, sia la corrente che scorre su un eventuale carico applicato. Per fare ciò abbiamo utilizzato il circuito integrato LM324 che contiene 4 amplificatori operazionali, di cui ne abbiamo usati soltanto tre. Per testare il nostro pannello applicandogli diversi carichi, abbimo utilizzato un faretto da 800W come fonte di irraggiamento posto ad una distanza di 1m. Il nostro pannello fotovoltaico fornisce una tensione variabile tra 0 e 20V proporzionale all'irraggiamento a cui viene sottoposto. Questo range di 20V deve poter essere letto dall'arduino che, come detto prima, accetta tensioni che variano da 0 a 5V. Per cui abbiamo realizzato un partitore di tensione in maniera da poter prelevare una parte di tensione fornita dal pannello. La resistenza equivalente del partitore deve essere molto alta in modo da assorbire meno corrente possibile. L'abbiamo fissata a 1MΩ. Da qui abbiamo calcolato il fattore di partizione per cui i 20V (tensione massima) forniti dal pannello devono corrispondere ai 5V e così ogni tensione fornita dal pannello moltiplicata per il fattore di partizione deve cadere nel range 0-5V. Il partitore lo abbiamo realizzato con un resistore da 680k e un trimmer in serie da 470k. Prelevando la tensione ai capi del trimmer regolandolo in modo che essa sia 5V quando il pannello fornisce 20V, abbiamo poi utilizzato un inseguitore di tensione come separatore d'impedenza tra il pannello e l'arduino. Per poter calcolare la potenza elettrica prodotta dal pannello, ci siamo serviti di diversi carichi di varie resistenze. Con un potenziometro a scatti si applica un diverso carico alla volta e si verifica il rendimento del pannello. Abbiamo utilizzato 10 carichi di resistenze che variano da poche unità di ohm, a decine e centinaia per vedere la curva di rendimento tensione-corrente. Commutando il potenziomentro sul carico da 39 ohm, abbiamo scoperto che è il carico ideale affinché il pannello renda al meglio e con questo carico si ha il punto di massima potenza. Avendo posto una resistenza da 1Ω tra il punto in comune di tutti i carichi e la massa, si ha una caduta di tensione proporzionale

alla corrente che scorre su di essa. Per esempio, commutando il potenziometro sul corto circuito (per verificare la corrente massima che il pannello può erogare in condizioni di illuminazione citate sopra) la resistenza da 1Ω assorbe una corrente di 300mA che genera una caduta di tensione appunto di 300mV. Per cui applicando un qualunque carico al pannello in serie con quella resistenza da 1Ω, la corrente che scorre su quel ramo genera sempre una caduta di tensione su quella resistenza proporzionale alla corrente stessa. In questo modo abbiamo creato una specie di convertitore correntetensione. Anche il range di questa tensione deve essere proporzionale al range di ingresso dell'arduino di 0-5V, per cui i 300mA di cortocircuito, convertiti in 300mV tramite la resistenza da 1Ω, devono corrispondere a 5V. Per fare ciò abbiamo utilizzato un altro operazionale configurato come amplificatore non invertente con un'opportuna rete resistiva in modo che i 300mV vengano amplificati in modo da avere in uscita 5V. Dopo aver calcolato il guadagno come Vo/Vi, ovvero 5V/300mV = 16.67, si configura il ramo di retroazione dell'amplificatore in modo che il segnale in ingresso guadagni del valore calcolato prima. Ponendo la resistenza R dell'ingresso invertente a 10k e sapendo che la formula del guadagno Av = 1+(Rf/R) = 16,67 abbiamo così calcolato la resistenza del ramo di retroazione che veniva di 157Ω. Per avere un guadagno più preciso abbiamo sostituito quella resistenza con una da 100k in serie ad un trimmer da 220k. Non è necessario un ulteriore inseguitore di tensione poiché l'impedenza d'ingresso dell'operazionale è molto alta e quindi non permette l'indesiderato caricamento d'impedenza dell'arduino. Con questo circuito di condizionamento abbiamo potuto quindi verificare la tensione che fornisce il pannello fotovoltaico istante per istante e quanta corrente eroga su un carico. Inoltre abbiamo preferito inserire un diodo LED come indicatore, che si illumina quando il pannello fornisce una tensione di 12V (una tensione utile per caricare una batteria da 12V, ad esempio). Abbiamo utilizzato un altro operazionale come comparatore di tensione. Prelevando un'opportuna parte di tensione di alimentazione del circuito con un trimmer da 10k e comparandola con quella fornita dal pannello, il LED si accende se Vpan > 12V o resta spento se Vpan < 12V.

5.2 Sistemi La parte del progetto riguardante la disciplina Sistemi consiste nella comunicazione che avviene tra il microcontrollore Arduino ed il database online. Utilizzando il protocollo HTTP riesce, attraverso il Router connesso ad internet, ad inviare dati al database. 5.2.1 Arduino Arduino è una piattaforma di sviluppo italiana ed open-source, basata su un hardware ed un software flessibili e di facile utilizzo. È pensato per chiunque sia interessato a creare oggetti o ambienti interattivi. Arduino può interagire con l'ambiente ricevendo input da una grande varietà di sensori, e rispondere a questi stimoli attraverso output inviati dai suoi pin. Arduino si basa infatti su di un circuito stampato che integra un microcontrollore, con i pin connessi alle porte I/O, un regolatore di tensione, e,quando necessario, un'interfaccia USB che permette la comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma, che permette di scrivere programmi con un linguaggio semplice ed intuitivo derivato dal C e chiamato Wiring; questo linguaggio è liberamente scaricabile e modificabile. Sono inoltre utilizzabili su Arduino particolari board, dette shield, per permettere operazioni altrimenti impossibili; queste, per funzionare, richiedono l'utilizzo delle proprie librerie, che possono essere inserite e modificate da chiunque, essendo il codice open-spurce. Sul sito di Arduino Arduino.cc è presente tutto il materiale necessario per iniziare ad utilizzare questa piattaforma e per poi approfondire la propria conoscenza su di essa. 5.2.2 Router L Hardware: I Router di oggi sono di piccole dimensioni, costano poche decine di Euro e sono formati da un processore, una memoria RAM e flash e porte ethernet. Tutti i router possiedono una porta WAN (Wide Area Network) che á la connessione cablata che collega il router al "muro" (Linea telefonica) tramite cavo. Poi, ci sono delle porte LAN (Local Area Network) ovvero connessioni di rete locale per collegare ogni cosa alla rete. Se c è un antenna (può anche non esserci) il router ha anche connettivitá wireless senza fili, che trasmette, spesso, a frequenze radio da 2.4 ghz e 5 ghz per collegare tutti i

dispositivi senza interferenze (router "dual-band"). In generale, per poter configurare il router, si può accedere al suo pannello di controllo inserendo il suo indirizzo IP nel browser che varia a seconda del router. Come Funziona: Il principio alla base del funzionamento di un router è abbastanza semplice: prendendo informazioni dalla connessione WAN, il router indirizza l informazione ai vari dispositivi collegati assicurandosi che tutti i dati vengano trasmessi correttamente. Il router è in grado di assegnare individualmente IP locali a tutti i computer e, contemporaneamente, crea una strada separata per ogni sistema collegato a Internet. Tutto questo per dire che il router permette di collegare più dispositivi ad un modem ADSL. Oltre a tradurre connessioni dati e di routing, il router è capace anche di funzionare da firewall, impedendo che il traffico internet non richiesto possa entrare nei dispositivi collegati. Praticamente scarta i dati non richiesti impedendo quindi che possano esserci intrusioni esterne non autorizzate. Come fa a collegarsi a Internet: Quando si parla di reti di computer, generalmente (non per forza) si intende un gruppo di dispositivi collegati ad uno stesso router. Essi sono collegati tra loro tramite il router che a sua volte è collegato al modem o al cavo per consentire ai computer di andare su internet. Il Modem è il dispositivo che comunica con Internet e riceve / assegna un indirizzo IP facente parte della rete WAN. I vari computer, passando per il router, escono su internet come fossero un unica entità, con lo stesso indirizzo di rete o indirizzo IP, che viene assegnato dal provider ed è diverso rispetto gli indirizzi di rete LAN che il router stesso assegna ai vari computer. La rete WAN è quindi separata dalla rete LAN, quella che collega tra loro i computer di casa. Internet altro non è che la rete WAN globale e, anche se spesso tendono a coincidere nelle parole, è diverso dal World Wide Web che è solo uno dei servizi di Internet. Il modo in cui un router comunica effettivamente con un modem DSL per fornire Internet può essere spiegato così: Prima di tutto è importante sapere che ogni pezzo di informazione che passa su Internet è in realtà chiamato "pacchetto". Per esempio, quando si apre una pagina Web, il computer invia un pacchetto di dati e riceve in cambio un altro pacchetto che carichi le informazioni richieste. Questi pacchetti passano per una serie di protocolli di comunicazione. I router hanno un ruolo chiave nel trasmettere questi pacchetti, perchè fanno da centralino di smistamento per ogni pacchetto che inviano e ricevono. Tutti i router collegati a internet comunicano tra loro attraverso il sistema IP per garantire che i dati siano presi e restituiti ai nodi giusti.

5.2.3 TCP Il TCP (Trasmission Control Protocol) è uno dei due protocolli d implementazione del livello trasporto (Layer 4). È orientato alla connessione (commutazione circuito) confermata (c è il concetto della conferma della sliding window). Offre quindi servizi confermati di tipo connection oriented in modalità full-duplex e una sua caratteristica è la capacità di multiplexing, ovvero permettere a più applicazioni la connessione ai vari servizi. L indirizzamento dell applicazione avviene attraverso una "port" e non una SAP come normalmente avviene nel livello 4. Nel pacchetto TCP si notino: i campi di indirizzamento Source Port (port d origine) e Destination Port (port di arrivo); il Sequence Number che indica lo scostamento dell inizio del segmento TCP all interno del flusso completo; l Acknowledgement Number per confermare i pacchetti (ACK0, ACK1 ricordate?) attraverso il piggybacking; Data Offset specifica la dimensione dell header, dei bit riservati settati a zero; Window utilizzato per il controllo del flusso attraverso lo sliding window; il checksum per la validità del pacchetto; il puntatore ai caratteri urgenti quando ce ne sono. Un problema del controllo del flusso è quello della ritrasmissione, essendo necessaria per vari problemi come il timeout. In questo caso per evitare ulteriori problemi il TCP inizia un invio di pacchetti molto piccolo che pian piano diventano più grandi in caso di riscontro affermativo (ritrasmissione graduale).

Inoltre vi è il concetto di porta logica che indica di che tipo è il segmento. La porta non è detto che sia la stesa in trasmissione e in ricezione. Le prime 1024 sono quelle standard, le altre le posso usare come voglio. I router possono chiudere le porte. 5.2.4 HTTP L'HTTP (HyperText Transfer Protocol) è il protocollo utilizzato dal web per lo scambio dati. È di livello applicativo, vale a dire un protocollo che permette di scambiare comandi e dati tra i due lati di un applicazione distribuita, sfruttando una sessione TCP/IP precedentemente instaurata. L HTTP è basato su una comunicazione di tipo domanda/risposta. Generalmente la connessione è instaurata dal browser prima di ogni richiesta e chiusa dal server dopo l invio della risposta. Ad oggi la versione più utilizzata di questo protocollo è la 1.1, che corregge alcune lacune della versione 1.0 come: L'impossibilità di ospitare più siti www sullo stesso server (virtual host) Il mancato riuso delle connessioni disponibili L'insufficienza dei meccanismi di sicurezza Una richiesta http si compone di 3 parti: Request (riga di richiesta) Body (corpo del messaggio) Header (informazioni aggiuntive) Request: questa parte si compone di: Metodo, URI, Versione Protocollo. METODO:I metodi più utilizzati sono 3 : GET (recupero informazioni),post (invio informazioni), HEADER (come GET, ma riceve solo l intestazione della pagina). URI :(Uniform Resource Identifier) è tipo l URL di una pagina, cioè il suo indirizzo, ma più generico, in pratica è una stringa che identifica univocamente una risorsa generica. Versione Protocollo : Nel nostro caso HTTP/1.0. Body: Contiene la richiesta vera e propria. Header: Contiene varie informazioni, per il nostro scopo utilizzeremo l header HOST: perché richiesto dalla versione 1.0 del protocollo. Esempio di Richiesta HTTP di tipo GET GET www.miosito.it/index.html HTTP/1.0 HOST: www.server.com Le altre informazioni presenti nell URL non vengono trasmesse perché sono state già utilizzate per aprire la sessione TCP/IP tra client e server. Il server risponde con un messaggio contenente la versione di HTTP utilizzata ed un codice che indica il risultato della richiesta

(indicazione del buon esito della richiesta oppure un codice d errore). Seguono poi informazioni sul server ed, infine, il messaggio di risposta al client. Una possibile risposta potrebbe essere: HTTP/1.0 200 OK Server: NCSA/1.3 MIME-version: 1.0 Content-type: text/html <HTML> Pagina </HTML> 5.2.5 DHCP Il protocollo Dynamic Host Configuration Protocol è utilizzato per il rilascio di numeri IP della rete. Alcuni indirizzi sono statici, ovvero non cambiano nel tempo, mentre altri sono a scadenza temporale, che cambiano quindi ad intervalli di tempo, così che un indirizzo IP inutilizzato diviene nuovamente disponibile. Il protocollo DHCP viene usato anche per assegnare al computer diversi parametri necessari per il suo corretto funzionamento sulla rete a cui è collegato. Tra i più comuni, oltre all'assegnazione dinamica dell'indirizzo IP, si possono citare: Maschera di sottorete; Default gateway; Indirizzi dei server DNS; Nome di dominio DNS di default; Indirizzi dei server WINS; Indirizzi dei server NTP; Indirizzo di un server tftp e nome di un file da caricare per calcolatori che caricano dalla rete l'immagine del sistema operativo. Il client DHCP è un calcolatore che necessita di un indirizzo IP valido per la sottorete a cui è collegato e il programma che si occupa di richiederlo, il server DHCP è il calcolatore che fornisce indirizzi IP. Questo processo viene talvolta svolto da un router. Questo protocollo si appoggia all UDP ed utilizza la porta 67 per il server e la porta 68 per il client. Si utilizza una procedura di scambi di messaggi chiamata handshake per assegnare al client un indirizzo IP valido. Il primo pacchetto che viene inviato è il DHCP discover, il testo di questo messaggio è 0.0.0.0. Il pacchetto viene visualizzato da tutti i server i quali possono rispondere con un pacchetto DHCP offer in cui offrono un indirizzo IP e gli altri parametri per la configurazione del client. Il client sceglie l indirizzo IP e manda un pacchetto a tutta la rete con scritto nel campo server identifier il server scelto,

questo pacchetto si chiamo DHCP request. Il server che è stato selezionato conferma l indirizzo IP con il pacchetto DHCP ack. A questo punto il client può utilizzare il proprio indirizzo IP; prima della scadenza deve però rinnovarlo inviando un pacchetto DHCP request al server che se riesce ad inviare un pacchetto DHCP ack lo riconferma, altrimenti il client torna allo stato iniziale. 5.2.6 DNS Domain Name System, è stato ideato il 23 giugno 1983. Il sistema a dominio dei nomi è un sistema utilizzato per la risoluzione dei nomi degli host in indirizzi IP e viceversa. Questo servizio funziona grazie ad un database distribuito costituito dai server DNS. La conversione da nome a indirizzo IP è detta risoluzione DNS; la conversione da indirizzo IP a nome è detta risoluzione inversa (si possono attribuire più nomi ad un indirizzo IP). Questa flessibilità risulta utile in molti casi: nel caso in cui si debba sostituire il server che ospita un servizio, o si debba modificare il suo indirizzo IP, è sufficiente modificare il record DNS, senza dover intervenire sui client ad esempio per il virtual hosting basato sui nomi, una tecnica per cui un web server dotato di una singola interfaccia di rete e di singolo indirizzo IP può ospitare più siti web usando il codice dell header http. La parte più importante in un nome DNS è quella a partire da destra, detto anche dominio di primo livello(o TLD). Ogni parte in più rappresenta un ulteriore divisione (wikipedia.org 2 livello). Quando viene assegnato un dominio di 2 livello, questo è autorizzato a usare i nomi di dominio dei livelli successivi. Ad uno stesso nome di dominio possono essere associati contemporaneamente record di tipo diverso, o più record dello stesso tipo (suddivisione del carico del server). Il tempo in cui il record può essere memorizzato in un sistema di cache DNS prima che venga considerato scaduto viene indacato dal TTL (Time to live). Relizazzione: I DNS implementano uno spazio gerarchico dei nomi, per permettere che parti di uno spazio dei nomi, conosciute come "zone", possano essere delegate da un name server ad un altro name server che si trova più in basso nella gerarchia. Una zona DNS è una parte dello spazio dei nomi, costituita da un dominio e i suoi sottodomini che non sono a loro volta delegati, che è sotto una stessa gestione amministrativa e quindi è gestita da uno o più server. La gestione di una zona è delegata dalla zona superiore tramite dei record di tipo NS, ad esempio, nella zona.org ci sarà una delega per la zona wikipedia.org ai server DNS che la gestiscono. Per ragioni di ridondanza, ciascuna zona è replicata su più server, e di conseguenza la delega è costituita da più record NS,