«

»

Dic 02

Stampa Articolo

Arduino Yun Bridge

Continuo a fare esperimenti con la mia Arduino Yun Bridge che come sai è la libreria messa a disposizione dal sito arduino.cc per accedere ai pin Arduino dall’interfaccia http e non solo.

arduino yun bridge

La libreria arduino yun bridge semplifica la comunicazione tra la parte Linino della Yun e la componente Arduino cu cui la scheda è dotata.

Ti suggerisco di leggere la pagina dedicata alla libreria Bridge per comprendere tutte le cose che puoi farci.

Leggi la pagina ufficiale arduino dedicata alla liberia arduino yun bridge e scopri che per poter utilizzare la libreria è necassaio disabilitare la richiesta password sulla Yun per il REST:

arduino yun bridge RESTDisabilita la password per REST sull’arduino yun bridge

Per disabilitare la richiesta password nella modalità REST parti dal collegare la Yun al computer e collegarti mediante WiFi alla rete creata dalla scheda stessa:

arduino yun wifi connectuna volta riconosciuta la rete wifi puoi accedere dal tuo browser preferito all’indirizzo http://arduino.local e seguire i passi indicati in questo tutorial per arricare al pulsante “configure”:

arduino yun configurecliccando sul pulsante “CONFIGURE” accedi alla sezione di configurazione dell’arduino yun in fondo alla pagina trovi la sezione relativa a REST ed alla richiesta password, puoi impostarla come mostrato in figura e salvare:

arduino yun REST api configal termine del restart la tua arduino yun bridge è pronta per ricevere comandi dal browser con la sintassi indicata nella pagina ufficiale:

http://myArduinoYun.local/arduino/digital/13/1

prima però dovrai caricare lo sketch di esempio arduino yun bridge:

arduino yun select example

Lo sketch arduino yun bridge

li sketch di esempio dell’arduino yun bridge si presenta così:

arduino yun bridge exampleLa descrizione di questo esempio la puoi leggere sul sito ufficiale arduino.

Carica lo sketch sul tuo arduino yun e sei pronto per collegarti via browser alla tua arduino yun bridge.

Connessione dei pin e led all’arduino yun

Nella versione Yun i pin non sono serigrafati sul circuito come avviene per le altre schede arduino ma sono riportati lateralmente agli headers di connessione dei pin:

arduino yun pinla posizione di ciascun pin è identica a quella dell’arduino uno o dell’arduino leonardo per cui puoi far riferimento a quelle shield per conoscere la posizione dei pin.

Collega un led al pin 13 ed esegui il primo esperimento di accensione del led dal browser.

Accendere un led da browser

con l’arduino Yun bridge troverai davvero semplice l’accensione del led collegato al pin 13, ti basta aprire il tuo browser preferito: ( Chrome, Firefox, IExplore, … ) e digitare:

http://arduino.local/arduino/digital/13/1

arduino yun bridge pin 13 HIGHla pagina web cambia restituendo il messaggio riportato in figura ed il led si accende.

Allo stesso modo ti basta scrivere:

http://arduino.local/arduino/digital/13/0

e il led rosso si spegne mentre sul browser leggi il messaggio riportato in figura:

arduino yun bridge pin 13 LOWMa le meraviglie dell’arduino yun bridge non finiscono semplicemente qui, anche i pin PWM ossia 3,5,6,9,10 ed 11 possono essere controllati sia in digitale sia in analogico.

Per usare la modalità PWM dei pin 3,5,6,9,10,11 l’url da inserire nel browser è il seguente:

http://arduino.local/arduino/analog/11/255

che ha come effetto l’accensione del led alla sua massima potenza:

arduino yun bridge pin 11 255restituendoti a video il messaggio che vedi sulla parte destra dell’immagine a conferma della corretta impostazione.

Ti starai chiedendo che differenza ci sia tra accendere un led in modalità digital o in modalità analog se il led si accende sempre alla massima intensità, ebbene nella modalità analog come avviene per gli sketch senza la libreria bridge puoi anche diminuire l’intensità luminosa del led ed ad esempio se scrivi:

http://arduino.local/arduino/analog/11/128

ottieni che il led è acceso alla metà della sua intensità luminosa, anche se in foto non si vede benissimo quando lo proverai con la tua arduino yun bridge ti accorgerai della differenza:

arduino yun bridge pin 11 128e se vuoi spegnere un led puoi usare il seguente comando:

http://arduino.local/arduino/analog/11/0

che ha come effetto lo spegnimento totale del led:

arduino yun bridge pin 11 0avrai già intuito che questa semplice libreria di comunicazione ha delle enormi potenzialità e che non un po di fantasia e conoscenza di html, cgi ecc.. potrai facimente realizzare dei progetti di domotica o altri progetti controllati da smartphone, pc o tablet.

Buon diverimento !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/arduino-yun-bridge.html

24 comments

1 ping

Vai al modulo dei commenti

  1. diego

    ottimo articolo. sono anch’io interessato a Yun, ma ho letto brutte recensioni in termine di lentezza di risposta dell’interfaccia Rest Api.
    In pratica volevo utilizzare una app per iPhone tipo NetIo (http://netio.davideickhoff.de/projects/312) per pilotare un robot via wifi, ma sembra che i tempi di risposta siano nell’ordine dei secondi, lo stesso autore di NetIo segnala questo problema nelle sue pagine.
    Dalle tue prove, quanto ti sembra reattivo il sistema? dal momento in cui nel browser apri la connessione al momento in cui il led si accende, quanto passa ? siamo nell’ordine di pochi ms, di frazioni di secondo o secondi interi? se fai un script da shell che invia ciclicamente i comandi http di accensione e spegnimento del led (es. usando wget), quale massima frequenza riesci a raggiungere (a spanne ovviamente…) ?
    per questo stavo pensando di adottare una più tradizionale leonardo con un micro access point (es tplink) montato affianco e lavorare direttamente con comandi udp.

    grazie
    ciao
    Diego

    1. Mauro Alfieri

      Purtroppo Diego i tuoi dubbi sono fondati, i tempi di reazione della REST API sono alquanto lenti, nell’ordine dei secondi.
      Penso che questa lentezza la renda poco utilizzabile per il controllo di un robot.

      Nella realtà ti dirò che forse è poco tollerabile anche per un impianto domotico il fatto che passi qualche secondo tra il comando e l’effetto.
      Chissà se compilando un kernel adhoc le cose migliorano.

      Mauro

  2. Sergio

    Prima di tutto complimenti e grazie per tutte le informazioni che ci dai.
    Ottimo il tuo sito che mi serve per riferimento in moltissime occasioni.
    Ho da pochi giorni Arduino Yun, e anche grazie a Te sono riuscito a fare cosette…
    C’è molto da provare e studiare vorrei farti una domanda:
    Sto progettando una piccola stazione meteo e penso di far registrare i dati dallo yun e perchè no inviarli sul web da dove possono essere visti ..
    Per ora la cosa in local sembra funzionare non riesco a vedere come pubblicare sul web la pagina html del nostro yun. O forse è meglio costruire una pagina web e far si che yun invi dati a questa.
    Ho visto che temboo ha un serviszio Mysql …
    Be insomma pensi sia fattibile l’idea?
    Grazie comunque.
    Sergio
    PS. Vorrei cliccare su gli sponsor ma non ho visto pubblicità!?

    1. Mauro Alfieri

      Ciao Sergio,
      il tuo progetto é interessante 🙂
      Come ho spesso scritto esistono tanti modi di scrivere uno sketch già quando tutti gli elementi sono definiti e chiari.

      La cosa si complica se prima non hai chiari i passaggi singoli del progetto.
      Tu vorresti che i dati risiedessero sulla Yún o su un servizio web?
      La pagina HTML che salva i dati nel DB deve risiedere in locale?
      Il DB vuoi che sia on-line? Che servizio vuoi utilizzare per salvare i dati?

      Trovi nel blog molti articoli sul salvataggio dati on-line con diverse tecniche senza la Yún, ma puoi usare gli stessi concetti anche con la Yún.

      Mauro

      P.S.: le pubblicità sono sul lato destro della pagina.

      1. Sergio

        Grazie per la sollecita risposta.

        OK! ho capito prima devo definire meglio il progetto.
        Anche perchè ho già un dominio registrato ed un sito web con Sql ( 100Mb), poco o sotto utilizzato.
        Vedo se integrare in quel sito la stazione meteo.

        Grazie ancora ti farò sapere quando sono arrivato a sviluppi, in ogni caso pubblico sempre i miei esperimenti sul mio blog.
        A presto
        Sergio

        1. Mauro Alfieri

          Bravo Sergio,
          ho letto il to blog ed è molto carino 🙂
          Continua così…

          Mauro

  3. Umberto

    Ciao, volevo chiederti, ipotizzando di voler leggere i dati provenienti da un sensore e voler eseguire un elaborazione tramite python , come faccio a “leggere” i valori di questi sensori tramite python?
    non riesco a trovare un esempio completo che da un modulo python io possa “comandare” uno skech arduino tramite bridge.
    grazie in anticipo

    1. Mauro Alfieri

      Ciao Umberto,
      purtroppo non conosco python ma se tu sei esperto potrai di certo verificare come fa la libreria a leggere tali valori e riprodurne il codice in python.

      1. Umberto

        Dopo molte ricerche devo dire che sono un pochino deluso, praticamente tutti indicano che i due processore sono connessi in seriale(avete mai visto un comando seriale tra i due inquilini?) praticamente la libreria che dovrebbe unire i due pezzi della yun accetta richieste di tipo url non seriali
        es.
        http://myarduino.local/arduino/analog/0
        oppure
        http://localhost/arduino/analog/0

        francamente mi aspettava che, se fossero veramente collegati in seriali, un serial.write.
        la mia domanda, quidi, diventa:
        se curl e python, per aver accesso ai valori dei sensori devono effettuare una richiesta di tipo url, in che senso i due processori sono collegati in seriale? come si può sfruttare questa connessione ?

        grazie

        1. Mauro Alfieri

          Ciao Umberto,
          penso tu stia facendo confusione tra la comunicazione tra i due processori ed gli interpreti.
          Curl esegue chiamate di tipo Url che un interprete python presente sulla yùn intercetta via http e trasforma in comandi di tipo seriali con cui interroga lo sketch.
          Nello sketch devi usare la libreria Bridge.h che permette la comunicazione dei valori letti sui pin con il metodo url.

          1. Umberto

            hai ragione, ho mischiato le due cose.adesso ho capito come funziona.
            grazie mille
            Umberto

          2. Mauro Alfieri

            Bene Umberto 🙂

  4. Lorenzo

    Ciao Mauro,
    esiste un modo più diretto per far comunicare il pc e lo Yun in Wifi senza utilizzare REST?
    Grazie

    1. Mauro Alfieri

      Ciao Lorenzo,
      probabilmente puoi scriverti un tuo sistema di comunicazione considera che REST è un approccio logico alla comunicazione simile ai WebService SOAP usati fino a qualche anno fa.

  5. Giuseppe

    Ciao e grazie per il tuo tutorial. Stranamente però non riesco a far funzionare altri pin oltre il 13. Mettendo un Led nel 4, per esempio, l’interfaccia web (così come yun buddy) mi da il messaggio di conferma sullo stato del pin ma il Led non si accende comunque… Il circuito (Led+ resistenza) è corretto perché usando uno sketch diretto (via usb) tutto funziona. Dove sbaglio?
    Grazie
    Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      mi sembra strano che il pin 13 funzioni e gli altri pin no in quanto mi viene in mente l’abilitazione della modalità “REST API ACCESS” ma se ti funziona il pin 13 vuol dire che le hai abilitate.
      Che linea http chiami?

  6. Giuseppe

    Grazie mille per la rapida risposta. In raealtà ho risolto: girovagando un po’ per la rete ho trovato questo sito (http://www.open-electronics.org/using-rest-with-arduino-yun/) dal quale ho ricavato l’importante informazione che prima bisogna definire il pin come output mediante la seguente funzione: arduino.local/arduino/mode/4/ output.
    Spero che questa informazione possa essere utile anche ad altri .
    Grazie ancora e complimenti per la passione per il tuo lavoro che traspare

    1. Mauro Alfieri

      Ottimo Giuseppe !!!
      Non ricordavo di averlo fatto.

  7. Nico

    Ciao Mauro,
    ti ho incrociato all’Arduino Day ma non sono riuscito a presentarmi di persona. Sei un mito! Ti stavo per scrivere un inbox ma ho deciso poi di intervenire qui in calce a questo tuo post, visto che la questione potrebbe essere interessante per altri makers che ti seguono.
    Sto realizzando un prototipo molto elementare di integrazione Arduino Uno + Ethernet Shield con Angular.js. Per ora tutto fila tranquillo, tramite la libreria aREST faccio esporre ad un endpoint da Arduino delle api in JSON e con la mia applicazione in Angular vado a prendermi di volta in volta ciò che mi serve in maniera asincrona. È tutto praticamente real-time e molto responsivo. Ho notato però che quando i client che accedono all’endpoint REST iniziano ad essere più di 5 (per ora solo in rete locale), la mia app inizia a laggare. Adesso giunge la mia domanda: secondo te il calo di performance è legato alla poca potenza di calcolo di Arduino? Anche se, tecnicamente, le richieste di diversi client all’ endpoint non dovrebbero pesargli così tanto, si tratta di semplici oggetti JSON che lui mi genera agnosticamente a quante request arrivano all’endpoint che lui genera.
    Potrebbe essere la poca potenza del mio ambiente di sviluppo (una IDE online da poche centinaia di MB di RAM che hosta l’applicazione Angular in attesa di deployarla su un server più potente)?
    Sto sbagliando il modo di pensare a qualcosa o convieni con la mia idea che il primo colpevole sia Arduino? La Yùn potrebbe dall’altro lato ottimizzare il processo di creazione REST o resta poco performante per un approccio con del Javascript asincrono, secondo te?
    Attendo il tuo parere quando ne avrai tempo e per ora un abbraccione!
    Vai avanti così che sei grande
    Nico

    1. Mauro Alfieri

      Ciao Nico,
      quesito molto interessante, mi spiace non ci siamo conosciuti all’arduino day.
      Non conosco Angular.js e le risorse che richiede per cui non saprei dirti se possano essere pochi i MB di Ram a tua disposizione.
      Tenderei a dire che il principale indiziato è arduino in questo scenario, tuttavia senza poter eseguire una analisi sul progetto mi è impossibile darti un indicazione valida.
      Prova ad eseguire qualche test visualizzando magari i log del webserver per capire se ci siano rallentamenti dovuti a lui od arduino.

  8. Davide

    Ciao Mauro, complimenti per le guide che con passione e dedizione ci fornisci e lasci ogni volta!
    Io ho da poco in possesso arduino yun, ho configurato il tutto è ho provato l’esempio bridge. Purtroppo però
    Non riesco in nessun modo a farlo funzionare.. Vorrei chiederti una cosa. Non avendo una vera connessione
    Internet utilizzo uno di quei router portatili Wi-Fi che instaurano quindi una rete Wi-Fi tramite cui in locale
    Provo a sperimentare un po. Potrebbe essere questo il problema? O il fatto che questo piccolo router possa
    Avere qualche porta chiusa? Purtroppo nemmeno l’esempio temperatureWebPanel funziona.
    Grazie per l’attenzione

    1. Mauro Alfieri

      Ciao Davide,
      per scongiurare che il problema possa essere il tuo router usa la rete WiFi di default creata dalla Yun.

      1. Davide

        Grazie della celere risposta Mauro, utilizzando la rete dello yun, è tutto uguale ma anziché “arduino.local” inserisco l’IP dello yun? O resta uguale perché comunque il occhi e lo yun sono nella stessa rete? Grazie, ti farò sapere

        1. Mauro Alfieri

          Ciao Davide,
          arduino.local è la rete della YUN, probabilmente non sei connesso ad essa e cerchi di usarla.

  1. Arduino Yun Bridge curl - Mauro Alfieri Elettronica Domotica Robotica

    […] « Arduino Yun Bridge […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>