Pages: 1 2 [3] 4   Go Down
Author Topic: Sensors.requestTemperatures()-pag 3-rallenta molto il ciclo in wifi... perché?  (Read 1977 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2309
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
qui un paio di link con qualche tips:
http://oskarwicha.blogspot.com/2011/08/source-code-optimization-tips-for-atmel.html
http://liudr.wordpress.com/2011/03/07/optimizing-your-program/

mi ero salvato dei link al riguardo, appena li ritrovo li posto.
Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

questa è bella... se inserisco la batteria all'rtc non riesco più a raggiungere l'ip di arduino... smiley-mad
Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

o meglio, muore proprio il wifi.... si connette ma non rende la pagina web... ragazzi, il wifi è una cosa impossibile rispetto al programma
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 170
http://www.open-electronics.org
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sotto http://code.google.com/p/wifi-shield-oe/
trovate anche la libreria aggiornata per la wifi shield compatibile con Arduino IDE 1.0

La descrizione della shield su open-electronics.org
http://www.open-electronics.org/arduino-wifi-shield/
Logged


Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non riesco a farlo funzionare, mannaggia... mi sorge spontanea la domanda: ma Arduino è in grado di eseguire un programma e contemporaneamente eseguire servizi internet (che può essere la pagina web)??

se va avanti così mi comprerò un altro arduino solo per i servizi wifi cavoli....
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 170
http://www.open-electronics.org
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se intendi web server si:

http://www.open-electronics.org/arduino-wifi-rgb-lamp-ikea-dudero-modding/

Questa è una lampada RGB il cui colore può essere scelto da una pagina web. La connessione della lampada alla rete è wifi.
Logged


Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti di nuovo,

ho trovato uno dei problemi: se nella scrittura della pagina web richiedo ad arduino di stampare una temperatura, il tempo di attesa per visualizzare la pagina html è infinitamente più lungo; come posso risolvere?

questo è un esempio semplice che rende l'idea:

Code:
#include <WiServer.h>

#define WIRELESS_MODE_INFRA    1
#define WIRELESS_MODE_ADHOC    2
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 8

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Wireless configuration parameters —————————————-
unsigned char local_ip[] = {192,168,1,120};    // IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1};    // router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0};    // subnet mask for the local network
const prog_char ssid[] PROGMEM = {"Cisco Home 2,4 gHz"};        // max 32 bytes

unsigned char security_type = 3;    // 0 – open; 1 – WEP; 2 – WPA; 3 – WPA2

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"xxx"};    // max 64 characters

// WEP 128-bit keys
// sample HEX keys
prog_uchar wep_keys[] PROGMEM = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3
};

// setup the wireless mode
// infrastructure – connect to AP
// adhoc – connect to another WiFi device
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
// End of wireless configuration parameters —————————————-


// This is our page serving function that generates web pages
boolean sendMyPage(char* URL) {
   
        WiServer.print("<html>");
        WiServer.print("<br><br>Temperatura: ");
        WiServer.print(sensors.getTempCByIndex(0));
        WiServer.print("</html>");
        // URL was recognized
        return true;
    //}
    // URL not found
    return false;
}


void setup() {
 
  WiServer.init(sendMyPage);
  sensors.begin();
}

void loop(){

  sensors.requestTemperatures();
  WiServer.server_task();
  // delay(10);
   
}
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 170
http://www.open-electronics.org
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tieni presente che la libreria wifi invia 200 byte alla volta.
Pertanto se ad esempio la pagina è di 700 byte invia 200 + 200 + 200 + 100 byte... Quindi può servire un po' di tempo.
La tua pagina è comunque molto piccola, quindi dovrebbe caricarla molto più velocemente.
Logged


Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma quindi non c'è soluzione? io pensavo che occorresse usare un altro comando rispetto al " (sensors.getTempCByIndex(0)); " oppure prendere un altro accorgimento di modo che invece di richiedere la temperatura ai sensori, questi la forniscano diciamo ogni 5 secondi e che il valore venga mantenuto in memoria. cosicché, poi sul web, venisse pubblicato questo ultimo dato "statico" anziché avanzare richiesta, aspettare la risposta dal sensore e poi scrivere sulla pagina...
Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho calcolato i tempi di risposta da quando premo invio a quando si apre la pagina web: 14 secondi.... decisamente troppi
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 170
http://www.open-electronics.org
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nooooo troppo lento.
C'è qualcosa che non va.
Prova a mandare fuori un valore fisso.
Remmando la lettura del sensore
e anche il codice
Code:
sensors.requestTemperatures();
Logged


Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se gli metto un valore fisso la resa della pagina è istantanea...

cosa vuol dire "remmare"?
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 170
http://www.open-electronics.org
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Remmare (si forse un po' italianizzato...)  smiley-roll-blue  Volevo dire "commentare"
Se è più veloce allora fagli leggere la temperature nel loop e mettilo in una variabile che riporti quando viene chiamata la pagina.
Altrimenti lui deve caricare la pagina.... aspettare che il sensore gli restituisca la temperatura... caricare il resto della pagina...

Code:
void loop(){

  sensors.requestTemperatures();
  WiServer.server_task();
  temp= sensors.getTempCByIndex(0);
   
}
Code:
boolean sendMyPage(char* URL) {
   
        WiServer.print("<html>");
        WiServer.print("<br><br>Temperatura: ");
        WiServer.print(temp);
        WiServer.print("</html>");
        // URL was recognized
        return true;
    //}
    // URL not found
    return false;
}
Logged


Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

15 secondi e non mi scrive più i decimali.... smiley-mad
Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho fatto altre prove... sostanzialmente è il sensors.requestTemperatures(); che mi rallenta il ciclo... 14 o 15 secondi per caricare la pagina web... se lo tolgo, invece, è istantanea... come posso risolvere? ho cercato negli sketch di chi ha costruito delle stazioni meteo ma non ho trovato granché...
Logged

Pages: 1 2 [3] 4   Go Up
Jump to: