Controllo di una rete di sensori

1

Sto riscontrando un problema nello sviluppo di un'architettura orientata agli oggetti per gestire una rete di sensori e controlli. Attualmente sto scrivendo in Python, ma questa è più una domanda concettuale.

Ho un Arduino collegato a un numero di sensori. Diverse volte al secondo, l'Arduino invia i dati a un Raspberry Pi con informazioni sui sensori utilizzando uno schema di comunicazione seriale basato su ASCII. Di seguito è riportato un esempio di risposta:

#POSITION 47 59203.008;

Questa risposta dice che il sensore di posizione 47 è in posizione 59203.008 m .

Ho una classe nel mio programma Python chiamato Arduino che sta costantemente guardando i dati seriali (sul proprio thread) e li spinge in una coda sicura per i thread.

Ogni tipo di sensore ha una classe (cioè PositionSensor , TemperatureSensor , FlowRateSensor ), una proprietà address e una proprietà value - insieme a un numero di metodi utili per eseguire calcoli sul i dati.

Il mio problema è ottenere i dati dall'oggetto Arduino sugli oggetti sensore corretti. Quale sarebbe un buon modello per questo tipo di problema di programmazione?

Ho preso in considerazione l'idea di far iscrivere i miei sensori alla coda e di ascoltare il tipo di sensore e l'indirizzo (ignorando qualsiasi altra cosa), ma come faccio a dire ai sensori che dovrebbero controllare la coda? Quale classe conterrebbe la coda? Mi sento come se ci fosse un modello che si adatta alla mia situazione esatta.

    
posta Michael Molter 03.08.2016 - 17:55
fonte

1 risposta

1

La mia esperienza con qualcosa di simile deriva dalla programmazione di un controller per un quadricottero e abbiamo avuto un loop che ha interrogato tutti i sensori a qualcosa come 250Hz. Abbiamo semplicemente aggiornato una massiccia struttura dello stato del quad e lo abbiamo passato al controllore di volo.

Presumo che il tuo codice Arduino stia eseguendo il polling nel suo ciclo principale, inviando quindi i dati al RPi. Hai abbastanza larghezza di banda per inviare tutti i valori dei sensori con ogni messaggio da Arduino a RPi? Puoi costruire una mappa degli ultimi valori del sensore e lasciare che le singole classi di sensori leggano questa mappa e intraprendano azioni basate sul valore più recente.

Se non hai abbastanza larghezza di banda, considera l'utilizzo di un protocollo binario invece di un protocollo ASCII, ma solo se necessario.

    
risposta data 03.08.2016 - 21:03
fonte

Leggi altre domande sui tag