Intanto prosegue l'abbozzo del protocollo.
Avevo pensato a un sistema a "chiamata". La UART del Pic puo' funzionare anche in modalita' addressable, ovvero posso comunicare con piu' terminali utilizzando una sola porta seriale.
Ogni minuto, il microprocessore trasmette una parola di 9 bit a tutti i terminali (i gruppi di sensori). La parola e' composta da 1 bit che indica la chiamata, 4 bit di indirizzo, che mi permettono di comunicare con 16 terminali e 4 bit di comando, per permettere un minimo di gestione dei sensori remoti (posso impartire 16 comandi diversi).
Il comando piu' classico e' quello con cui chiedo a quel gruppo di sensori di trasmettermi i dati, ma ad esempio potrei anche fare in modo che tutti i terminali rispondano insieme a un certo indirizzo (che so, Fh o 15), che potrei utilizzare come "chiamata generale" per chiedere l'azzeramento di tutti i contatori pluviometrici.

La trasmissione dei dati ambientali potrebbe essere strutturata in un "Pacchetto" del genere (ogni "tag" e' un byte):
<TEH> <TEL> <RHH> <RHL> <BAH> <BAM> <BAL> <WD> <WD> <WSH> <WSL> <RAH> <RAL> <LXH> <LXL> <UVH> <UVL> <CRC>
TEH,TEL: temperatura, 3 cifre piu' segno (±XX.X °C)
RHH,RHL: umidita', anche qui 3 cifre (XX.X %)
BAH,BAM,BAL: pressione atmosferica in hPa (fino a XXXX.XX hPa)
WD: direzione del vento, es. 4 bit indicanti la rosa dei venti e 12 l'angolo in gradi della banderuola, o altro formato
WSH,WSL: velocita' del vento (XXX.X km/h)
RAH,RAL: conteggio del pluviometro (XXX.X mm)
LXH,LXL: radiazione solare (luxmetro)
UVH,UVL: radiazione UV
CRC: somma di controllo.
La stazione poi provvede automaticamente a leggere dall'orologio e inserire i 5 byte di timestamp in coda o in testa: YY MM DD HH MM prima di memorizzare il tutto, tipo il record di un database.

Fanno 23 byte in tutto, arrotondiamo a 32 per semplificare la gestione della matrice nel programma: con le memorie installate, sono 2048 record massimi per porta, vale a dire 85 giorni di datalogger impostato a cadenza oraria.