Scrivici:

thecubeproject.info@gmail.com

thecube@issgreppi.it




HARDWARE


RASPBERRY PI3

Il Raspberry Pi 3 è un mini pc economico, con architettura ARM, che monta come sistema operativo Raspbian, possiede di suo una scheda Wi-Fi e Bluetooth. I motivi che ci hanno spinto a scegliere questo dispositivo per svolgere i compiti principali sono i seguenti: dopo qualche test abbiamo visto che riesce a svolgere anche i compiti un po’ più esosi di risorse senza "affannarsi" troppo, consuma poco, è fatto per rimanere acceso diverso tempo senza la necessità di un riavvio ed è dotato di una porta ethernet.


NRF24L01+

NRF24L01+ è una scheda con interfaccia SPI che permette di trasferire dati in modo bidirezionale a 2,4GHz, sono poco costosi, il trasferimento dei dati può avvenire anche a distanze relativamente lunghe (decine di metri), consumano pochissimo, ha un sistema di controllo degli errori automatico e provvede (se necessario) alla ritrasmissione dei dati.



Bottone (normalmente chiuso)

Bottone normalmente chiuso.

STEPS

non va

Step 1:

COLEGARE IL MASTER ALLA RETE INTERNET

non va

Step 2:

AVVIARE IL MASTER

non va

Step 3:

ACCEDERE ALL'APP E CREARE ACCOUNT (SE NON LO SI È GIA CREATO)

non va

Step 4:

LOGIN

non va

Step 5:

ANDARE NELLA SEZIONE DISPOSITIVI

non va

Step 6:

SELEZIONARE IL PROPRIO MASTER

Cosa Fa Un Master Al Primo Avvio?

Recupera il suo ID

Il master al primo avvio esegue uno script che va a controllare sul database il primo ID disponibile e se lo auto-assegna, segnalando poi al database che quell'id non è più disponibile, quindi non potrà essere assegnato ad altri master. Il recupero di un'ID serve per poter passare alla fase successiva, effettuare il “pairing” con uno slave, facendo in modo che i dati inviati possano essere distinti tra i vari master e capire se sono destinati a lui o meno.

Pairing con l'account

Una volta che lo salve è andato a recuperare un ID dal database, passa alla fase successiva che prevede obbligatoriamente l'utilizzo dell'App. Bisognerà effettuare il login nell'App, poi andare nella sezione dispositivi dove verrà effettuata la ricerca dei dispositivi che devono essere configurati, una volta selezionato il dispositivo, la configurazione è terminata e il master sarà pronto. Questa fase è essenziale perché istruisce il master su quale account deve caricare i dati, il passaggio dei parametri avviene via Bluetooth, infatti il master attiverà il proprio modulo Bluetooth e si renderà visibile, una volta eseguita tutta la procedura nell’App il master spegne il suo modulo Bluetooth.

Quali Sono I Compiti Di Un Master?

Pairing con lo slave

Quando uno slave viene acceso per la prima volta esegue il pairing, quando un master riceve una richiesta di pairing, esegue la funzione che controlla su un suo file interno il primo ID disponibile da assegnare, e risponde inviando allo slave un ID composto da ID master + ID calcolato e gli invia anche un nome provvisorio. Intanto il master su database prepara anche il documento per lo slave sul quale verranno caricati i dati. Il documento contiene i segenti campi:

      
  • colorSlave: parametro per il funzionamento dell'app
  •   
  • idMaster: contiene l'ID del master con cui lo slave è accoppiato, così se qualche funzione del master deve recuperare qualcosa dai documenti dei suoi slave basterà fare la ricerca di tutti i documenti degli salve che contengono l'ID del master.
  •   
  • imageSlave: parametro per il funzionamento dell'app
  •   
  • eta: contiene data e ora della creazione del documento
  •   
  • master: parametro per il funzionamento dell'app
  •   
  • data: contiene gli array che a loro volta conterranno i dati raccolti dallo Slave
  •   
  • id: contiene l'id completo dello Slave, serve per poter identificare il documento corretto su cui caricare i dati, o eseguire operazioni di vario genere
  •   
  • Name: contiene all'inizio il nome provvisorio dello Slave, potrà essere in seguito modificato tramite l'app

Carica i dati

Quando un master riceve dei dati ne controlla la provenienza, perché il frame che invia i dati è stato ideato per poter distinguere i dati per tipo (temperatura, umidità ecc.) e per provenienza inviando con i dati anche il suo ID (che è univoco), il master, ricevuti i dati, esegue una funzione che ne accerta l’appartenenza e se gli appartengono li carica sul documento dello slave corrispondente.

E se un master non funziona?

Il sistema è progettato per essere “resistente” ai guasti. Infatti nel caso in cui un master dovesse avere un malfunzionamento, i suoi slave inviano comunque i loro dati ad un altro master, se quest’ultimo si trovasse nel raggio degli slave. Nell’ipotesi in cui un master ricevesse dei dati che non gli appartengono, esegue un controllo sul database per verificare se gli ultimi dati caricati sul documento di quello slave non siano più vecchi di due minuti, se è così allora i dati appena ricevuti vengono pubblicati, altrimenti no. Quindi non tutti i dati vengono persi così per dare il tempo all'utente di poter sostituire il master difettoso.

Se voglio dis-accoppiare uno slave?

Sullo slave è presente un pulsante per effettuare il disaccoppiamento: viene inviato un frame “speciale” che, se ricevuto dal master, ne verifica la provenienza. Se lo slave che gli ha inviato il frame gli appartiene, il suo ID viene eliminato dal master (rendendolo di nuovo disponibile all’assegnazione) e il suo documento sul database cancellato (con la conseguente perdita dei sui dati raccolti).

Se il master o la connessione si inceppano?

Il master esegue uno script di controllo ogni 10 minuti che generalmente risolvere il problema. In caso di mancanza di connessione, se c’è un altro master in funzione e collegato a una rete che va, esso si incaricherà di caricare i dati (se sono passati almeno 2 minuti dall’ultimo caricamento). Al ripristino della connessione il master provvederà da solo a rimettersi in funzione.