Comandare un led via internet con Miupanel e Arduino

Ciao a tutti!


Il tutorial di oggi è un approfondimento della recensione di Miupanel del mese scorso.
Infatti oggi andremo un passo oltre, vedremo collegarci al Miupanel tramite internet se per qualsiasi motivo non riuscite o non volete utilizzare la sua funzione Cloud,
e quindi da qualunque parte del mondo (operatore telefonico permettendo! ;) ).







Quello che andremo a fare oggi è un semplice progettino con 2 led,
che andremo a comandare da uno smartphone Android.
In questo faremo collegare il Miupanel al router di casa, e lo smartphone alla rete dati.
La cosa in cui ho avuto più difficoltà, data la mia non eccelsa conoscenza nel campo delle reti, è stata riuscire a raggiungere il pannellino da remoto.
Cercherò di spiegare il tutto nel modo in cui l'ho capito io, quindi prego gli informatici di non accanirsi troppo su di me ;) comunque ogni precisazione è ben accetta!


Partiamo dalle basi quindi, ciascuno di noi è visto dal mondo con un indirizzo univoco, l'indirizzo IP (cliccando qui potete scoprire il vostro).
Solitamente noi non abbiamo assegnato un IP "statico", ma abbiamo un IP che "cambia continuamente", questo per trovare in rete il mio Miupanel può essere un problema, perchè se il mio Miupanel è connesso al mio router non so mai a che indirizzo cercarlo.

Per ovviare a questo problema si possono utilizzare i DDNS,
ad esempio se possedete un router D-Link potete registrarvi gratuitamente al sito www.dlinkddns.com, funzione invece purtroppo a pagamento per possessori di altri router.
Facendo questo otterrete un indirizzo univoco, non in numeri ma in lettere.
Ad esempio otterrete qualcosa di simile a: pippo.dlinkddns.com
Fatto questo dovete aprire le impostazioni del vostro router e cercate la parte che riguarda i DDNS,
mettete i dati che avete usato nel sito dlinkddns in questo modo:




Fatto questo possiamo fare una semplice prova per vedere se abbiamo fatto tutto nel modo giusto,
abiliteremo la funzione "Gestione Remota" mettendo come porta 80 (vedi printscreen sotto).
Adesso andate al sito http://anonymouse.org/anonwww.html e mettete nel campo l'indirizzo ottenuto dal sito dlinkddns.com (ad esempio pippo.dlinkddns.com) se tutto ha funzionato dovrebbe aprirsi la pagina iniziale del vostro router.
Ricordatevi alla fine della prova di disattivare la gestione remota (per motivi di sicurezza)




Ora prendete il vostro Miupanel preparato già come nel precedente tutorial, collegatevi ad esso con il vostro smartphone alla rete wireless creata da lui.
Aprite l'app uPanel, collegatevi al modulo e poi aprite le impostazioni.
Modificatele come le seguenti:




Il numero delle porte può essere un numero qualsiasi fino a 65536, l'unica accortezza è verificare che la porta non sia già utilizzata da un'altro dispositivo.
Un tool comodo per testare le porte in uso è questo sito:
https://www.grc.com/x/ne.dll?bh0bkyd2 (cliccate il tasto procedi in basso per continuare)

fatto questo andate nella schermata iniziale dell'app e configurate il pannello cliccando sugli indirizzi ip, come IP interno lasciate quello che vi propone lui, come IP esterno scrivete l'indirizzo ottenuto dal sito dlinkddns.




Ora dovete tornare nelle impostazioni del vostro router e creare una regola per consentire al MiuPanel di comunicare con l'esterno della rete




Fatto questo dovreste finalmente riuscire a comandare il vostro pannellino dovunque voi siate!



Ecco un esempio per provare il tutto, esempio simile a quello della scorsa volta.
Per prima cosa realizzate questo collegamento:



Ora caricate questo codice nell'Arduino, ricordatevi di scollegare il cavo che entra nel Pin 0 di Arduino prima del caricamento, altrimenti non andrà a buon fine.


  1. int led1 = 2;
  2. int led2 = 3;
  3. void setup()
  4. {
  5.   Serial.begin(57600);       // Inizializzazione della porta seriale (57600 è la velocità di comunicazione)
  6.   pinMode(led1, OUTPUT);
  7.   pinMode(led2, OUTPUT);
  8.   delay(3000);                // ritardo per attendere l'avvio di uPanel
  9.   Serial.println("");        // cancella eventuali messaggi parziali rimasti
  10.   Serial.println("$P:{%100,20^D!488;T*13:&#956Panel - 2 led in internet, danielealberti.it;}{^-{%90,20^W1:0;L1G:0:LED1;}{%90,20^W2:0;L2G:0:LED2;}}");
  11.   //visita http://www.miupanel.com/Panel-Design/ONLINE-PANEL-SIMULATOR
  12.   //incolla la riga sopra senza "$P: e le virgolette finali, vedrai l'anteprima del pannello.
  13. }
  14. String Msg;
  15. void loop()
  16. {
  17.   int c;
  18.   while ((c = Serial.read()) > '\n') Msg += (char) c;  // leggi i caratteri via seriale e componi il messaggio, fino alla nuova linea '\n'
  19.   if (c == '\n')
  20.   {
  21.     if (Msg.equals("#W10"))  // Se il messaggio ricevuto è "#W10" spegni il led 1 ed invia "#L10" al uPanel
  22.     {
  23.       Serial.println("#L10");
  24.       digitalWrite(led1, LOW);
  25.     }
  26.     if (Msg.equals("#W11"))  // Se il messaggio ricevuto è "#W11" accendi il led 1 ed invia "#L11" al uPanel
  27.     {
  28.       Serial.println("#L11");
  29.       digitalWrite(led1, HIGH);
  30.     }
  31.     if (Msg.equals("#W20"))  // Se il messaggio ricevuto è "#W20" spegni il led 2 ed invia "#L20" al uPanel
  32.     {
  33.       Serial.println("#L20");
  34.       digitalWrite(led2, LOW);
  35.     }
  36.     if (Msg.equals("#W21"))  // Se il messaggio ricevuto è "#W21" accendi il led 2 ed invia "#L21" al uPanel
  37.     {
  38.       Serial.println("#L21");
  39.       digitalWrite(led2, HIGH);
  40.     }
  41.     Msg = "";
  42.   }
  43. }


Finito! come al solito lasciate un commento qui sotto se avete dubbi,
se avete modelli/marche diverse di router purtroppo non riuscirò ad aiutarvi in ogni caso per la configurazione di questi dispositivi Google è il nostro migliore amico ;)


Ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

9 commenti:

  1. Questo commento è stato eliminato dall'autore.

    RispondiElimina
    Risposte
    1. Ciao Carlos, purtroppo non so aiutarti su questo, contatta l'assistenza di miupanel su www.miupanel.com
      ciao!

      Elimina
  2. Ottimo tutorial... sto imparando ad usare arduino solo da poche settimane anche con miupanel ed ho realizzato i tuoi esempi. Ho solo un dubbio...
    Volevo abbinare a questo tuo progetto ed alla accensione del l'ex mandare una notifica push al cellulare ma non sono riuscito ad unire i due tutorial.... mi sai aiutare?
    Grazie mille
    Mic

    RispondiElimina
  3. Volevo ad esempio aggiungere un tasto o una foto resistenza che al valore HIGH invia la notifica al cellulare.
    O ad esempio all'accensione del led oltre a illuminarsi il led sulla App mi invia una notifica push
    Ancora complimenti.....progetti fatti e commentati in maniera perfetta.
    Mic

    RispondiElimina
    Risposte
    1. ciao, ti consiglio di partire dal progetto della notifica:

      http://www.danielealberti.it/2016/10/notifiche-sullo-smartphone-con-arduino.html

      e da quello modificare l'evento con cui si richiede l'ora (e poi la notifica). Per inserire una fotoresistenza va collegata ad un pin AnalogIn, poi leggi il valore con la funzione analogRead e con un "if" testi se il valore è sopra una certa soglia. Se è vero allora invii la notifica.

      Ciao!

      Elimina
    2. ok grazie mille... la notifica su iPhone non mi funziona ma posso visualizzare i valori sulla APP o scrivere su un DB MySql tramite php.... perfetto!

      Elimina
  4. Ciao Daniele, Innanzituto complimenti per il tuo blog fonte inesauribile di spiegazioni ed idee...bellissimo....
    Volevo chiederti ma per implementare piu interruttori come posso fare? le ho provate tutte... ma nulla... sono disperato...
    Grazie mille
    Davide

    RispondiElimina
  5. Questo commento è stato eliminato dall'autore.

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post