Scrivici:

thecubeproject.info@gmail.com

thecube@issgreppi.it




HARDWARE

VERSIONE I:


PIC18F25K22

Il PIC18 è un microcontrollore dal costo irrisorio (di pochi centesimi) che può svolgere un vasto numero compiti, quello che si occupa della gestione della prima versione dello Slave è il PIC18F25K22.


TC74

Il TC74 è un sensore che utilizza il protocollo I2C che si occupa di misurare la temperatura, anch’esso è stato scelto per via del suo basso costo e grazie al fatto che lo abbiamo utilizzato in progetti precedenti abbiamo constatato che è in grado di svolgere egregiamente il suo compito.


Ampliamento

Questa versione del cubo un po' più costosa puó effettuare la misura di un numero più ampio di parametri ambientali.

HARDWARE

VERSIONE II:


Raspberry Pi 0

Il Pi 0 è un mini PC simile al suo fratello più grande (il Pi 3), ma con dimensioni decisamente ridotte, consumi più bassi, prezzo inferiore (circa 5€) e molto meno potente rispetto al Pi 3. Svolge comunque il suo compito senza nessun problema, riuscendo a misurare ben 4 parametri contemporaneamente (in futuro anche di più) e a inviarli al Master.


MQ 2

MQ2 è un sensore che misura la quantità di gas nell'aria (idrogeno H2, LPG, metano CH4, anidride carbonica CO2, alcol, propano), ma nel nostro caso, per via dello spazio che il tutto deve occupare si è optato per usare questo sensore in digitale, quindi il gas viene rilevato solo se supera una certa soglia (regolabile tramite un potenziometro presente sul sensore).



BMP 180

Il BMP180 è un sensore I2C che misura diversi parametri, pressione atmosferica, stime l’altitudine, temperatura e stima la pressione al livello del mare, ma viene letta e utilizzata solo la pressione atmosferica.


DHT 11

Il DHT11 è un sensore che utilizza un protocollo proprietario, viene utilizzato principalmente in ambito Arduino, su Adafruit è possibile scaricare la libreria per Python per farlo funzionare, viene utilizzato per misurare la temperatura e l’umidità.


Cosa Fa Uno Slave? Come Funziona?

Esegue il Pairing

Lo Slave al primo avvio invia un frame detto di "Pairing", quando un Master riceve la richiesta di pairing esso invia la risposta nel payload. Quando dallo Slave viene letto il payload provvede ad interpretarlo e a salvare in memoria l'ID e il Nome ricevuti. Se il payload viene per sbaglio ricevuto da un altro slave che ha già effettuato l'accoppiamento, esso lo ignorerà semplicemente.

Raccoglie ed invia i dati

La prima versione dello Salve (per ora) misura solo la temperatura e provvede a inviarla al suo master inserendo nel frame del dato il suo ID e il tipo di dato, mentre per quanto riguarda la seconda versione dello Slave il disorso non cambia, perché il funzionamento è analogo, ma misura soltanto più tipi di parametri.

E se uno slave si inceppa?

La seconda versione dello Slave esegue uno script di controllo ogni 10 minuto che generalemnte risolve il problema, mentre entrambe le versioni dello Slave possiedono un tasto per eseguire il riavvio, o il dis-accopiamento (con conseguente reset). Dopo il reset appena lo Salve si riaccende passa in automatico alla fase di Pairing.

Com'è fatto il frame

PREAMBLE È una sequenza di bit usata per sincronizzare il demodulatore del ricevitore con il flusso di bit che ha in ingreso. Questa sequenza dipende dal primo bit dell’indirizzo: se è 1, il preambolo sarà 10101010; altrimenti sarà 01010101.

ADDRESS È l’indirizzo del ricevitore che assicura una corretta da parte del ricevitore per evitare comunicazioni accidentali tra diversi sistemi nRF24L01+.

PACKET CONTROL FIELD: È una parte di frame che contiene diversi campi:

  • Payload length: un campo di 6 bit che indica la lunghezza del Payload; è utilizzato solamente se è attivo i Dynamic Payload.
  • PID: un campo da 2 bit per identificare i pacchetti inviati. È un numero che continua a incrementare per evitare che un frame inviato due volte possa essere scambiato per due frame differenti. Viene incrementato ogni volta che l’nRF24l01+ riceve un dato tramite SPI. Viene confrontato insieme al CRC per determinare se è un pacchetto nuovo o uno già inviato. Se entrambi sono uguali, allora il secondo frame verrà classificato come una copia del precedente.
  • No Acknowledgment flag: gestisce autonomamente l’ACK del frame, utilizzato solo se è abilitato l’auto-acknowledgment.
PAYLOAD È il campo che può essere modificato dall’utente e può avere dimensioni che variano da 0 a 32 byte. Per questo motivo noi abbiamo deciso di utilizzare 32 byte, dividendoli in diversi campi che identificano il tipo di dato da inviare e lo slave e contengono il dato.

FRAME TYPE Numero identificativo del frame che viene inviato. È diverso per ogni tipo di comunicazione:
  • 69 (pairing): frame generato dallo slave che permette di effettuare il pairing tra slave e master;
  • 70 (pairing-reply): frame generato dal master che contiene ID e nome (temporaneo) dello slave;
  • 40 (delete): inviato dallo slave prima del reset per effettuare il disaccoppiamento ed eliminare il documento associato allo slave sul database e rende di nuovo disponibile il suo ID;
  • 104 (dato): frame che conterrà il dato rilevato da un sensore da caricare sul database.
ID SLAVE Campo che contiene il numero a 4byte (tre fissi e il quarto incrementale) che identifica il dispositivo per la comunicazione con il master. L’ID viene generato dal master (come viene generato verrà spiegato successivamente nella sezione master) e associato allo slave durate il pairing.

NAME SLAVE Campo a 20byte che contiene il nome del device. Generato anch’esso dal master e associato, insieme all’ID, durante il pairing.

DATA TYPE Questo campo è presente nel frame che invia il dato (ovvero con Frame Type uguale a 104) e identifica il sensore (e quindi il tipo di dato) che verrà inviato dallo slave e ricevuto dal master. Nel nostro progetto possiamo trovare diversi tipi di sensori e relativi Data Type:
  • 97 : temperatura;
  • 99 : umidità;
  • 101 : presenza gas;
  • 103 : pressione.
  • Eventuali altri sensori avranno un identificativo
DATO Contiene il valore misurato dallo specifico sensore, che verrà inviato al master.