Personalizzare pagina web gestita da Arduino Uno

Ciao ragazzi,
come ho detto nella presentazione, vorrei realizzare un piccolo e semplice progetto di domotica. Utilizzo Arduino UNO.
Sto costruendo il plastico di un museo che vorrei tanto visitare e la mia idea è quella di poter comandare con Arduino:

5 led
5 sensori d'allarme (posizionati in prossimità dei quadri)
1 display
1 porta

Ho già lavorato sugli sketch dei led, del display e della porta. Per adesso vorrei concentrarmi su questi e lasciare per ultimi i sensori d'allarme, su cui poi vi farò un paio di domande.
Ho montato su Arduino l'Ethernet Shield per gestire tutto da web server. Ho creato un sito internet dedicato al museo, che nel menù ha la voce "Gestione". Cliccandoci sopra accedo alla pagina di controllo dei led.
La domanda è questa: come posso personalizzare al meglio questa pagina? Vorrei che fosse esteticamente bella. E' possibile lavorare sull'html dello sketch (inserendo sfondo e immagini) o questo può creare problemi nei tempi di elaborazione e particolari limitazioni? Quale strada mi suggerite?

Grazie mille per un vostro eventuale aiuto!

La via più semplice è quella di crearti un sito web online su uno dei tantissimi host gratuiti o all'interno ad un tuo spazio web e poi parlare con Arduino trasmettendogli unicamente i comandi da eseguire.
Le capacità di Arduino (RAM, potenza di calcolo) non permetto di gestire pagine molto elaborate.

Se fai una ricerca con parola chiave "domotica" qui sul forum trovi tantissimi altri progetti da cui prendere spunto.

PaoloP:
La via più semplice è quella di crearti un sito web online su uno dei tantissimi host gratuiti o all'interno ad un tuo spazio web e poi parlare con Arduino trasmettendogli unicamente i comandi da eseguire.
Le capacità di Arduino (RAM, potenza di calcolo) non permetto di gestire pagine molto elaborate.

Concordo in pieno.
Se conosci uno sputo di PHP può fare grandi cose.
Anche io all'inizio creavo una pagina html con arduino con gravi problemi di memoria. Imparati pochi comandi di PHP e preso uno spazietto web su Netsons ho fatto una cosetta appena più carina e decisamente più leggera per Arduino visto che tutta la gestione delle pagine è su server netsons ed arduino invia soltanto dati e riceve comandi.

Ciao ragazzi, innanzitutto grazie mille per avermi risposto.
Il fatto è che questo progetto dovrei poi presentarlo in una scuola, ed è per questo che preferisco fare tutto in locale, senza utilizzare uno spazio web.

Mi è venuta in mente una cosa però:
se io creo il mio bel sito in locale e ci metto dei bottoni, posso in qualche modo agganciare a questi bottoni il comando dello sketch, in modo tale che cliccandoci sopra mi si accendano i led, ma senza spostarmi da quella pagina ?

Io ci ho provato, ma nel migliore dei casi mi ha rimandato alla pagina Arduino creata dentro lo sketch. Vi posto fotografie e il pezzo di codice, così magari è tutto più chiaro.

1° fotografia: l'url che vedete in alto è quello che ho agganciato a un bottone presente nel sito.
2° fotografia: è la pagina che mi si apre cliccando sul bottone, cioè la pagina creata dentro lo sketch.

    //Generazione della pagina HTML
    P(htmlHead) =
    "<html>"
    "<head>"
    "<title>Museo Frida Kahlo Web controller</title>"
    "</head>"
    "<body>";

    server.printP(htmlHead);
    server.print("
<p align=\"center\"><img src=\"http://linuxmx.it/images/logo215px.png\" width=\"150\"></p><p align=\"center\"><table border=\"1\" width=\"500\" cellpadding=\"1\"cellspacing=\"1\" bordercolor=\"#0000FF\">

");


    if(pin8 == true)
      server.print("<tr><td style=\"color: red;background: #99CC33;\" valign=\"middle\" >PIN 1 ON</td><td>");
      
    else
      server.print("<tr><td style=\"color: black;\" valign=\"middle\" >PIN 1 OFF</td><td>");
      
    if(pin8 == false)
      server.print("<input type=\"button\" value=\"Accendi\" onclick=\"location.href='?pin8=ON'\">");
      
    else
      server.print("<input type=\"button\" value=\"Spegni\" onclick=\"location.href='?pin8=OFF'\">");
      
      server.print("</td></tr>");

Per i print con testo statico, sia Serial.print che Client.print usa la funzione F(), così prendi i valori dalla PROGMEM senza passare dal via... ops dalla RAM.
Esempio:

Serial.println("Hello World!");

diventa

Serial.println(F("Hello World!"));

Ho capito il concetto di far viaggiare i dati in seriale e mi sembra una buona idea (in pratica non ho nemmeno più bisogno della Ethernet Shield, giusto ?), ma non capisco come approcciarmi alla cosa.
Sapreste aiutarmi con un codice di esempio o comunque spiegandomi terra terra come fare ? E' il mio primo incontro con Arduino e non mi è tutto chiaro :blush:

Se per il tuo scopo va bene, puoi pensare di usare un'applicazione Android come interfaccia. C'è ne sono diverse che ti permettono di comunicare con la scheda ed interagire con il tuo sketch, puoi cercarle su Google Play. Io ti segnalo questa.

Saluti,
Dario.

Velenia:
Ho capito il concetto di far viaggiare i dati in seriale e mi sembra una buona idea (in pratica non ho nemmeno più bisogno della Ethernet Shield, giusto ?), ma non capisco come approcciarmi alla cosa.

Esatto.
Via seriale (vale il collegamento USB tra PC e Arduino) Il dialogo tra Arduino e il tuo programma su PC lo fai in base alla tue regole, ovvero ti crei un tuo protocollo.
Esempi, da PC spedisci dei comandi tipo "RA01", che vuol dire R leggi A analogico 01, Arduino dovrà rispondere con esempio "A01-1234#" ovvero Analogico 01 valore 1234 (è solo un esempio)
Vedi l'oggetto Serial in sezione Reference per Arduino
Da PC invece la gestione seriale dipende dal linguaggio che userai.

In un mio vecchio prodotto INOUT01 funzionava proprio come descritto da nid69ita

http://www.procommel.altervista.org/altri_prodotti.htm

lock:
eh si, pero' tocca uscire dalla propria lan privata ed accedere ad internet, e' questa faccenda che personalmente a me scoccerebbe un po'.

gusti =)

php cmq va fortissimo, sopratutto nelle ultime revisioni, prima (tanti anni fa) era una baracca-bidone =P

Hai ragione ma finché i dati non sono "sensibili" si può fare.
Ho il vantaggio di accedere alla mia pagina da ovunque e giocando con più pagine php e col db riesco ad inviare comandi (per esempio Accendi il mio PC ma potrebbe essere qualsiasi altra cosa possa fare Arduino) ad Arduino senza mostrare in chiaro i comandi (e quindi senza mostrare in chiaro il mio IP di casa) e senza poggiarmi ad un servizio del genere DynDNS o simili.

HTML 5 + MQTT over WebSocket = near real time.

Se ti va di studiare qualcosa di relativamente nuovo....