Come creare un'app Arduino per Windows 10 (per principianti assoluti)
Microsoft sta andando all in per Windows 10, finalmente realizzando il sogno di avere app che funzionano su più piattaforme. In combinazione con il supporto ufficiale di Arduino, hai a disposizione un nuovo e potente strumento: la possibilità di creare facilmente applicazioni Windows universali che hanno una connessione hardware con il mondo reale.
Ecco come iniziare, anche se non hai mai programmato un'applicazione per Windows prima.
Prima di continuare a leggere, dai un'occhiata alla demo di ciò che faremo.
Dovrei notare, non ho usato Visual Studio, o anche toccato C #, da circa 10 anni fa. Sto arrivando a questo dal punto di vista di una nuova installazione di Visual Studio, e avendo dimenticato tutto quello che so.
Se hai già abbastanza esperienza con la programmazione di app di Windows, o sei anche alla ricerca di un modo semplice per iniziare a programmare in Windows senza questa roba di Arduino, prova la guida di Ryan per creare una semplice app di Visual Basic Come puoi creare la tua app semplice con VBA Come si può fare la tua semplice app con VBA Per quelli di voi che amerebbero davvero essere in grado di scrivere la propria applicazione, ma non hanno mai digitato una singola riga di codice prima, ho intenzione di guidarvi facendo vostro proprio … Leggi di più . Programmazione assoluta I principianti potrebbero voler controllare la mia programmazione 101 Le nozioni di base della programmazione computerizzata 101 - Variabili e tipi di dati I fondamenti della programmazione per computer 101 - Variabili e tipi di dati Avendo introdotto e parlato un po 'di programmazione orientata agli oggetti prima e da dove proviene il suo omonimo, I pensato che sia tempo di passare attraverso le basi assolute della programmazione in un modo non specifico del linguaggio. Questo ... Per saperne di più (e parte 2 Le basi assolute della programmazione per principianti (parte 2) Le basi assolute della programmazione per principianti (parte 2) Nella parte 2 della nostra guida assoluta ai principianti per la programmazione, parlerò delle basi delle funzioni , restituire valori, cicli e condizionali. Assicurati di aver letto la parte 1 prima di affrontare questo, dove ho spiegato l'articolo ... Leggi di più) prima.
Dovresti avere familiarità con alcuni progetti Arduino per principianti 15 Grandi progetti Arduino per principianti 15 Grandi progetti Arduino per principianti Interessato ad Arduino ma non sapendo da dove cominciare? Ecco alcuni dei nostri migliori progetti Arduino per principianti per iniziare! Per saperne di più (e magari anche leggere la nostra Guida Arduino Guida introduttiva ad Arduino: Guida per principianti Guida introduttiva ad Arduino: Guida per principianti Arduino è una piattaforma di prototipazione elettronica open source basata su hardware e software flessibili e facili da utilizzare. artisti, designer, hobbisti e chiunque sia interessato a creare oggetti o ambienti interattivi. Ulteriori informazioni), ma questa sarà probabilmente la prima volta che proverai a creare un vero software per interagire con esso.
download
Primo: è necessario aderire al programma Windows Insider per ottenere l'ultima edizione in anteprima di Visual Studio 2015, e l'ultima build di Anteprima di Windows 10. Fallo adesso - è gratis. Windows 10 è un'anteprima dello sviluppatore e non dovrebbe essere installato come sistema operativo principale. È buggy da morire.
- Unisciti al programma Windows Insider e scarica l'anteprima tecnica di Windows 10
- Ottieni l'anteprima di Visual Studio 2015 Community Edition [Non più disponibile].
Visual Studio è l'ambiente di sviluppo di Microsoft che utilizzeremo per creare un'applicazione Windows C #.
Perché C #? Con forti somiglianze con Java, è un linguaggio di programmazione relativamente facile per i principianti per avere una app funzionante e funzionante, ma abbastanza potente da poter creare alcune fantastiche applicazioni (anche i giochi: C # è il linguaggio di scripting Unity scelto - check il nostro eBook gratuito, Guida per principianti alla programmazione di un gioco con Unity Programming Un gioco con Unity: A Beginner's Guide Programmazione di un gioco con Unity: A Beginner's Guide Nel panorama in evoluzione dello sviluppo di giochi indie, Unity è emerso come qualcosa di di fatto standard: il basso costo, la facilità d'uso e l'ampio set di funzionalità lo rendono ideale per lo sviluppo rapido del gioco..
Se non lo hai già fatto, scarica il Arduino IDE dal sito ufficiale Arduino.cc, e installare il firmata standard sulla lavagna. Lo troverai sotto Esempi -> Firmata -> Firmata standard. Questo lo trasforma in a “muto” dispositivo seriale, che farà tutto ciò che la nostra app gli dirà: non ci sarà alcuna logica di app sulla scheda stessa, solo un'interfaccia tra la nostra app e qualsiasi sensore o dispositivo di output collegato ad Arduino.
In termini di cablaggio, è possibile inserire un LED direttamente sul pin 13 e GND come di seguito, oppure utilizzare il LED integrato. Avrai anche bisogno di un resistore variabile (ho usato un potenziometro lineare da 10k) che entra in A0 (con le gambe appropriate su GND e + 5v anche, ovviamente).
Infine, scarica il pacchetto Remote Wiring da GitHub [Non più disponibile]. Questo è il livello che dobbiamo aggiungere per consentire alla nostra app Windows di parlare con Arduino.
Crea un'applicazione
Vai avanti e apri Visual Studio. Se è la prima volta che lo esegui, ti verrà data la possibilità di accedere. Ignoralo se ti piace. Scegliere Visual C # come opzione di sviluppo e continua; In entrambi i casi, sono necessari alcuni minuti per preparare Visual Studio per il primo utilizzo.
Crea un nuovo progetto, usando il modello Visual C # -> App vuota (Windows universale). Ho chiamato il mio “Test Arduino”, ma non importa.
A questo punto, ho riscontrato un errore nel dover passare a Windows 10 in modalità sviluppatore se volevo eseguire effettivamente l'app. Vai avanti e fallo, ma se trovi che la tua build di Windows 10 si arresta in modo anomalo su quell'impostazione, è un bug noto e dovrai utilizzare l'editor di criteri di gruppo per abilitare la modalità sviluppatore.
Quindi, fare clic con il tasto destro in qualsiasi punto del Esploratore di soluzioni (questa è la cosa a destra) e selezionare Inserisci -> Progetto esistente.
Vai a dove hai scaricato i file del cablaggio remoto da Github: se è stato decompresso, dovrebbe essere una cartella chiamata remote-wiring-sviluppo. Dentro ci troverai Microsoft.Maker.win10; e al suo interno troverai altre 3 cartelle. A turno, aggiungi ognuno navigando all'interno di queste tre cartelle e trovando il file di progetto.
Se ricevi qualche errore in merito “File XAML 8.2 non trovato”, hai la versione sbagliata di Visual Studio o non hai ancora installato gli strumenti di sviluppo. Torna all'inizio di questo articolo e assicurati di aver scaricato e installato entrambi i file di Visual Studio collegati.
Questi 3 progetti che hai appena aggiunto sono solo diversi livelli dell'interfaccia di Arduino. Da Esplora soluzioni, se si fa clic destro e selezionare dipendenze -> Costruire dipendenze, puoi vedere quali strati dipendono da quali (Seriale non dipende da nulla; Firmata dipende da seriale; RemoteWiring dipende da entrambi). L'unico cambiamento che devi fare qui è selezionare il tuo progetto dal menu a tendina e selezionare ogni casella per indicare che il tuo progetto dipende da tutti questi altri progetti.
Un ultimo passaggio: da solution explorer di nuovo, fare clic con il tasto destro del mouse su Riferimenti elemento sotto il tuo progetto, e seleziona Aggiungi riferimento. Da sinistra, vai a Windows universale, quindi spunta la casella accanto a Pacchetto AppLocal Runtime di Microsoft Visual C ++. Non chiudere ancora la finestra di dialogo.
Avanti vai a progetti (anche nella stessa finestra di dialogo, dall'elenco a sinistra) e selezionare la casella accanto a ciascuno dei tre Microsoft.Maker progetti.
È stato più difficile di quanto dovrebbe essere, ma devi solo farlo una volta; ora possiamo divertirci un po 'con la programmazione - prometto che non è così spaventoso.
Programmazione
Se hai problemi a seguirlo, il codice completo è disponibile su Pastebin. Suggerisco caldamente di leggere comunque le note qui sotto, quindi posso spiegare cosa fa effettivamente il codice.
Per prima cosa, abbiamo bisogno di aggiungere un po 'di codice che dice che abbiamo bisogno di una porta USB per comunicare con Arduino. Trovare la Package.appxmanifest file da solution explorer e fare doppio clic per modificarlo. Dobbiamo incollare del codice qui - tecnicamente lo saremo “inserire un nodo figlio” perché è un file XML, ma sostituisce semplicemente l'intero
Il codice esatto varierà se utilizzi il Bluetooth o se scegli come target Win8.1 invece di 10, ma quanto segue è per Windows 10, connessione USB.
Vai al Costruire menu -> Ricostruisci la soluzione, e assicurati di non avere errori.
Dall'esploratore di soluzioni, espandere il MainPage.xaml nodo. Fare doppio clic su quello caricherà il progettista di moduli che torneremo più tardi, ma per ora si apre MainPage.xaml.cs, che contiene la logica principale dietro la nostra applicazione.
Aggiungi due linee nella prima sezione, per indicare che saremo “utilizzando” i bit di Arduino.
utilizzando Microsoft.Maker.serial; utilizzando Microsoft.Maker.RemoteWiring;
Ho anche aggiunto una riga per dire che useremo System.Diagnostics; che ci consente di usare il Debug.WriteLine () funzione per inviare messaggi di debug all'IDE.
Prima di tutto, definiamo alcune variabili che useremo per tutto il tempo. Aggiungi queste linee subito prima del public MainPage () dichiarazione di funzione.
Usb Connessione seriale; RemoteDevice arduino; UInt16 lastvalue;
Successivamente, passa alla funzione MainPage () - questo è chiamato il costruttore, ed è una funzione che viene chiamata immediatamente quando viene creata la nostra app, quindi la usiamo per impostare tutto.
Innanzitutto, aggiungi una linea per stabilire la connessione seriale USB a un dispositivo USB specifico (Arduino).
connection = new UsbSerial ("VID_2341", "PID_0043");
Si noti che gli ID USB di uno standard Arduino Uno sono già codificati nel blocco, ma è possibile verificarlo da Gestore dispositivi -> Porte (COM e LPT) -> Arduino Uno -> Dettagli scheda -> ID hardware.
Quindi aggiungi le seguenti righe subito dopo.
arduino = nuovo RemoteDevice (connessione); connection.ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig.SERIAL_8N1);
Alcune cose stanno accadendo qui. Per prima cosa, stiamo creando un oggetto RemoteDevice - ricorda, questo è il livello che ci dà un sacco di comandi Arduino - e dandogli il nome della variabile “arduino”. La riga successiva si collega all'evento ConnectionEstablished, per dire “una volta stabilita la connessione USB, eseguire la funzione chiamata OnConnectionEstablish ()”.
L'ultimo dice solo alla connessione di iniziare già, con una velocità di trasmissione di 57600, usando il pattern a 8N1 bit.
Dovrai anche creare la funzione OnConnectionEstablished () ora, quindi spostati all'esterno della funzione MainPage () e crea semplicemente una funzione vuota come segue.
private void OnConnectionEstablished () // LOGIC QUI
Torna al progettista di moduli che ho menzionato prima (se hai dimenticato come: fai doppio clic su MainPage.xaml dall'esploratore di soluzioni). Crea due pulsanti. Per fare ciò, apri la scheda Casella degli strumenti che troverai appuntata verticalmente sul lato sinistro dello schermo. Trascina due pulsanti sulla pagina, quindi etichettali uno Sopra e uno via.
Seleziona il primo pulsante, quindi dalla casella Proprietà in basso a destra, assegna un nome “OnButton”. Fai clic sull'icona a forma di fulmine: questa è la lista di eventi e azioni utilizzata per specificare cosa succede quando gli elementi del modulo sono interagiti con. genere “onButtonClick” nel Clic campo.
Quando premi Invio, creerà automaticamente il codice per quel particolare evento del pulsante e caricherà la vista del codice standard. Torna al progettista del modulo per ora e fai lo stesso per il pulsante Off, ma questa volta chiamalo “OffButton”, e “OffButtonClick”. Mentre sei lì, vai avanti e dai il nome alla finestra principale dietro “Pagina” - lo useremo più tardi. Ora dovresti avere qualcosa simile allo screenshot qui sotto:
Tornare di nuovo al designer per un momento, e ancora per ciascuno dei pulsanti, impostare il è abilitato proprietà a falso. Puoi farlo digitando la proprietà direttamente nella vista codice XAML, oppure puoi trovare tale casella nella casella Proprietà (fai clic sulla chiave se sei ancora nella visualizzazione azioni) - è sotto l'espansione Comune categoria di proprietà.
Questo non è essenziale, ma è buona norma disabilitare i pulsanti finché non siamo sicuri che l'Arduino sia collegato e collegato.
Per riabilitarli, aggiungi quanto segue alla funzione OnConnectionEstablished (). Non preoccuparti troppo del significato esatto del codice per ora, è solo il modo in cui dovresti gestire gli aggiornamenti dei moduli nelle moderne app di Windows per garantire buone prestazioni. Una volta che ci siamo collegati ad Arduino, abbiamo impostato il È abilitato proprietà dei pulsanti su true.
private void OnConnectionEstablished () // attiva i pulsanti on off var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler (() => OnButton.IsEnabled = true; OffButton.IsEnabled = true;)); arduino.pinMode (14, PinMode.ANALOG); arduino.AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Debug.WriteLine (arduino.analogRead (14));
Vedrai anche un'istruzione pinMode () più familiare, per dire che abbiamo un ingresso analogico sul pin 14 (ci sono 13 pin digitali, quindi A0 inizia a contare da 14). Poi abbiamo un'altra dichiarazione di evento: quando il valore del pin analogico si aggiorna, chiama la funzione MyAnalogPinUpdateCallback.
Infine, dobbiamo modificare gli eventi di clic sui pulsanti e decidere cosa succede quando l'input analogico cambia. Iniziamo con i pulsanti. Possiamo interagire con Arduino usando nomi di funzioni simili come normali codici Arduino, come segue:
arduino.digitalWrite (13, PinState.HIGH);
Incolla quello per l'evento onButton e questo per il pulsante off:
arduino.digitalWrite (13, PinState.LOW);
Semplice. L'input analogico da Arduino è un po 'più complicato, ma ecco cosa mi è venuto in mente.
public void MyAnalogPinUpdateCallback (byte pin, valore UInt16) if (valore-ultimo valore> 5 || ultimo valore-valore> 5)
Debug.WriteLine ("Pin A" + pin + "è ora" + valore); var action = Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, nuovo Windows.UI.Core.DispatchedHandler (() => byte num = Convert.ToByte (valore / 4); Page.Background = new SolidColorBrush ( Windows.UI.Color.FromArgb (255, num, num, Convert.ToByte (255 -num)));)); lastvalue = valore;
Nota che sto memorizzando il valore precedente che abbiamo ricevuto dal pin in una variabile chiamata lastValue; questo ci consente di verificare quanto il valore è cambiato e reagire solo se la differenza è significativa (una sorta di livellamento del segnale). Se cambia in entrambe le direzioni più di 5 (0-1024 è l'intero intervallo di valori), allora reagiamo cambiando il valore del colore dello sfondo RGB dell'elemento Page.
Dato che abbiamo solo un numero con cui lavorare, ed ero di fretta, ho un po 'di cose qui con i 3 numeri necessari per creare R, G e B. Probabilmente puoi inventare qualcosa di molto più carino.
Finito
Ecco fatto: esegui il codice e dovresti vedere qualcosa di simile allo screenshot qui sopra. I pulsanti accenderanno e spegneranno il LED e la resistenza variabile cambierà lo sfondo. Se hai avuto problemi, non dimenticare che il codice completo è qui.
Ora che puoi scrivere le tue app per Windows 10 che interagiscono con Arduino, che cosa realizzerai? Forse un controller domotico Home Automation Guide Con Raspberry Pi e Arduino Home Automation Guide Con Raspberry Pi e Arduino Il mercato domotico è invaso da costosi sistemi di consumo, incompatibili tra loro e costosi da installare. Se hai un Raspberry Pi e un Arduino, puoi sostanzialmente ottenere la stessa cosa a ... Per saperne di più? Fatemi sapere nei commenti.
Scopri di più su: Arduino, programmazione.