Programmazione di molti Arduinos contemporaneamente con una trasmissione wireless


9

Avrò molti dispositivi basati su microcontrollore che saranno indipendenti l'uno dall'altro, ma tutti eseguiranno lo stesso programma.

Vorrei caricare un programma su tutti contemporaneamente con una trasmissione wireless. Idealmente, l'utente dovrebbe collegare un controller USB al suo computer e caricare un programma dall'ambiente Arduino come se stesse programmando un singolo dispositivo.

Per avere un'idea migliore di cosa sto parlando, per favore guarda questo video . Ciò è stato ottenuto con i microcontrollori Atmel ma con un bootloader non Arduino personalizzato.

Da una ricerca di Google sulla "programmazione a infrarossi di Arduino" è nato questo interessante progetto . Lo svantaggio principale è che il pulsante di ripristino deve ancora essere premuto manualmente. Idealmente, per impostazione predefinita, vorrei che i dispositivi si trovassero in uno stato a basso consumo e che si svegliassero per ricevere un programma quando avvertono un segnale dal controller. Tuttavia, questo potrebbe essere un buon punto di partenza per me.

Volevo solo ottenere alcune prospettive da persone che hanno familiarità con gli Arduinos sul fatto che pensino che sia fattibile prima che io entri.



Da quale piattaforma stai usando per caricare i tuoi schizzi?
Greenonline

Risposte:


2

TL; DR -

Hai le opzioni di BlueTooth o XBee (tra gli altri: IR, ad esempio?) Per il caricamento wireless. Tuttavia, credo che sia possibile caricare una sola scheda alla volta, quindi sarà necessario scorrere le schede una alla volta, vedere Programmazione di più ATMegas / Arduinos contemporaneamente .

Quando si carica uno schizzo o si utilizza un programmatore (per schizzo o bootloader), il software non solo scrive il codice, ma comunica effettivamente con il microcontrollore.

Non puoi programmarli tutti in una volta. Ma puoi programmarli uno per uno in qualche modo automatico.


La tua domanda è molto interessante e pone una domanda di cui sono sicuro che non avrei mai pensato, ma sarebbe estremamente utile e risparmi di manodopera, soprattutto se si hanno, come faccio io, molti punti del sensore controllati da Arduino situati intorno al Casa. Ecco una soluzione piuttosto inelegante che potrebbe valere la pena provare.

Hardware di caricamento wireless

Se usi BlueTooth per caricare i tuoi schizzi in modalità wireless, questa soluzione potrebbe essere utile, programma di caricamento wireless su Arduino senza cavo USB . Si noti che questa soluzione lega i pin D0 e D1:

Ma fai attenzione che potrebbe non essere compatibile con alcuni progetti che devono utilizzare D0 e D1 come hardware UART TX, RX. Perché il programmatore wireless deve occupare permanentemente i due pin.

Guardandolo, utilizza un programmatore wireless Arduino personalizzato , al quale potresti aver fatto riferimento nella tua domanda. Tuttavia, non lasciarti ingannare dal nome, è semplicemente uno scudo Bluetooth. È fondamentalmente un dispositivo BT HC-05 (o simile), fissato su un Arduino, vedi anche Caricamento wireless Bluetooth .

In alternativa, al posto di BlueTooth, è possibile utilizzare i dispositivi XBee , vedere Programmazione wireless di Arduino . Il vantaggio dell'uso di XBees è che non dovresti passare attraverso il nuovo loop del dispositivo di accoppiamento (vedi sotto), che sarebbe necessario quando usi BT. Invece dovresti semplicemente scorrere gli ID di rete XBee.

Tuttavia, oltre a ciò, dovrai automatizzare la commutazione dei dispositivi BT, selezionando la porta appropriata e caricando a turno ogni Arduino, poiché non puoi trasmettere schizzi . (Se sbaglio, qualcuno mi correggerà, per favore).

Selezione della porta e caricamento dello schizzo

È possibile utilizzare uno script insieme alla versione da riga di comando dell'IDE Arduino per selezionare la porta a cui è collegato il dispositivo BT, prima di ogni caricamento. In che modo ciò varia a seconda della piattaforma su cui stai compilando, vedi Compilare e scaricare Arduino dalla riga di comando? Questo può essere fatto usando la variabile d'ambiente ARDUINO_COMPORT(vedi la build della riga di comando di Windows forse non aggiornata ), o l'opzione arduino cmd line --port <portname>(vedi la pagina man ). Lo schizzo verrebbe quindi caricato usando l'opzione --upload <filename>. Potresti farlo in un colpo solo:

arduino --upload --port <portname> FILE.ino

Nota che su Windows dovresti usare arduino_debug.exe.

Oppure si potrebbe usare Ino , se si non utilizza un PC Windows ... ma che potrebbe fare la parte successiva, che si occupa della looping più complesso di quanto ha bisogno di essere.

Selezione di ciascuno degli Arduinos (cioè i dispositivi BT)

Successivamente, è necessario aggiungere un loop allo script, che accoppia il PC a ciascun dispositivo BT a sua volta e successivamente chiama l'IDE Arduino, per la selezione e il caricamento della porta. Sfortunatamente, questo non sarebbe affatto indipendente dalla piattaforma e richiederebbe una soluzione diversa per qualsiasi piattaforma in uso. Dai un'occhiata al Bluetooth dalla riga di comando , ma per Windows probabilmente avrai bisogno della suite di strumenti della riga di comando di Blue Tooth .

Su OS X potrebbe essere meglio ricorrere all'uso di AppleScript, vedi Connetti a dispositivo bluetooth (iPhone) tramite riga di comando su MacOSX , poiché gli strumenti della linea cmd per il controllo di BT sembrano un po 'scarsi - c'è BlueUtil , vedi Come controllare il wireless Bluetooth radio dalla riga di comando? ma questo sembra solo attivare o disattivare il BT. Tuttavia, fissare AppleScript sul resto dello script di controllo IDE di Arduino rende rapidamente le cose più complesse, anche se potresti semplicemente inserire il comando Arduino in AppleScript, immagino.


0

È possibile utilizzare ESP-LINK per programmare Arduino tramite WiFi.

ESP8266 è un MCU Wi-Fi economico semplice che può essere programmato con Arduino IDE.

ESP-LINK è un firmware per ESP8266 che fa funzionare l'ESP come una connessione seriale (USB) ad Arduino.

Il firmware è disponibile qui su ESP-LINK ESP8266 .


0

Si può usare qualcosa di simile a questo . È un bootloader personalizzato per aggiornare il codice di Arduino tramite un modulo radio NRF24L01 +. *

* Funziona solo con macchine Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.