Created Fri, 15 Mar 2013 20:37:22 +0000 by dnviti1994
Fri, 15 Mar 2013 20:37:22 +0000
hi all, i have a problem: i am not able to connect chipkit ethernet shield through my home network to my home server. i need to do this because i have to read an analog temperature and sent it to my server so i can read it on my browser through a webpage made in PHP. Please can you explain me how to do this? i paste my starting code here (i'm italian, so everything is written in italian, sorry):
/*
AUTORI: Viti Daniele, Pietro Broccolo, Ugolini Riccardo
NOME PROGETTO: WebClient
DESCRIZIONE PROGETTO:
Il progetto consiste nel misurare la temperatura dell'aria
tramite un sensore analogico LM35DZ ed inviare il dato ad un WebServer Apache
attraverso un ChipKit Ethernet Shield ed un cavo Ethernet.
ULTIMO AGGIORNAMENTO: 0.1.4 , IN DATA: 22/03/2013
VERSIONE: 0.1.4
CARATTERISTICHE DEGLI AGGIORNAMENTI:
0.1.1
1) Invio del valore tramite un potenziometro lineare 10Kohm
2) Presentazione sul display presente, ma parziale
;
0.1.2
1) Inseriti metodi di notifica visiva (LED rosso)
2) Stampa di display migliorata ed ordinata
3) Inserite variabili di connessione
4) Inserita stampa delle variabili di connessione su display e seriale
;
0.1.3
1) Sostituito potenziometro lineare 10Kohm con sensore LM35DZ
2) Inserita formula per conversione valore analogico a grado centigrado
;
0.1.4
1) Aggiunti 2 LEDs RGB per le notifiche visive (STATUS e SERIALE)
2) Inserito il codice associato ai led (dettagli in "NOTIFICHE VISIVE (0.1.4)")
NOTIFICHE VISIVE (0.1.3):
- Connessione in corso: Il LED lampeggia velocemente mentre il client tenta la connessione (10msec)
- Connesso Acceso: Il LED rosso rimane in stato di ON, ma presenta un leggerissimo stato di OFF ad inzio ciclo (100msec)
- Disconnesso Acceso: Il LED rosso rimane in stato di OFF, ma presenta un leggerissimo stato di ON ad inzio ciclo (100msec)
- Connesso Spento: Il LED rosso rimane in stato di OFF permanente
- Disconnesso Spento: Il LED rosso rimane in stato di OFF permanente
NOTIFICHE VISIVE (0.1.4):
- Connessione in corso: Il LED RGB STATUS alterna TUTTI I COLORI velocemente (10sec)
- Connesso Acceso: Il LED RGB rimane acceso sul colore VERDE
- Disconnesso Acceso: Il LED RGB rimane acceso sul colore ROSSO
- Connesso Spento: Il LED RGB rimane acceso sul colore BLU
- Disconnesso Spento: Il LED RGB diventa di colore BIANCO
COMPONENTI:
;------------------------------------------------------------------------
;LCD Module Hitachi HD44780 4 righe * 20 colonne
;ARD.Pin Simbolo Livello Funzione
;=== === ======= ======= ========
; Gnd 1 Vss - 0V
; +5V 2 Vdd - +5V
; 3 Vo - 0..5V 20Kohm trimmer
; 8 4 RS H/L H: Input Dati
; 6 6 E H,H->L Attiva il segnale
; 5 11 DB4 H/L D <---> Bus a 4 fili
; 4 12 DB5 H/L A <--->
; 3 13 DB6 H/L T <--->
; 2 14 DB7 H/L A <--->
; +5V 15 - - + Retroilluminazione LED
; Gnd 16 - - - Retroilluminazione LED
;------------------------------------------------------------------------
;Temperature Centigrade Sensor LM35DZ
____________________
\ LM35 /
| DZ |
\ ___ __ ___ /
| Gnd Vo Vdd |
\__________/
;------------------------------------------------------------------------
;LED Rosso Standard e Resistore 10 Kohm
Gnd -[10Kohm]- Gnd -D- Vss
*/
const int analogInPin = A0; // Input analogico dove è collegato il sensore/potenziometro
float sensorValue = 0; // Valore letto dal sensore/potenziometro
float outputValue = 0; // Valore di output analogico
#include <LiquidCrystal.h>
#include <chipKITEthernet.h>
// LCD
#define rs 8
#define enable 6
#define d4 5
#define d5 4
#define d6 3
#define d7 2
#define ROW 4
#define COL 20
int i = 0;
int red = 78;
int green = 79;
int blue = 80;
int red2 = 81;
int green2 = 82;
int blue2 = 83;
int buzzer = 84;
byte mac[] = { 0x00,0x18,0x3E,0x00,0xFB,0x43 }; // inserire l'indirizzo di mac
byte ip[] = { 192,168,1,4 }; // Inserire l'indirizzo IP
byte gateway[] = { 192,168,1,1 }; // Inserire l'indirizzo IP del Gateway
byte subnet[] = { 255,255,255,0 }; // Inserire la subnet relativa alla classe di rete utilizzata
/*byte server[] = { 192,168,1,2 }; // Inserire l'IP del server al quale inviare i dati*/
byte dns1[] = {8,8,8,8};
byte dns2[] = {8,8,4,4};
const char * server = "www.google.com";
Client client(server, 80);
/*Client client(server, 80); // Inserire la porta attraverso la quale ci si vuole connettere*/
LiquidCrystal lcd(rs, enable, d4, d5, d6, d7); // Imposta i pins dello schermo LCD 20x4
void setup() {
analogWrite(buzzer, 255);
delay(150);
analogWrite(buzzer, 0);
Serial.begin(115200);
lcd.begin(COL, ROW); // LCD 20 colonne 4 righe
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(blue2, OUTPUT);
pinMode(green2, OUTPUT);
lcd.clear();
lcd.setCursor(0,0);
Serial.println("Connessione in corso");
for(int i = 5; i > 0; i--) { // Cicla per far blinkare il led velocemente mentre l'arduino tenta la connessione
lcd.clear();
lcd.print("Connessione in corso");
analogWrite(red, 255);
delay(150);
analogWrite(red, 0);
analogWrite(green, 255);
delay(150);
analogWrite(green, 0);
analogWrite(blue, 255);
delay(150);
analogWrite(blue, 0);
analogWrite(red, 255);
Serial.println(i);
lcd.setCursor(0,2);
lcd.print(i);
}
Ethernet.begin(mac,ip,gateway,subnet,dns1,dns2);
client.connect();
// se la connessione è disponibile scrive "connesso"
if (client.connected()) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Connesso!");
Serial.println("Connesso!");
// Esegue la richiesta HTTP
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
analogWrite(red, 0);
analogWrite(blue, 0);
analogWrite(green, 255);
analogWrite(buzzer, 255);
delay(100);
analogWrite(buzzer, 0);
delay(50);
analogWrite(buzzer, 255);
delay(100);
analogWrite(buzzer, 0);
delay(1000);
}
else {
// se la connessione non è disponibile scrive "Connessione Fallita"
lcd.clear(); // Pulisce il display
lcd.setCursor(0,0); //Setta il cursore del display a Colonna=0 e Riga=0
lcd.print("Connessione Fallita");
Serial.println("Connessione Fallita");
analogWrite(green, 0);
analogWrite(blue, 0);
analogWrite(red, 255);
analogWrite(buzzer, 255);
delay(1000);
analogWrite(buzzer, 0);
delay(2000);
}
}
void loop() {
Serial.read();
if(Serial.available() > 0)
{
analogWrite(red2, 0);
analogWrite(blue2, 0);
analogWrite(green2, 255);
}
else
{
analogWrite(green2, 0);
analogWrite(blue2, 0);
analogWrite(red2, 255);
}
// Se il server invia dati li cattura e li scrive sullo schermo in via sepeciale
if (client.available()) {
char c = client.read();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(c);
}
if(client.available()){
sensorValue = analogRead(analogInPin); // Legge il valore analogico da "A0"
sensorValue = ((5.0 * sensorValue * 100.0)/1024.0)-7.6; // Converte il valore analogico in gradi celsius
if(sensorValue>0 && sensorValue<50){
lcd.setCursor(0,0);
lcd.clear();
lcd.print("Temp = ");
lcd.print(sensorValue);
lcd.print(" ");
lcd.print((char)223);
lcd.print("C");
Serial.println(sensorValue);
// ------------------------------------------ CONNESSIONE -------------------------------------- //
if (client.connected()) {
lcd.setCursor(0,2);
lcd.print("Connesso al server!");
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
analogWrite(red, 0);
analogWrite(blue, 0);
analogWrite(green, 255);
}
if (!client.connected()) {
lcd.setCursor(0,2);
lcd.print("Disconnesso");
client.stop();
analogWrite(green, 0);
analogWrite(blue, 0);
analogWrite(red, 255);
}
// --------------------------------------------------------------------------------------------- //
}
else{
analogWrite(buzzer, 255);
delay(100);
analogWrite(buzzer, 0);
analogWrite(red, 0);
analogWrite(green, 0);
analogWrite(blue, 255);
delay(5);
lcd.setCursor(0,0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Spento" );
if (client.connected()) {
lcd.setCursor(0,2);
lcd.print("Connesso al server!");
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
analogWrite(red, 0);
analogWrite(blue, 0);
analogWrite(green, 255);
}
if (!client.connected()) {
lcd.setCursor(0,2);
lcd.print("Disconnesso");
analogWrite(green, 0);
analogWrite(blue, 0);
analogWrite(red, 255);
}
}
analogWrite(red2, 0);
analogWrite(blue2, 0);
analogWrite(green2, 0);
delay(1000);
}
else{
Serial.println("Riconnessione in corso");
for(int i = 5; i > 0; i--) { // Cicla per far blinkare il led velocemente mentre l'arduino tenta la connessione
lcd.clear();
lcd.print("Riconnessione in corso");
analogWrite(red, 255);
delay(150);
analogWrite(red, 0);
analogWrite(green, 255);
delay(150);
analogWrite(green, 0);
analogWrite(blue, 255);
delay(150);
analogWrite(blue, 0);
analogWrite(red, 255);
Serial.println(i);
lcd.setCursor(0,2);
lcd.print(i);
}
client.connect();
}
}
Mon, 25 Mar 2013 13:36:18 +0000
UP PLEASE!!